From 18166bded9244d103bf946c79c46e0b4aaebc9fd Mon Sep 17 00:00:00 2001 From: Skyzuo9 <3101065459@qq.com> Date: Mon, 31 Aug 2026 09:08:29 +0800 Subject: [PATCH] feat: add research workspace and Chinese interface --- .gitignore | 1 + .vscodeignore | 7 + AGENTS.md | 15 +- CONTRIBUTING.md | 29 +- README.md | 70 +- design_and_plan.md | 948 +++ dev | 42 + install | 6 + media/reader-app.css | 2 +- media/reader-app.js | 6917 +++++++++++------- package-lock.json | 26 + package.json | 93 +- project_map.md | 46 + scripts/inleaf_mcp_server.mjs | 186 + scripts/install-local.mjs | 55 + scripts/start-dev.mjs | 113 + scripts/test-codex-bridge.mjs | 145 + scripts/test-command-icon.mjs | 17 +- scripts/test-deepseek-translation.mjs | 82 + scripts/test-inline-annotation-editor.mjs | 15 +- scripts/test-mcp-server.mjs | 63 + scripts/test-quick-start.mjs | 38 + scripts/test-reader-actions.mjs | 74 + scripts/test-repository-service.mjs | 35 + scripts/test-research-message-contract.mjs | 44 + scripts/test-research-workspace.mjs | 199 + scripts/test-start-dev.mjs | 31 + scripts/test-webview-worker.mjs | 2 +- src/atomicJsonFile.ts | 103 + src/codexBridge.ts | 371 + src/comparisonService.ts | 163 + src/evidenceLocator.ts | 134 + src/extension.ts | 218 +- src/identity.ts | 11 +- src/libraryIndex.ts | 269 + src/mcpBridge.ts | 121 + src/paperReaderPanel.ts | 603 +- src/pdfIdentity.ts | 9 +- src/quickStart.ts | 70 + src/readerMessages.ts | 7 +- src/repositoryService.ts | 107 + src/researchMessages.ts | 41 + src/researchStorage.ts | 192 + src/researchTypes.ts | 341 + src/translationService.ts | 174 +- src/translationTypes.ts | 1 + webview/src/components/AnnotationWidgets.tsx | 181 +- webview/src/components/AskCodexActions.tsx | 49 + webview/src/components/ComparisonView.tsx | 105 + webview/src/components/LibraryView.tsx | 92 + webview/src/components/RepositoryPanel.tsx | 92 + webview/src/components/ResearchPanel.tsx | 187 + webview/src/evidenceLocator.ts | 52 + webview/src/main.tsx | 639 +- webview/src/messages.ts | 32 +- webview/src/readerActions.ts | 143 + webview/src/researchModel.ts | 43 + webview/src/styles.css | 1043 +++ webview/src/types.ts | 22 + 59 files changed, 11707 insertions(+), 3209 deletions(-) create mode 100644 design_and_plan.md create mode 100755 dev create mode 100755 install create mode 100644 scripts/inleaf_mcp_server.mjs create mode 100755 scripts/install-local.mjs create mode 100755 scripts/start-dev.mjs create mode 100644 scripts/test-codex-bridge.mjs create mode 100644 scripts/test-deepseek-translation.mjs create mode 100644 scripts/test-mcp-server.mjs create mode 100644 scripts/test-quick-start.mjs create mode 100644 scripts/test-reader-actions.mjs create mode 100644 scripts/test-repository-service.mjs create mode 100644 scripts/test-research-message-contract.mjs create mode 100644 scripts/test-research-workspace.mjs create mode 100644 scripts/test-start-dev.mjs create mode 100644 src/atomicJsonFile.ts create mode 100644 src/codexBridge.ts create mode 100644 src/comparisonService.ts create mode 100644 src/evidenceLocator.ts create mode 100644 src/libraryIndex.ts create mode 100644 src/mcpBridge.ts create mode 100644 src/quickStart.ts create mode 100644 src/repositoryService.ts create mode 100644 src/researchMessages.ts create mode 100644 src/researchStorage.ts create mode 100644 src/researchTypes.ts create mode 100644 webview/src/components/AskCodexActions.tsx create mode 100644 webview/src/components/ComparisonView.tsx create mode 100644 webview/src/components/LibraryView.tsx create mode 100644 webview/src/components/RepositoryPanel.tsx create mode 100644 webview/src/components/ResearchPanel.tsx create mode 100644 webview/src/evidenceLocator.ts create mode 100644 webview/src/readerActions.ts create mode 100644 webview/src/researchModel.ts diff --git a/.gitignore b/.gitignore index 4977906..39622cb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ out/ dist/ .venv-translate/ *.vsix +*.pdf *.map vite.webview.config.js webview/src/*.js diff --git a/.vscodeignore b/.vscodeignore index 25f6da6..f22e844 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -9,11 +9,18 @@ tsconfig.json .venv-translate/ AGENTS.md project_map.md +design_and_plan.md +dev +install scripts/test-*.mjs +scripts/start-dev.mjs +scripts/install-local.mjs scripts/build_ecdict_compact.py scripts/copy_pdfjs_assets.mjs scripts/ecdict_compact.json node_modules/ +**/*.pdf +**/.inleaf-reader/** out/** !out/extension.js !out/ecdictWorker.js diff --git a/AGENTS.md b/AGENTS.md index 01736f9..09de070 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -89,13 +89,26 @@ For `paper.pdf`, newly written data is: paper.pdf.annotated.pdf paper.pdf.wordbook.json paper.pdf.progress.json + paper.pdf.research.json + paper.pdf.codex-context.md +``` + +Library-scoped, rebuildable or exported research data uses: + +```text +library-root/.inleaf-reader/ + library.index.json + current-session.json + comparisons/.json + comparisons/.md ``` - Sidecars are intentionally plain local files that can be synchronized by Git or ordinary file-sync tools and inspected by external AI tools. - Prefer explicit, stable fields and backward-compatible schema evolution. - Do not hide user reading data in proprietary blobs or VS Code global state. -- Global state may contain only lightweight indexes needed to locate sidecars; +- Global state may contain only lightweight indexes, configured library roots, + and Codex session pointers needed to locate sidecars; never place annotations, vocabulary, notes, or reading progress there. - JSON mutations must remain serialized and atomic. Keep `.bak` recovery copies of the previous valid version where the current storage layer does so. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b7962b7..3a9466d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,13 +6,36 @@ for inclusion in this project are provided under the ## Local setup +On macOS or Linux, one command installs nothing globally, compiles the project, +and opens an Extension Development Host: + +```bash +./dev +``` + +The launcher selects a working Node.js 20.19+ or 22.12+ executable, installs +missing local dependencies, and also avoids a +broken default `node` shim. On Windows, or when you prefer npm directly, use: + ```bash npm install -npm run compile +npm run dev +``` + +In the new VS Code window, run `Inleaf Reader: Quick Start`. After source +changes, rerun `npm run compile` and use `Developer: Reload Window` in the +Extension Development Host. + +To install or update the current checkout in ordinary VS Code instead of using +an Extension Development Host, run: + +```bash +./install ``` -Press `F5` in VS Code to launch an Extension Development Host, then run -`Inleaf Reader: Open Paper Reader` with a normal text PDF. +Reload open VS Code windows once after installation. From then on, open any PDF +and click the Inleaf book icon in its editor title bar; no development service +needs to remain running. Argos is optional for development. Offline dictionary lookup uses the bundled ECDICT file through a Node worker and does not require Python. diff --git a/README.md b/README.md index 2577056..6ebcfc1 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ use, and is straightforward for AI tools to inspect and work with. - **Translate as you read:** use the bundled offline dictionary, local Argos Translate, DeepSeek, or LibreTranslate. - **Build a wordbook:** save useful English words and their structured definitions for each PDF. - **Keep data AI-ready:** annotations, vocabulary, exports, and progress use portable files beside the document. +- **Ask Codex in context:** send a located passage, nearby evidence, confirmed metadata, and repository snapshots to a read-only Codex CLI session. +- **Build a research library:** keep per-paper profiles, filter a local corpus, compare located evidence, and return to the source page. - **Stay focused:** the side panel starts hidden and appears only when you ask for it. ## Who is it for? @@ -55,6 +57,11 @@ code --install-extension inleaf-reader-0.0.10.vsix After installation, run **Developer: Reload Window** once if the reader command does not appear immediately. +When developing from a local checkout, `./install` packages and installs that +checkout into ordinary VS Code in one step. Reload open VS Code windows once; +afterward, opening any PDF exposes the Inleaf book icon without a development +server or Extension Development Host. + > **Moving from an earlier pre-Inleaf build?** VS Code treats the current > `ziming.inleaf-reader` identity as a separate extension. Install Inleaf Reader, > remove the earlier extension, and reopen each PDF once. Existing local @@ -68,12 +75,28 @@ in the Extensions view and select **Install**. ## Start reading in three steps -1. Open a PDF in VS Code, then click the blue nested-book icon in the editor title bar. You can also right-click the PDF and choose **Inleaf Reader: Open Paper Reader**. +1. Run **Inleaf Reader:快速开始**, then choose **打开论文**. You can still click the blue nested-book icon on a PDF for the shortest direct path. 2. Select text to highlight it, underline it, write a note, translate it, or save a word. 3. Continue reading. Annotations and page progress are saved automatically—there is no separate Save button. -The right panel stays hidden at startup. Open it from the reader toolbar when -you want to browse annotations, saved words, or translation settings. +The right inspector stays hidden at startup. The narrow Inleaf rail on the left +keeps **标注**, **研究**, **仓库**, **文库**, **对比**, and **设置** +discoverable without covering the PDF. 标注, 研究, and 仓库 open the +paper inspector only after you click them; 文库 and 对比 open full +research workspaces. **设置** reopens the same Quick Start menu without leaving +the paper. + +### Recommended research workflows + +- **Ask about a passage:** select text, choose **询问 Codex**, and continue the conversation in the reused read-only terminal. +- **Classify a paper:** choose **研究** in the Inleaf rail, edit its profile, and confirm sourced facts from a current selection. +- **Analyze code:** choose **仓库**, link or clone a checkout, then choose **使用 Codex 分析**. +- **Compare papers:** choose **文库**, add a paper folder, select at least two papers, and build the evidence matrix; **对比** returns to the latest matrix. + +Quick Start also checks Codex and configures DeepSeek from one menu. Ask Codex +only requires a working local Codex CLI. The optional read-only MCP connection +adds Library context; Codex starts its STDIO process when needed, so there is no +separate Inleaf server to keep running. ## What happens to my data? @@ -87,8 +110,16 @@ folder beside it: paper.pdf.annotated.pdf # PDF export with visible marks and comments paper.pdf.wordbook.json # saved words paper.pdf.progress.json # last reading position + paper.pdf.research.json # metadata, classifications, facts, relations, and artifacts + paper.pdf.codex-context.md # replaceable context snapshot for an explicit Codex question ``` +A configured paper-library root also contains a rebuildable +`.inleaf-reader/library.index.json`, a small current-session file for the +optional read-only MCP server, and exported comparisons under +`.inleaf-reader/comparisons/`. The per-paper research files remain the source of +truth; deleting the library index does not delete research data. + These are normal local files. You can copy or synchronize them through Git, iCloud Drive, Dropbox, Syncthing, or another file-sync tool. JSON updates are written atomically, and the previous valid version may be kept as a `.bak` @@ -122,6 +153,32 @@ Webview, settings, sidecar files, or logs. Run **Inleaf Reader: Clear DeepSeek API Key** to remove it. +## Research Workspace and Codex + +Select a located passage and choose **Ask Codex**. Inleaf writes a bounded +Markdown context file and opens Codex CLI with a read-only sandbox in the PDF's +directory. The user question is written to the context file rather than +interpolated into a shell command. Each paper can reuse its terminal session; +Inleaf stores only a lightweight session pointer, not the Codex transcript. + +Choose **研究** or **仓库** in the Inleaf rail to open the paper inspector +explicitly. Suggested facts stay distinct from confirmed facts. A +confirmed paper fact requires a locator, and repository observations carry a +captured commit and dirty-worktree state. After choosing or cloning a local +checkout, **Analyze with Codex** refreshes that snapshot and opens a read-only +repository-analysis conversation that separates paper, README, code, and +working-tree evidence. + +Choose **文库** in the Inleaf rail, add a root, and refresh its rebuildable +index. Select two or more papers to create a comparison. Cells without located +paper evidence or commit-bound repository evidence remain `unknown`; exported +JSON and Markdown retain page, annotation, quote, or commit references. + +The optional MCP integration exposes read-only tools to Codex. Run **Inleaf +Reader: Configure Read-only Codex MCP** after choosing a library root. It does +not add write, clone, or profile-mutation tools, and Reader/Terminal Bridge +features continue to work if MCP is removed. + ### LibreTranslate Set `inleafReader.translationProvider` to `libretranslate` and provide a @@ -188,6 +245,8 @@ If translation does not work, run - PDFs and all reading sidecars stay in paths you choose. - Offline ECDICT lookup and local Argos translation stay on your machine. - DeepSeek and LibreTranslate receive selected text only when you choose those providers. +- Codex receives a local context file only after you choose Ask Codex or Analyze with Codex; PDF and repository text are treated as untrusted evidence. +- Repository cloning always requires an explicit target-folder confirmation. Snapshot refreshes only inspect Git state. - A lightweight path index is stored in VS Code global state for move/rename recovery; annotation and wordbook content is not stored there. Review the privacy terms of any external translation provider before sending @@ -205,10 +264,15 @@ sensitive text. | Command | What it does | | --- | --- | +| `Inleaf Reader: Quick Start` | Opens one menu for papers, Library, Codex, DeepSeek, and the guide. | | `Inleaf Reader: Open Paper Reader` | Opens the active PDF or lets you choose one. | | `Inleaf Reader: Set DeepSeek API Key` | Stores or replaces a DeepSeek key securely. | | `Inleaf Reader: Clear DeepSeek API Key` | Removes the stored DeepSeek key. | | `Inleaf Reader: Diagnose Translation Setup` | Checks dictionary and translation readiness. | +| `Inleaf Reader: Choose Paper Library Root` | Adds a local library root and builds its lightweight index. | +| `Inleaf Reader: Rebuild Paper Library` | Rebuilds an index from PDFs and per-paper research sidecars. | +| `Inleaf Reader: Configure Read-only Codex MCP` | Adds the read-only local Inleaf MCP server to Codex. | +| `Inleaf Reader: Remove Codex MCP` | Removes the Inleaf MCP entry from Codex configuration. | ## Contributing diff --git a/design_and_plan.md b/design_and_plan.md new file mode 100644 index 0000000..c1eaf9b --- /dev/null +++ b/design_and_plan.md @@ -0,0 +1,948 @@ +# Inleaf Reader Research Workspace:Design and Plan + +> 文档状态:Phases 1–5 implemented; real-provider and interactive VS Code manual QA pending +> 更新日期:2026-08-30 +> 范围:可组合阅读动作、Codex 论文对话、稳定证据定位、论文分类与跨论文比较、机器人论文的 GitHub 仓库关联、DeepSeek 翻译 + +本文档描述 Inleaf Reader 从单篇 PDF 阅读器扩展为研究工作台的产品设计与实施计划。产品原则、身份约束、依赖方向和通用验证要求仍以 [AGENTS.md](AGENTS.md) 为准;现有文件职责仍以 [project_map.md](project_map.md) 为准。本文只覆盖本次新增能力,不取代这两份文档。 + +## 1. 结论与范围 + +本项目将新增一个以论文为中心的 Research Workspace,并保持以下职责分离: + +- Inleaf Reader 负责阅读、选区、标注、论文元数据、分类、证据、仓库关系和可移植侧车文件。 +- Codex 负责用户主动发起的论文问答、跨论文推理和本地代码仓库分析。 +- DeepSeek 作为可选远程翻译提供商,只在用户主动点击翻译时接收选中的文本。 +- 用户继续使用自己已经信任的 Codex、DeepSeek 或其他工具;Inleaf Reader 不要求使用捆绑付费 AI。 + +### 1.1 当前状态边界 + +| 能力 | 当前状态 | 本计划中的工作 | +| --- | --- | --- | +| PDF 阅读、缩放、进度恢复 | 已实现 | 保持行为与性能 | +| 高亮、下划线、笔记、标签、撤销 | 已实现 | 为研究上下文复用这些数据 | +| ECDICT 单词查询 | 已实现 | 保持单词优先的离线行为 | +| Argos、LibreTranslate、DeepSeek 翻译路由 | 已实现;自动失败矩阵已验证 | 仍需用户在 VS Code SecretStorage 中输入真实 Key,完成 Flash/Pro 人工成功路径 | +| DeepSeek API Key 的 SecretStorage 保存 | 已实现 | 不改变安全边界 | +| 从 PDF 选区发起 Codex 对话 | 已实现并通过上下文/shell 边界测试 | 仍需真实 VS Code Terminal 点击式 QA | +| 论文元数据与机器人领域分类 | 已实现 | `research.json`、确认状态、关系和 source-missing 已进入 Webview | +| 多论文筛选与比较 | 已实现 | 多根 Library、证据矩阵、JSON/Markdown 导出和 Codex 分析入口已完成 | +| GitHub 仓库关联与分析 | 已实现 | URL 净化、显式 clone、commit/branch/dirty/license 快照,以及基于最新快照的只读 Codex 分析入口已完成 | +| 可组合阅读动作 | 已实现 | 轻量 Action Registry、禁用原因和窄宽度 More 已完成 | +| 标注深链接与稳定证据定位 | 已实现 | annotation → geometry → quote 退化与错误指纹拒绝已测试 | +| 启动与使用引导 | 已实现 | `./dev` 一键开发启动、`./install` 安装到普通 VS Code、Quick Start、阅读器 Setup 入口和 walkthrough 已完成 | +| Workbench 信息架构与视觉层级 | 已实现;实机目视待验收 | 左侧功能轨、分层论文工具栏、本地数据状态栏、按需 Inspector、Library 指标卡和比较证据摘要已完成 | + +“已实现”只表示源代码中存在相应路径,不等于已经完成当前机器上的真实 API、VSIX 或人工阅读验证。 + +### 1.2 实施验证快照(2026-08-30) + +- `npm test` 已通过:构建 Webview/Extension、全部回归、两个 TypeScript 项目和生成 JavaScript 语法检查均成功。 +- 参考语料测试读取 `references/` 顶层 37 篇 PDF,通过临时目录中的硬链接或副本建立 Library;37/37 通过 `pdfinfo`,37/37 的前两页存在可提取文本;原目录未生成 `.inleaf-reader/`。 +- DeepSeek 使用虚构凭证和模拟 HTTP 响应覆盖成功、401、429、5xx、断网、取消与超时;真实 Key 未进入命令行、源码、日志、测试、侧车或 VSIX。 +- VSIX 已构建并通过压缩包完整性检查;包含 206 个条目和唯一一个公开 README,未包含 PDF、`.inleaf-reader/`、设计文档、API Key 或嵌套 VSIX。 +- 本机的应用控制原生管道不可用,因此 PDF 非空白、选区工具条视觉布局、连续滚动和真实 Terminal 交互仍属于明确的人工 QA 待办,不能由上述自动测试替代。 + +### 1.3 参考实现吸收原则 + +本计划参考 Nexus 的当前实现,但只吸收与 Inleaf 产品合同一致的模式: + +| Nexus 中值得吸收的模式 | Inleaf 中的落地方式 | 明确不照搬的部分 | +| --- | --- | --- | +| 命令注册表与 schema 驱动的工具栏、菜单 | 实现最小 `ReaderActionRegistry`,统一选区动作、可用性和排序;UI 仍保持简洁 | 不复制密集的完整 PDF 编辑工具栏,不默认打开侧栏 | +| PDF viewer、anchor adapter、事件 bridge 分层 | 保持 `PdfDocumentView`、纯 annotation model 与宿主工作流分离,新增稳定 Locator 转换边界 | 不因参考实现而迁移 PDFium;除非现有库出现经过复现的能力瓶颈 | +| 标注与笔记的显式关系、按 annotation ID 深链接 | 用关系记录和 Locator 引用已有标注,不复制标注正文作为新的事实来源 | 不引入服务端关系数据库;正式来源仍是普通侧车文件 | +| 多学术来源并行查询、字段优先级、`ok / empty / error` 状态 | 未来若加入元数据发现,必须记录字段 provenance 和逐来源结果状态 | 不在本计划前四阶段扩展成完整文献发现平台 | +| 独立 PDF reader package 和宿主回调 | 先形成稳定接口和独立测试,再决定是否需要物理拆包 | 不为追求目录对称而提前拆成大量小包 | + +参考仓库仍处于快速演化阶段,设计文档与当前代码在 anchor 单位、annotation `autoCommit` 等细节上存在漂移。因此本文以模式为参考,以 Inleaf 源码、测试、`AGENTS.md` 和本文件明确写下的合同为实施依据,不把 Nexus 文档当作 Inleaf 的规范。 + +## 2. 产品目标与非目标 + +### 2.1 产品目标 + +1. 用户在阅读位置即可把当前疑问连同可靠上下文交给 Codex,不需要手动寻找页码、复制标注或切换工作目录。 +2. 每篇论文形成一份结构化、可编辑、可追溯的研究档案。 +3. 用户可以按机器人研究维度筛选论文,并对 2 至 N 篇论文进行证据化比较。 +4. 论文与官方代码仓库、数据集、模型权重和项目主页建立明确关系。 +5. 所有研究数据继续使用 PDF 附近的普通文件保存,便于 Git、同步工具和外部 AI 读取。 +6. DeepSeek 翻译保持显式、可控、安全,不与 Codex 对话或论文分类隐式混用。 + +### 2.2 非目标 + +- 第一阶段不在 Inleaf Reader 内重建完整的 Codex 聊天客户端。 +- 第一阶段不建立云端论文账户、专有云数据库或不可导出的向量库。 +- 不在用户打开论文时自动克隆 GitHub 仓库、调用远程模型或上传全文。 +- 不把 AI 自动提取的分类、论文结论或仓库能力直接标记为已验证事实。 +- 不支持无文本层扫描 PDF;OCR 必须作为未来独立能力设计。 +- 不把论文分类、对话记录、仓库分析结果写入 VS Code GlobalState。 +- 不在本计划内用 PDFium、服务端 PDF reader 或另一套渲染层替换 `react-pdf-highlighter-plus`;引擎迁移必须由可复现的现有限制、性能数据和迁移 QA 单独立项。 +- 不引入 PostgreSQL、Redis、对象存储或常驻云服务作为阅读、标注、分类或比较的必要条件。 +- 不把工具栏 schema 化理解为“显示更多按钮”;默认界面仍优先最少动作和不中断阅读。 + +## 3. 关键用户流程 + +### 3.1 从选区询问 Codex + +1. 用户在 PDF 中选中一段文本。 +2. `ReaderActionRegistry` 根据当前选区、提供商就绪状态和文档会话生成可用动作;选区工具条显示 `Ask Codex`,并提供快捷意图: + - Explain + - Critique + - Relate to my work + - Ask custom question +3. 用户输入问题或选择快捷意图。 +4. Webview 将问题、选区位置和当前 `documentId` 发给 Extension Host。 +5. Extension Host 生成当前论文上下文文件,并打开或复用 `Inleaf Codex` Terminal。 +6. Codex 在 PDF 所在目录启动,首先读取上下文文件,然后进入可持续追问的交互会话。 +7. 用户回到 PDF 后可继续选择其他段落,并将新的上下文追加到同一论文会话。 + +选区动作不得自动打开 Inleaf 右侧面板。启动 Terminal 是用户点击 `Ask Codex` 后的显式结果。 + +### 3.2 论文分类 + +1. 用户打开 `Research` 面板或运行 `Classify Paper`。 +2. Inleaf 展示现有元数据和可选的自动提取建议。 +3. 用户确认、修改或删除分类字段。 +4. 只有确认后的字段进入常规筛选;未确认字段显示来源与置信状态。 +5. 数据保存到当前 PDF 的研究侧车文件。 + +### 3.3 跨论文比较 + +1. 用户打开 Library,筛选或选择 2 至 N 篇论文。 +2. 用户选择比较模板或自定义维度。 +3. 系统从已确认研究档案、标注和仓库快照中构建比较输入。 +4. 缺少证据的单元格显示 `unknown`,而不是由模型补全成事实。 +5. 用户可选择让 Codex 分析差异,但结果必须保留来源论文、页码或仓库 commit。 +6. 比较结果可导出为 Markdown 和 JSON。 + +### 3.4 关联和分析 GitHub 仓库 + +1. 用户手动粘贴仓库 URL,或确认从论文中识别出的候选链接。 +2. Inleaf 记录链接关系,例如 `official implementation`、`dataset` 或 `community reproduction`。 +3. `Clone Repository...` 必须显示目标目录并获得用户确认。 +4. 仓库分析记录 URL、默认分支、commit SHA、许可证、关键入口和提取时间。 +5. `Analyze with Codex` 以只读权限启动,输入同时包含论文研究档案与仓库快照。 +6. 论文声明、仓库 README 声明和实际代码证据分别记录。 + +### 3.5 使用 DeepSeek 翻译 + +1. 用户运行 `Inleaf Reader: Set DeepSeek API Key`,或在 Translation 面板选择 DeepSeek 后进入密钥配置。 +2. 密钥通过密码输入框写入 VS Code SecretStorage。 +3. 用户选择 `deepseek-v4-flash` 或 `deepseek-v4-pro`,并设置目标语言。 +4. 用户选中文本并点击 `Translate`。 +5. 单个英文单词默认优先走 ECDICT;句子和段落走 DeepSeek。 +6. Webview 只接收翻译结果和提供商状态,永远不接收 API Key。 + +未来可增加 `inleafReader.singleWordTranslationProvider`,让用户选择单词继续优先 ECDICT,或强制使用当前远程翻译提供商。 + +### 3.6 从研究结果返回原文 + +1. 标注、研究事实、比较单元格和 Codex 上下文引用统一保存 `EvidenceLocator`。 +2. 用户在 Research、Comparison、Markdown 导出或 Codex 结果中触发定位。 +3. Extension Host 先用文档指纹解析当前 PDF,再向对应 Webview 发送 `focusEvidence`。 +4. Webview 优先按 `annotationId` 定位;标注不存在时,退化到页码与几何位置;几何位置失效时,再以原文和邻近上下文提示用户确认。 +5. 定位失败必须显示失败原因,不得静默跳到相似但未经确认的文本。 + +Locator 只描述“如何重新找到证据”,不复制或升级证据状态。删除标注后,引用该标注的研究事实可以保留原文快照,但必须显示 `sourceMissing`,不能继续表现为可跳转的已验证来源。 + +## 4. 总体架构 + +```text +VS Code commands + -> src/extension.ts + -> PaperReaderPanel + -> ReaderStorage existing reading sidecars + -> TranslationService existing translation boundary + -> ResearchStorage paper research profile + -> LibraryIndex rebuildable cross-paper index + -> RepositoryService repository links and snapshots + -> CodexBridge terminal/session handoff + -> ComparisonService evidence-based comparison inputs + -> EvidenceLocatorService resolve paper + annotation/page evidence targets + +Webview + -> main.tsx workflow coordination + -> PdfDocumentView PDF interaction + -> AnnotationWidgets existing point-of-reading actions + -> ReaderActionRegistry action availability, ordering, invocation contracts + -> ResearchPanel paper profile and repository links + -> LibraryView filtering and paper selection + -> ComparisonView comparison matrix and evidence links + +Optional local integration + -> Inleaf MCP server + -> read-only access to paper, annotations, library, comparisons, repos + -> Codex CLI / Codex IDE extension +``` + +### 4.1 依赖规则 + +- `extension.ts` 只注册命令和管理激活,不实现论文分类、GitHub 或 Codex 协议。 +- `PaperReaderPanel` 只协调会话和跨边界消息,不吸收分类算法、仓库解析或提示词构建。 +- `TranslationService` 继续只负责翻译;Codex 问答必须使用独立的 `CodexBridge` 或 `ResearchAssistant` 边界。 +- `ResearchStorage` 负责研究档案的原子写入、备份和恢复。 +- `LibraryIndex` 是可重建索引;单篇论文侧车是正式来源。 +- `ComparisonService` 只组合有来源的数据,不替模型生成无法追溯的结论。 +- `ReaderActionRegistry` 只描述动作、可用条件和调用入口;翻译、Codex、存储等实现继续留在各自边界后面。 +- `EvidenceLocator` 是跨标注、研究事实、比较和 Codex 上下文共用的稳定合同;PDF 库的运行时对象和 DOM 节点不得进入持久化数据。 +- Git、终端、进程、SecretStorage 和网络调用只允许出现在 Extension Host。 +- Webview 只管理 UI、PDF 交互和显式用户动作。 + +### 4.2 阅读动作调用链 + +```text +selection / saved annotation / reader state + -> ReaderActionRegistry.getAvailableActions(context) + -> action renderer at point of reading + -> typed Webview message + -> PaperReaderPanel routing only + -> TranslationService | CodexBridge | ReaderStorage | ResearchStorage +``` + +每个动作至少定义稳定 `id`、展示位置、排序、`isAvailable(context)`、禁用原因和 typed invocation payload。第一版不需要通用插件运行时,也不允许第三方代码动态注入;目标是消除顶层 UI 中重复的业务条件,并为后续动作形成可测试边界。 + +## 5. Codex 集成设计 + +### 5.1 设计选择 + +Codex 集成按以下优先级实现: + +1. **Terminal Bridge:第一版必做。** 复用用户现有 Codex CLI 和交互体验。 +2. **MCP Bridge:稳定后实现。** 让 Codex CLI 和 IDE 扩展读取 Inleaf 的结构化上下文。 +3. **Embedded Chat:可选后续。** 只有用户明确需要在阅读器内部显示完整对话时,才评估 Codex SDK 或 App Server。 + +不依赖未公开或不稳定的 Codex VS Code 命令 ID。若无法通过公开接口把提示词写入 Codex IDE composer,则使用 Terminal Bridge 或 MCP,而不是自动化点击第三方扩展 UI。 + +### 5.2 Terminal Bridge + +新增 `CodexBridge`,职责包括: + +- 检查 `codex` CLI 是否可用。 +- 为当前 PDF 创建或刷新 Codex 上下文 Markdown。 +- 创建或复用一个以 PDF 目录为工作目录的 VS Code Terminal。 +- 启动交互式 Codex,并附带只读研究提示。 +- 保存论文与 Codex session/thread 的轻量关联;不把对话正文写入 GlobalState。 +- 将启动失败同时报告给 Webview `stateError` 和 `vscode.window.showErrorMessage`。 + +不得将原始用户问题拼接进未经安全处理的 shell 命令。优先把动态内容写入上下文文件,并使用固定命令启动 Codex;跨平台命令构造必须覆盖 macOS、Linux 和 Windows。 + +### 5.3 Codex 上下文合同 + +生成文件: + +```text +.inleaf-reader/ + paper.pdf.codex-context.md +``` + +建议结构: + +```markdown +# Inleaf Reader Paper Context + +## Document +- PDF: /absolute/path/to/paper.pdf +- Fingerprint: ... +- Current page: 7 + +## Current selection +- Locator: document fingerprint + page + normalized rects + quote context +... + +## Nearby context +### Before +... +### After +... + +## User question +... + +## Confirmed paper metadata +... + +## Relevant annotations +- Annotation ID + EvidenceLocator + selected text/note +... + +## Linked repositories +- URL: ... +- Local checkout: ... +- Commit: ... + +## Evidence rules +- Distinguish paper claims, repository evidence, user notes, and inference. +- Cite PDF pages or repository files and commit when possible. +- Use unknown when the provided evidence does not establish a fact. +``` + +该文件是可替换的当前上下文快照,不是论文档案的唯一来源。用户问题和选区必须绑定当前 `documentId`,过期 Webview 消息不得覆盖新 PDF 的上下文。 + +#### EvidenceLocator 合同 + +```ts +interface EvidenceLocator { + schemaVersion: 1; + documentFingerprint: string; + annotationId?: string; + page: number; + rects?: Array<{ x: number; y: number; width: number; height: number }>; + quote: string; + contextBefore?: string; + contextAfter?: string; +} +``` + +- `rects` 继续使用 Inleaf 当前 `AnnotationRect` 的页内归一化坐标,不引入第二套 PDF User Space 持久化格式。 +- `annotationId` 存在时是首选定位键;指纹用于防止同名 PDF 串线;页码、几何位置、原文和上下文依次提供可解释退化路径。 +- Locator 的构建和解析是纯函数,并通过 annotation → locator → focus target 往返测试。 +- 只有当前标注 Schema 的明确迁移需求才允许改变坐标合同;PDF viewer 内部坐标转换集中在 adapter 中,不泄漏到 Research 或 Comparison 模块。 + +### 5.4 MCP Bridge + +第一组 MCP 工具保持只读: + +| 工具 | 返回内容 | +| --- | --- | +| `get_current_paper` | PDF 路径、指纹、当前页、基础元数据 | +| `get_current_selection` | 当前选区、页码、邻近上下文 | +| `list_annotations` | 可过滤的标注和位置 | +| `get_paper_research_profile` | 已确认字段及未确认建议 | +| `search_library` | 按标签、任务、机器人、传感器等查询 | +| `get_comparison_input` | 选中论文的证据化比较材料 | +| `list_repository_artifacts` | 仓库 URL、本地路径和 commit 快照 | + +写操作,例如修改分类、保存比较结果或克隆仓库,不进入第一版 MCP。后续若增加,必须单独标注为写工具并要求审批。 + +### 5.5 会话与权限 + +- 论文问答默认使用只读沙箱。 +- 每篇论文可以关联一个活跃 Codex session;用户也可显式新建会话。 +- 跨论文比较使用独立会话,避免把单篇论文的隐含上下文带入比较。 +- 仓库分析默认只读;只有用户明确要求修改代码时才进入可写工作区。 +- PDF 文本和仓库内容都应视为不可信输入,不得把其中的指令当作系统指令执行。 + +## 6. 论文研究档案 + +### 6.1 侧车文件 + +为 `paper.pdf` 新增: + +```text +.inleaf-reader/ + paper.pdf.research.json +``` + +建议 Schema: + +```json +{ + "schemaVersion": 1, + "paperFingerprint": "sha256...", + "bibliography": { + "title": "", + "authors": [], + "year": null, + "venue": "", + "doi": "", + "arxivId": "", + "projectUrl": "" + }, + "classification": { + "areas": [], + "tasks": [], + "methods": [], + "robots": [], + "endEffectors": [], + "sensors": [], + "dataSources": [], + "environments": [], + "evaluationTypes": [] + }, + "artifacts": [], + "facts": [], + "relations": [], + "updatedAt": "" +} +``` + +### 6.2 证据字段 + +AI 或规则提取的内容必须采用显式证据结构: + +```json +{ + "id": "fact-id", + "field": "classification.sensors", + "value": "tactile", + "status": "suggested", + "source": { + "type": "paper", + "section": "Method", + "locator": { + "schemaVersion": 1, + "documentFingerprint": "sha256...", + "annotationId": "optional-annotation-id", + "page": 4, + "rects": [], + "quote": "...", + "contextBefore": "...", + "contextAfter": "..." + } + }, + "extractedBy": { + "kind": "provider", + "name": "deepseek", + "model": "...", + "capturedAt": "" + }, + "confidence": 0.82, + "createdAt": "" +} +``` + +`status` 至少支持: + +- `suggested`:自动提取,尚未确认。 +- `confirmed`:用户确认,可进入默认筛选和比较。 +- `rejected`:用户明确拒绝,避免重复建议。 +- `unknown`:当前证据无法判断。 + +`relations` 保存显式关系而不是复制实体,例如研究事实引用某个标注、某个标注被加入某条研究笔记、某个比较单元格引用多个事实。关系至少包含稳定 relation ID、两端实体 ID、关系类型、创建时间;实体删除后必须能显示 dangling/source-missing 状态。第一版只实现实际用户流程需要的关系类型,不建立通用知识图谱运行时。 + +### 6.3 机器人论文分类维度 + +默认分类不是封闭枚举;用户可以添加自定义字段。初始推荐维度包括: + +- Area:manipulation、locomotion、navigation、HRI、robot learning、active perception。 +- Task:grasping、regrasp、in-hand manipulation、assembly、tool use、mobile manipulation。 +- Embodiment:robot arm、humanoid、mobile manipulator、dexterous hand、parallel gripper。 +- Sensor:RGB、RGB-D、event camera、tactile、force/torque、proprioception。 +- Method:planning、optimization、RL、imitation learning、VLA、world model、foundation model。 +- Data:simulation、real robot、teleoperation、human video、synthetic、hybrid。 +- Evaluation:simulation only、bench test、real robot、user study、public benchmark。 + +UI 必须允许不同研究方向扩展维度,不能把机器人分类逻辑硬编码进 `main.tsx`。 + +### 6.4 外部元数据与来源状态 + +若后续增加 DOI、arXiv、Semantic Scholar、OpenAlex、Crossref 等来源,必须采用字段级 provenance,而不是让最后返回的请求覆盖已有值: + +```ts +type SourceOutcome = 'ok' | 'empty' | 'error' | 'notQueried'; + +interface FieldProvenance { + source: string; + sourceRecordId?: string; + fetchedAt: string; + outcome: SourceOutcome; +} +``` + +- 每次聚合返回逐来源 `SourceOutcome`,部分失败仍可显示已有结果,但 UI 必须暴露覆盖范围。 +- title、authors、abstract、publication date、PDF URL 等字段分别配置显式来源优先级并单元测试;不得使用一个全局优先顺序替代字段判断。 +- DOI 优先作为去重键;缺少 DOI 时的 title/year 退化键只能生成候选匹配,不能自动合并本地论文档案。 +- 外部数据先作为 suggestion 或 provenance-bearing metadata;不得自动提升为用户确认事实。 +- 该能力属于 Research Profile 之后的可选增强,不是 Ask Codex 或本地标注的前置依赖。 + +## 7. Library 与跨论文比较 + +### 7.1 Library Index + +用户为论文库选择一个根目录,系统在该目录写入: + +```text +library-root/.inleaf-reader/library.index.json +``` + +索引只包含定位和筛选所需的轻量字段: + +```json +{ + "schemaVersion": 1, + "generatedAt": "", + "papers": [ + { + "fingerprint": "", + "pdfPath": "", + "researchPath": "", + "title": "", + "year": null, + "tags": [], + "repositoryCount": 0, + "updatedAt": "" + } + ] +} +``` + +索引可随时从单篇侧车重建。现有 GlobalState 只保存论文库根目录和轻量定位信息,不保存研究内容。 + +### 7.2 比较合同 + +比较维度默认包括: + +1. 研究问题与任务定义。 +2. 关键假设与适用边界。 +3. 机器人平台、末端执行器和传感器。 +4. 输入表示、模型结构和控制输出。 +5. 训练数据、仿真环境和真实数据比例。 +6. 数据集、基线、指标和实验规模。 +7. 仿真证据、台架证据与真实机器人证据。 +8. 消融实验和失败案例。 +9. 代码、数据、权重与许可证。 +10. 复现门槛和已知限制。 + +每个单元格使用以下状态之一: + +- `evidenced`:存在可定位来源。 +- `inferred`:由多个来源推断,必须显示推断标签。 +- `conflicting`:论文、补充材料或仓库证据冲突。 +- `unknown`:没有足够证据。 + +每个非 `unknown` 单元格必须保存 `evidenceRefs`,引用 Research Profile 中的 fact ID、`EvidenceLocator`,或绑定 commit SHA 的仓库文件位置。比较文件不得复制一份无法回溯来源的自由文本作为唯一证据。点击证据时复用 3.6 的定位流程;来源已删除或版本漂移时显示 `sourceMissing` 或 `stale`。 + +### 7.3 比较输出 + +```text +.inleaf-reader/comparisons/ + .json + .md +``` + +JSON 是结构化来源,Markdown 是供人阅读和 AI 使用的导出。比较结果不得覆盖单篇论文的研究档案。 + +Markdown 导出应为每个结论保留可移植定位信息:论文文件名/指纹、页码、短引文、annotation ID(如有)或仓库 URL/commit/path。VS Code 内部 command URI 可以作为附加便利链接,但不能成为唯一定位方式。 + +## 8. GitHub 和研究工件 + +### 8.1 工件类型 + +`artifacts` 支持: + +- `github` +- `git_repository` +- `dataset` +- `model_weights` +- `project_page` +- `supplementary_material` + +仓库记录示例: + +```json +{ + "id": "artifact-id", + "type": "github", + "url": "https://github.com/org/repo", + "relationship": "official implementation", + "verification": { + "status": "confirmed", + "sourceType": "paper", + "page": 1 + }, + "localCheckout": { + "path": "", + "commit": "", + "dirty": null, + "capturedAt": "" + }, + "license": "", + "notes": "" +} +``` + +### 8.2 仓库分析边界 + +- 自动识别到的链接先作为候选,用户确认后才能标记为官方工件。 +- “README 声称可运行”不等于依赖安装成功或机器人实验通过。 +- “存在仿真配置”不等于真实机器人支持。 +- 仓库分析必须附带 commit SHA;未固定版本的结论标记为可能漂移。 +- 私有仓库凭据不得写入研究侧车或日志。 +- Clone、checkout、submodule 初始化和大文件下载都必须由用户显式触发。 + +## 9. DeepSeek 翻译设计 + +### 9.1 现有实现 + +当前 `TranslationService` 已经: + +- 从 VS Code SecretStorage 读取 DeepSeek API Key。 +- 调用 `POST https://api.deepseek.com/chat/completions`。 +- 支持 `deepseek-v4-flash` 和 `deepseek-v4-pro`。 +- 使用学术翻译 system prompt。 +- 使用 `thinking: { "type": "disabled" }`、非流式响应和超时处理。 +- 将 401、网络、超时和无效响应转换为用户可理解的错误。 + +### 9.2 保持的安全规则 + +- API Key 只能从 VS Code 的密码输入框进入 SecretStorage。 +- API Key 不得进入 settings JSON、Webview、侧车、日志、错误详情或遥测。 +- 只发送用户主动选择并点击翻译的文本。 +- UI 必须清楚标识当前提供商与远程发送行为。 +- 翻译结果仍绑定源文本和 `documentId`,过期结果不得覆盖新选区。 + +### 9.3 待验证和改进 + +- 使用真实用户 Key 验证 Flash 和 Pro 的成功路径。 +- 验证无余额、401、429、服务端错误、超时和断网路径。 +- 验证公式、引用、段落和术语保持效果。 +- 增加取消尚未完成翻译的能力。 +- 评估流式翻译,但不得为流式输出牺牲 stale-result 防护。 +- 明确单词优先 ECDICT 的 UI 提示,并增加可选覆盖设置。 + +DeepSeek 翻译与 Codex 论文对话保持两个独立边界。不得因为用户配置了 DeepSeek 翻译,就自动把 Codex 问答或论文分类也发送到 DeepSeek。 + +## 10. Webview 与交互设计 + +### 10.1 阅读位置动作 + +第一版引入轻量动作合同,而不是通用插件系统: + +```ts +type ReaderActionLocation = 'selection-primary' | 'selection-more' | 'annotation-inline'; + +interface ReaderActionDefinition { + id: `inleafReader.action.${string}`; + location: ReaderActionLocation; + order: number; + label: string; + isAvailable(context: Context): boolean; + disabledReason?(context: Context): string | undefined; + buildPayload(context: Context): Payload; +} +``` + +- Registry 决定动作身份、顺序、可用条件和 payload;React 组件只负责渲染和收集必要输入。 +- 动作执行仍通过判别联合消息进入既有 Extension Host 边界,不允许 registry 保存服务实例或绕过 `PaperReaderPanel`。 +- 高频、低延迟动作进入 `selection-primary`;低频动作进入 `selection-more`,不得因能力增加而持续拉长主工具条。 +- 同一能力在选区和已保存标注附近出现时复用同一个 action ID 和可用性规则,但可以使用不同 renderer。 +- 远程或外部动作必须能解释禁用原因,例如 Codex CLI 不可用、远程翻译未 opt-in;不可用动作不得诱导自动配置或自动打开面板。 + +选区工具条建议顺序: + +```text +高亮 | 下划线 | 笔记 | 翻译 | 询问 Codex +``` + +- `Translate` 继续复用现有单一翻译动作。 +- `Ask Codex` 打开紧凑问题输入或直接使用快捷意图。 +- 两者都不得自动打开右侧面板。 +- 选区中的原始 OCR/文本错误在写入标注或上下文前仍可编辑。 +- 当可用宽度不足时,保留 Highlight、Note、Translate 等高频动作,并把较低优先级动作收进 `More`;具体排序通过行为观察和人工 QA 调整,不照搬参考仓库的桌面 PDF 编辑器工具栏。 + +### 10.2 右侧面板 + +现有标签: + +```text +Overview | Annotations | Wordbook | Translation +``` + +新增: + +```text +研究 | 代码仓库 +``` + +面板保持用户主动打开、启动时隐藏。Library 和跨论文比较属于独立视图或命令,不应把单篇阅读侧栏变成拥挤的全局管理器。 + +### 10.3 Workbench 界面层级 + +界面借鉴 UniLab Workbench 的“操作壳层”而不复用其品牌、资产或实验状态语义: + +```text +Inleaf 功能轨 | PDF 阅读器 + 论文命令栏 | 用户主动打开的论文检查器 + | local-data status bar + | 文库 / 跨论文比较工作区(显式打开时) +``` + +- 左侧窄功能轨始终提供 `阅读 / 标注 / 研究 / 仓库 / 文库 / 对比 / 设置`,并使用 `阅 / 记 / 研 / 仓 / 库 / 比 / 设` 作为紧凑图标,解决能力已实现但难发现的问题。 +- 顶部第一层显示当前论文和 Codex、本地侧车、Library 等就绪状态;第二层只保留分页、缩放和 Inspector 开关等阅读控制。 +- 底部状态栏只显示本地数据、当前页和当前论文指纹等低干扰信息,不伪装成后台服务成功状态。 +- Paper Inspector 仍在启动时隐藏;选择翻译、保存标注和点击普通阅读动作不得自动打开它。 +- Library 使用论文、仓库、标签和当前选择的概览指标;Comparison 显式汇总 `evidenced / inferred / conflicting / unknown`,避免视觉美化掩盖证据边界。 +- 颜色、字体和交互状态使用 VS Code Theme 变量,自适应亮色和深色主题;窄窗口中 Inspector 退化为用户主动打开的右侧覆盖层。 + +### 10.4 状态反馈 + +下列结果必须同时进入 Webview 状态和 VS Code 用户提示: + +- Codex CLI 不可用或启动失败。 +- 上下文文件写入失败。 +- 研究侧车损坏或恢复失败。 +- 仓库 URL 无效、clone 失败或版本快照失败。 +- DeepSeek 翻译失败。 +- Library 索引部分失效或包含已移动 PDF。 + +## 11. 建议代码边界 + +### 11.1 Extension Host + +| 文件 | 职责 | +| --- | --- | +| `src/researchTypes.ts` | 研究档案、证据、工件与比较类型 | +| `src/researchStorage.ts` | `research.json` 原子读写、备份与迁移 | +| `src/libraryIndex.ts` | 扫描、增量更新和重建 Library 索引 | +| `src/repositoryService.ts` | URL 校验、用户确认后的 clone、commit 快照 | +| `src/codexBridge.ts` | Codex 可用性、上下文生成、Terminal 会话 | +| `src/comparisonService.ts` | 构建证据化比较输入与导出 | +| `src/evidenceLocator.ts` | 解析文档指纹、annotation ID 与退化定位目标 | +| `src/researchMessages.ts` | 新增跨边界消息的判别联合类型 | + +`PaperReaderPanel` 只持有这些服务并转发消息。纯格式化、分类归一化和比较排序逻辑应可独立单元测试。 + +### 11.2 Webview + +| 文件 | 职责 | +| --- | --- | +| `webview/src/components/AskCodexActions.tsx` | 选区问题与快捷意图 | +| `webview/src/components/ResearchPanel.tsx` | 单篇论文研究档案 | +| `webview/src/components/RepositoryPanel.tsx` | 工件关联与状态展示 | +| `webview/src/components/LibraryView.tsx` | 全局筛选和多选 | +| `webview/src/components/ComparisonView.tsx` | 比较矩阵与证据跳转 | +| `webview/src/readerActions.ts` | 轻量 Action Registry、可用性与排序规则 | +| `webview/src/evidenceLocator.ts` | Annotation/selection 与持久化 Locator 的纯转换 | +| `webview/src/researchModel.ts` | 纯分类、证据和显示转换 | + +只有在这些模块形成明确边界时才创建文件;简单逻辑不应被拆成大量微型模块。 + +Nexus 把 reader 物理拆成独立 package 的做法只作为边界验证参考。Inleaf 第一阶段先通过接口、纯转换和回归测试证明边界;只有 viewer 需要被多个宿主复用,或现有双 TypeScript 项目无法保持依赖方向时,才评估独立 package。 + +## 12. 并发、恢复与性能 + +- 所有新消息必须携带 `documentId`。 +- 切换 PDF 后,旧论文的分类提取、翻译或 Codex 上下文生成结果不得写入当前论文。 +- `research.json` 使用与现有 JSON 一致的串行 mutation queue、临时文件原子替换和 `.bak`。 +- Library 扫描在后台增量进行,不在滚动、页面渲染或选区处理器中同步遍历文件系统。 +- 比较结果只加载所选论文,不能默认把整个论文库送入 Webview 或模型。 +- Git 状态、仓库元数据和远程信息使用缓存,并附带采集时间。 +- 对 PDF 文本抽取和自动分类进行取消与过期检测。 +- Action Registry 定义保持静态;可用性只从当前会话的轻量 context 派生,不在滚动、缩放或页面渲染事件中重建服务和组件树。 +- `EvidenceLocator` 的 quote/context 退化搜索只在用户显式跳转且 ID/几何定位失败时执行,并复用现有懒加载文本层缓存;不得恢复同步全页几何扫描。 +- 多来源元数据请求必须可取消并保留逐来源 outcome;一次来源失败不得清空其他已验证结果或覆盖用户确认字段。 + +## 13. 隐私与安全 + +- DeepSeek 是远程提供商,只有显式翻译动作可发送文本。 +- Codex 的工作目录和沙箱权限必须在启动前明确;论文问答默认只读。 +- 任何未来的自动论文分类都必须显示使用的提供商和将发送的内容范围。 +- 不自动发送整篇 PDF;优先发送当前选区、附近上下文和用户确认的研究档案。 +- 论文、网页和仓库中的提示文本均视为不可信数据,不能改变系统安全规则。 +- 仓库 URL、文件名和论文文本不得直接进入未转义 shell 命令。 +- 用户可删除研究档案、比较结果和 Codex 上下文文件,不影响原始 PDF。 +- 不采集论文内容、问题、翻译文本、API Key 或仓库凭据作为遥测。 + +## 14. 实施阶段与验收标准 + +### Phase 0:验证现有 DeepSeek 翻译 + +工作: + +- 修复本地 Node/依赖验证环境。 +- 运行 `npm test`。 +- 使用真实 DeepSeek Key 完成 Flash 和 Pro 人工测试。 +- 覆盖 401、429、超时、断网和取消路径。 + +验收: + +- API Key 只存在于 SecretStorage。 +- 句子翻译结果正确绑定源文本与文档会话。 +- 单词仍默认走 ECDICT。 +- 错误同时到达 Webview 和 VS Code 用户提示。 + +### Phase 1:Ask Codex Terminal Bridge + +工作: + +- 先定义 `ReaderActionRegistry`,将现有 Highlight、Underline、Note、Translate 迁入 registry 并保持行为不变。 +- 新增 `Ask Codex` 选区动作和问题输入。 +- 新增上下文 Markdown 生成器。 +- 新增 `EvidenceLocator` 构建、序列化和 focus 消息合同。 +- 新增 Codex CLI 检测、Terminal 创建与复用。 +- 为每篇论文维护轻量会话关联。 + +验收: + +- 从 PDF 选区两次点击内进入可追问 Codex 会话。 +- Codex 可看到 PDF 路径、页码、选区、附近上下文和用户问题。 +- 四个既有选区动作迁移后交互、保存结果和侧栏隐藏行为不变;新增动作不要求修改 SelectionToolbar 的业务分支。 +- Action 顺序、可用性、禁用原因和 typed payload 有独立单元测试。 +- Codex 上下文中的 Locator 能从 annotation ID 或页码/位置重新聚焦原证据;错误文档指纹被拒绝。 +- 快速切换两篇 PDF 时上下文不串线。 +- CLI 缺失或启动失败有明确恢复建议。 +- 用户动态文本不会形成 shell 注入。 + +### Phase 2:Research Profile 与仓库关联 + +工作: + +- 定义并实现 `research.json` Schema。 +- 增加 Research 和 Repositories 面板。 +- 支持手动分类、候选建议确认和 GitHub URL 关联。 +- 支持 Research fact、annotation 与 note 的显式 relation,并显示 source-missing 状态。 +- 支持仓库 commit 快照;clone 保持用户确认。 +- 若增加外部论文元数据,先实现逐来源 outcome、字段优先级和 provenance;外部请求保持可选。 + +验收: + +- 分类与仓库关系在重启后恢复。 +- 并发写入不会丢失字段。 +- 已有目的地数据不会被迁移或恢复覆盖。 +- 自动建议与用户确认字段在 UI 和数据中可区分。 +- relation 只引用既有实体,不产生第二份互相漂移的标注正文;删除来源后可检测 dangling reference。 +- 单个外部来源失败不会伪装为全局空结果,也不会覆盖用户确认字段。 + +### Phase 3:Library 与筛选 + +工作: + +- 用户选择论文库根目录。 +- 构建可重建索引和增量刷新。 +- 支持机器人研究维度筛选、搜索和多选。 + +验收: + +- 移动或重命名 PDF 后可通过指纹恢复关联。 +- 索引损坏可从单篇侧车重建。 +- GlobalState 不包含论文研究正文。 +- 大型论文目录扫描不阻塞阅读器滚动和缩放。 + +### Phase 4:跨论文比较 + +工作: + +- 实现比较维度选择和矩阵视图。 +- 支持证据跳转、冲突与 unknown 状态。 +- 导出 JSON 和 Markdown。 +- 增加 `Analyze comparison with Codex`。 + +验收: + +- 每个非 unknown 单元格都有页码、标注或仓库 commit 来源。 +- 所有 evidence link 都能跳回原标注/页内位置,或明确显示 source-missing/stale 原因。 +- AI 推断明确标记为 inferred。 +- 导出文件可被外部 AI 独立读取。 +- 比较结果不反向覆盖单篇论文档案。 + +### Phase 5:只读 Inleaf MCP Bridge + +工作: + +- 提供只读 MCP 工具。 +- 为 Codex CLI 和 IDE 提供明确的一次性配置流程。 +- 增加工具级输入校验、超时与审计输出。 + +验收: + +- Codex CLI 和 IDE 能查询同一论文库配置。 +- MCP 不可修改 PDF、侧车或仓库。 +- 用户可以禁用或移除 MCP 集成。 +- MCP 不可用时,Reader 和 Terminal Bridge 仍正常工作。 + +### Phase 6:可选的 Embedded Chat + +仅当 Terminal 和 MCP 仍不能满足阅读连续性时评估: + +- Codex SDK thread 生命周期。 +- App Server 的 stdio 协议、流式事件和审批 UI。 +- 可移植对话导出。 +- 与现有 Codex 登录和权限模型的兼容性。 + +此阶段不是前五阶段的发布阻塞项。 + +## 15. 测试计划 + +### 15.1 单元与合同测试 + +- 研究档案 Schema 默认值、迁移和未知字段兼容。 +- 研究档案并发写入、原子替换和 `.bak` 恢复。 +- Codex 上下文生成的字段完整性和 Markdown 转义。 +- Action Registry 的稳定 ID、排序、可用性、禁用原因和 payload 构建。 +- 既有 Highlight、Underline、Note、Translate 通过 registry 调用后的行为回归。 +- `EvidenceLocator` 的 selection/annotation 往返、错误指纹拒绝、ID 缺失后的逐级退化和 source-missing。 +- Webview 与 Extension Host 新消息的 `documentId` 约束。 +- Library 索引重建、去重、移动恢复和损坏处理。 +- 分类标签归一化和用户确认状态转换。 +- fact/annotation/note relation 的同文档约束、dangling reference 检测和删除行为。 +- 多来源元数据逐来源 outcome、字段级优先级、DOI 去重和 title/year 候选匹配。 +- 比较状态:evidenced、inferred、conflicting、unknown。 +- 仓库 URL 校验、commit 快照和 clone 目标保护。 +- DeepSeek 成功、401、429、超时、网络失败和 stale result。 + +### 15.2 人工 QA + +- 正常文本 PDF 中选区并启动 Codex,连续追问两轮。 +- 在窄宽度和正常宽度下检查选区动作排序与 `More` 收纳,确认新增动作没有挤压高频操作。 +- 快速切换两篇 PDF,确认 Codex 上下文、进度和侧车不串线。 +- 从 Research fact、比较单元格和导出 Markdown 分别返回原标注;再删除来源标注,确认显示 source-missing 而非错误定位。 +- 创建、修改、拒绝和确认分类建议。 +- 关联一个官方仓库和一个非官方复现仓库,确认关系显示不同。 +- 比较至少三篇机器人论文并跳回证据位置。 +- 在干净与 dirty 仓库中查看快照,确认不会擅自改动或清理工作树。 +- 使用 DeepSeek Flash、Pro、错误 Key 和断网状态翻译。 +- 隐藏侧栏后完成高亮、翻译和 Ask Codex,确认侧栏不会自动出现。 + +### 15.3 发布门槛 + +- `npm test` 通过。 +- 使用真实文本 PDF 完成人工 QA。 +- 构建并检查 VSIX。 +- 确认生成的 `media/` 运行资产已更新。 +- 确认 VSIX 只包含一个公开 README。 +- 确认没有用户 PDF、`.inleaf-reader/` 数据、API Key、仓库凭据或 VSIX 文件进入提交。 + +## 16. 风险与默认决策 + +| 风险 | 默认决策 | +| --- | --- | +| Codex IDE 没有公开的 composer 注入接口 | 使用 Terminal Bridge 和 MCP,不依赖内部命令 ID | +| PDF 全文过大或包含无关内容 | 默认只传选区、附近上下文、已确认档案和相关标注 | +| AI 分类产生幻觉 | 候选字段必须确认;缺证据使用 unknown | +| 仓库随时间变化 | 所有分析绑定 commit SHA 和采集时间 | +| 自动 clone 带来磁盘与安全风险 | 只允许用户显式确认后 clone | +| Library 索引损坏 | 索引可从单篇侧车重建 | +| 远程提供商泄露文本 | 明确 opt-in,并显示发送范围和提供商 | +| `main.tsx` 继续膨胀 | 将研究 UI 和纯规则提取到有意义的边界 | +| Action Registry 演变成通用插件平台 | 第一版只注册内置动作和 typed payload,不支持动态第三方代码 | +| 参考 PDF reader 的高级功能诱发引擎迁移 | 维持现有 PDF.js worker 与 highlighter 边界;只有独立 ADR、基准和人工 QA 才能改变 | +| Locator Schema 与 viewer 内部坐标耦合 | 持久化沿用归一化 AnnotationRect,所有运行时坐标转换集中在 adapter | +| 外部元数据部分失败被误报为“无结果” | 返回逐来源 outcome 与字段 provenance,保留其他来源和用户确认值 | +| 参考仓库设计文档与代码漂移 | 固定参考 commit,引用模式而非复制实现;实施以 Inleaf 测试和合同为准 | +| MCP 或 Codex 不可用 | 阅读、标注、离线词典和翻译能力保持独立 | + +## 17. 仍需产品确认的问题 + +以下问题不阻塞 Phase 0 和 Phase 1,可在实现中通过保守默认值推进: + +1. Codex 会话是默认每篇论文一个,还是每个用户问题一个?默认:每篇论文一个,可手动新建。 +2. Library 根目录是否允许多个?默认:允许多个,每个根目录独立索引。 +3. 自动分类使用 DeepSeek、Codex 还是仅手动?默认:先手动与规则提取;远程 AI 分类后续显式开启。 +4. 仓库 clone 默认目录在哪里?默认:由用户每次选择,不写入扩展目录。 +5. 比较模板是否只针对机器人?默认:提供机器人模板,同时允许自定义维度。 +6. 是否保存完整 Codex 对话?默认:只保存 session 关联和用户主动导出的 Markdown,不复制内部完整 transcript。 +7. 是否在 Research Profile 阶段自动查询外部学术来源?默认:不自动;用户显式触发后才查询,并显示来源、发送的 identifier 和逐来源 outcome。 +8. 是否为了高级标注迁移 PDF 引擎?默认:否;维持现有引擎,只有单独批准的 ADR 和验证证据才能改变。 + +## 18. 外部设计依据与参考实现审计 + +- [Codex IDE extension](https://developers.openai.com/codex/ide):Codex 可使用编辑器中的文件和选区上下文。 +- [Codex CLI reference](https://developers.openai.com/codex/cli/reference):交互式 CLI、可选初始提示和会话恢复。 +- [Codex MCP](https://developers.openai.com/codex/mcp):Codex CLI 与 IDE 扩展支持 MCP,并共享本地配置。 +- [Codex SDK](https://developers.openai.com/codex/sdk):可程序化启动、继续和恢复 Codex thread。 +- [Codex App Server](https://developers.openai.com/codex/app-server):适用于带认证、历史、审批和流式事件的深度客户端集成。 +- [DeepSeek Chat Completions API](https://api-docs.deepseek.com/api/create-chat-completion/):当前翻译请求使用的 API 格式与模型参数。 + +### 18.1 Nexus 参考快照 + +本次参考固定到 Nexus `main` 的 commit [`5f198b3`](https://github.com/ha0xin/nexus/commit/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca)(2026-03-23)。参考结论如下: + +- [commands](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/packages/pdf-reader/src/config/commands.ts) 与 [UI schema](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/packages/pdf-reader/src/config/ui-schema.ts) 证明动作身份和界面布局可以解耦;Inleaf 只采用轻量内置 Action Registry,不采用完整编辑器工具栏。 +- [PDF viewer](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/packages/pdf-reader/src/components/pdf-viewer.tsx)、[anchor adapter](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/packages/pdf-reader/src/adapters/anchor-adapter.ts) 和 [annotation event bridge](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/packages/pdf-reader/src/bridges/annotation-event-bridge.tsx) 证明 viewer runtime、持久化模型和宿主回调应隔离;Inleaf 保留现有引擎,只加强 adapter 合同。 +- [annotation-note schema](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/packages/shared/src/schema/core.ts) 与 [annotation deep-link route state](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/apps/web/src/lib/reader-route-state.ts) 支持显式关系和稳定返回原文;Inleaf 以侧车 relation + `EvidenceLocator` 实现相同产品价值。 +- [metadata merge](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/apps/api/src/lib/metadata-merge.ts) 与 [multi-source search](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/apps/api/src/routes/search.ts) 提供字段优先级、去重和逐来源状态的参考;Inleaf 将其作为可选元数据增强,而非阅读前置依赖。 +- [PDF engine ADR](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/docs/decisions/004-pdf-engine-selection.md) 的迁移动因是写回 PDF、Ink、形状标注和字符级精度。这些不是 Inleaf 当前已证明的阻塞项,因此不能据此启动引擎迁移。 +- [Paper AI implementation plan](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/docs/superpowers/plans/2026-03-17-paper-ai-analysis.md) 在该快照中仍是计划,不作为成熟 AI 实现证据。Inleaf 的 AI 路径继续优先交给用户已有的 Codex,而不是复制一个内置远程分析服务。 + +### 18.2 许可与复制边界 + +Nexus [README](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/README.md) 标记 `License: Private`,而根 [package.json](https://github.com/ha0xin/nexus/blob/5f198b3ea9ff2862c779bd1a9e92591eb64e3dca/package.json) 声明 MIT,且该快照根目录没有 LICENSE 文件。许可表述不一致,因此本计划只吸收可独立表达的架构思想和产品模式;不得复制 Nexus 源码、图标、样式或专有内容,除非仓库所有者明确许可并完成第三方许可审查。 diff --git a/dev b/dev new file mode 100755 index 0000000..cb34f7d --- /dev/null +++ b/dev @@ -0,0 +1,42 @@ +#!/bin/sh +set -eu + +inleaf_root=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +inleaf_node="" + +inleaf_node_supported() { + "$1" -e "const [major, minor] = process.versions.node.split('.').map(Number); process.exit((major === 20 && minor >= 19) || (major === 22 && minor >= 12) || major > 22 ? 0 : 1)" >/dev/null 2>&1 +} + +for inleaf_candidate in \ + /opt/homebrew/opt/node@22/bin/node \ + /usr/local/bin/node \ + /usr/bin/node +do + if [ -x "$inleaf_candidate" ] && inleaf_node_supported "$inleaf_candidate"; then + inleaf_node="$inleaf_candidate" + break + fi +done + +if [ -z "$inleaf_node" ] && command -v node >/dev/null 2>&1; then + inleaf_candidate=$(command -v node) + if inleaf_node_supported "$inleaf_candidate"; then + inleaf_node="$inleaf_candidate" + fi +fi + +if [ -z "$inleaf_node" ]; then + echo "Inleaf Reader needs Node.js 20.19+ or 22.12+." >&2 + exit 1 +fi + +cd "$inleaf_root" +PATH="$(dirname "$inleaf_node"):$PATH" +export PATH +if [ ! -d node_modules ]; then + echo "Installing Inleaf Reader development dependencies..." + npm install +fi +inleaf_npm_script=${INLEAF_NPM_SCRIPT:-dev} +exec npm run "$inleaf_npm_script" diff --git a/install b/install new file mode 100755 index 0000000..f1bf8c2 --- /dev/null +++ b/install @@ -0,0 +1,6 @@ +#!/bin/sh +set -eu + +INLEAF_NPM_SCRIPT=install:local +export INLEAF_NPM_SCRIPT +exec "$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)/dev" diff --git a/media/reader-app.css b/media/reader-app.css index 7ad48e3..e6317ea 100644 --- a/media/reader-app.css +++ b/media/reader-app.css @@ -1,2 +1,2 @@ -.messageBar{--closing-button-icon:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7.85822%208.84922L4.85322%2011.8542C4.75891%2011.9453%204.63261%2011.9957%204.50151%2011.9946C4.37042%2011.9934%204.24501%2011.9408%204.15231%2011.8481C4.0596%2011.7554%204.00702%2011.63%204.00588%2011.4989C4.00474%2011.3678%204.05514%2011.2415%204.14622%2011.1472L7.15122%208.14222V7.85922L4.14622%204.85322C4.05514%204.75891%204.00474%204.63261%204.00588%204.50151C4.00702%204.37042%204.0596%204.24501%204.15231%204.15231C4.24501%204.0596%204.37042%204.00702%204.50151%204.00588C4.63261%204.00474%204.75891%204.05514%204.85322%204.14622L7.85822%207.15122H8.14122L11.1462%204.14622C11.2405%204.05514%2011.3668%204.00474%2011.4979%204.00588C11.629%204.00702%2011.7544%204.0596%2011.8471%204.15231C11.9398%204.24501%2011.9924%204.37042%2011.9936%204.50151C11.9947%204.63261%2011.9443%204.75891%2011.8532%204.85322L8.84822%207.85922V8.14222L11.8532%2011.1472C11.9443%2011.2415%2011.9947%2011.3678%2011.9936%2011.4989C11.9924%2011.63%2011.9398%2011.7554%2011.8471%2011.8481C11.7544%2011.9408%2011.629%2011.9934%2011.4979%2011.9946C11.3668%2011.9957%2011.2405%2011.9453%2011.1462%2011.8542L8.14122%208.84922L8.14222%208.85022L7.85822%208.84922Z'%20fill='black'/%3e%3c/svg%3e");--message-bar-close-button-color:var(--text-primary-color);--message-bar-close-button-color-hover:var(--text-primary-color);--message-bar-close-button-border-radius:4px;--message-bar-close-button-border:none;--message-bar-close-button-hover-bg-color:#15141a24;--message-bar-close-button-active-bg-color:#15141a36;--message-bar-close-button-focus-bg-color:#15141a12}@media (prefers-color-scheme:dark){.messageBar{--message-bar-close-button-hover-bg-color:#fbfbfe24;--message-bar-close-button-active-bg-color:#fbfbfe36;--message-bar-close-button-focus-bg-color:#fbfbfe12}}@media screen and (forced-colors:active){.messageBar{--message-bar-close-button-color:ButtonText;--message-bar-close-button-border:1px solid ButtonText;--message-bar-close-button-hover-bg-color:ButtonText;--message-bar-close-button-active-bg-color:ButtonText;--message-bar-close-button-focus-bg-color:ButtonText;--message-bar-close-button-color-hover:HighlightText}}.messageBar{-webkit-user-select:none;user-select:none;border:1px solid var(--message-bar-border-color);background:var(--message-bar-bg-color);color:var(--message-bar-fg-color);border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:8px 8px 8px 16px;display:flex;position:relative}.messageBar>div{align-self:stretch;align-items:flex-start;gap:8px;display:flex}:is(.messageBar>div):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--message-bar-icon);-webkit-mask-image:var(--message-bar-icon);mask-image:var(--message-bar-icon);background-color:var(--message-bar-icon-color);flex-shrink:0;display:inline-block;-webkit-mask-size:cover;mask-size:cover}.messageBar button{cursor:pointer}:is(.messageBar button):focus-visible{outline:var(--focus-ring-outline);outline-offset:2px}.messageBar .closeButton{border-radius:var(--message-bar-close-button-border-radius);border:var(--message-bar-close-button-border);background:0 0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}:is(.messageBar .closeButton):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--closing-button-icon);-webkit-mask-image:var(--closing-button-icon);mask-image:var(--closing-button-icon);background-color:var(--message-bar-close-button-color);display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(.messageBar .closeButton):is(:hover,:active,:focus):before{background-color:var(--message-bar-close-button-color-hover)}:is(.messageBar .closeButton):hover{background-color:var(--message-bar-close-button-hover-bg-color)}:is(.messageBar .closeButton):active{background-color:var(--message-bar-close-button-active-bg-color)}:is(.messageBar .closeButton):focus{background-color:var(--message-bar-close-button-focus-bg-color)}:is(.messageBar .closeButton)>span{width:0;height:0;display:inline-block;overflow:hidden}#editorUndoBar{--text-primary-color:#15141a;--message-bar-icon:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8%201.5C4.41015%201.5%201.5%204.41015%201.5%208C1.5%2011.5899%204.41015%2014.5%208%2014.5C11.5899%2014.5%2014.5%2011.5899%2014.5%208C14.5%204.41015%2011.5899%201.5%208%201.5ZM0%208C0%203.58172%203.58172%200%208%200C12.4183%200%2016%203.58172%2016%208C16%2012.4183%2012.4183%2016%208%2016C3.58172%2016%200%2012.4183%200%208ZM8.75%204V5.5H7.25V4H8.75ZM8.75%2012V7H7.25V12H8.75Z'%20fill='black'/%3e%3c/svg%3e");--message-bar-icon-color:#0060df;--message-bar-bg-color:#deeafc;--message-bar-fg-color:var(--text-primary-color);--message-bar-border-color:#00000014;--undo-button-bg-color:#15141a12;--undo-button-bg-color-hover:#15141a24;--undo-button-bg-color-active:#15141a36;--undo-button-fg-color:var(--message-bar-fg-color);--undo-button-fg-color-hover:var(--undo-button-fg-color);--undo-button-fg-color-active:var(--undo-button-fg-color);--focus-ring-color:#0060df;--focus-ring-outline:2px solid var(--focus-ring-color)}@media (prefers-color-scheme:dark){#editorUndoBar{--text-primary-color:#fbfbfe;--message-bar-icon-color:#73a7f3;--message-bar-bg-color:#003070;--message-bar-border-color:#ffffff14;--undo-button-bg-color:#ffffff14;--undo-button-bg-color-hover:#ffffff24;--undo-button-bg-color-active:#ffffff36}}@media screen and (forced-colors:active){#editorUndoBar{--text-primary-color:CanvasText;--message-bar-icon-color:CanvasText;--message-bar-bg-color:Canvas;--message-bar-border-color:CanvasText;--undo-button-bg-color:ButtonText;--undo-button-bg-color-hover:SelectedItem;--undo-button-bg-color-active:SelectedItem;--undo-button-fg-color:ButtonFace;--undo-button-fg-color-hover:SelectedItemText;--undo-button-fg-color-active:SelectedItemText;--focus-ring-color:CanvasText}}#editorUndoBar{z-index:10;font:menu;cursor:default;padding-block:8px;padding-inline:16px 8px;font-size:15px;position:fixed;top:50px;left:50%;transform:translate(-50%)}#editorUndoBar button{cursor:pointer}#editorUndoBar #editorUndoBarUndoButton{color:var(--undo-button-fg-color);background-color:var(--undo-button-bg-color);border:none;border-radius:4px;height:32px;margin-inline-start:8px;padding:4px 16px;font-weight:590;line-height:19.5px}:is(#editorUndoBar #editorUndoBarUndoButton):hover{background-color:var(--undo-button-bg-color-hover);color:var(--undo-button-fg-color-hover)}:is(#editorUndoBar #editorUndoBarUndoButton):active{background-color:var(--undo-button-bg-color-active);color:var(--undo-button-fg-color-active)}#editorUndoBar>div{align-items:center}.dialog{--dialog-bg-color:white;--dialog-border-color:white;--dialog-shadow:0 2px 14px 0 #3a394433;--text-primary-color:#15141a;--text-secondary-color:#5b5b66;--hover-filter:brightness(.9);--focus-ring-color:#0060df;--focus-ring-outline:2px solid var(--focus-ring-color);--link-fg-color:#0060df;--link-hover-fg-color:#0250bb;--separator-color:#f0f0f4;--textarea-border-color:#8f8f9d;--textarea-bg-color:white;--textarea-fg-color:var(--text-secondary-color);--radio-bg-color:#f0f0f4;--radio-checked-bg-color:#fbfbfe;--radio-border-color:#8f8f9d;--radio-checked-border-color:#0060df;--button-secondary-bg-color:#f0f0f4;--button-secondary-fg-color:var(--text-primary-color);--button-secondary-border-color:var(--button-secondary-bg-color);--button-secondary-hover-bg-color:var(--button-secondary-bg-color);--button-secondary-hover-fg-color:var(--button-secondary-fg-color);--button-secondary-hover-border-color:var(--button-secondary-hover-bg-color);--button-primary-bg-color:#0060df;--button-primary-fg-color:#fbfbfe;--button-primary-border-color:var(--button-primary-bg-color);--button-primary-hover-bg-color:var(--button-primary-bg-color);--button-primary-hover-fg-color:var(--button-primary-fg-color);--button-primary-hover-border-color:var(--button-primary-hover-bg-color)}@media (prefers-color-scheme:dark){.dialog{--dialog-bg-color:#1c1b22;--dialog-border-color:#1c1b22;--dialog-shadow:0 2px 14px 0 #15141a;--text-primary-color:#fbfbfe;--text-secondary-color:#cfcfd8;--focus-ring-color:#0df;--hover-filter:brightness(1.4);--link-fg-color:#0df;--link-hover-fg-color:#80ebff;--separator-color:#52525e;--textarea-bg-color:#42414d;--radio-bg-color:#2b2a33;--radio-checked-bg-color:#15141a;--radio-checked-border-color:#0df;--button-secondary-bg-color:#2b2a33;--button-primary-bg-color:#0df;--button-primary-fg-color:#15141a}}@media screen and (forced-colors:active){.dialog{--dialog-bg-color:Canvas;--dialog-border-color:CanvasText;--dialog-shadow:none;--text-primary-color:CanvasText;--text-secondary-color:CanvasText;--hover-filter:none;--focus-ring-color:ButtonBorder;--link-fg-color:LinkText;--link-hover-fg-color:LinkText;--separator-color:CanvasText;--textarea-border-color:ButtonBorder;--textarea-bg-color:Field;--textarea-fg-color:ButtonText;--radio-bg-color:ButtonFace;--radio-checked-bg-color:ButtonFace;--radio-border-color:ButtonText;--radio-checked-border-color:ButtonText;--button-secondary-bg-color:ButtonFace;--button-secondary-fg-color:ButtonText;--button-secondary-border-color:ButtonText;--button-secondary-hover-bg-color:AccentColor;--button-secondary-hover-fg-color:AccentColorText;--button-primary-bg-color:ButtonText;--button-primary-fg-color:ButtonFace;--button-primary-hover-bg-color:AccentColor;--button-primary-hover-fg-color:AccentColorText}}.dialog{font:message-box;border:1px solid var(--dialog-border-color);background:var(--dialog-bg-color);color:var(--text-primary-color);box-shadow:var(--dialog-shadow);border-radius:4px;padding:12px 16px;font-size:13px;font-weight:400;line-height:150%}:is(.dialog .mainContainer) :focus-visible{outline:var(--focus-ring-outline);outline-offset:2px}:is(.dialog .mainContainer) .title{flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:12px;width:auto;display:flex}:is(:is(.dialog .mainContainer) .title)>span{font-size:13px;font-style:normal;font-weight:590;line-height:150%}:is(.dialog .mainContainer) .dialogSeparator{border-top:1px solid var(--separator-color);border-bottom:none;width:100%;height:0;margin-block:4px}:is(.dialog .mainContainer) .dialogButtonsGroup{align-self:flex-end;gap:12px;display:flex}:is(.dialog .mainContainer) .radio{flex-direction:column;align-items:flex-start;gap:4px;display:flex}:is(:is(.dialog .mainContainer) .radio)>.radioButton{align-self:stretch;align-items:center;gap:8px;display:flex}:is(:is(:is(.dialog .mainContainer) .radio)>.radioButton) input{appearance:none;box-sizing:border-box;background-color:var(--radio-bg-color);border:1px solid var(--radio-border-color);border-radius:50%;width:16px;height:16px}:is(:is(:is(:is(.dialog .mainContainer) .radio)>.radioButton) input):hover{filter:var(--hover-filter)}:is(:is(:is(:is(.dialog .mainContainer) .radio)>.radioButton) input):checked{background-color:var(--radio-checked-bg-color);border:4px solid var(--radio-checked-border-color)}:is(:is(.dialog .mainContainer) .radio)>.radioLabel{align-self:stretch;align-items:flex-start;gap:10px;padding-inline-start:24px;display:flex}:is(:is(:is(.dialog .mainContainer) .radio)>.radioLabel)>span{color:var(--text-secondary-color);flex:1 0 0;font-size:11px}:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton)){font:menu;border:1px solid;border-radius:4px;width:auto;height:32px;padding:4px 16px;font-weight:600}:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))):hover{cursor:pointer;filter:var(--hover-filter)}.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))){color:var(--button-secondary-fg-color);background-color:var(--button-secondary-bg-color);border-color:var(--button-secondary-border-color)}.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))):hover{color:var(--button-secondary-hover-fg-color);background-color:var(--button-secondary-hover-bg-color);border-color:var(--button-secondary-hover-border-color)}.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))){color:var(--button-primary-fg-color);background-color:var(--button-primary-bg-color);border-color:var(--button-primary-border-color);opacity:1}.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))):hover{color:var(--button-primary-hover-fg-color);background-color:var(--button-primary-hover-bg-color);border-color:var(--button-primary-hover-border-color)}:is(.dialog .mainContainer) a{color:var(--link-fg-color)}:is(:is(.dialog .mainContainer) a):hover{color:var(--link-hover-fg-color)}:is(.dialog .mainContainer) textarea{font:inherit;resize:none;box-sizing:border-box;border:1px solid var(--textarea-border-color);background:var(--textarea-bg-color);color:var(--textarea-fg-color);border-radius:4px;margin:0;padding:8px}:is(:is(.dialog .mainContainer) textarea):focus{outline-offset:0;border-color:#0000}:is(:is(.dialog .mainContainer) textarea):disabled{pointer-events:none;opacity:.4}:is(.dialog .mainContainer) .messageBar{--message-bar-bg-color:#ffebcd;--message-bar-fg-color:#15141a;--message-bar-border-color:#00000014;--message-bar-icon:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14.8748%2012.037L9.37782%202.037C8.99682%201.346%208.31082%201%207.62482%201C6.93882%201%206.25282%201.346%205.87282%202.037L0.375823%2012.037C-0.358177%2013.37%200.606823%2015%202.12782%2015H13.1228C14.6428%2015%2015.6078%2013.37%2014.8748%2012.037ZM8.24982%2011.75L7.99982%2012H7.24982L6.99982%2011.75V11L7.24982%2010.75H7.99982L8.24982%2011V11.75ZM8.24982%209.062C8.24982%209.22776%208.18398%209.38673%208.06677%209.50394C7.94955%209.62115%207.79058%209.687%207.62482%209.687C7.45906%209.687%207.30009%209.62115%207.18288%209.50394C7.06567%209.38673%206.99982%209.22776%206.99982%209.062V5.625C6.99982%205.45924%207.06567%205.30027%207.18288%205.18306C7.30009%205.06585%207.45906%205%207.62482%205C7.79058%205%207.94955%205.06585%208.06677%205.18306C8.18398%205.30027%208.24982%205.45924%208.24982%205.625V9.062Z'%20fill='black'/%3e%3c/svg%3e");--message-bar-icon-color:#cd411e}@media (prefers-color-scheme:dark){:is(.dialog .mainContainer) .messageBar{--message-bar-bg-color:#5a3100;--message-bar-fg-color:#fbfbfe;--message-bar-border-color:#ffffff14;--message-bar-icon-color:#e49c49}}@media screen and (forced-colors:active){:is(.dialog .mainContainer) .messageBar{--message-bar-bg-color:HighlightText;--message-bar-fg-color:CanvasText;--message-bar-border-color:CanvasText;--message-bar-icon-color:CanvasText}}:is(.dialog .mainContainer) .messageBar{align-self:stretch}:is(:is(:is(.dialog .mainContainer) .messageBar)>div):before,:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div{margin-block:4px}:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div{flex-direction:column;flex:1 0 0;align-items:flex-start;gap:8px;display:flex}:is(:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div) .title{font-size:13px;font-weight:590}:is(:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div) .description{font-size:13px}:is(.dialog .mainContainer) .toggler{align-self:stretch;align-items:center;gap:8px;display:flex}:is(:is(.dialog .mainContainer) .toggler)>.togglerLabel{-webkit-user-select:none;user-select:none}.textLayer{text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:0;line-height:1;position:absolute;inset:0;overflow:clip}.textLayer.highlighting{touch-action:none}.textLayer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}.textLayer>:not(.markedContent),.textLayer .markedContent span:not(.markedContent){z-index:1}.textLayer span.markedContent{height:0;top:0}.textLayer span[role=img]{-webkit-user-select:none;user-select:none;cursor:default}.textLayer .highlight{--highlight-bg-color:#b400aa40;--highlight-selected-bg-color:#00640040;--highlight-backdrop-filter:none;--highlight-selected-backdrop-filter:none}@media screen and (forced-colors:active){.textLayer .highlight{--highlight-bg-color:transparent;--highlight-selected-bg-color:transparent;--highlight-backdrop-filter:var(--hcm-highlight-filter);--highlight-selected-backdrop-filter:var(--hcm-highlight-selected-filter)}}.textLayer .highlight{background-color:var(--highlight-bg-color);-webkit-backdrop-filter:var(--highlight-backdrop-filter);backdrop-filter:var(--highlight-backdrop-filter);border-radius:4px;margin:-1px;padding:1px}.appended:is(.textLayer .highlight){position:initial}.begin:is(.textLayer .highlight){border-radius:4px 0 0 4px}.end:is(.textLayer .highlight){border-radius:0 4px 4px 0}.middle:is(.textLayer .highlight){border-radius:0}.selected:is(.textLayer .highlight){background-color:var(--highlight-selected-bg-color);-webkit-backdrop-filter:var(--highlight-selected-backdrop-filter);backdrop-filter:var(--highlight-selected-backdrop-filter)}.textLayer ::selection{background:#0000ff40;background:color-mix(in srgb, AccentColor, transparent 75%)}.textLayer br::selection{background:0 0}.textLayer .endOfContent{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}.textLayer.selecting .endOfContent{top:0}.annotationLayer{--annotation-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,");--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:transparent;--input-disabled-border-color:transparent;--input-hover-border-color:black;--link-outline:none}@media screen and (forced-colors:active){.annotationLayer{--input-focus-border-color:CanvasText;--input-unfocused-border-color:ActiveText;--input-disabled-border-color:GrayText;--input-hover-border-color:Highlight;--link-outline:1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selecteditem}.annotationLayer .linkAnnotation{outline:var(--link-outline)}:is(.annotationLayer .linkAnnotation):hover{-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter)}:is(.annotationLayer .linkAnnotation)>a:hover{box-shadow:none;opacity:0!important;background:0 0!important}.annotationLayer .popupAnnotation .popup{outline:calc(1.5px * var(--scale-factor)) solid CanvasText!important;color:buttontext!important;background-color:buttonface!important}.annotationLayer .highlightArea:hover:after{width:100%;height:100%;-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter);content:"";pointer-events:none;position:absolute;top:0;left:0}.annotationLayer .popupAnnotation.focused .popup{outline:calc(3px * var(--scale-factor)) solid Highlight!important}}.annotationLayer{pointer-events:none;transform-origin:0 0;position:absolute;top:0;left:0}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg)translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg)translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg)translateY(-100%)}.annotationLayer.disabled section,.annotationLayer.disabled .popup{pointer-events:none}.annotationLayer .annotationContent{pointer-events:none;width:100%;height:100%;position:absolute}.freetext:is(.annotationLayer .annotationContent){white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:none;font:10px/1.35 sans-serif;inset:0;overflow:visible}.annotationLayer section{text-align:initial;pointer-events:auto;box-sizing:border-box;transform-origin:0 0;position:absolute}:is(.annotationLayer section):has(div.annotationContent) canvas.annotationContent{display:none}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{width:100%;height:100%;font-size:1em;position:absolute;top:0;left:0}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton):not(.hasBorder)>a:hover{opacity:.2;background-color:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .linkAnnotation.hasBorder:hover{background-color:#ff03}.annotationLayer .hasBorder{background-size:100% 100%}.annotationLayer .textAnnotation img{cursor:pointer;width:100%;height:100%;position:absolute;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--scale-factor)) sans-serif;vertical-align:top;width:100%;height:100%;margin:0}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation [disabled]:is(input,textarea),.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{border:2px solid var(--input-disabled-border-color);cursor:not-allowed;background:0 0}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline);background:0 0;border-radius:2px}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-color:#0000;background-image:none}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline);border-radius:2px}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{content:"";background-color:canvastext;display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{width:1px;height:80%;left:45%}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;width:50%;height:50%;top:25%;left:25%}.annotationLayer .textWidgetAnnotation input.comb{padding-left:2px;padding-right:0;font-family:monospace}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{appearance:none}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{width:100%;height:100%}.annotationLayer .popupAnnotation{font-size:calc(9px * var(--scale-factor));pointer-events:none;width:max-content;max-width:45%;height:auto;position:absolute}.annotationLayer .popup{box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) #888;border-radius:calc(2px * var(--scale-factor));padding:calc(6px * var(--scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto;background-color:#ff9;outline:1.5px solid #ffff4a}.annotationLayer .popupAnnotation.focused .popup{outline-width:3px}.annotationLayer .popup *{font-size:calc(9px * var(--scale-factor))}.annotationLayer .popup>.header{display:inline-block}.annotationLayer .popup>.header h1{display:inline}.annotationLayer .popup>.header .popupDate{margin-left:calc(5px * var(--scale-factor));width:fit-content;display:inline-block}.annotationLayer .popupContent{margin-top:calc(2px * var(--scale-factor));padding-top:calc(2px * var(--scale-factor));border-top:1px solid #333}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--scale-factor))}.annotationLayer .popupTriggerArea{cursor:pointer}.annotationLayer section svg{width:100%;height:100%;position:absolute;top:0;left:0}.annotationLayer .annotationTextContent{opacity:0;color:#0000;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;position:absolute}:is(.annotationLayer .annotationTextContent) span{width:100%;display:inline-block}.annotationLayer svg.quadrilateralsContainer{contain:strict;z-index:-1;width:0;height:0;position:absolute;top:0;left:0}:root{--xfa-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,");--xfa-focus-outline:auto}@media screen and (forced-colors:active){:root{--xfa-focus-outline:2px solid CanvasText}.xfaLayer :required{outline:1.5px solid selecteditem}}.xfaLayer{background-color:#0000}.xfaLayer .highlight{background-color:#efcbed;border-radius:4px;margin:-1px;padding:1px}.xfaLayer .highlight.appended{position:initial}.xfaLayer .highlight.begin{border-radius:4px 0 0 4px}.xfaLayer .highlight.end{border-radius:0 4px 4px 0}.xfaLayer .highlight.middle{border-radius:0}.xfaLayer .highlight.selected{background-color:#cbdfcb}.xfaPage{position:relative;overflow:hidden}.xfaContentarea{position:absolute}.xfaPrintOnly{display:none}.xfaLayer{text-align:initial;transform-origin:0 0;line-height:1.2;position:absolute;top:0;left:0}.xfaLayer *{color:inherit;font:inherit;font-style:inherit;font-weight:inherit;font-kerning:inherit;letter-spacing:-.01px;text-align:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;box-sizing:border-box;pointer-events:auto;line-height:inherit;background-color:#0000;margin:0;padding:0}.xfaLayer :required{outline:1.5px solid red}.xfaLayer div,.xfaLayer svg,.xfaLayer svg *{pointer-events:none}.xfaLayer a{color:#00f}.xfaRich li{margin-left:3em}.xfaFont{color:#000;font-kerning:none;letter-spacing:0;vertical-align:0;font-size:10px;font-style:normal;font-weight:400;text-decoration:none}.xfaCaption{flex:none;overflow:hidden}.xfaCaptionForCheckButton{flex:auto;overflow:hidden}.xfaLabel{width:100%;height:100%}.xfaLeft{flex-direction:row;align-items:center;display:flex}.xfaRight{flex-direction:row-reverse;align-items:center;display:flex}:is(.xfaLeft,.xfaRight)>:is(.xfaCaption,.xfaCaptionForCheckButton){max-height:100%}.xfaTop{flex-direction:column;align-items:flex-start;display:flex}.xfaBottom{flex-direction:column-reverse;align-items:flex-start;display:flex}:is(.xfaTop,.xfaBottom)>:is(.xfaCaption,.xfaCaptionForCheckButton){width:100%}.xfaBorder{pointer-events:none;background-color:#0000;position:absolute}.xfaWrapped{width:100%;height:100%}:is(.xfaTextfield,.xfaSelect):focus{outline:var(--xfa-focus-outline);outline-offset:-1px;background-color:#0000;background-image:none}:is(.xfaCheckbox,.xfaRadio):focus{outline:var(--xfa-focus-outline)}.xfaTextfield,.xfaSelect{resize:none;background-image:var(--xfa-unfocused-field-background);border:none;flex:auto;width:100%;height:100%}.xfaSelect{padding-inline:2px}:is(.xfaTop,.xfaBottom)>:is(.xfaTextfield,.xfaSelect){flex:0 auto}.xfaButton{cursor:pointer;text-align:center;border:none;width:100%;height:100%}.xfaLink{width:100%;height:100%;position:absolute;top:0;left:0}.xfaCheckbox,.xfaRadio{border:none;flex:none;width:100%;height:100%}.xfaRich{white-space:pre-wrap;width:100%;height:100%}.xfaImage{-o-object-position:left top;object-position:left top;-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.xfaLrTb,.xfaRlTb,.xfaTb{flex-direction:column;align-items:stretch;display:flex}.xfaLr{flex-direction:row;align-items:stretch;display:flex}.xfaRl{flex-direction:row-reverse;align-items:stretch;display:flex}.xfaTb>div{justify-content:left}.xfaPosition,.xfaArea{position:relative}.xfaValignMiddle{align-items:center;display:flex}.xfaTable{flex-direction:column;align-items:stretch;display:flex}.xfaTable .xfaRow{flex-direction:row;align-items:stretch;display:flex}.xfaTable .xfaRlRow{flex-direction:row-reverse;flex:1;align-items:stretch;display:flex}.xfaTable .xfaRlRow>div{flex:1}:is(.xfaNonInteractive,.xfaDisabled,.xfaReadOnly) :is(input,textarea){background:initial}@media print{.xfaTextfield,.xfaSelect{background:0 0}.xfaSelect{appearance:none;text-indent:1px;text-overflow:""}}.canvasWrapper svg{transform:none}.moving:is(.canvasWrapper svg){z-index:100000}[data-main-rotation="90"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation="90"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){transform:matrix(0,1,-1,0,1,0)}[data-main-rotation="180"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation="180"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){transform:matrix(-1,0,0,-1,1,1)}[data-main-rotation="270"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation="270"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){transform:matrix(0,-1,1,0,0,1)}.draw:is(.canvasWrapper svg){mix-blend-mode:normal;position:absolute}.draw[data-draw-rotation="90"]:is(.canvasWrapper svg){transform:rotate(90deg)}.draw[data-draw-rotation="180"]:is(.canvasWrapper svg){transform:rotate(180deg)}.draw[data-draw-rotation="270"]:is(.canvasWrapper svg){transform:rotate(270deg)}.highlight:is(.canvasWrapper svg){--blend-mode:multiply}@media screen and (forced-colors:active){.highlight:is(.canvasWrapper svg){--blend-mode:difference}}.highlight:is(.canvasWrapper svg){mix-blend-mode:var(--blend-mode);position:absolute}.highlight:is(.canvasWrapper svg):not(.free){fill-rule:evenodd}.highlightOutline:is(.canvasWrapper svg){mix-blend-mode:normal;fill-rule:evenodd;fill:none;position:absolute}.highlightOutline.hovered:is(.canvasWrapper svg):not(.free):not(.selected){stroke:var(--hover-outline-color);stroke-width:var(--outline-width)}.highlightOutline.selected:is(.canvasWrapper svg):not(.free) .mainOutline{stroke:var(--outline-around-color);stroke-width:calc(var(--outline-width) + 2 * var(--outline-around-width))}.highlightOutline.selected:is(.canvasWrapper svg):not(.free) .secondaryOutline{stroke:var(--outline-color);stroke-width:var(--outline-width)}.highlightOutline.free.hovered:is(.canvasWrapper svg):not(.selected){stroke:var(--hover-outline-color);stroke-width:calc(2 * var(--outline-width))}.highlightOutline.free.selected:is(.canvasWrapper svg) .mainOutline{stroke:var(--outline-around-color);stroke-width:calc(2 * (var(--outline-width) + var(--outline-around-width)))}.highlightOutline.free.selected:is(.canvasWrapper svg) .secondaryOutline{stroke:var(--outline-color);stroke-width:calc(2 * var(--outline-width))}.toggle-button{--button-background-color:#f0f0f4;--button-background-color-hover:#e0e0e6;--button-background-color-active:#cfcfd8;--color-accent-primary:#0060df;--color-accent-primary-hover:#0250bb;--color-accent-primary-active:#054096;--border-interactive-color:#8f8f9d;--border-radius-circle:9999px;--border-width:1px;--size-item-small:16px;--size-item-large:32px;--color-canvas:white}@media (prefers-color-scheme:dark){.toggle-button{--button-background-color:color-mix(in srgb, currentColor 7%, transparent);--button-background-color-hover:color-mix(in srgb, currentColor 14%, transparent);--button-background-color-active:color-mix(in srgb, currentColor 21%, transparent);--color-accent-primary:#0df;--color-accent-primary-hover:#80ebff;--color-accent-primary-active:#aaf2ff;--border-interactive-color:#bfbfc9;--color-canvas:#1c1b22}}@media (forced-colors:active){.toggle-button{--color-accent-primary:ButtonText;--color-accent-primary-hover:SelectedItem;--color-accent-primary-active:SelectedItem;--border-interactive-color:ButtonText;--button-background-color:ButtonFace;--border-interactive-color-hover:SelectedItem;--border-interactive-color-active:SelectedItem;--border-interactive-color-disabled:GrayText;--color-canvas:ButtonText}}.toggle-button{--toggle-background-color:var(--button-background-color);--toggle-background-color-hover:var(--button-background-color-hover);--toggle-background-color-active:var(--button-background-color-active);--toggle-background-color-pressed:var(--color-accent-primary);--toggle-background-color-pressed-hover:var(--color-accent-primary-hover);--toggle-background-color-pressed-active:var(--color-accent-primary-active);--toggle-border-color:var(--border-interactive-color);--toggle-border-color-hover:var(--toggle-border-color);--toggle-border-color-active:var(--toggle-border-color);--toggle-border-radius:var(--border-radius-circle);--toggle-border-width:var(--border-width);--toggle-height:var(--size-item-small);--toggle-width:var(--size-item-large);--toggle-dot-background-color:var(--toggle-border-color);--toggle-dot-background-color-hover:var(--toggle-dot-background-color);--toggle-dot-background-color-active:var(--toggle-dot-background-color);--toggle-dot-background-color-on-pressed:var(--color-canvas);--toggle-dot-margin:1px;--toggle-dot-height:calc(var(--toggle-height) - 2 * var(--toggle-dot-margin) - 2 * var(--toggle-border-width));--toggle-dot-width:var(--toggle-dot-height);--toggle-dot-transform-x:calc(var(--toggle-width) - 4 * var(--toggle-dot-margin) - var(--toggle-dot-width));appearance:none;border:var(--toggle-border-width) solid var(--toggle-border-color);height:var(--toggle-height);width:var(--toggle-width);border-radius:var(--toggle-border-radius);background:var(--toggle-background-color);box-sizing:border-box;flex-shrink:0;margin:0;padding:0}.toggle-button:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.toggle-button:enabled:hover{background:var(--toggle-background-color-hover);border-color:var(--toggle-border-color)}.toggle-button:enabled:active{background:var(--toggle-background-color-active);border-color:var(--toggle-border-color)}.toggle-button[aria-pressed=true]{background:var(--toggle-background-color-pressed);border-color:#0000}.toggle-button[aria-pressed=true]:enabled:hover{background:var(--toggle-background-color-pressed-hover);border-color:#0000}.toggle-button[aria-pressed=true]:enabled:active{background:var(--toggle-background-color-pressed-active);border-color:#0000}.toggle-button:before{content:"";background-color:var(--toggle-dot-background-color);height:var(--toggle-dot-height);width:var(--toggle-dot-width);margin:var(--toggle-dot-margin);border-radius:var(--toggle-border-radius);display:block;translate:0}.toggle-button[aria-pressed=true]:before{translate:var(--toggle-dot-transform-x);background-color:var(--toggle-dot-background-color-on-pressed)}.toggle-button[aria-pressed=true]:enabled:hover:before,.toggle-button[aria-pressed=true]:enabled:active:before{background-color:var(--toggle-dot-background-color-on-pressed)}[dir=rtl] .toggle-button[aria-pressed=true]:before{translate:calc(-1 * var(--toggle-dot-transform-x))}@media (prefers-reduced-motion:no-preference){.toggle-button:before{transition:translate .1s}}@media (prefers-contrast){.toggle-button:enabled:hover{border-color:var(--toggle-border-color-hover)}.toggle-button:enabled:active{border-color:var(--toggle-border-color-active)}.toggle-button[aria-pressed=true]:enabled{border-color:var(--toggle-border-color);position:relative}.toggle-button[aria-pressed=true]:enabled:hover,.toggle-button[aria-pressed=true]:enabled:hover:active{border-color:var(--toggle-border-color-hover)}.toggle-button[aria-pressed=true]:enabled:active{background-color:var(--toggle-dot-background-color-active);border-color:var(--toggle-dot-background-color-hover)}.toggle-button:hover:before,.toggle-button:active:before{background-color:var(--toggle-dot-background-color-hover)}}@media (forced-colors){.toggle-button{--toggle-dot-background-color:var(--color-accent-primary);--toggle-dot-background-color-hover:var(--color-accent-primary-hover);--toggle-dot-background-color-active:var(--color-accent-primary-active);--toggle-dot-background-color-on-pressed:var(--button-background-color);--toggle-background-color-disabled:var(--button-background-color-disabled);--toggle-border-color-hover:var(--border-interactive-color-hover);--toggle-border-color-active:var(--border-interactive-color-active);--toggle-border-color-disabled:var(--border-interactive-color-disabled)}.toggle-button[aria-pressed=true]:enabled:after{border:1px solid var(--button-background-color);content:"";height:var(--toggle-height);width:var(--toggle-width);border-radius:var(--toggle-border-radius);display:block;position:absolute;inset:-2px}.toggle-button[aria-pressed=true]:enabled:active:after{border-color:var(--toggle-border-color-active)}}:root{--outline-width:2px;--outline-color:#0060df;--outline-around-width:1px;--outline-around-color:#f0f0f4;--hover-outline-around-color:var(--outline-around-color);--focus-outline:solid var(--outline-width) var(--outline-color);--unfocus-outline:solid var(--outline-width) transparent;--focus-outline-around:solid var(--outline-around-width) var(--outline-around-color);--hover-outline-color:#8f8f9d;--hover-outline:solid var(--outline-width) var(--hover-outline-color);--hover-outline-around:solid var(--outline-around-width) var(--hover-outline-around-color);--freetext-line-height:1.35;--freetext-padding:2px;--resizer-bg-color:var(--outline-color);--resizer-size:6px;--resizer-shift:calc(0px - (var(--outline-width) + var(--resizer-size)) / 2 - var(--outline-around-width));--editorFreeText-editing-cursor:text;--editorInk-editing-cursor:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0.0189877%2013.6645L0.612989%2010.4635C0.687989%2010.0545%200.884989%209.6805%201.18099%209.3825L9.98199%200.5805C10.756%20-0.1925%2012.015%20-0.1945%2012.792%200.5805L14.42%202.2085C15.194%202.9835%2015.194%204.2435%2014.42%205.0185L5.61599%2013.8215C5.31999%2014.1165%204.94599%2014.3125%204.53799%2014.3875L1.33599%2014.9815C1.26599%2014.9935%201.19799%2015.0005%201.12999%2015.0005C0.832989%2015.0005%200.544988%2014.8835%200.330988%2014.6695C0.0679874%2014.4055%20-0.0490122%2014.0305%200.0189877%2013.6645Z'%20fill='white'/%3e%3cpath%20d='M0.0189877%2013.6645L0.612989%2010.4635C0.687989%2010.0545%200.884989%209.6805%201.18099%209.3825L9.98199%200.5805C10.756%20-0.1925%2012.015%20-0.1945%2012.792%200.5805L14.42%202.2085C15.194%202.9835%2015.194%204.2435%2014.42%205.0185L5.61599%2013.8215C5.31999%2014.1165%204.94599%2014.3125%204.53799%2014.3875L1.33599%2014.9815C1.26599%2014.9935%201.19799%2015.0005%201.12999%2015.0005C0.832989%2015.0005%200.544988%2014.8835%200.330988%2014.6695C0.0679874%2014.4055%20-0.0490122%2014.0305%200.0189877%2013.6645ZM12.472%205.1965L13.632%204.0365L13.631%203.1885L11.811%201.3675L10.963%201.3685L9.80299%202.5285L12.472%205.1965ZM4.31099%2013.1585C4.47099%2013.1285%204.61799%2013.0515%204.73399%2012.9345L11.587%206.0815L8.91899%203.4135L2.06599%2010.2655C1.94899%2010.3835%201.87199%2010.5305%201.84099%2010.6915L1.36699%2013.2485L1.75199%2013.6335L4.31099%2013.1585Z'%20fill='black'/%3e%3c/svg%3e") 0 16, pointer;--editorHighlight-editing-cursor:url("data:image/svg+xml,%3csvg%20width='29'%20height='32'%20viewBox='0%200%2029%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M28%2016.75C28.2761%2016.75%2028.5%2016.5261%2028.5%2016.25V15C28.5%2014.7239%2028.2761%2014.5%2028%2014.5H26.358C25.9117%2014.5%2025.4773%2014.6257%2025.0999%2014.8604L25.0989%2014.8611L24%2015.5484L22.9%2014.861L22.8991%2014.8604C22.5218%2014.6257%2022.0875%2014.5%2021.642%2014.5H20C19.7239%2014.5%2019.5%2014.7239%2019.5%2015V16.25C19.5%2016.5261%2019.7239%2016.75%2020%2016.75H21.642C21.6648%2016.75%2021.6885%2016.7564%2021.7101%2016.7697C21.7102%2016.7698%2021.7104%2016.7699%2021.7105%2016.77L22.817%2017.461C22.817%2017.461%2022.8171%2017.4611%2022.8171%2017.4611C22.8171%2017.4611%2022.8171%2017.4611%2022.8171%2017.4611C22.8552%2017.4849%2022.876%2017.5229%2022.876%2017.567V22.625V27.683C22.876%2027.7271%2022.8552%2027.765%2022.8172%2027.7889C22.8171%2027.7889%2022.8171%2027.789%2022.817%2027.789L21.7095%2028.48C21.7094%2028.4801%2021.7093%2028.4802%2021.7092%2028.4803C21.6872%2028.4938%2021.6644%2028.5%2021.641%2028.5H20C19.7239%2028.5%2019.5%2028.7239%2019.5%2029V30.25C19.5%2030.5261%2019.7239%2030.75%2020%2030.75H21.642C22.0883%2030.75%2022.5227%2030.6243%2022.9001%2030.3896L22.9009%2030.3891L24%2029.7026L25.1%2030.39L25.1009%2030.3906C25.4783%2030.6253%2025.9127%2030.751%2026.359%2030.751H28C28.2761%2030.751%2028.5%2030.5271%2028.5%2030.251V29.001C28.5%2028.7249%2028.2761%2028.501%2028%2028.501H26.358C26.3352%2028.501%2026.3115%2028.4946%2026.2899%2028.4813C26.2897%2028.4812%2026.2896%2028.4811%2026.2895%2028.481L25.183%2027.79C25.183%2027.79%2025.183%2027.79%2025.1829%2027.79C25.1829%2027.7899%2025.1829%2027.7899%2025.1829%2027.7899C25.1462%2027.7669%2025.125%2027.7297%2025.125%2027.684V22.625V17.567C25.125%2017.5227%2025.146%2017.4844%2025.1836%2017.4606C25.1838%2017.4605%2025.1839%2017.4604%2025.184%2017.4603L26.2895%2016.77C26.2896%2016.7699%2026.2898%2016.7698%2026.2899%2016.7697C26.3119%2016.7562%2026.3346%2016.75%2026.358%2016.75H28Z'%20fill='black'%20stroke='%23FBFBFE'%20stroke-linejoin='round'/%3e%3cpath%20d='M24.625%2017.567C24.625%2017.35%2024.735%2017.152%2024.918%2017.037L26.026%2016.345C26.126%2016.283%2026.24%2016.25%2026.358%2016.25H28V15H26.358C26.006%2015%2025.663%2015.099%2025.364%2015.285L24.256%2015.978C24.161%2016.037%2024.081%2016.113%2024%2016.187C23.918%2016.113%2023.839%2016.037%2023.744%2015.978L22.635%2015.285C22.336%2015.099%2021.993%2015%2021.642%2015H20V16.25H21.642C21.759%2016.25%2021.874%2016.283%2021.974%2016.345L23.082%2017.037C23.266%2017.152%2023.376%2017.35%2023.376%2017.567V22.625V27.683C23.376%2027.9%2023.266%2028.098%2023.082%2028.213L21.973%2028.905C21.873%2028.967%2021.759%2029%2021.641%2029H20V30.25H21.642C21.994%2030.25%2022.337%2030.151%2022.636%2029.965L23.744%2029.273C23.84%2029.213%2023.919%2029.137%2024%2029.064C24.081%2029.137%2024.161%2029.213%2024.256%2029.273L25.365%2029.966C25.664%2030.152%2026.007%2030.251%2026.359%2030.251H28V29.001H26.358C26.241%2029.001%2026.126%2028.968%2026.026%2028.906L24.918%2028.214C24.734%2028.099%2024.625%2027.901%2024.625%2027.684V22.625V17.567Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12.2%202.59C12.28%202.51%2012.43%202.5%2012.43%202.5C12.48%202.5%2012.58%202.52%2012.66%202.6L14.45%204.39C14.58%204.52%2014.58%204.72%2014.45%204.85L11.7713%207.52872L9.51628%205.27372L12.2%202.59ZM13.2658%204.62L11.7713%206.1145L10.9305%205.27372L12.425%203.77921L13.2658%204.62Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M5.98%208.82L8.23%2011.07L10.7106%208.58938L8.45562%206.33438L5.98%208.81V8.82ZM8.23%209.65579L9.29641%208.58938L8.45562%207.74859L7.38921%208.815L8.23%209.65579Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10.1526%2012.6816L16.2125%206.6217C16.7576%206.08919%2017.05%205.3707%2017.05%204.62C17.05%203.86931%2016.7576%203.15084%2016.2126%202.61834L14.4317%200.837474C13.8992%200.29242%2013.1807%200%2012.43%200C11.6643%200%2010.9529%200.312929%2010.4329%200.832893L3.68289%207.58289C3.04127%208.22452%203.00459%209.25075%203.57288%209.93634L1.29187%2012.2239C1.09186%2012.4245%200.990263%2012.6957%201.0007%2012.9685L1%2014C0.447715%2014%200%2014.4477%200%2015V17C0%2017.5523%200.447715%2018%201%2018H16C16.5523%2018%2017%2017.5523%2017%2017V15C17%2014.4477%2016.5523%2014%2016%2014H10.2325C9.83594%2014%209.39953%2013.4347%2010.1526%2012.6816ZM4.39%209.35L4.9807%209.9407L2.39762%2012.5312H6.63877L7.10501%2012.065L7.57125%2012.5312H8.88875L15.51%205.91C15.86%205.57%2016.05%205.11%2016.05%204.62C16.05%204.13%2015.86%203.67%2015.51%203.33L13.72%201.54C13.38%201.19%2012.92%201%2012.43%201C11.94%201%2011.48%201.2%2011.14%201.54L4.39%208.29C4.1%208.58%204.1%209.06%204.39%209.35ZM16%2017V15H1V17H16Z'%20fill='%23FBFBFE'/%3e%3cpath%20d='M15.1616%205.55136L15.1616%205.55132L15.1564%205.55645L8.40645%2012.3064C8.35915%2012.3537%208.29589%2012.38%208.23%2012.38C8.16411%2012.38%208.10085%2012.3537%208.05355%2012.3064L7.45857%2011.7115L7.10501%2011.3579L6.75146%2011.7115L6.03289%2012.43H3.20465L5.33477%2010.2937L5.6873%209.94019L5.33426%209.58715L4.74355%208.99645C4.64882%208.90171%204.64882%208.73829%204.74355%208.64355L11.4936%201.89355C11.7436%201.64354%2012.0779%201.5%2012.43%201.5C12.7883%201.5%2013.1179%201.63776%2013.3614%201.88839L13.3613%201.88843L13.3664%201.89355L15.1564%203.68355L15.1564%203.68359L15.1616%203.68864C15.4122%203.93211%2015.55%204.26166%2015.55%204.62C15.55%204.97834%2015.4122%205.30789%2015.1616%205.55136ZM5.48%208.82V9.02711L5.62645%209.17355L7.87645%2011.4236L8.23%2011.7771L8.58355%2011.4236L11.0642%208.94293L11.4177%208.58938L11.0642%208.23582L8.80918%205.98082L8.45562%205.62727L8.10207%205.98082L5.62645%208.45645L5.48%208.60289V8.81V8.82ZM11.4177%207.88227L11.7713%208.23582L12.1248%207.88227L14.8036%205.20355C15.1288%204.87829%2015.1288%204.36171%2014.8036%204.03645L13.0136%202.24645C12.8186%202.05146%2012.5792%202%2012.43%202H12.4134L12.3967%202.00111L12.43%202.5C12.3967%202.00111%2012.3966%202.00112%2012.3965%202.00112L12.3963%202.00114L12.3957%202.00117L12.3947%202.00125L12.3924%202.00142L12.387%202.00184L12.3732%202.00311C12.3628%202.00416%2012.3498%202.00567%2012.3346%202.00784C12.3049%202.01208%2012.2642%202.01925%2012.2178%202.03146C12.1396%202.05202%2011.9797%202.10317%2011.8464%202.23645L9.16273%204.92016L8.80918%205.27372L9.16273%205.62727L11.4177%207.88227ZM1.5%2016.5V15.5H15.5V16.5H1.5Z'%20stroke='%2315141A'/%3e%3c/svg%3e") 24 24, text;--editorFreeHighlight-editing-cursor:url("data:image/svg+xml,%3csvg%20width='18'%20height='19'%20viewBox='0%200%2018%2019'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12.2%203.09C12.28%203.01%2012.43%203%2012.43%203C12.48%203%2012.58%203.02%2012.66%203.1L14.45%204.89C14.58%205.02%2014.58%205.22%2014.45%205.35L11.7713%208.02872L9.51628%205.77372L12.2%203.09ZM13.2658%205.12L11.7713%206.6145L10.9305%205.77372L12.425%204.27921L13.2658%205.12Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M5.98%209.32L8.23%2011.57L10.7106%209.08938L8.45562%206.83438L5.98%209.31V9.32ZM8.23%2010.1558L9.29641%209.08938L8.45562%208.24859L7.38921%209.315L8.23%2010.1558Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10.1526%2013.1816L16.2125%207.1217C16.7576%206.58919%2017.05%205.8707%2017.05%205.12C17.05%204.36931%2016.7576%203.65084%2016.2126%203.11834L14.4317%201.33747C13.8992%200.79242%2013.1807%200.5%2012.43%200.5C11.6643%200.5%2010.9529%200.812929%2010.4329%201.33289L3.68289%208.08289C3.04127%208.72452%203.00459%209.75075%203.57288%2010.4363L1.29187%2012.7239C1.09186%2012.9245%200.990263%2013.1957%201.0007%2013.4685L1%2014.5C0.447715%2014.5%200%2014.9477%200%2015.5V17.5C0%2018.0523%200.447715%2018.5%201%2018.5H16C16.5523%2018.5%2017%2018.0523%2017%2017.5V15.5C17%2014.9477%2016.5523%2014.5%2016%2014.5H10.2325C9.83594%2014.5%209.39953%2013.9347%2010.1526%2013.1816ZM4.39%209.85L4.9807%2010.4407L2.39762%2013.0312H6.63877L7.10501%2012.565L7.57125%2013.0312H8.88875L15.51%206.41C15.86%206.07%2016.05%205.61%2016.05%205.12C16.05%204.63%2015.86%204.17%2015.51%203.83L13.72%202.04C13.38%201.69%2012.92%201.5%2012.43%201.5C11.94%201.5%2011.48%201.7%2011.14%202.04L4.39%208.79C4.1%209.08%204.1%209.56%204.39%209.85ZM16%2017.5V15.5H1V17.5H16Z'%20fill='%23FBFBFE'/%3e%3cpath%20d='M15.1616%206.05136L15.1616%206.05132L15.1564%206.05645L8.40645%2012.8064C8.35915%2012.8537%208.29589%2012.88%208.23%2012.88C8.16411%2012.88%208.10085%2012.8537%208.05355%2012.8064L7.45857%2012.2115L7.10501%2011.8579L6.75146%2012.2115L6.03289%2012.93H3.20465L5.33477%2010.7937L5.6873%2010.4402L5.33426%2010.0871L4.74355%209.49645C4.64882%209.40171%204.64882%209.23829%204.74355%209.14355L11.4936%202.39355C11.7436%202.14354%2012.0779%202%2012.43%202C12.7883%202%2013.1179%202.13776%2013.3614%202.38839L13.3613%202.38843L13.3664%202.39355L15.1564%204.18355L15.1564%204.18359L15.1616%204.18864C15.4122%204.43211%2015.55%204.76166%2015.55%205.12C15.55%205.47834%2015.4122%205.80789%2015.1616%206.05136ZM7.87645%2011.9236L8.23%2012.2771L8.58355%2011.9236L11.0642%209.44293L11.4177%209.08938L11.0642%208.73582L8.80918%206.48082L8.45562%206.12727L8.10207%206.48082L5.62645%208.95645L5.48%209.10289V9.31V9.32V9.52711L5.62645%209.67355L7.87645%2011.9236ZM11.4177%208.38227L11.7713%208.73582L12.1248%208.38227L14.8036%205.70355C15.1288%205.37829%2015.1288%204.86171%2014.8036%204.53645L13.0136%202.74645C12.8186%202.55146%2012.5792%202.5%2012.43%202.5H12.4134L12.3967%202.50111L12.43%203C12.3967%202.50111%2012.3966%202.50112%2012.3965%202.50112L12.3963%202.50114L12.3957%202.50117L12.3947%202.50125L12.3924%202.50142L12.387%202.50184L12.3732%202.50311C12.3628%202.50416%2012.3498%202.50567%2012.3346%202.50784C12.3049%202.51208%2012.2642%202.51925%2012.2178%202.53146C12.1396%202.55202%2011.9797%202.60317%2011.8464%202.73645L9.16273%205.42016L8.80918%205.77372L9.16273%206.12727L11.4177%208.38227ZM1.5%2016H15.5V17H1.5V16Z'%20stroke='%2315141A'/%3e%3c/svg%3e") 1 18, pointer;--new-alt-text-warning-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.78182%202.63903C8.58882%202.28803%208.25782%202.25003%208.12482%202.25003C7.99019%202.24847%207.85771%202.28393%207.74185%202.35253C7.62599%202.42113%207.5312%202.52023%207.46782%202.63903L1.97082%2012.639C1.90673%2012.7528%201.87406%2012.8816%201.87617%2013.0122C1.87828%2013.1427%201.91509%2013.2704%201.98282%2013.382C2.04798%2013.4951%202.14207%2013.5888%202.25543%2013.6535C2.36879%2013.7182%202.49732%2013.7515%202.62782%2013.75H13.6218C13.7523%2013.7515%2013.8809%2013.7182%2013.9942%2013.6535C14.1076%2013.5888%2014.2017%2013.4951%2014.2668%2013.382C14.3346%2013.2704%2014.3714%2013.1427%2014.3735%2013.0122C14.3756%2012.8816%2014.3429%2012.7528%2014.2788%2012.639L8.78182%202.63903ZM6.37282%202.03703C6.75182%201.34603%207.43882%201.00003%208.12482%201.00003C8.48341%200.997985%208.83583%201.09326%209.14454%201.2757C9.45325%201.45814%209.70668%201.72092%209.87782%202.03603L15.3748%2012.036C16.1078%2013.369%2015.1438%2015%2013.6228%2015H2.62782C1.10682%2015%200.141823%2013.37%200.875823%2012.037L6.37282%202.03703ZM8.74982%209.06203C8.74982%209.22779%208.68397%209.38676%208.56676%209.50397C8.44955%209.62118%208.29058%209.68703%208.12482%209.68703C7.95906%209.68703%207.80009%209.62118%207.68288%209.50397C7.56566%209.38676%207.49982%209.22779%207.49982%209.06203V5.62503C7.49982%205.45927%207.56566%205.3003%207.68288%205.18309C7.80009%205.06588%207.95906%205.00003%208.12482%205.00003C8.29058%205.00003%208.44955%205.06588%208.56676%205.18309C8.68397%205.3003%208.74982%205.45927%208.74982%205.62503V9.06203ZM7.74982%2012L7.49982%2011.75V11L7.74982%2010.75H8.49982L8.74982%2011V11.75L8.49982%2012H7.74982Z'%20fill='black'/%3e%3c/svg%3e")}.visuallyHidden{white-space:nowrap;border:0;width:0;height:0;margin:0;padding:0;font-size:0;position:absolute;top:0;left:0;overflow:hidden}.textLayer.highlighting{cursor:var(--editorFreeHighlight-editing-cursor)}.textLayer.highlighting:not(.free) span{cursor:var(--editorHighlight-editing-cursor)}[role=img]:is(.textLayer.highlighting:not(.free) span),.textLayer.highlighting.free span{cursor:var(--editorFreeHighlight-editing-cursor)}:is(#viewerContainer.pdfPresentationMode:fullscreen,.annotationEditorLayer.disabled) .noAltTextBadge{display:none!important}@media (resolution>=1.1x){:root{--editorFreeText-editing-cursor:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12%202.75H12.5V2.25V1V0.5H12H10.358C9.91165%200.5%209.47731%200.625661%209.09989%200.860442L9.09886%200.861087L8%201.54837L6.89997%200.860979L6.89911%200.860443C6.5218%200.625734%206.08748%200.5%205.642%200.5H4H3.5V1V2.25V2.75H4H5.642C5.66478%202.75%205.6885%202.75641%205.71008%202.76968C5.71023%202.76977%205.71038%202.76986%205.71053%202.76995L6.817%203.461C6.81704%203.46103%206.81709%203.46105%206.81713%203.46108C6.81713%203.46108%206.81713%203.46108%206.81714%203.46109C6.8552%203.48494%206.876%203.52285%206.876%203.567V8V12.433C6.876%2012.4771%206.85523%2012.515%206.81722%2012.5389C6.81715%2012.5389%206.81707%2012.539%206.817%2012.539L5.70953%2013.23C5.70941%2013.2301%205.70929%2013.2302%205.70917%2013.2303C5.68723%2013.2438%205.6644%2013.25%205.641%2013.25H4H3.5V13.75V15V15.5H4H5.642C6.08835%2015.5%206.52269%2015.3743%206.90011%2015.1396L6.90086%2015.1391L8%2014.4526L9.10003%2015.14L9.10089%2015.1406C9.47831%2015.3753%209.91265%2015.501%2010.359%2015.501H12H12.5V15.001V13.751V13.251H12H10.358C10.3352%2013.251%2010.3115%2013.2446%2010.2899%2013.2313C10.2897%2013.2312%2010.2896%2013.2311%2010.2895%2013.231L9.183%2012.54C9.18298%2012.54%209.18295%2012.54%209.18293%2012.54C9.18291%2012.5399%209.18288%2012.5399%209.18286%2012.5399C9.14615%2012.5169%209.125%2012.4797%209.125%2012.434V8V3.567C9.125%203.52266%209.14603%203.48441%209.18364%203.4606C9.18377%203.46052%209.1839%203.46043%209.18404%203.46035L10.2895%202.76995C10.2896%202.76985%2010.2898%202.76975%2010.2899%202.76966C10.3119%202.75619%2010.3346%202.75%2010.358%202.75H12Z'%20fill='black'%20stroke='white'/%3e%3c/svg%3e") 0 16, text}}@media screen and (forced-colors:active){:root{--outline-color:CanvasText;--outline-around-color:ButtonFace;--resizer-bg-color:ButtonText;--hover-outline-color:Highlight;--hover-outline-around-color:SelectedItemText}}[data-editor-rotation="90"]{transform:rotate(90deg)}[data-editor-rotation="180"]{transform:rotate(180deg)}[data-editor-rotation="270"]{transform:rotate(270deg)}.annotationEditorLayer{font-size:calc(100px * var(--scale-factor));transform-origin:0 0;cursor:auto;background:0 0;position:absolute;inset:0}.annotationEditorLayer .selectedEditor{z-index:100000!important}.annotationEditorLayer.drawing *{pointer-events:none!important}.annotationEditorLayer.waiting{content:"";cursor:wait;width:100%;height:100%;position:absolute;inset:0}.annotationEditorLayer.disabled{pointer-events:none}.annotationEditorLayer.freetextEditing{cursor:var(--editorFreeText-editing-cursor)}.annotationEditorLayer.inkEditing{cursor:var(--editorInk-editing-cursor)}.annotationEditorLayer .draw{box-sizing:border-box}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor){z-index:1;transform-origin:0 0;cursor:auto;border:var(--unfocus-outline);background:0 0;max-width:100%;max-height:100%;position:absolute}.draggable.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)){cursor:move}.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)){border:var(--focus-outline);outline:var(--focus-outline-around)}.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)):before{content:"";border:var(--focus-outline-around);pointer-events:none;position:absolute;inset:0}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)):hover:not(.selectedEditor){border:var(--hover-outline);outline:var(--hover-outline-around)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)):hover:not(.selectedEditor):before{content:"";border:var(--focus-outline-around);position:absolute;inset:0}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-delete-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M11%203H13.6C14%203%2014.3%203.3%2014.3%203.6C14.3%203.9%2014%204.2%2013.7%204.2H13.3V14C13.3%2015.1%2012.4%2016%2011.3%2016H4.80005C3.70005%2016%202.80005%2015.1%202.80005%2014V4.2H2.40005C2.00005%204.2%201.80005%204%201.80005%203.6C1.80005%203.2%202.00005%203%202.40005%203H5.00005V2C5.00005%200.9%205.90005%200%207.00005%200H9.00005C10.1%200%2011%200.9%2011%202V3ZM6.90005%201.2L6.30005%201.8V3H9.80005V1.8L9.20005%201.2H6.90005ZM11.4%2014.7L12%2014.1V4.2H4.00005V14.1L4.60005%2014.7H11.4ZM7.00005%2012.4C7.00005%2012.7%206.70005%2013%206.40005%2013C6.10005%2013%205.80005%2012.7%205.80005%2012.4V7.6C5.70005%207.3%206.00005%207%206.40005%207C6.80005%207%207.00005%207.3%207.00005%207.6V12.4ZM10.2001%2012.4C10.2001%2012.7%209.90006%2013%209.60006%2013C9.30006%2013%209.00006%2012.7%209.00006%2012.4V7.6C9.00006%207.3%209.30006%207%209.60006%207C9.90006%207%2010.2001%207.3%2010.2001%207.6V12.4Z'%20fill='black'%20/%3e%3c/svg%3e");--editor-toolbar-bg-color:#f0f0f4;--editor-toolbar-highlight-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M7.10918%2011.66C7.24918%2011.8%207.43918%2011.88%207.63918%2011.88C7.83918%2011.88%208.02918%2011.8%208.16918%2011.66L14.9192%204.91C15.2692%204.57%2015.4592%204.11%2015.4592%203.62C15.4592%203.13%2015.2692%202.67%2014.9192%202.33L13.1292%200.54C12.7892%200.19%2012.3292%200%2011.8392%200C11.3492%200%2010.8892%200.2%2010.5492%200.54L3.79918%207.29C3.50918%207.58%203.50918%208.06%203.79918%208.35L4.38988%208.9407L1.40918%2011.93H5.64918L6.51419%2011.065L7.10918%2011.66ZM7.63918%2010.07L5.38918%207.82V7.81L7.8648%205.33438L10.1198%207.58938L7.63918%2010.07ZM11.1805%206.52872L13.8592%203.85C13.9892%203.72%2013.9892%203.52%2013.8592%203.39L12.0692%201.6C11.9892%201.52%2011.8892%201.5%2011.8392%201.5C11.8392%201.5%2011.6892%201.51%2011.6092%201.59L8.92546%204.27372L11.1805%206.52872Z'%20fill='%23000'/%3e%3cpath%20d='M0.40918%2014H15.4092V16H0.40918V14Z'%20fill='%23000'/%3e%3c/g%3e%3c/svg%3e");--editor-toolbar-fg-color:#2e2e56;--editor-toolbar-border-color:#8f8f9d;--editor-toolbar-hover-border-color:var(--editor-toolbar-border-color);--editor-toolbar-hover-bg-color:#e0e0e6;--editor-toolbar-hover-fg-color:var(--editor-toolbar-fg-color);--editor-toolbar-hover-outline:none;--editor-toolbar-focus-outline-color:#0060df;--editor-toolbar-shadow:0 2px 6px 0 #3a394433;--editor-toolbar-vert-offset:6px;--editor-toolbar-height:28px;--editor-toolbar-padding:2px;--alt-text-done-color:#2ac3a2;--alt-text-warning-color:#0090ed;--alt-text-hover-done-color:var(--alt-text-done-color);--alt-text-hover-warning-color:var(--alt-text-warning-color)}@media (prefers-color-scheme:dark){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-bg-color:#2b2a33;--editor-toolbar-fg-color:#fbfbfe;--editor-toolbar-hover-bg-color:#52525e;--editor-toolbar-focus-outline-color:#0df;--alt-text-done-color:#54ffbd;--alt-text-warning-color:#80ebff}}@media screen and (forced-colors:active){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-bg-color:ButtonFace;--editor-toolbar-fg-color:ButtonText;--editor-toolbar-border-color:ButtonText;--editor-toolbar-hover-border-color:AccentColor;--editor-toolbar-hover-bg-color:ButtonFace;--editor-toolbar-hover-fg-color:AccentColor;--editor-toolbar-hover-outline:2px solid var(--editor-toolbar-hover-border-color);--editor-toolbar-focus-outline-color:ButtonBorder;--editor-toolbar-shadow:none;--alt-text-done-color:var(--editor-toolbar-fg-color);--alt-text-warning-color:var(--editor-toolbar-fg-color);--alt-text-hover-done-color:var(--editor-toolbar-hover-fg-color);--alt-text-hover-warning-color:var(--editor-toolbar-hover-fg-color)}}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{width:fit-content;height:var(--editor-toolbar-height);cursor:default;pointer-events:auto;box-sizing:content-box;padding:var(--editor-toolbar-padding);background-color:var(--editor-toolbar-bg-color);border:1px solid var(--editor-toolbar-border-color);box-shadow:var(--editor-toolbar-shadow);border-radius:6px;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset-block-start:calc(100% + var(--editor-toolbar-vert-offset));inset-inline-end:0}.hidden:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar){display:none}:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar):has(:focus-visible){border-color:#0000}[dir=ltr] :is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar){transform-origin:100% 0}[dir=rtl] :is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar){transform-origin:0 0}:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons{justify-content:center;align-items:center;gap:0;height:100%;display:flex}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) button{padding:0}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .divider{width:0;height:calc(2 * var(--editor-toolbar-padding) + var(--editor-toolbar-height));border-left:1px solid var(--editor-toolbar-border-color);border-right:none;margin-inline:2px;display:inline-block}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .highlightButton{width:var(--editor-toolbar-height)}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .highlightButton):before{content:"";-webkit-mask-image:var(--editor-toolbar-highlight-image);-webkit-mask-image:var(--editor-toolbar-highlight-image);mask-image:var(--editor-toolbar-highlight-image);background-color:var(--editor-toolbar-fg-color);width:100%;height:100%;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .highlightButton):hover:before{background-color:var(--editor-toolbar-hover-fg-color)}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .delete{width:var(--editor-toolbar-height)}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .delete):before{content:"";-webkit-mask-image:var(--editor-toolbar-delete-image);-webkit-mask-image:var(--editor-toolbar-delete-image);mask-image:var(--editor-toolbar-delete-image);background-color:var(--editor-toolbar-fg-color);width:100%;height:100%;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .delete):hover:before{background-color:var(--editor-toolbar-hover-fg-color)}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>*{height:var(--editor-toolbar-height)}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider){cursor:pointer;background-color:#0000;border:none}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider)):hover{background-color:var(--editor-toolbar-hover-bg-color);color:var(--editor-toolbar-hover-fg-color);outline:var(--editor-toolbar-hover-outline);outline-offset:1px;border-radius:2px}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider)):hover:active{outline:none}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider)):focus-visible{outline:2px solid var(--editor-toolbar-focus-outline-color);border-radius:2px}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText{--alt-text-add-image:url("data:image/svg+xml,%3csvg%20width='12'%20height='13'%20viewBox='0%200%2012%2013'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.375%207.625V11.875C5.375%2012.0408%205.44085%2012.1997%205.55806%2012.3169C5.67527%2012.4342%205.83424%2012.5%206%2012.5C6.16576%2012.5%206.32473%2012.4342%206.44194%2012.3169C6.55915%2012.1997%206.625%2012.0408%206.625%2011.875V7.625L7.125%207.125H11.375C11.5408%207.125%2011.6997%207.05915%2011.8169%206.94194C11.9342%206.82473%2012%206.66576%2012%206.5C12%206.33424%2011.9342%206.17527%2011.8169%206.05806C11.6997%205.94085%2011.5408%205.875%2011.375%205.875H7.125L6.625%205.375V1.125C6.625%200.95924%206.55915%200.800269%206.44194%200.683058C6.32473%200.565848%206.16576%200.5%206%200.5C5.83424%200.5%205.67527%200.565848%205.55806%200.683058C5.44085%200.800269%205.375%200.95924%205.375%201.125V5.375L4.875%205.875H0.625C0.45924%205.875%200.300269%205.94085%200.183058%206.05806C0.065848%206.17527%200%206.33424%200%206.5C0%206.66576%200.065848%206.82473%200.183058%206.94194C0.300269%207.05915%200.45924%207.125%200.625%207.125H4.762L5.375%207.625Z'%20fill='black'/%3e%3c/svg%3e");--alt-text-done-image:url("data:image/svg+xml,%3csvg%20width='12'%20height='13'%20viewBox='0%200%2012%2013'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%200.5C5.21207%200.5%204.43185%200.655195%203.7039%200.956723C2.97595%201.25825%202.31451%201.70021%201.75736%202.25736C1.20021%202.81451%200.758251%203.47595%200.456723%204.2039C0.155195%204.93185%200%205.71207%200%206.5C0%207.28793%200.155195%208.06815%200.456723%208.7961C0.758251%209.52405%201.20021%2010.1855%201.75736%2010.7426C2.31451%2011.2998%202.97595%2011.7417%203.7039%2012.0433C4.43185%2012.3448%205.21207%2012.5%206%2012.5C7.5913%2012.5%209.11742%2011.8679%2010.2426%2010.7426C11.3679%209.61742%2012%208.0913%2012%206.5C12%204.9087%2011.3679%203.38258%2010.2426%202.25736C9.11742%201.13214%207.5913%200.5%206%200.5ZM5.06%208.9L2.9464%206.7856C2.85273%206.69171%202.80018%206.56446%202.80033%206.43183C2.80048%206.29921%202.85331%206.17207%202.9472%206.0784C3.04109%205.98473%203.16834%205.93218%203.30097%205.93233C3.43359%205.93248%203.56073%205.98531%203.6544%206.0792L5.3112%207.7368L8.3464%204.7008C8.44109%204.6109%208.56715%204.56153%208.69771%204.56322C8.82827%204.56492%208.95301%204.61754%209.04534%204.70986C9.13766%204.80219%209.19028%204.92693%209.19198%205.05749C9.19367%205.18805%209.1443%205.31411%209.0544%205.4088L5.5624%208.9H5.06Z'%20fill='%23FBFBFE'/%3e%3c/svg%3e");pointer-events:all;width:max-content;font:menu;color:var(--editor-toolbar-fg-color);justify-content:center;align-items:center;padding-inline:8px;font-size:12px;font-weight:590;display:flex}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):disabled{pointer-events:none}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{content:"";-webkit-mask-image:var(--alt-text-add-image);-webkit-mask-image:var(--alt-text-add-image);mask-image:var(--alt-text-add-image);background-color:var(--editor-toolbar-fg-color);width:12px;height:13px;margin-inline-end:4px;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):hover:before{background-color:var(--editor-toolbar-hover-fg-color)}.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{-webkit-mask-image:var(--alt-text-done-image);-webkit-mask-image:var(--alt-text-done-image);mask-image:var(--alt-text-done-image)}.new:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{width:16px;height:16px;-webkit-mask-image:var(--new-alt-text-warning-image);-webkit-mask-image:var(--new-alt-text-warning-image);mask-image:var(--new-alt-text-warning-image);background-color:var(--alt-text-warning-color);-webkit-mask-size:cover;mask-size:cover}.new:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):hover:before{background-color:var(--alt-text-hover-warning-color)}.new.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{-webkit-mask-image:var(--alt-text-done-image);-webkit-mask-image:var(--alt-text-done-image);mask-image:var(--alt-text-done-image);background-color:var(--alt-text-done-color)}.new.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):hover:before{background-color:var(--alt-text-hover-done-color)}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip{word-wrap:anywhere;display:none}.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){--alt-text-tooltip-bg:#f0f0f4;--alt-text-tooltip-fg:#15141a;--alt-text-tooltip-border:#8f8f9d;--alt-text-tooltip-shadow:0px 2px 6px 0px #3a394433}@media (prefers-color-scheme:dark){.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){--alt-text-tooltip-bg:#1c1b22;--alt-text-tooltip-fg:#fbfbfe;--alt-text-tooltip-shadow:0px 2px 6px 0px #15141a}}@media screen and (forced-colors:active){.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){--alt-text-tooltip-bg:Canvas;--alt-text-tooltip-fg:CanvasText;--alt-text-tooltip-border:CanvasText;--alt-text-tooltip-shadow:none}}.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){top:calc(100% + 2px);border:.5px solid var(--alt-text-tooltip-border);background:var(--alt-text-tooltip-bg);width:max-content;max-width:300px;height:auto;box-shadow:var(--alt-text-tooltip-shadow);color:var(--alt-text-tooltip-fg);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;padding-block:2px 3px;padding-inline:3px;font-size:12px;display:inline-flex;position:absolute;inset-inline-start:0}.annotationEditorLayer .freeTextEditor{padding:calc(var(--freetext-padding) * var(--scale-factor));touch-action:none;width:auto;height:auto}.annotationEditorLayer .freeTextEditor .internal{white-space:nowrap;font:10px sans-serif;line-height:var(--freetext-line-height);-webkit-user-select:none;user-select:none;background:0 0;border:none;inset:0;overflow:visible}.annotationEditorLayer .freeTextEditor .overlay{background:0 0;width:100%;height:100%;display:none;position:absolute;inset:0}.annotationEditorLayer freeTextEditor .overlay.enabled{display:block}.annotationEditorLayer .freeTextEditor .internal:empty:before{content:attr(default-content);color:gray}.annotationEditorLayer .freeTextEditor .internal:focus{-webkit-user-select:auto;user-select:auto;outline:none}.annotationEditorLayer .inkEditor{width:100%;height:100%}.annotationEditorLayer .inkEditor.editing{cursor:inherit}.annotationEditorLayer .inkEditor .inkEditorCanvas{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.annotationEditorLayer .stampEditor{width:auto;height:auto}:is(.annotationEditorLayer .stampEditor) canvas{width:100%;height:100%;margin:0;position:absolute;top:0;left:0}:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{--no-alt-text-badge-border-color:#f0f0f4;--no-alt-text-badge-bg-color:#cfcfd8;--no-alt-text-badge-fg-color:#5b5b66}@media (prefers-color-scheme:dark){:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{--no-alt-text-badge-border-color:#52525e;--no-alt-text-badge-bg-color:#fbfbfe;--no-alt-text-badge-fg-color:#15141a}}@media screen and (forced-colors:active){:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{--no-alt-text-badge-border-color:ButtonText;--no-alt-text-badge-bg-color:ButtonFace;--no-alt-text-badge-fg-color:ButtonText}}:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{pointer-events:none;z-index:1;border:1px solid var(--no-alt-text-badge-border-color);background:var(--no-alt-text-badge-bg-color);border-radius:2px;justify-content:center;align-items:center;width:32px;height:32px;padding:3px;display:inline-flex;position:absolute;inset-block-end:5px;inset-inline-end:5px}:is(:is(.annotationEditorLayer .stampEditor) .noAltTextBadge):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--new-alt-text-warning-image);-webkit-mask-image:var(--new-alt-text-warning-image);mask-image:var(--new-alt-text-warning-image);background-color:var(--no-alt-text-badge-fg-color);display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers{position:absolute;inset:0}.hidden:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers){display:none}:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer{width:var(--resizer-size);height:var(--resizer-size);background:content-box var(--resizer-bg-color);border:var(--focus-outline-around);border-radius:2px;position:absolute}.topLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:var(--resizer-shift);left:var(--resizer-shift)}.topMiddle:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:var(--resizer-shift);left:calc(50% + var(--resizer-shift))}.topRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:var(--resizer-shift);right:var(--resizer-shift)}.middleRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:calc(50% + var(--resizer-shift));right:var(--resizer-shift)}.bottomRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){bottom:var(--resizer-shift);right:var(--resizer-shift)}.bottomMiddle:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){bottom:var(--resizer-shift);left:calc(50% + var(--resizer-shift))}.bottomLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){bottom:var(--resizer-shift);left:var(--resizer-shift)}.middleLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:calc(50% + var(--resizer-shift));left:var(--resizer-shift)}.topLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.bottomRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:nwse-resize}.topMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.bottomMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:ns-resize}.topRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.bottomLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:nesw-resize}.middleRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.middleLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:ew-resize}.topLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.bottomRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:nesw-resize}.topMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.bottomMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:ew-resize}.topRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.bottomLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:nwse-resize}.middleRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.middleLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:ns-resize}:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"])) .editToolbar{rotate:270deg}[dir=ltr] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"])) .editToolbar){inset-block-start:0;inset-inline-end:calc(0px - var(--editor-toolbar-vert-offset))}[dir=rtl] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"])) .editToolbar){inset-block-start:0;inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset))}:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="180"],[data-main-rotation="90"] [data-editor-rotation="90"],[data-main-rotation="180"] [data-editor-rotation="0"],[data-main-rotation="270"] [data-editor-rotation="270"])) .editToolbar{inset-block-start:calc(0pc - var(--editor-toolbar-vert-offset));inset-inline-end:100%;rotate:180deg}:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"])) .editToolbar{rotate:90deg}[dir=ltr] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"])) .editToolbar){inset-block-start:100%;inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset))}[dir=rtl] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"])) .editToolbar){inset-block-start:0;inset-inline-start:calc(0px - var(--editor-toolbar-vert-offset))}.dialog.altText::backdrop{-webkit-mask:url(#alttext-manager-mask);mask:url(#alttext-manager-mask)}.dialog.altText.positioned{margin:0}.dialog.altText #altTextContainer{flex-direction:column;align-items:flex-start;gap:16px;width:300px;height:fit-content;display:inline-flex}:is(.dialog.altText #altTextContainer) #overallDescription{flex-direction:column;align-self:stretch;align-items:flex-start;gap:4px;display:flex}:is(:is(.dialog.altText #altTextContainer) #overallDescription) span{align-self:stretch}:is(:is(.dialog.altText #altTextContainer) #overallDescription) .title{font-size:13px;font-style:normal;font-weight:590}:is(.dialog.altText #altTextContainer) #addDescription{flex-direction:column;align-items:stretch;gap:8px;display:flex}:is(:is(.dialog.altText #altTextContainer) #addDescription) .descriptionArea{flex:1;padding-inline:24px 10px}:is(:is(:is(.dialog.altText #altTextContainer) #addDescription) .descriptionArea) textarea{width:100%;min-height:75px}:is(.dialog.altText #altTextContainer) #buttons{justify-content:flex-end;align-self:stretch;align-items:flex-start;gap:8px;display:flex}.dialog.newAltText{--new-alt-text-ai-disclaimer-icon:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3.49073%201.3015L3.30873%202.1505C3.29349%202.22246%203.25769%202.28844%203.20568%202.34045C3.15368%202.39246%203.08769%202.42826%203.01573%202.4435L2.16673%202.6255C1.76473%202.7125%201.76473%203.2865%202.16673%203.3725L3.01573%203.5555C3.08769%203.57074%203.15368%203.60654%203.20568%203.65855C3.25769%203.71056%203.29349%203.77654%203.30873%203.8485L3.49073%204.6975C3.57773%205.0995%204.15173%205.0995%204.23773%204.6975L4.42073%203.8485C4.43598%203.77654%204.47177%203.71056%204.52378%203.65855C4.57579%203.60654%204.64178%203.57074%204.71373%203.5555L5.56173%203.3725C5.96373%203.2855%205.96373%202.7115%205.56173%202.6255L4.71273%202.4435C4.64083%202.42814%204.57491%202.3923%204.52292%202.34031C4.47093%202.28832%204.43509%202.2224%204.41973%202.1505L4.23773%201.3015C4.15073%200.8995%203.57673%200.8995%203.49073%201.3015ZM10.8647%2013.9995C10.4853%2014.0056%2010.1158%2013.8782%209.82067%2013.6397C9.52553%2013.4013%209.32347%2013.0667%209.24973%2012.6945L8.89273%2011.0275C8.83676%2010.7687%208.70738%2010.5316%208.52009%2010.3445C8.3328%2010.1574%208.09554%2010.0282%207.83673%209.9725L6.16973%209.6155C5.38873%209.4465%204.86473%208.7975%204.86473%207.9995C4.86473%207.2015%205.38873%206.5525%206.16973%206.3845L7.83673%206.0275C8.09551%205.97135%208.33267%205.84193%208.51992%205.65468C8.70716%205.46744%208.83658%205.23028%208.89273%204.9715L9.25073%203.3045C9.41773%202.5235%2010.0667%201.9995%2010.8647%201.9995C11.6627%201.9995%2012.3117%202.5235%2012.4797%203.3045L12.8367%204.9715C12.9507%205.4995%2013.3647%205.9135%2013.8927%206.0265L15.5597%206.3835C16.3407%206.5525%2016.8647%207.2015%2016.8647%207.9995C16.8647%208.7975%2016.3407%209.4465%2015.5597%209.6145L13.8927%209.9715C13.6337%2010.0275%2013.3963%2010.157%2013.209%2010.3445C13.0217%2010.5319%2012.8925%2010.7694%2012.8367%2011.0285L12.4787%2012.6945C12.4054%2013.0667%2012.2036%2013.4014%2011.9086%2013.6399C11.6135%2013.8784%2011.2441%2014.0057%2010.8647%2013.9995ZM10.8647%203.2495C10.7667%203.2495%2010.5337%203.2795%2010.4727%203.5655L10.1147%205.2335C10.0081%205.72777%209.76116%206.18082%209.40361%206.53837C9.04606%206.89593%208.59301%207.14283%208.09873%207.2495L6.43173%207.6065C6.14573%207.6685%206.11473%207.9015%206.11473%207.9995C6.11473%208.0975%206.14573%208.3305%206.43173%208.3925L8.09873%208.7495C8.59301%208.85617%209.04606%209.10307%209.40361%209.46062C9.76116%209.81817%2010.0081%2010.2712%2010.1147%2010.7655L10.4727%2012.4335C10.5337%2012.7195%2010.7667%2012.7495%2010.8647%2012.7495C10.9627%2012.7495%2011.1957%2012.7195%2011.2567%2012.4335L11.6147%2010.7665C11.7212%2010.272%2011.9681%209.81878%2012.3256%209.46103C12.6832%209.10329%2013.1363%208.85624%2013.6307%208.7495L15.2977%208.3925C15.5837%208.3305%2015.6147%208.0975%2015.6147%207.9995C15.6147%207.9015%2015.5837%207.6685%2015.2977%207.6065L13.6307%207.2495C13.1365%207.14283%2012.6834%206.89593%2012.3259%206.53837C11.9683%206.18082%2011.7214%205.72777%2011.6147%205.2335L11.2567%203.5655C11.1957%203.2795%2010.9627%203.2495%2010.8647%203.2495ZM3.30873%2012.1505L3.49073%2011.3015C3.57673%2010.8995%204.15073%2010.8995%204.23773%2011.3015L4.41973%2012.1505C4.43509%2012.2224%204.47093%2012.2883%204.52292%2012.3403C4.57491%2012.3923%204.64083%2012.4281%204.71273%2012.4435L5.56173%2012.6255C5.96373%2012.7115%205.96373%2013.2855%205.56173%2013.3725L4.71273%2013.5545C4.64083%2013.5699%204.57491%2013.6057%204.52292%2013.6577C4.47093%2013.7097%204.43509%2013.7756%204.41973%2013.8475L4.23773%2014.6965C4.15173%2015.0985%203.57773%2015.0985%203.49073%2014.6965L3.30873%2013.8475C3.29337%2013.7756%203.25754%2013.7097%203.20555%2013.6577C3.15356%2013.6057%203.08764%2013.5699%203.01573%2013.5545L2.16673%2013.3725C1.76473%2013.2865%201.76473%2012.7125%202.16673%2012.6255L3.01573%2012.4435C3.08769%2012.4283%203.15368%2012.3925%203.20568%2012.3405C3.25769%2012.2884%203.29349%2012.2225%203.30873%2012.1505Z'%20fill='black'/%3e%3c/svg%3e");--new-alt-text-spinner-icon:url("data:image/svg+xml,%3c!--%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%20-%20License,%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%20-%20file,%20You%20can%20obtain%20one%20at%20http://mozilla.org/MPL/2.0/.%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='16'%20height='16'%3e%3cstyle%3e%20@media%20not%20(prefers-reduced-motion)%20{%20@keyframes%20loadingRotate%20{%20from%20{%20rotate:%200;%20}%20to%20{%20rotate:%20360deg%20}%20}%20%23circle-arrows%20{%20animation:%20loadingRotate%201.8s%20linear%20infinite;%20transform-origin:%2050%25%2050%25;%20}%20%23hourglass%20{%20display:%20none;%20}%20}%20@media%20(prefers-reduced-motion)%20{%20%23circle-arrows%20{%20display:%20none;%20}%20}%20%3c/style%3e%3cpath%20id='circle-arrows'%20d='M9%205.528c0%20.42.508.63.804.333l2.528-2.528a.47.47%200%200%200%200-.666L9.805.14A.471.471%200%200%200%209%20.472v1.866A5.756%205.756%200%200%200%202.25%208c0%20.942.232%201.83.635%202.615l1.143-1.143A4.208%204.208%200%200%201%203.75%208%204.254%204.254%200%200%201%208%203.75c.345%200%20.68.042%201%20.122v1.656zM7%2010.472v1.656c.32.08.655.122%201%20.122A4.254%204.254%200%200%200%2012.25%208c0-.52-.107-1.013-.279-1.474l1.143-1.143c.404.786.636%201.674.636%202.617A5.756%205.756%200%200%201%207%2013.662v1.866a.47.47%200%200%201-.804.333l-2.528-2.528a.47.47%200%200%201%200-.666l2.528-2.528a.47.47%200%200%201%20.804.333z'/%3e%3cg%20id='hourglass'%3e%3cpath%20d='M13,1%20C13.5522847,1%2014,1.44771525%2014,2%20C14,2.55228475%2013.5522847,3%2013,3%20L12.9854217,2.99990801%20C12.9950817,3.16495885%2013,3.33173274%2013,3.5%20C13,5.24679885%2010.9877318,6.01090495%2010.9877318,8.0017538%20C10.9877318,9.99260264%2013,10.7536922%2013,12.5%20C13,12.6686079%2012.9950617,12.8357163%2012.985363,13.0010943%20L13,13%20C13.5522847,13%2014,13.4477153%2014,14%20C14,14.5522847%2013.5522847,15%2013,15%20L3,15%20C2.44771525,15%202,14.5522847%202,14%20C2,13.4477153%202.44771525,13%203,13%20L3.01463704,13.0010943%20C3.00493827,12.8357163%203,12.6686079%203,12.5%20C3,10.7536922%204.9877318,9.99260264%205,8.0017538%20C5.0122682,6.01090495%203,5.24679885%203,3.5%20C3,3.33173274%203.00491834,3.16495885%203.01457832,2.99990801%20L3,3%20C2.44771525,3%202,2.55228475%202,2%20C2,1.44771525%202.44771525,1%203,1%20L13,1%20Z%20M10.987,3%20L5.012,3%20L5.00308914,3.24815712%20C5.00103707,3.33163368%205,3.4155948%205,3.5%20C5,5.36125069%206.99153646,6.01774089%206.99153646,8.0017538%20C6.99153646,9.98576671%205,10.6393737%205,12.5%20L5.00307746,12.7513676%20L5.01222201,12.9998392%20L5.60191711,12.9988344%20L6.0425138,12.2959826%20C7.02362731,10.7653275%207.67612271,10%208,10%20C8.37014547,10%209.16950644,10.9996115%2010.3980829,12.9988344%20L10.987778,12.9998392%20C10.9958674,12.8352104%2011,12.66849%2011,12.5%20C11,10.6393737%208.98689779,10.0147381%208.98689779,8.0017538%20C8.98689779,5.98876953%2011,5.36125069%2011,3.5%20L10.9969109,3.24815712%20L10.987,3%20Z'/%3e%3cpath%20d='M6,4%20L10,4%20C8.95166016,6%208.28499349,7%208,7%20C7.71500651,7%207.04833984,6%206,4%20Z'/%3e%3c/g%3e%3c/svg%3e");--preview-image-bg-color:#f0f0f4;--preview-image-border:none}@media (prefers-color-scheme:dark){.dialog.newAltText{--preview-image-bg-color:#2b2a33}}@media screen and (forced-colors:active){.dialog.newAltText{--preview-image-bg-color:ButtonFace;--preview-image-border:1px solid ButtonText}}.dialog.newAltText{width:80%;min-width:300px;max-width:570px;padding:0}.dialog.newAltText.noAi #newAltTextDisclaimer,.dialog.newAltText.noAi #newAltTextCreateAutomatically,.dialog.newAltText.aiInstalling #newAltTextCreateAutomatically{display:none!important}.dialog.newAltText.aiInstalling #newAltTextDownloadModel{display:flex!important}.dialog.newAltText.error #newAltTextNotNow{display:none!important}.dialog.newAltText.error #newAltTextCancel{display:inline-block!important}.dialog.newAltText:not(.error) #newAltTextError{display:none!important}.dialog.newAltText #newAltTextContainer{flex-direction:column;flex:0 auto;justify-content:flex-end;align-items:flex-start;gap:12px;width:auto;padding:16px;line-height:normal;display:flex}:is(.dialog.newAltText #newAltTextContainer) #mainContent{flex:auto;justify-content:flex-end;align-self:stretch;align-items:flex-start;gap:12px;display:flex}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionAndSettings{flex-direction:column;flex:1 0 0;align-self:stretch;align-items:flex-start;gap:16px;display:flex}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction{flex-direction:column;flex:auto;align-self:stretch;align-items:flex-start;gap:8px;display:flex}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer{width:100%;height:70px;position:relative}:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea{width:100%;height:100%;padding:8px}:is(:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea)::-moz-placeholder{color:var(--text-secondary-color)}:is(:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea)::placeholder{color:var(--text-secondary-color)}:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) .altTextSpinner{background-color:var(--text-secondary-color);pointer-events:none;width:16px;height:16px;display:none;position:absolute;inset-block-start:8px;inset-inline-start:8px;-webkit-mask-size:cover;mask-size:cover}.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea::-moz-placeholder{color:#0000}.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea::placeholder{color:#0000}.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) .altTextSpinner{-webkit-mask-image:var(--new-alt-text-spinner-icon);-webkit-mask-image:var(--new-alt-text-spinner-icon);mask-image:var(--new-alt-text-spinner-icon);display:inline-block}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescription{font-size:11px}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDisclaimer{flex-direction:row;align-items:flex-start;gap:4px;font-size:11px;display:flex}:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDisclaimer):before{content:"";width:17px;height:16px;-webkit-mask-image:var(--new-alt-text-ai-disclaimer-icon);-webkit-mask-image:var(--new-alt-text-ai-disclaimer-icon);mask-image:var(--new-alt-text-ai-disclaimer-icon);background-color:var(--text-secondary-color);flex:1 0 auto;display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextDownloadModel{align-self:stretch;align-items:center;gap:4px;display:flex}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextDownloadModel):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--new-alt-text-spinner-icon);-webkit-mask-image:var(--new-alt-text-spinner-icon);mask-image:var(--new-alt-text-spinner-icon);background-color:var(--text-secondary-color);display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextImagePreview{aspect-ratio:1;background-color:var(--preview-image-bg-color);border:var(--preview-image-border);flex:none;justify-content:center;align-items:center;width:180px;display:flex}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextImagePreview)>canvas{max-width:100%;max-height:100%}.colorPicker{--hover-outline-color:#0250bb;--selected-outline-color:#0060df;--swatch-border-color:#cfcfd8}@media (prefers-color-scheme:dark){.colorPicker{--hover-outline-color:#80ebff;--selected-outline-color:#aaf2ff;--swatch-border-color:#52525e}}@media screen and (forced-colors:active){.colorPicker{--hover-outline-color:Highlight;--selected-outline-color:var(--hover-outline-color);--swatch-border-color:ButtonText}}.colorPicker .swatch{border:1px solid var(--swatch-border-color);outline-offset:2px;box-sizing:border-box;forced-color-adjust:none;border-radius:100%;width:16px;height:16px}.colorPicker button:is(:hover,.selected)>.swatch{border:none}.annotationEditorLayer[data-main-rotation="0"] .highlightEditor:not(.free)>.editToolbar{rotate:0deg}.annotationEditorLayer[data-main-rotation="90"] .highlightEditor:not(.free)>.editToolbar{rotate:270deg}.annotationEditorLayer[data-main-rotation="180"] .highlightEditor:not(.free)>.editToolbar{rotate:180deg}.annotationEditorLayer[data-main-rotation="270"] .highlightEditor:not(.free)>.editToolbar{rotate:90deg}.annotationEditorLayer .highlightEditor{z-index:1;cursor:auto;pointer-events:none;transform-origin:0 0;background:0 0;border:none;outline:none;max-width:100%;max-height:100%;position:absolute}:is(.annotationEditorLayer .highlightEditor):not(.free){transform:none}:is(.annotationEditorLayer .highlightEditor) .internal{pointer-events:auto;width:100%;height:100%;position:absolute;top:0;left:0}.disabled:is(.annotationEditorLayer .highlightEditor) .internal{pointer-events:none}.selectedEditor:is(.annotationEditorLayer .highlightEditor) .internal{cursor:pointer}:is(.annotationEditorLayer .highlightEditor) .editToolbar{--editor-toolbar-colorpicker-arrow-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8.23336%2010.4664L11.8474%206.85339C11.894%206.8071%2011.931%206.75203%2011.9563%206.69136C11.9816%206.63069%2011.9946%206.56562%2011.9946%206.49989C11.9946%206.43417%2011.9816%206.3691%2011.9563%206.30843C11.931%206.24776%2011.894%206.19269%2011.8474%206.14639C11.7536%206.05266%2011.6264%206%2011.4939%206C11.3613%206%2011.2341%206.05266%2011.1404%206.14639L7.99236%209.29339L4.84736%206.14739C4.75305%206.05631%204.62675%206.00592%204.49566%206.00706C4.36456%206.0082%204.23915%206.06078%204.14645%206.15348C4.05374%206.24619%204.00116%206.37159%204.00002%206.50269C3.99888%206.63379%204.04928%206.76009%204.14036%206.85439L7.75236%2010.4674L8.23336%2010.4664Z'%20fill='black'/%3e%3c/svg%3e");transform-origin:50%!important}:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker{justify-content:center;align-items:center;gap:4px;width:auto;padding:4px;display:flex;position:relative}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):after{content:"";-webkit-mask-image:var(--editor-toolbar-colorpicker-arrow-image);-webkit-mask-image:var(--editor-toolbar-colorpicker-arrow-image);mask-image:var(--editor-toolbar-colorpicker-arrow-image);background-color:var(--editor-toolbar-fg-color);width:12px;height:12px;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):hover:after{background-color:var(--editor-toolbar-hover-fg-color)}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):has(.dropdown:not(.hidden)){background-color:var(--editor-toolbar-hover-bg-color)}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):has(.dropdown:not(.hidden)):after{scale:-1}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown{background-color:var(--editor-toolbar-bg-color);border:1px solid var(--editor-toolbar-border-color);box-shadow:var(--editor-toolbar-shadow);width:calc(100% + 2 * var(--editor-toolbar-padding));border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:11px;padding-block:8px;display:flex;position:absolute;inset-block-start:calc(100% + 4px)}:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:100%;height:auto;display:flex}:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button):is(:active,:focus-visible){outline:none}:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button)>.swatch{outline-offset:2px}[aria-selected=true]:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button)>.swatch{outline:2px solid var(--selected-outline-color)}:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button):is(:hover,:active,:focus-visible)>.swatch{outline:2px solid var(--hover-outline-color)}.editorParamsToolbar:has(#highlightParamsToolbarContainer){padding:unset}#highlightParamsToolbarContainer{gap:16px;padding-block-end:12px;padding-inline:10px}#highlightParamsToolbarContainer .colorPicker{flex-direction:column;gap:8px;display:flex}:is(#highlightParamsToolbarContainer .colorPicker) .dropdown{flex-direction:row;justify-content:space-between;align-items:center;height:auto;display:flex}:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button{cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;width:auto;height:auto;padding:0;display:flex}:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button) .swatch{width:24px;height:24px}:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button):is(:active,:focus-visible){outline:none}[aria-selected=true]:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button)>.swatch{outline:2px solid var(--selected-outline-color)}:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button):is(:hover,:active,:focus-visible)>.swatch{outline:2px solid var(--hover-outline-color)}#highlightParamsToolbarContainer #editorHighlightThickness{flex-direction:column;align-self:stretch;align-items:center;gap:4px;display:flex}:is(#highlightParamsToolbarContainer #editorHighlightThickness) .editorParamsLabel{align-self:stretch;height:auto}:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{--example-color:#bfbfc9;justify-content:space-between;align-self:stretch;align-items:center;display:flex}@media (prefers-color-scheme:dark){:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{--example-color:#80808e}}@media screen and (forced-colors:active){:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{--example-color:CanvasText}}:is(:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker)>.editorParamsSlider[disabled]){opacity:.4}:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker):before,:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker):after{content:"";aspect-ratio:1;background-color:var(--example-color);border-radius:100%;width:8px;display:block}:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker):after{width:24px}:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker) .editorParamsSlider{width:unset;height:14px}#highlightParamsToolbarContainer #editorHighlightVisibility{flex-direction:column;align-self:stretch;align-items:flex-start;gap:8px;display:flex}:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{--divider-color:#d7d7db}@media (prefers-color-scheme:dark){:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{--divider-color:#8f8f9d}}@media screen and (forced-colors:active){:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{--divider-color:CanvasText}}:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{background-color:var(--divider-color);width:100%;height:1px;margin-block:4px}:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .toggler{justify-content:space-between;align-self:stretch;align-items:center;display:flex}#altTextSettingsDialog{padding:16px}#altTextSettingsDialog #altTextSettingsContainer{flex-direction:column;gap:16px;width:573px;display:flex}:is(#altTextSettingsDialog #altTextSettingsContainer) .mainContainer{gap:16px}:is(#altTextSettingsDialog #altTextSettingsContainer) .description{color:var(--text-secondary-color)}:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings{flex-direction:column;gap:12px;display:flex}:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings) button{width:fit-content}.download:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings) #deleteModelButton,:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings):not(.download) #downloadModelButton{display:none}:is(#altTextSettingsDialog #altTextSettingsContainer) #automaticAltText,:is(#altTextSettingsDialog #altTextSettingsContainer) #altTextEditor{flex-direction:column;gap:8px;display:flex}:is(#altTextSettingsDialog #altTextSettingsContainer) #createModelDescription,:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings,:is(#altTextSettingsDialog #altTextSettingsContainer) #showAltTextDialogDescription{padding-inline-start:40px}:is(#altTextSettingsDialog #altTextSettingsContainer) #automaticSettings{flex-direction:column;gap:16px;display:flex}:root{--viewer-container-height:0;--pdfViewer-padding-bottom:0;--page-margin:1px auto -8px;--page-border:9px solid transparent;--spreadHorizontalWrapped-margin-LR:-3.5px;--loading-icon-delay:.4s}@media screen and (forced-colors:active){:root{--pdfViewer-padding-bottom:9px;--page-margin:8px auto -1px;--page-border:1px solid CanvasText;--spreadHorizontalWrapped-margin-LR:3.5px}}[data-main-rotation="90"]{transform:rotate(90deg)translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg)translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg)translate(-100%)}#hiddenCopyElement,.hiddenCanvasElement{width:0;height:0;display:none;position:absolute;top:0;left:0}.pdfViewer{--scale-factor:1;--page-bg-color:unset;padding-bottom:var(--pdfViewer-padding-bottom);--hcm-highlight-filter:none;--hcm-highlight-selected-filter:none}@media screen and (forced-colors:active){.pdfViewer{--hcm-highlight-filter:invert(100%)}}.pdfViewer.copyAll{cursor:wait}.pdfViewer .canvasWrapper{width:100%;height:100%;overflow:hidden}:is(.pdfViewer .canvasWrapper) canvas{contain:content;width:100%;height:100%;margin:0;display:block;position:absolute;top:0;left:0}:is(:is(.pdfViewer .canvasWrapper) canvas) .structTree{contain:strict}.pdfViewer .page{--scale-round-x:1px;--scale-round-y:1px;width:816px;height:1056px;margin:var(--page-margin);border:var(--page-border);background-clip:content-box;background-color:var(--page-bg-color,#fff);direction:ltr;position:relative;overflow:visible}.pdfViewer .dummyPage{width:0;height:var(--viewer-container-height);position:relative}.pdfViewer.noUserSelect{-webkit-user-select:none;user-select:none}.pdfViewer.removePageBorders .page{border:none;margin:0 auto 10px}.pdfViewer.singlePageView{display:inline-block}.pdfViewer.singlePageView .page{border:none;margin:0}.pdfViewer:is(.scrollHorizontal,.scrollWrapped),.spread{text-align:center;margin-inline:3.5px}.pdfViewer.scrollHorizontal,.spread{white-space:nowrap}.pdfViewer.removePageBorders,.pdfViewer:is(.scrollHorizontal,.scrollWrapped) .spread{margin-inline:0}.spread :is(.page,.dummyPage),.pdfViewer:is(.scrollHorizontal,.scrollWrapped) :is(.page,.spread){vertical-align:middle;display:inline-block}.spread .page,.pdfViewer:is(.scrollHorizontal,.scrollWrapped) .page{margin-inline:var(--spreadHorizontalWrapped-margin-LR)}.pdfViewer.removePageBorders .spread .page,.pdfViewer.removePageBorders:is(.scrollHorizontal,.scrollWrapped) .page{margin-inline:5px}.pdfViewer .page.loadingIcon:after{content:"";width:100%;height:100%;transition-property:display;transition-delay:var(--loading-icon-delay);z-index:5;contain:strict;background:url(data:image/gif;base64,R0lGODlhGAAYAPQAAP///wAAAM7Ozvr6+uDg4LCwsOjo6I6OjsjIyJycnNjY2KioqMDAwPLy8nZ2doaGhri4uGhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJBwAAACwAAAAAGAAYAAAFriAgjiQAQWVaDgr5POSgkoTDjFE0NoQ8iw8HQZQTDQjDn4jhSABhAAOhoTqSDg7qSUQwxEaEwwFhXHhHgzOA1xshxAnfTzotGRaHglJqkJcaVEqCgyoCBQkJBQKDDXQGDYaIioyOgYSXA36XIgYMBWRzXZoKBQUMmil0lgalLSIClgBpO0g+s26nUWddXyoEDIsACq5SsTMMDIECwUdJPw0Mzsu0qHYkw72bBmozIQAh+QQJBwAAACwAAAAAGAAYAAAFsCAgjiTAMGVaDgR5HKQwqKNxIKPjjFCk0KNXC6ATKSI7oAhxWIhezwhENTCQEoeGCdWIPEgzESGxEIgGBWstEW4QCGGAIJEoxGmGt5ZkgCRQQHkGd2CESoeIIwoMBQUMP4cNeQQGDYuNj4iSb5WJnmeGng0CDGaBlIQEJziHk3sABidDAHBgagButSKvAAoyuHuUYHgCkAZqebw0AgLBQyyzNKO3byNuoSS8x8OfwIchACH5BAkHAAAALAAAAAAYABgAAAW4ICCOJIAgZVoOBJkkpDKoo5EI43GMjNPSokXCINKJCI4HcCRIQEQvqIOhGhBHhUTDhGo4diOZyFAoKEQDxra2mAEgjghOpCgz3LTBIxJ5kgwMBShACREHZ1V4Kg1rS44pBAgMDAg/Sw0GBAQGDZGTlY+YmpyPpSQDiqYiDQoCliqZBqkGAgKIS5kEjQ21VwCyp76dBHiNvz+MR74AqSOdVwbQuo+abppo10ssjdkAnc0rf8vgl8YqIQAh+QQJBwAAACwAAAAAGAAYAAAFrCAgjiQgCGVaDgZZFCQxqKNRKGOSjMjR0qLXTyciHA7AkaLACMIAiwOC1iAxCrMToHHYjWQiA4NBEA0Q1RpWxHg4cMXxNDk4OBxNUkPAQAEXDgllKgMzQA1pSYopBgonCj9JEA8REQ8QjY+RQJOVl4ugoYssBJuMpYYjDQSliwasiQOwNakALKqsqbWvIohFm7V6rQAGP6+JQLlFg7KDQLKJrLjBKbvAor3IKiEAIfkECQcAAAAsAAAAABgAGAAABbUgII4koChlmhokw5DEoI4NQ4xFMQoJO4uuhignMiQWvxGBIQC+AJBEUyUcIRiyE6CR0CllW4HABxBURTUw4nC4FcWo5CDBRpQaCoF7VjgsyCUDYDMNZ0mHdwYEBAaGMwwHDg4HDA2KjI4qkJKUiJ6faJkiA4qAKQkRB3E0i6YpAw8RERAjA4tnBoMApCMQDhFTuySKoSKMJAq6rD4GzASiJYtgi6PUcs9Kew0xh7rNJMqIhYchACH5BAkHAAAALAAAAAAYABgAAAW0ICCOJEAQZZo2JIKQxqCOjWCMDDMqxT2LAgELkBMZCoXfyCBQiFwiRsGpku0EshNgUNAtrYPT0GQVNRBWwSKBMp98P24iISgNDAS4ipGA6JUpA2WAhDR4eWM/CAkHBwkIDYcGiTOLjY+FmZkNlCN3eUoLDmwlDW+AAwcODl5bYl8wCVYMDw5UWzBtnAANEQ8kBIM0oAAGPgcREIQnVloAChEOqARjzgAQEbczg8YkWJq8nSUhACH5BAkHAAAALAAAAAAYABgAAAWtICCOJGAYZZoOpKKQqDoORDMKwkgwtiwSBBYAJ2owGL5RgxBziQQMgkwoMkhNqAEDARPSaiMDFdDIiRSFQowMXE8Z6RdpYHWnEAWGPVkajPmARVZMPUkCBQkJBQINgwaFPoeJi4GVlQ2Qc3VJBQcLV0ptfAMJBwdcIl+FYjALQgimoGNWIhAQZA4HXSpLMQ8PIgkOSHxAQhERPw7ASTSFyCMMDqBTJL8tf3y2fCEAIfkECQcAAAAsAAAAABgAGAAABa8gII4k0DRlmg6kYZCoOg5EDBDEaAi2jLO3nEkgkMEIL4BLpBAkVy3hCTAQKGAznM0AFNFGBAbj2cA9jQixcGZAGgECBu/9HnTp+FGjjezJFAwFBQwKe2Z+KoCChHmNjVMqA21nKQwJEJRlbnUFCQlFXlpeCWcGBUACCwlrdw8RKGImBwktdyMQEQciB7oACwcIeA4RVwAODiIGvHQKERAjxyMIB5QlVSTLYLZ0sW8hACH5BAkHAAAALAAAAAAYABgAAAW0ICCOJNA0ZZoOpGGQrDoOBCoSxNgQsQzgMZyIlvOJdi+AS2SoyXrK4umWPM5wNiV0UDUIBNkdoepTfMkA7thIECiyRtUAGq8fm2O4jIBgMBA1eAZ6Knx+gHaJR4QwdCMKBxEJRggFDGgQEREPjjAMBQUKIwIRDhBDC2QNDDEKoEkDoiMHDigICGkJBS2dDA6TAAnAEAkCdQ8ORQcHTAkLcQQODLPMIgIJaCWxJMIkPIoAt3EhACH5BAkHAAAALAAAAAAYABgAAAWtICCOJNA0ZZoOpGGQrDoOBCoSxNgQsQzgMZyIlvOJdi+AS2SoyXrK4umWHM5wNiV0UN3xdLiqr+mENcWpM9TIbrsBkEck8oC0DQqBQGGIz+t3eXtob0ZTPgNrIwQJDgtGAgwCWSIMDg4HiiUIDAxFAAoODwxDBWINCEGdSTQkCQcoegADBaQ6MggHjwAFBZUFCm0HB0kJCUy9bAYHCCPGIwqmRq0jySMGmj6yRiEAIfkECQcAAAAsAAAAABgAGAAABbIgII4k0DRlmg6kYZCsOg4EKhLE2BCxDOAxnIiW84l2L4BLZKipBopW8XRLDkeCiAMyMvQAA+uON4JEIo+vqukkKQ6RhLHplVGN+LyKcXA4Dgx5DWwGDXx+gIKENnqNdzIDaiMECwcFRgQCCowiCAcHCZIlCgICVgSfCEMMnA0CXaU2YSQFoQAKUQMMqjoyAglcAAyBAAIMRUYLCUkFlybDeAYJryLNk6xGNCTQXY0juHghACH5BAkHAAAALAAAAAAYABgAAAWzICCOJNA0ZVoOAmkY5KCSSgSNBDE2hDyLjohClBMNij8RJHIQvZwEVOpIekRQJyJs5AMoHA+GMbE1lnm9EcPhOHRnhpwUl3AsknHDm5RN+v8qCAkHBwkIfw1xBAYNgoSGiIqMgJQifZUjBhAJYj95ewIJCQV7KYpzBAkLLQADCHOtOpY5PgNlAAykAEUsQ1wzCgWdCIdeArczBQVbDJ0NAqyeBb64nQAGArBTt8R8mLuyPyEAOwAAAAAAAAAAAA==) 50% no-repeat;display:none;position:absolute;top:0;left:0}.pdfViewer .page.loading:after{display:block}.pdfViewer .page:not(.loading):after{transition-property:none;display:none}.pdfPresentationMode .pdfViewer{padding-bottom:0}.pdfPresentationMode .spread{margin:0}.pdfPresentationMode .pdfViewer .page{border:2px solid #0000;margin:0 auto}.textLayer{z-index:2;opacity:1;mix-blend-mode:multiply;display:flex}.annotationLayer{z-index:3;position:absolute;top:0}html body .textLayer>div:not(.PdfHighlighter__highlight-layer):not(.TextHighlight):not(.TextHighlight-icon){opacity:1;mix-blend-mode:multiply}.textLayer ::selection{mix-blend-mode:multiply}@media (-ms-high-contrast:none),(-ms-high-contrast:active){.textLayer{opacity:.5;opacity:.5}}@supports (-ms-ime-align:auto){.textLayer{opacity:.5}}.PdfHighlighter{width:100%;height:100%;position:absolute;overflow:auto}.PdfHighlighter::-webkit-scrollbar{width:10px;height:10px}.PdfHighlighter::-webkit-scrollbar-thumb{background-color:#9f9f9f;border-radius:5px}.PdfHighlighter::-webkit-scrollbar-thumb:hover{background-color:#d1d1d1}.PdfHighlighter::-webkit-scrollbar-track{background-color:#2c2c2c;border-radius:5px}.PdfHighlighter::-webkit-scrollbar-track-piece{background-color:#2c2c2c}.PdfHighlighter__tip-container{z-index:6;position:absolute}.PdfHighlighter__highlight-layer{z-index:4;pointer-events:none;position:absolute;inset:0}.textLayer>.PdfHighlighter__highlight-layer{z-index:4}.PdfHighlighter__note-layer{z-index:5;mix-blend-mode:normal;pointer-events:none;position:absolute;inset:0}.PdfHighlighter__config-layer{z-index:6;mix-blend-mode:normal;pointer-events:none;position:absolute;inset:0}.PdfHighlighter__highlight-layer>div,.PdfHighlighter__highlight-layer .MonitoredHighlightContainer,.PdfHighlighter__highlight-layer .TextHighlight,.PdfHighlighter__highlight-layer .AreaHighlight,.PdfHighlighter__highlight-layer .FreetextHighlight,.PdfHighlighter__highlight-layer .ImageHighlight,.PdfHighlighter__highlight-layer .DrawingHighlight,.PdfHighlighter__highlight-layer .ShapeHighlight,.PdfHighlighter__note-layer>div,.PdfHighlighter__note-layer .FreetextHighlight,.PdfHighlighter__config-layer>*{pointer-events:auto}.PdfHighlighter--disable-selection{-webkit-user-select:none;user-select:none;pointer-events:none}.PdfHighlighter--freetext-mode,.PdfHighlighter--freetext-mode .pdfViewer,.PdfHighlighter--freetext-mode .textLayer,.PdfHighlighter--image-mode,.PdfHighlighter--image-mode .pdfViewer,.PdfHighlighter--image-mode .textLayer,.PdfHighlighter--drawing-mode,.PdfHighlighter--drawing-mode .pdfViewer,.PdfHighlighter--drawing-mode .textLayer,.PdfHighlighter--area-mode,.PdfHighlighter--area-mode .pdfViewer,.PdfHighlighter--area-mode .textLayer{cursor:crosshair}.PdfHighlighter--dark .page{filter:invert(.9)hue-rotate(180deg)brightness(1.05)}.PdfHighlighter--dark .PdfHighlighter__highlight-layer,.PdfHighlighter--dark .PdfHighlighter__note-layer,.PdfHighlighter--dark .PdfHighlighter__config-layer{filter:invert(.9)hue-rotate(180deg)brightness(.95)}.MouseSelection{mix-blend-mode:multiply;background:#99c1da;border:1px dashed #333;position:absolute}@media (-ms-high-contrast:none),(-ms-high-contrast:active){.MouseSelection{opacity:.5}}@supports (-ms-ime-align:auto){.MouseSelection{opacity:.5}}.TextHighlight{position:absolute}.TextHighlight__parts{opacity:1}.TextHighlight__part{cursor:pointer;background:#ffe28f;transition:background .3s,box-shadow .2s;position:absolute}.TextHighlight--scrolledTo .TextHighlight__part{box-shadow:0 0 0 2px #ff4141,0 0 0 4px #ff414133}.TextHighlight__toolbar-wrapper{z-index:10}.TextHighlight__toolbar{opacity:0;pointer-events:none;background:#000000b3;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex}.TextHighlight__toolbar--visible{opacity:1;pointer-events:auto}.TextHighlight__style-button,.TextHighlight__copy-button,.TextHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.TextHighlight__style-button:hover,.TextHighlight__copy-button:hover{background:#fff3}.TextHighlight__delete-button:hover{background:#ff646499}.TextHighlight__style-panel{background:#000000e6;border-radius:6px;min-width:180px;margin-top:4px;padding:8px;box-shadow:0 2px 8px #0000004d}.TextHighlight__style-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.TextHighlight__style-row:last-child{margin-bottom:0}.TextHighlight__style-row label{color:#ccc;text-transform:uppercase;letter-spacing:.5px;margin-right:8px;font-size:11px}.TextHighlight__style-buttons{gap:4px;display:flex}.TextHighlight__style-type-button{cursor:pointer;color:#f5f5f5;background:0 0;border:1px solid #666;border-radius:4px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:all .2s;display:flex}.TextHighlight__style-type-button:hover{border-color:#b958ff}.TextHighlight__style-type-button.active{color:#b958ff;background:#b958ff33;border-color:#b958ff}.TextHighlight__color-options{align-items:center;gap:6px;display:flex}.TextHighlight__color-presets{gap:4px;display:flex}.TextHighlight__color-preset{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;height:18px;padding:0;transition:transform .2s,border-color .2s}.TextHighlight__color-preset:hover{transform:scale(1.15)}.TextHighlight__color-preset.active{border-color:#b958ff}.TextHighlight__color-options input[type=color]{cursor:pointer;background:0 0;border:none;border-radius:4px;width:24px;height:24px;padding:0}.TextHighlight__color-options input[type=color]::-webkit-color-swatch-wrapper{padding:0}.TextHighlight__color-options input[type=color]::-webkit-color-swatch{border:1px solid #666;border-radius:4px}.TextHighlight__part--underline{border-bottom:2px solid;background:0 0!important}.TextHighlight__part.TextHighlight__part--strikethrough{overflow:visible;background:0 0!important}.TextHighlight__part.TextHighlight__part--strikethrough:after{content:"";pointer-events:none;z-index:1;background-color:currentColor;height:2px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.AreaHighlight{position:absolute}.AreaHighlight__part{cursor:pointer;background:#ffe28f;transition:background .3s,box-shadow .2s;position:absolute}.AreaHighlight--scrolledTo .AreaHighlight__part{box-shadow:0 0 0 2px #ff4141,0 0 0 4px #ff414133}.AreaHighlight__toolbar-wrapper{z-index:10}.AreaHighlight__toolbar{opacity:0;pointer-events:none;background:#000000b3;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex}.AreaHighlight__toolbar--visible{opacity:1;pointer-events:auto}.AreaHighlight__style-button,.AreaHighlight__copy-button,.AreaHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.AreaHighlight__style-button:hover,.AreaHighlight__copy-button:hover{background:#fff3}.AreaHighlight__delete-button:hover{background:#ff646499}.AreaHighlight__style-panel{background:#000000e6;border-radius:6px;min-width:160px;margin-top:4px;padding:8px;box-shadow:0 2px 8px #0000004d}.AreaHighlight__style-row{justify-content:space-between;align-items:center;display:flex}.AreaHighlight__style-row label{color:#ccc;text-transform:uppercase;letter-spacing:.5px;margin-right:8px;font-size:11px}.AreaHighlight__color-options{align-items:center;gap:6px;display:flex}.AreaHighlight__color-presets{gap:4px;display:flex}.AreaHighlight__color-preset{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;height:18px;padding:0;transition:transform .2s,border-color .2s}.AreaHighlight__color-preset:hover{transform:scale(1.15)}.AreaHighlight__color-preset.active{border-color:#b958ff}.AreaHighlight__color-options input[type=color]{cursor:pointer;background:0 0;border:none;border-radius:4px;width:24px;height:24px;padding:0}.AreaHighlight__color-options input[type=color]::-webkit-color-swatch-wrapper{padding:0}.AreaHighlight__color-options input[type=color]::-webkit-color-swatch{border:1px solid #666;border-radius:4px}.FreetextHighlight{z-index:30;isolation:isolate;position:absolute}.FreetextHighlight--editing,.FreetextHighlight:hover{z-index:40}.FreetextHighlight--collapsed{z-index:35}.FreetextHighlight__container{border-radius:4px;flex-direction:column;width:100%;height:100%;transition:box-shadow .2s;display:flex;overflow:visible;box-shadow:2px 2px 8px #0003}.FreetextHighlight__rnd{z-index:inherit}.FreetextHighlight__container:hover{box-shadow:2px 2px 12px #0000004d}.FreetextHighlight__toolbar{z-index:10;opacity:0;background:#0009;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex;position:absolute;top:4px;left:4px}.FreetextHighlight__container:hover .FreetextHighlight__toolbar{opacity:1}.FreetextHighlight__drag-handle{cursor:grab;-webkit-user-select:none;user-select:none;color:#fff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;transition:background .2s;display:flex}.FreetextHighlight__drag-handle:hover{background:#fff3}.FreetextHighlight__drag-handle:active{cursor:grabbing}.FreetextHighlight__edit-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__edit-button:hover{background:#fff3}.FreetextHighlight__content{z-index:1;flex:1;padding:8px;position:relative;overflow:hidden}.FreetextHighlight__text{cursor:text;word-wrap:break-word;white-space:pre-wrap;width:100%;height:100%;overflow:auto}.FreetextHighlight__input{width:100%;height:100%;font:inherit;color:inherit;resize:none;background:0 0;border:none;outline:none;margin:0;padding:0}.FreetextHighlight--scrolledTo .FreetextHighlight__container{box-shadow:0 0 0 3px #ff4141,2px 2px 8px #0003}.FreetextHighlight--editing .FreetextHighlight__container{box-shadow:0 0 0 2px #4a90d9,2px 2px 8px #0003}.FreetextHighlight__style-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__style-button:hover{background:#fff3}.FreetextHighlight__style-panel{z-index:9999;background:#fff;border:1px solid #00000026;border-radius:4px;margin-top:2px;padding:8px;position:absolute;top:100%;left:0;right:0;box-shadow:0 4px 12px #00000040}.FreetextHighlight__style-row{flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:8px;display:flex}.FreetextHighlight__style-row:last-child{margin-bottom:0}.FreetextHighlight__style-row label{color:#555;white-space:nowrap;font-size:11px}.FreetextHighlight__style-row input[type=color]{cursor:pointer;border:1px solid #00000026;border-radius:3px;width:28px;height:24px;padding:0}.FreetextHighlight__style-row select{cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:3px;min-width:80px;padding:4px 6px;font-size:11px}.FreetextHighlight__color-options{flex-wrap:wrap;align-items:center;gap:6px;width:100%;display:flex}.FreetextHighlight__color-presets{flex-wrap:wrap;gap:4px;display:flex}.FreetextHighlight__color-preset{cursor:pointer;border:2px solid #00000026;border-radius:3px;width:20px;height:20px;padding:0;transition:transform .15s,border-color .15s}.FreetextHighlight__color-preset:hover{border-color:#0000004d;transform:scale(1.15)}.FreetextHighlight__color-preset.active{border-color:#333;box-shadow:0 0 0 1px #fff,0 0 0 2px #333}.FreetextHighlight__color-preset--transparent{background-color:#fff;background-image:linear-gradient(45deg,#ccc 25%,#0000 25%),linear-gradient(-45deg,#ccc 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#ccc 75%),linear-gradient(-45deg,#0000 75%,#ccc 75%);background-position:0 0,0 4px,4px -4px,-4px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:8px 8px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box}.FreetextHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__delete-button:hover{background:#ff646499}.FreetextHighlight__collapse-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__collapse-button:hover{background:#fff3}.FreetextHighlight--collapsed .FreetextHighlight__container{border-radius:999px;justify-content:center;align-items:center;overflow:hidden;box-shadow:0 2px 8px #0000003d}.FreetextHighlight__compact-button{border-radius:inherit;width:100%;height:100%;color:inherit;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.FreetextHighlight__compact-button:hover{background:#00000014}.ImageHighlight{position:absolute}.ImageHighlight__container{border-radius:4px;flex-direction:column;width:100%;height:100%;transition:box-shadow .2s;display:flex;overflow:visible}.ImageHighlight__container:hover{box-shadow:2px 2px 12px #0000004d}.ImageHighlight__toolbar{z-index:10;opacity:0;background:#0009;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex;position:absolute;top:4px;left:4px}.ImageHighlight__container:hover .ImageHighlight__toolbar,.ImageHighlight--scrolledTo .ImageHighlight__toolbar{opacity:1}.ImageHighlight__drag-handle{cursor:grab;color:#fff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;transition:background .2s;display:flex}.ImageHighlight__drag-handle:hover{background:#fff3}.ImageHighlight__drag-handle:active{cursor:grabbing}.ImageHighlight__content{background:#fff;border-radius:4px;flex:1;justify-content:center;align-items:center;display:flex;overflow:hidden}.ImageHighlight__image{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%}.ImageHighlight--scrolledTo .ImageHighlight__container{box-shadow:0 0 0 3px #ff4141,2px 2px 8px #0003}.ImageHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.ImageHighlight__delete-button:hover{background:#ff646499}.DrawingHighlight{position:absolute}.DrawingHighlight__container{border-radius:4px;flex-direction:column;width:100%;height:100%;transition:box-shadow .2s;display:flex;overflow:visible}.DrawingHighlight__container:hover{box-shadow:2px 2px 12px #0000004d}.DrawingHighlight__toolbar{z-index:10;opacity:0;background:#0009;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex;position:absolute;top:4px;left:4px}.DrawingHighlight__toolbar--floating{position:absolute;top:auto;left:auto}.DrawingHighlight__toolbar--visible,.DrawingHighlight__container:hover .DrawingHighlight__toolbar{opacity:1}.DrawingHighlight__drag-handle{cursor:grab;color:#fff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;transition:background .2s;display:flex}.DrawingHighlight__drag-handle:hover{background:#fff3}.DrawingHighlight__drag-handle:active{cursor:grabbing}.DrawingHighlight__content{background:0 0;border-radius:4px;flex:1;justify-content:center;align-items:center;display:flex;overflow:hidden}.DrawingHighlight__image{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;max-width:100%;max-height:100%}.DrawingHighlight--scrolledTo .DrawingHighlight__container{box-shadow:0 0 0 3px #ff4141,2px 2px 8px #0003}.DrawingHighlight__style-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.DrawingHighlight__style-button:hover{background:#fff3}.DrawingHighlight__style-controls{z-index:20;background:#000000d9;border-radius:6px;flex-direction:column;gap:8px;min-width:120px;padding:8px;display:flex;position:absolute;top:28px;left:4px;box-shadow:0 2px 8px #0000004d}.DrawingHighlight__color-picker{flex-wrap:wrap;gap:4px;display:flex}.DrawingHighlight__color-button{cursor:pointer;border:2px solid #0000;border-radius:50%;width:20px;height:20px;padding:0;transition:transform .2s,border-color .2s}.DrawingHighlight__color-button:hover{transform:scale(1.15)}.DrawingHighlight__color-button.active{border-color:#b958ff}.DrawingHighlight__width-picker{gap:4px;display:flex}.DrawingHighlight__width-button{color:#f5f5f5;cursor:pointer;background:0 0;border:1px solid #666;border-radius:4px;padding:2px 6px;font-size:10px;transition:color .2s,border-color .2s,background-color .2s}.DrawingHighlight__width-button:hover{border-color:#b958ff}.DrawingHighlight__width-button.active{color:#b958ff;background-color:#b958ff33;border-color:#b958ff}.DrawingHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.DrawingHighlight__delete-button:hover{background:#ff646499}.DrawingCanvas{z-index:5;cursor:crosshair;touch-action:none;position:absolute;top:0;left:0}.DrawingCanvas__controls{z-index:10;background-color:#2b2e33f2;border-radius:8px;gap:10px;padding:10px 20px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}.DrawingCanvas__controls button{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-size:14px;transition:background-color .2s,transform .1s}.DrawingCanvas__controls button:hover{transform:scale(1.02)}.DrawingCanvas__doneButton{color:#fff;background-color:#4caf50}.DrawingCanvas__doneButton:hover{background-color:#45a049}.DrawingCanvas__cancelButton{color:#fff;background-color:#f44336}.DrawingCanvas__cancelButton:hover{background-color:#da190b}.DrawingCanvas__clearButton{color:#fff;background-color:#ff9800}.DrawingCanvas__clearButton:hover{background-color:#e68a00}.SignaturePad__overlay{z-index:10000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.SignaturePad__modal{background:#fff;border-radius:8px;padding:16px;box-shadow:0 4px 20px #0000004d}.SignaturePad__title{color:#333;margin:0 0 12px;font-size:16px;font-weight:600}.SignaturePad__canvas{cursor:crosshair;touch-action:none;background:#fff;border:1px solid #ccc;border-radius:4px;display:block}.SignaturePad__buttons{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.SignaturePad__button{cursor:pointer;border-radius:4px;padding:8px 16px;font-size:14px;transition:background-color .2s,border-color .2s}.SignaturePad__button--clear{color:#666;background:#fff;border:1px solid #ccc}.SignaturePad__button--clear:hover{background:#f5f5f5;border-color:#999}.SignaturePad__button--cancel{color:#666;background:#fff;border:1px solid #ccc}.SignaturePad__button--cancel:hover{background:#f5f5f5;border-color:#999}.SignaturePad__button--done{color:#fff;background:#2196f3;border:1px solid #2196f3}.SignaturePad__button--done:hover{background:#1976d2;border-color:#1976d2}.ShapeCanvas{cursor:crosshair;z-index:1000;background:#0000001a;width:100%;height:100%;position:fixed;top:0;left:0}.ShapeCanvas__controls{z-index:1002;flex-direction:column;align-items:center;gap:12px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.ShapeCanvas__hint{color:#fff;white-space:nowrap;background:#000c;border-radius:6px;padding:8px 16px;font-size:14px}.ShapeCanvas__cancelButton{color:#fff;cursor:pointer;background:#f44336;border:none;border-radius:4px;padding:8px 20px;font-size:14px;font-weight:500;transition:background .2s}.ShapeCanvas__cancelButton:hover{background:#d32f2f}.ShapeHighlight{position:absolute}.ShapeHighlight__rnd{cursor:move}.ShapeHighlight__container{width:100%;height:100%;position:relative}.ShapeHighlight__svg{width:100%;height:100%;display:block}.ShapeHighlight--scrolledTo .ShapeHighlight__svg rect,.ShapeHighlight--scrolledTo .ShapeHighlight__svg ellipse,.ShapeHighlight--scrolledTo .ShapeHighlight__svg line{stroke:#ff4141!important}.ShapeHighlight--scrolledTo .ShapeHighlight__svg polygon{fill:#ff4141!important}.ShapeHighlight__toolbar-wrapper{z-index:10}.ShapeHighlight__toolbar{opacity:0;pointer-events:none;background:#000000b3;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex}.ShapeHighlight__toolbar--visible{opacity:1;pointer-events:auto}.ShapeHighlight__style-button,.ShapeHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.ShapeHighlight__style-button:hover{background:#fff3}.ShapeHighlight__delete-button:hover{background:#ff646499}.ShapeHighlight__style-panel{background:#000000e6;border-radius:6px;min-width:180px;margin-top:4px;padding:8px;box-shadow:0 2px 8px #0000004d}.ShapeHighlight__style-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.ShapeHighlight__style-row:last-child{margin-bottom:0}.ShapeHighlight__style-row label{color:#ccc;text-transform:uppercase;letter-spacing:.5px;margin-right:8px;font-size:11px}.ShapeHighlight__color-options{align-items:center;gap:6px;display:flex}.ShapeHighlight__color-presets{gap:4px;display:flex}.ShapeHighlight__color-preset{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;height:18px;padding:0;transition:transform .2s,border-color .2s}.ShapeHighlight__color-preset:hover{transform:scale(1.15)}.ShapeHighlight__color-preset.active{border-color:#b958ff}.ShapeHighlight__color-options input[type=color]{cursor:pointer;background:0 0;border:none;border-radius:4px;width:24px;height:24px;padding:0}.ShapeHighlight__color-options input[type=color]::-webkit-color-swatch-wrapper{padding:0}.ShapeHighlight__color-options input[type=color]::-webkit-color-swatch{border:1px solid #666;border-radius:4px}.ShapeHighlight__width-options{gap:4px;display:flex}.ShapeHighlight__width-button{cursor:pointer;color:#ccc;background:0 0;border:1px solid #666;border-radius:4px;padding:4px 8px;font-size:11px;transition:all .2s}.ShapeHighlight__width-button:hover{color:#fff;border-color:#b958ff}.ShapeHighlight__width-button.active{color:#b958ff;background:#b958ff33;border-color:#b958ff}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--panel-bg:var(--vscode-sideBar-background);--border:var(--vscode-panel-border);--muted:var(--vscode-descriptionForeground);--accent:var(--vscode-button-background);--accent-text:var(--vscode-button-foreground);--page-bg:#f1f0eb}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}body{color:var(--vscode-foreground);background:var(--vscode-editor-background);font-family:var(--vscode-font-family);margin:0;overflow:hidden}button,input,select,textarea{font:inherit}button{color:var(--accent-text);background:var(--accent);cursor:pointer;border:0;border-radius:3px;padding:6px 10px}input,select,textarea{border:1px solid var(--vscode-input-border,var(--border));width:100%;color:var(--vscode-input-foreground);background:var(--vscode-input-background);border-radius:2px;padding:8px}textarea{resize:vertical}.shell{grid-template-columns:minmax(0,1fr) 360px;width:100vw;height:100vh;display:grid;overflow:hidden}.shell.sidebar-hidden{grid-template-columns:minmax(0,1fr)}.shell.sidebar-hidden .side-panel{display:none}.reader{border-right:1px solid var(--border);background:var(--page-bg);grid-template-rows:auto minmax(0,1fr);min-width:0;height:100vh;display:grid;overflow:hidden}.reader-toolbar{z-index:20;border-bottom:1px solid var(--border);background:var(--vscode-editor-background);align-items:center;gap:8px;min-height:44px;padding:6px 10px;display:flex;position:sticky;top:0}.reader-toolbar button{min-width:34px;padding:5px 8px}.reader-toolbar .sidebar-toggle{white-space:nowrap;flex:none;min-width:88px}.page-jump{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.page-jump input{text-align:center;width:64px;padding:5px 6px}.zoom-value{text-align:center;min-width:46px;color:var(--muted);font-size:12px}.reader-status{text-align:right;min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:12px;overflow:hidden}.pdf-host{min-width:0;min-height:0;position:relative;overflow:hidden}.pdf-host .PdfHighlighter{background:var(--page-bg);width:100%;height:100%;position:absolute;inset:0}.pdf-host .pdfViewer{width:100%;min-width:100%}.pdf-host .pdfViewer .page{margin-inline:auto}.pdf-host .pdf-scale-in-progress :is(.PdfHighlighter__highlight-layer,.PdfHighlighter__note-layer,.PdfHighlighter__config-layer){will-change:transform;pointer-events:none}.pdf-host .textLayer{z-index:2;pointer-events:auto;-webkit-user-select:text;user-select:text;display:block;position:absolute;inset:0;overflow:hidden}.pdf-host .textLayer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;-webkit-user-select:text;user-select:text;position:absolute}.pdf-host .textLayer :is(.reader-margin-text,.reader-figure-text){-webkit-user-select:none!important;user-select:none!important}.pdf-host .allow-non-body-text-selection .textLayer :is(.reader-margin-text,.reader-figure-text){-webkit-user-select:text!important;user-select:text!important}.pdf-host .annotationLayer{z-index:3;pointer-events:none}.pdf-host .annotationLayer :is(a,button,input,textarea,select,[role=button]){pointer-events:auto}.loading{height:100%;min-height:280px;color:var(--muted);place-items:center;display:grid}.loading.error{color:var(--vscode-errorForeground,#b00020)}.active-highlight .TextHighlight__part{outline:2px solid var(--vscode-focusBorder,#007fd4)}.side-panel{z-index:30;background:var(--panel-bg);min-width:0;height:100vh;padding:18px;position:relative;overflow:auto}.side-panel-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.side-panel-header>div{min-width:0}.side-panel-close{flex:none;min-width:30px;padding:3px 8px;font-size:20px;line-height:1.2}.side-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:16px;display:grid}.side-tabs button{min-width:0;color:var(--vscode-button-secondaryForeground);background:var(--vscode-button-secondaryBackground);text-overflow:ellipsis;white-space:nowrap;padding:6px 8px;overflow:hidden}.side-tabs .active-tab{color:var(--accent-text);background:var(--accent)}.side-tab-panel{gap:14px;display:grid}.eyebrow{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin:0 0 5px;font-size:11px;font-weight:700}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:21px;line-height:1.2}h2{margin-bottom:10px;font-size:14px}label{color:var(--muted);margin-bottom:5px;font-size:12px;display:block}.tool-block{margin-bottom:18px}.tool-block>*+*{margin-top:8px}.actions,.annotation-actions{flex-wrap:wrap;gap:8px;display:flex}.secondary-button,.undo-button{color:var(--vscode-button-secondaryForeground);background:var(--vscode-button-secondaryBackground)}.danger-button{color:var(--vscode-button-foreground);background:var(--vscode-errorForeground,#b42318)}.edit-status,.status-line{color:var(--muted);font-size:12px}.provider-status{border-left:3px solid var(--border);color:var(--muted);background:var(--vscode-editor-background);padding:7px 9px;font-size:12px}.provider-status.ready{border-left-color:var(--vscode-testing-iconPassed,#2ea043)}.provider-status.missing{border-left-color:var(--vscode-inputValidation-warningBorder,#cca700)}.overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.metric-card{border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;padding:10px}.metric-card span{color:var(--muted);margin-bottom:4px;font-size:11px;display:block}.metric-card strong{font-size:18px}.meta-list{gap:8px;margin:0;display:grid}.meta-list div{grid-template-columns:82px minmax(0,1fr);gap:8px;display:grid}.meta-list dt{color:var(--muted);font-size:12px}.meta-list dd{overflow-wrap:anywhere;margin:0}.selection-preview,.translation-preview{border:1px solid var(--border);color:var(--vscode-foreground);background:var(--vscode-editor-background);white-space:pre-wrap;border-radius:6px;padding:10px;font-size:12px;line-height:1.5}.compact-empty{padding:10px}.annotation-summary{flex-wrap:wrap;gap:6px;display:flex}.annotation-summary span,.annotation-tags span{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:2px 7px;font-size:11px}.list{gap:10px;display:grid}.item{content-visibility:auto;contain-intrinsic-size:auto 150px;border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;padding:10px}.item p{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.4}.item.active-item{border-color:var(--vscode-focusBorder,#007fd4)}.note{color:var(--vscode-foreground)!important}.annotation-tags{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.annotation-actions{margin-top:9px}.annotation-actions button{padding:4px 7px;font-size:12px}.empty{border:1px solid var(--border);color:var(--muted);background:var(--vscode-editor-background);padding:12px}.fatal-error{color:var(--vscode-errorForeground,#b00020);background:var(--vscode-editor-background);padding:24px}.startup-state{color:var(--vscode-foreground);background:var(--vscode-editor-background);padding:24px}.reader-mounted #startupStatus{display:none}.startup-state h1{font-size:18px}.startup-error{color:var(--vscode-errorForeground,#b00020)}.fatal-error pre,.startup-state pre{border:1px solid var(--border);color:var(--vscode-foreground);background:var(--vscode-input-background);white-space:pre-wrap;padding:12px;overflow:auto}@media (width<=900px){.shell{grid-template-columns:1fr}.reader,.side-panel{height:auto;min-height:50vh}}.word-details{border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;padding:12px}.word-details h3{margin:0 0 4px;font-size:15px}.phonetic{color:var(--muted);margin-bottom:8px;font-size:12px;display:block}.compact-phonetic{margin-top:4px;margin-bottom:0}.word-details ul{margin:0;padding-left:18px;list-style:none}.word-details li,.word-definition-list li{margin-bottom:4px;font-size:13px;line-height:1.4}.word-definition-list{gap:4px;margin:8px 0 0;padding:0;list-style:none;display:grid}.word-details small,.word-definition-list small{color:var(--muted);margin-top:2px;font-size:11px;display:block}.pos{min-width:36px;color:var(--vscode-symbolIcon-variableForeground,var(--accent));font-size:11px;font-weight:600;display:inline-block}.selection-toolbar{background:var(--vscode-editor-background);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;width:min(320px,100vw - 48px);padding:6px 8px;display:flex;box-shadow:0 4px 16px #0000003d}.selection-toolbar-row{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.selection-toolbar .swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;min-width:0;height:18px;padding:0;transition:border-color .15s}.selection-toolbar .swatch:hover{border-color:var(--vscode-focusBorder,#007fd4)}.selection-toolbar .swatch.active{border-color:var(--vscode-foreground)}.selection-toolbar button:not(.swatch){letter-spacing:.3px;padding:3px 8px;font-size:11px;font-weight:600;line-height:1.4}.selection-toolbar .active-command{outline:2px solid var(--vscode-focusBorder,#007fd4);outline-offset:1px}.annotation-inline-editor{gap:8px;width:min(360px,100vw - 32px);max-height:min(520px,100vh - 48px);display:grid;overflow:auto}.annotation-inline-actions{flex-direction:row;justify-content:flex-end;width:auto}.annotation-inline-title{font-size:13px;font-weight:700}.annotation-inline-editor label{color:var(--muted);gap:4px;font-size:11px;font-weight:600;display:grid}.annotation-inline-editor input,.annotation-inline-editor textarea{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--vscode-input-foreground);background:var(--vscode-input-background);font:inherit;border-radius:6px;padding:6px 8px;font-size:12px;font-weight:400;line-height:1.4}.annotation-inline-editor textarea{resize:vertical}.selection-note-editor,.selection-translation-result{gap:6px;display:grid}.selection-note-editor textarea{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--vscode-input-foreground);background:var(--vscode-input-background);font:inherit;white-space:normal;resize:vertical;border-radius:6px;min-height:72px;padding:6px 8px;font-size:12px;line-height:1.4}.selection-translation-result .word-details{max-height:260px;overflow:auto}.selection-result-status{color:var(--muted);text-align:center;padding:10px;font-size:12px}.selection-translation-text{border:1px solid var(--border);max-height:220px;color:var(--vscode-foreground);background:var(--vscode-input-background);white-space:pre-wrap;border-radius:6px;margin:0;padding:9px;font-size:12px;line-height:1.5;overflow:auto}.selection-note-actions{justify-content:flex-end;gap:6px;display:flex}.selection-note-actions button:disabled{cursor:default;opacity:.55}.highlight-tooltip{border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;max-width:320px;padding:8px 10px;box-shadow:0 4px 12px #00000047}.highlight-tooltip p{color:var(--vscode-foreground);margin:0 0 6px;font-size:12px;line-height:1.45}.highlight-tooltip p:last-child{margin-bottom:0}.highlight-tooltip .annotation-tags{margin-top:0} +.messageBar{--closing-button-icon:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7.85822%208.84922L4.85322%2011.8542C4.75891%2011.9453%204.63261%2011.9957%204.50151%2011.9946C4.37042%2011.9934%204.24501%2011.9408%204.15231%2011.8481C4.0596%2011.7554%204.00702%2011.63%204.00588%2011.4989C4.00474%2011.3678%204.05514%2011.2415%204.14622%2011.1472L7.15122%208.14222V7.85922L4.14622%204.85322C4.05514%204.75891%204.00474%204.63261%204.00588%204.50151C4.00702%204.37042%204.0596%204.24501%204.15231%204.15231C4.24501%204.0596%204.37042%204.00702%204.50151%204.00588C4.63261%204.00474%204.75891%204.05514%204.85322%204.14622L7.85822%207.15122H8.14122L11.1462%204.14622C11.2405%204.05514%2011.3668%204.00474%2011.4979%204.00588C11.629%204.00702%2011.7544%204.0596%2011.8471%204.15231C11.9398%204.24501%2011.9924%204.37042%2011.9936%204.50151C11.9947%204.63261%2011.9443%204.75891%2011.8532%204.85322L8.84822%207.85922V8.14222L11.8532%2011.1472C11.9443%2011.2415%2011.9947%2011.3678%2011.9936%2011.4989C11.9924%2011.63%2011.9398%2011.7554%2011.8471%2011.8481C11.7544%2011.9408%2011.629%2011.9934%2011.4979%2011.9946C11.3668%2011.9957%2011.2405%2011.9453%2011.1462%2011.8542L8.14122%208.84922L8.14222%208.85022L7.85822%208.84922Z'%20fill='black'/%3e%3c/svg%3e");--message-bar-close-button-color:var(--text-primary-color);--message-bar-close-button-color-hover:var(--text-primary-color);--message-bar-close-button-border-radius:4px;--message-bar-close-button-border:none;--message-bar-close-button-hover-bg-color:#15141a24;--message-bar-close-button-active-bg-color:#15141a36;--message-bar-close-button-focus-bg-color:#15141a12}@media (prefers-color-scheme:dark){.messageBar{--message-bar-close-button-hover-bg-color:#fbfbfe24;--message-bar-close-button-active-bg-color:#fbfbfe36;--message-bar-close-button-focus-bg-color:#fbfbfe12}}@media screen and (forced-colors:active){.messageBar{--message-bar-close-button-color:ButtonText;--message-bar-close-button-border:1px solid ButtonText;--message-bar-close-button-hover-bg-color:ButtonText;--message-bar-close-button-active-bg-color:ButtonText;--message-bar-close-button-focus-bg-color:ButtonText;--message-bar-close-button-color-hover:HighlightText}}.messageBar{-webkit-user-select:none;user-select:none;border:1px solid var(--message-bar-border-color);background:var(--message-bar-bg-color);color:var(--message-bar-fg-color);border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:8px 8px 8px 16px;display:flex;position:relative}.messageBar>div{align-self:stretch;align-items:flex-start;gap:8px;display:flex}:is(.messageBar>div):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--message-bar-icon);-webkit-mask-image:var(--message-bar-icon);mask-image:var(--message-bar-icon);background-color:var(--message-bar-icon-color);flex-shrink:0;display:inline-block;-webkit-mask-size:cover;mask-size:cover}.messageBar button{cursor:pointer}:is(.messageBar button):focus-visible{outline:var(--focus-ring-outline);outline-offset:2px}.messageBar .closeButton{border-radius:var(--message-bar-close-button-border-radius);border:var(--message-bar-close-button-border);background:0 0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}:is(.messageBar .closeButton):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--closing-button-icon);-webkit-mask-image:var(--closing-button-icon);mask-image:var(--closing-button-icon);background-color:var(--message-bar-close-button-color);display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(.messageBar .closeButton):is(:hover,:active,:focus):before{background-color:var(--message-bar-close-button-color-hover)}:is(.messageBar .closeButton):hover{background-color:var(--message-bar-close-button-hover-bg-color)}:is(.messageBar .closeButton):active{background-color:var(--message-bar-close-button-active-bg-color)}:is(.messageBar .closeButton):focus{background-color:var(--message-bar-close-button-focus-bg-color)}:is(.messageBar .closeButton)>span{width:0;height:0;display:inline-block;overflow:hidden}#editorUndoBar{--text-primary-color:#15141a;--message-bar-icon:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8%201.5C4.41015%201.5%201.5%204.41015%201.5%208C1.5%2011.5899%204.41015%2014.5%208%2014.5C11.5899%2014.5%2014.5%2011.5899%2014.5%208C14.5%204.41015%2011.5899%201.5%208%201.5ZM0%208C0%203.58172%203.58172%200%208%200C12.4183%200%2016%203.58172%2016%208C16%2012.4183%2012.4183%2016%208%2016C3.58172%2016%200%2012.4183%200%208ZM8.75%204V5.5H7.25V4H8.75ZM8.75%2012V7H7.25V12H8.75Z'%20fill='black'/%3e%3c/svg%3e");--message-bar-icon-color:#0060df;--message-bar-bg-color:#deeafc;--message-bar-fg-color:var(--text-primary-color);--message-bar-border-color:#00000014;--undo-button-bg-color:#15141a12;--undo-button-bg-color-hover:#15141a24;--undo-button-bg-color-active:#15141a36;--undo-button-fg-color:var(--message-bar-fg-color);--undo-button-fg-color-hover:var(--undo-button-fg-color);--undo-button-fg-color-active:var(--undo-button-fg-color);--focus-ring-color:#0060df;--focus-ring-outline:2px solid var(--focus-ring-color)}@media (prefers-color-scheme:dark){#editorUndoBar{--text-primary-color:#fbfbfe;--message-bar-icon-color:#73a7f3;--message-bar-bg-color:#003070;--message-bar-border-color:#ffffff14;--undo-button-bg-color:#ffffff14;--undo-button-bg-color-hover:#ffffff24;--undo-button-bg-color-active:#ffffff36}}@media screen and (forced-colors:active){#editorUndoBar{--text-primary-color:CanvasText;--message-bar-icon-color:CanvasText;--message-bar-bg-color:Canvas;--message-bar-border-color:CanvasText;--undo-button-bg-color:ButtonText;--undo-button-bg-color-hover:SelectedItem;--undo-button-bg-color-active:SelectedItem;--undo-button-fg-color:ButtonFace;--undo-button-fg-color-hover:SelectedItemText;--undo-button-fg-color-active:SelectedItemText;--focus-ring-color:CanvasText}}#editorUndoBar{z-index:10;font:menu;cursor:default;padding-block:8px;padding-inline:16px 8px;font-size:15px;position:fixed;top:50px;left:50%;transform:translate(-50%)}#editorUndoBar button{cursor:pointer}#editorUndoBar #editorUndoBarUndoButton{color:var(--undo-button-fg-color);background-color:var(--undo-button-bg-color);border:none;border-radius:4px;height:32px;margin-inline-start:8px;padding:4px 16px;font-weight:590;line-height:19.5px}:is(#editorUndoBar #editorUndoBarUndoButton):hover{background-color:var(--undo-button-bg-color-hover);color:var(--undo-button-fg-color-hover)}:is(#editorUndoBar #editorUndoBarUndoButton):active{background-color:var(--undo-button-bg-color-active);color:var(--undo-button-fg-color-active)}#editorUndoBar>div{align-items:center}.dialog{--dialog-bg-color:white;--dialog-border-color:white;--dialog-shadow:0 2px 14px 0 #3a394433;--text-primary-color:#15141a;--text-secondary-color:#5b5b66;--hover-filter:brightness(.9);--focus-ring-color:#0060df;--focus-ring-outline:2px solid var(--focus-ring-color);--link-fg-color:#0060df;--link-hover-fg-color:#0250bb;--separator-color:#f0f0f4;--textarea-border-color:#8f8f9d;--textarea-bg-color:white;--textarea-fg-color:var(--text-secondary-color);--radio-bg-color:#f0f0f4;--radio-checked-bg-color:#fbfbfe;--radio-border-color:#8f8f9d;--radio-checked-border-color:#0060df;--button-secondary-bg-color:#f0f0f4;--button-secondary-fg-color:var(--text-primary-color);--button-secondary-border-color:var(--button-secondary-bg-color);--button-secondary-hover-bg-color:var(--button-secondary-bg-color);--button-secondary-hover-fg-color:var(--button-secondary-fg-color);--button-secondary-hover-border-color:var(--button-secondary-hover-bg-color);--button-primary-bg-color:#0060df;--button-primary-fg-color:#fbfbfe;--button-primary-border-color:var(--button-primary-bg-color);--button-primary-hover-bg-color:var(--button-primary-bg-color);--button-primary-hover-fg-color:var(--button-primary-fg-color);--button-primary-hover-border-color:var(--button-primary-hover-bg-color)}@media (prefers-color-scheme:dark){.dialog{--dialog-bg-color:#1c1b22;--dialog-border-color:#1c1b22;--dialog-shadow:0 2px 14px 0 #15141a;--text-primary-color:#fbfbfe;--text-secondary-color:#cfcfd8;--focus-ring-color:#0df;--hover-filter:brightness(1.4);--link-fg-color:#0df;--link-hover-fg-color:#80ebff;--separator-color:#52525e;--textarea-bg-color:#42414d;--radio-bg-color:#2b2a33;--radio-checked-bg-color:#15141a;--radio-checked-border-color:#0df;--button-secondary-bg-color:#2b2a33;--button-primary-bg-color:#0df;--button-primary-fg-color:#15141a}}@media screen and (forced-colors:active){.dialog{--dialog-bg-color:Canvas;--dialog-border-color:CanvasText;--dialog-shadow:none;--text-primary-color:CanvasText;--text-secondary-color:CanvasText;--hover-filter:none;--focus-ring-color:ButtonBorder;--link-fg-color:LinkText;--link-hover-fg-color:LinkText;--separator-color:CanvasText;--textarea-border-color:ButtonBorder;--textarea-bg-color:Field;--textarea-fg-color:ButtonText;--radio-bg-color:ButtonFace;--radio-checked-bg-color:ButtonFace;--radio-border-color:ButtonText;--radio-checked-border-color:ButtonText;--button-secondary-bg-color:ButtonFace;--button-secondary-fg-color:ButtonText;--button-secondary-border-color:ButtonText;--button-secondary-hover-bg-color:AccentColor;--button-secondary-hover-fg-color:AccentColorText;--button-primary-bg-color:ButtonText;--button-primary-fg-color:ButtonFace;--button-primary-hover-bg-color:AccentColor;--button-primary-hover-fg-color:AccentColorText}}.dialog{font:message-box;border:1px solid var(--dialog-border-color);background:var(--dialog-bg-color);color:var(--text-primary-color);box-shadow:var(--dialog-shadow);border-radius:4px;padding:12px 16px;font-size:13px;font-weight:400;line-height:150%}:is(.dialog .mainContainer) :focus-visible{outline:var(--focus-ring-outline);outline-offset:2px}:is(.dialog .mainContainer) .title{flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:12px;width:auto;display:flex}:is(:is(.dialog .mainContainer) .title)>span{font-size:13px;font-style:normal;font-weight:590;line-height:150%}:is(.dialog .mainContainer) .dialogSeparator{border-top:1px solid var(--separator-color);border-bottom:none;width:100%;height:0;margin-block:4px}:is(.dialog .mainContainer) .dialogButtonsGroup{align-self:flex-end;gap:12px;display:flex}:is(.dialog .mainContainer) .radio{flex-direction:column;align-items:flex-start;gap:4px;display:flex}:is(:is(.dialog .mainContainer) .radio)>.radioButton{align-self:stretch;align-items:center;gap:8px;display:flex}:is(:is(:is(.dialog .mainContainer) .radio)>.radioButton) input{appearance:none;box-sizing:border-box;background-color:var(--radio-bg-color);border:1px solid var(--radio-border-color);border-radius:50%;width:16px;height:16px}:is(:is(:is(:is(.dialog .mainContainer) .radio)>.radioButton) input):hover{filter:var(--hover-filter)}:is(:is(:is(:is(.dialog .mainContainer) .radio)>.radioButton) input):checked{background-color:var(--radio-checked-bg-color);border:4px solid var(--radio-checked-border-color)}:is(:is(.dialog .mainContainer) .radio)>.radioLabel{align-self:stretch;align-items:flex-start;gap:10px;padding-inline-start:24px;display:flex}:is(:is(:is(.dialog .mainContainer) .radio)>.radioLabel)>span{color:var(--text-secondary-color);flex:1 0 0;font-size:11px}:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton)){font:menu;border:1px solid;border-radius:4px;width:auto;height:32px;padding:4px 16px;font-weight:600}:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))):hover{cursor:pointer;filter:var(--hover-filter)}.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))){color:var(--button-secondary-fg-color);background-color:var(--button-secondary-bg-color);border-color:var(--button-secondary-border-color)}.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))):hover{color:var(--button-secondary-hover-fg-color);background-color:var(--button-secondary-hover-bg-color);border-color:var(--button-secondary-hover-border-color)}.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))){color:var(--button-primary-fg-color);background-color:var(--button-primary-bg-color);border-color:var(--button-primary-border-color);opacity:1}.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton))):hover{color:var(--button-primary-hover-fg-color);background-color:var(--button-primary-hover-bg-color);border-color:var(--button-primary-hover-border-color)}:is(.dialog .mainContainer) a{color:var(--link-fg-color)}:is(:is(.dialog .mainContainer) a):hover{color:var(--link-hover-fg-color)}:is(.dialog .mainContainer) textarea{font:inherit;resize:none;box-sizing:border-box;border:1px solid var(--textarea-border-color);background:var(--textarea-bg-color);color:var(--textarea-fg-color);border-radius:4px;margin:0;padding:8px}:is(:is(.dialog .mainContainer) textarea):focus{outline-offset:0;border-color:#0000}:is(:is(.dialog .mainContainer) textarea):disabled{pointer-events:none;opacity:.4}:is(.dialog .mainContainer) .messageBar{--message-bar-bg-color:#ffebcd;--message-bar-fg-color:#15141a;--message-bar-border-color:#00000014;--message-bar-icon:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M14.8748%2012.037L9.37782%202.037C8.99682%201.346%208.31082%201%207.62482%201C6.93882%201%206.25282%201.346%205.87282%202.037L0.375823%2012.037C-0.358177%2013.37%200.606823%2015%202.12782%2015H13.1228C14.6428%2015%2015.6078%2013.37%2014.8748%2012.037ZM8.24982%2011.75L7.99982%2012H7.24982L6.99982%2011.75V11L7.24982%2010.75H7.99982L8.24982%2011V11.75ZM8.24982%209.062C8.24982%209.22776%208.18398%209.38673%208.06677%209.50394C7.94955%209.62115%207.79058%209.687%207.62482%209.687C7.45906%209.687%207.30009%209.62115%207.18288%209.50394C7.06567%209.38673%206.99982%209.22776%206.99982%209.062V5.625C6.99982%205.45924%207.06567%205.30027%207.18288%205.18306C7.30009%205.06585%207.45906%205%207.62482%205C7.79058%205%207.94955%205.06585%208.06677%205.18306C8.18398%205.30027%208.24982%205.45924%208.24982%205.625V9.062Z'%20fill='black'/%3e%3c/svg%3e");--message-bar-icon-color:#cd411e}@media (prefers-color-scheme:dark){:is(.dialog .mainContainer) .messageBar{--message-bar-bg-color:#5a3100;--message-bar-fg-color:#fbfbfe;--message-bar-border-color:#ffffff14;--message-bar-icon-color:#e49c49}}@media screen and (forced-colors:active){:is(.dialog .mainContainer) .messageBar{--message-bar-bg-color:HighlightText;--message-bar-fg-color:CanvasText;--message-bar-border-color:CanvasText;--message-bar-icon-color:CanvasText}}:is(.dialog .mainContainer) .messageBar{align-self:stretch}:is(:is(:is(.dialog .mainContainer) .messageBar)>div):before,:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div{margin-block:4px}:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div{flex-direction:column;flex:1 0 0;align-items:flex-start;gap:8px;display:flex}:is(:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div) .title{font-size:13px;font-weight:590}:is(:is(:is(:is(.dialog .mainContainer) .messageBar)>div)>div) .description{font-size:13px}:is(.dialog .mainContainer) .toggler{align-self:stretch;align-items:center;gap:8px;display:flex}:is(:is(.dialog .mainContainer) .toggler)>.togglerLabel{-webkit-user-select:none;user-select:none}.textLayer{text-align:initial;opacity:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:canvastext;z-index:0;line-height:1;position:absolute;inset:0;overflow:clip}.textLayer.highlighting{touch-action:none}.textLayer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}.textLayer>:not(.markedContent),.textLayer .markedContent span:not(.markedContent){z-index:1}.textLayer span.markedContent{height:0;top:0}.textLayer span[role=img]{-webkit-user-select:none;user-select:none;cursor:default}.textLayer .highlight{--highlight-bg-color:#b400aa40;--highlight-selected-bg-color:#00640040;--highlight-backdrop-filter:none;--highlight-selected-backdrop-filter:none}@media screen and (forced-colors:active){.textLayer .highlight{--highlight-bg-color:transparent;--highlight-selected-bg-color:transparent;--highlight-backdrop-filter:var(--hcm-highlight-filter);--highlight-selected-backdrop-filter:var(--hcm-highlight-selected-filter)}}.textLayer .highlight{background-color:var(--highlight-bg-color);-webkit-backdrop-filter:var(--highlight-backdrop-filter);backdrop-filter:var(--highlight-backdrop-filter);border-radius:4px;margin:-1px;padding:1px}.appended:is(.textLayer .highlight){position:initial}.begin:is(.textLayer .highlight){border-radius:4px 0 0 4px}.end:is(.textLayer .highlight){border-radius:0 4px 4px 0}.middle:is(.textLayer .highlight){border-radius:0}.selected:is(.textLayer .highlight){background-color:var(--highlight-selected-bg-color);-webkit-backdrop-filter:var(--highlight-selected-backdrop-filter);backdrop-filter:var(--highlight-selected-backdrop-filter)}.textLayer ::selection{background:#0000ff40;background:color-mix(in srgb, AccentColor, transparent 75%)}.textLayer br::selection{background:0 0}.textLayer .endOfContent{z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}.textLayer.selecting .endOfContent{top:0}.annotationLayer{--annotation-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,");--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:transparent;--input-disabled-border-color:transparent;--input-hover-border-color:black;--link-outline:none}@media screen and (forced-colors:active){.annotationLayer{--input-focus-border-color:CanvasText;--input-unfocused-border-color:ActiveText;--input-disabled-border-color:GrayText;--input-hover-border-color:Highlight;--link-outline:1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selecteditem}.annotationLayer .linkAnnotation{outline:var(--link-outline)}:is(.annotationLayer .linkAnnotation):hover{-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter)}:is(.annotationLayer .linkAnnotation)>a:hover{box-shadow:none;opacity:0!important;background:0 0!important}.annotationLayer .popupAnnotation .popup{outline:calc(1.5px * var(--scale-factor)) solid CanvasText!important;color:buttontext!important;background-color:buttonface!important}.annotationLayer .highlightArea:hover:after{width:100%;height:100%;-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter);content:"";pointer-events:none;position:absolute;top:0;left:0}.annotationLayer .popupAnnotation.focused .popup{outline:calc(3px * var(--scale-factor)) solid Highlight!important}}.annotationLayer{pointer-events:none;transform-origin:0 0;position:absolute;top:0;left:0}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg)translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg)translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg)translateY(-100%)}.annotationLayer.disabled section,.annotationLayer.disabled .popup{pointer-events:none}.annotationLayer .annotationContent{pointer-events:none;width:100%;height:100%;position:absolute}.freetext:is(.annotationLayer .annotationContent){white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:none;font:10px/1.35 sans-serif;inset:0;overflow:visible}.annotationLayer section{text-align:initial;pointer-events:auto;box-sizing:border-box;transform-origin:0 0;position:absolute}:is(.annotationLayer section):has(div.annotationContent) canvas.annotationContent{display:none}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{width:100%;height:100%;font-size:1em;position:absolute;top:0;left:0}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton):not(.hasBorder)>a:hover{opacity:.2;background-color:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .linkAnnotation.hasBorder:hover{background-color:#ff03}.annotationLayer .hasBorder{background-size:100% 100%}.annotationLayer .textAnnotation img{cursor:pointer;width:100%;height:100%;position:absolute;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--scale-factor)) sans-serif;vertical-align:top;width:100%;height:100%;margin:0}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation [disabled]:is(input,textarea),.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{border:2px solid var(--input-disabled-border-color);cursor:not-allowed;background:0 0}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline);background:0 0;border-radius:2px}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-color:#0000;background-image:none}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline);border-radius:2px}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{content:"";background-color:canvastext;display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{width:1px;height:80%;left:45%}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;width:50%;height:50%;top:25%;left:25%}.annotationLayer .textWidgetAnnotation input.comb{padding-left:2px;padding-right:0;font-family:monospace}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{appearance:none}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{width:100%;height:100%}.annotationLayer .popupAnnotation{font-size:calc(9px * var(--scale-factor));pointer-events:none;width:max-content;max-width:45%;height:auto;position:absolute}.annotationLayer .popup{box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) #888;border-radius:calc(2px * var(--scale-factor));padding:calc(6px * var(--scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto;background-color:#ff9;outline:1.5px solid #ffff4a}.annotationLayer .popupAnnotation.focused .popup{outline-width:3px}.annotationLayer .popup *{font-size:calc(9px * var(--scale-factor))}.annotationLayer .popup>.header{display:inline-block}.annotationLayer .popup>.header h1{display:inline}.annotationLayer .popup>.header .popupDate{margin-left:calc(5px * var(--scale-factor));width:fit-content;display:inline-block}.annotationLayer .popupContent{margin-top:calc(2px * var(--scale-factor));padding-top:calc(2px * var(--scale-factor));border-top:1px solid #333}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--scale-factor))}.annotationLayer .popupTriggerArea{cursor:pointer}.annotationLayer section svg{width:100%;height:100%;position:absolute;top:0;left:0}.annotationLayer .annotationTextContent{opacity:0;color:#0000;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;position:absolute}:is(.annotationLayer .annotationTextContent) span{width:100%;display:inline-block}.annotationLayer svg.quadrilateralsContainer{contain:strict;z-index:-1;width:0;height:0;position:absolute;top:0;left:0}:root{--xfa-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,");--xfa-focus-outline:auto}@media screen and (forced-colors:active){:root{--xfa-focus-outline:2px solid CanvasText}.xfaLayer :required{outline:1.5px solid selecteditem}}.xfaLayer{background-color:#0000}.xfaLayer .highlight{background-color:#efcbed;border-radius:4px;margin:-1px;padding:1px}.xfaLayer .highlight.appended{position:initial}.xfaLayer .highlight.begin{border-radius:4px 0 0 4px}.xfaLayer .highlight.end{border-radius:0 4px 4px 0}.xfaLayer .highlight.middle{border-radius:0}.xfaLayer .highlight.selected{background-color:#cbdfcb}.xfaPage{position:relative;overflow:hidden}.xfaContentarea{position:absolute}.xfaPrintOnly{display:none}.xfaLayer{text-align:initial;transform-origin:0 0;line-height:1.2;position:absolute;top:0;left:0}.xfaLayer *{color:inherit;font:inherit;font-style:inherit;font-weight:inherit;font-kerning:inherit;letter-spacing:-.01px;text-align:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;box-sizing:border-box;pointer-events:auto;line-height:inherit;background-color:#0000;margin:0;padding:0}.xfaLayer :required{outline:1.5px solid red}.xfaLayer div,.xfaLayer svg,.xfaLayer svg *{pointer-events:none}.xfaLayer a{color:#00f}.xfaRich li{margin-left:3em}.xfaFont{color:#000;font-kerning:none;letter-spacing:0;vertical-align:0;font-size:10px;font-style:normal;font-weight:400;text-decoration:none}.xfaCaption{flex:none;overflow:hidden}.xfaCaptionForCheckButton{flex:auto;overflow:hidden}.xfaLabel{width:100%;height:100%}.xfaLeft{flex-direction:row;align-items:center;display:flex}.xfaRight{flex-direction:row-reverse;align-items:center;display:flex}:is(.xfaLeft,.xfaRight)>:is(.xfaCaption,.xfaCaptionForCheckButton){max-height:100%}.xfaTop{flex-direction:column;align-items:flex-start;display:flex}.xfaBottom{flex-direction:column-reverse;align-items:flex-start;display:flex}:is(.xfaTop,.xfaBottom)>:is(.xfaCaption,.xfaCaptionForCheckButton){width:100%}.xfaBorder{pointer-events:none;background-color:#0000;position:absolute}.xfaWrapped{width:100%;height:100%}:is(.xfaTextfield,.xfaSelect):focus{outline:var(--xfa-focus-outline);outline-offset:-1px;background-color:#0000;background-image:none}:is(.xfaCheckbox,.xfaRadio):focus{outline:var(--xfa-focus-outline)}.xfaTextfield,.xfaSelect{resize:none;background-image:var(--xfa-unfocused-field-background);border:none;flex:auto;width:100%;height:100%}.xfaSelect{padding-inline:2px}:is(.xfaTop,.xfaBottom)>:is(.xfaTextfield,.xfaSelect){flex:0 auto}.xfaButton{cursor:pointer;text-align:center;border:none;width:100%;height:100%}.xfaLink{width:100%;height:100%;position:absolute;top:0;left:0}.xfaCheckbox,.xfaRadio{border:none;flex:none;width:100%;height:100%}.xfaRich{white-space:pre-wrap;width:100%;height:100%}.xfaImage{-o-object-position:left top;object-position:left top;-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.xfaLrTb,.xfaRlTb,.xfaTb{flex-direction:column;align-items:stretch;display:flex}.xfaLr{flex-direction:row;align-items:stretch;display:flex}.xfaRl{flex-direction:row-reverse;align-items:stretch;display:flex}.xfaTb>div{justify-content:left}.xfaPosition,.xfaArea{position:relative}.xfaValignMiddle{align-items:center;display:flex}.xfaTable{flex-direction:column;align-items:stretch;display:flex}.xfaTable .xfaRow{flex-direction:row;align-items:stretch;display:flex}.xfaTable .xfaRlRow{flex-direction:row-reverse;flex:1;align-items:stretch;display:flex}.xfaTable .xfaRlRow>div{flex:1}:is(.xfaNonInteractive,.xfaDisabled,.xfaReadOnly) :is(input,textarea){background:initial}@media print{.xfaTextfield,.xfaSelect{background:0 0}.xfaSelect{appearance:none;text-indent:1px;text-overflow:""}}.canvasWrapper svg{transform:none}.moving:is(.canvasWrapper svg){z-index:100000}[data-main-rotation="90"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation="90"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){transform:matrix(0,1,-1,0,1,0)}[data-main-rotation="180"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation="180"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){transform:matrix(-1,0,0,-1,1,1)}[data-main-rotation="270"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation="270"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){transform:matrix(0,-1,1,0,0,1)}.draw:is(.canvasWrapper svg){mix-blend-mode:normal;position:absolute}.draw[data-draw-rotation="90"]:is(.canvasWrapper svg){transform:rotate(90deg)}.draw[data-draw-rotation="180"]:is(.canvasWrapper svg){transform:rotate(180deg)}.draw[data-draw-rotation="270"]:is(.canvasWrapper svg){transform:rotate(270deg)}.highlight:is(.canvasWrapper svg){--blend-mode:multiply}@media screen and (forced-colors:active){.highlight:is(.canvasWrapper svg){--blend-mode:difference}}.highlight:is(.canvasWrapper svg){mix-blend-mode:var(--blend-mode);position:absolute}.highlight:is(.canvasWrapper svg):not(.free){fill-rule:evenodd}.highlightOutline:is(.canvasWrapper svg){mix-blend-mode:normal;fill-rule:evenodd;fill:none;position:absolute}.highlightOutline.hovered:is(.canvasWrapper svg):not(.free):not(.selected){stroke:var(--hover-outline-color);stroke-width:var(--outline-width)}.highlightOutline.selected:is(.canvasWrapper svg):not(.free) .mainOutline{stroke:var(--outline-around-color);stroke-width:calc(var(--outline-width) + 2 * var(--outline-around-width))}.highlightOutline.selected:is(.canvasWrapper svg):not(.free) .secondaryOutline{stroke:var(--outline-color);stroke-width:var(--outline-width)}.highlightOutline.free.hovered:is(.canvasWrapper svg):not(.selected){stroke:var(--hover-outline-color);stroke-width:calc(2 * var(--outline-width))}.highlightOutline.free.selected:is(.canvasWrapper svg) .mainOutline{stroke:var(--outline-around-color);stroke-width:calc(2 * (var(--outline-width) + var(--outline-around-width)))}.highlightOutline.free.selected:is(.canvasWrapper svg) .secondaryOutline{stroke:var(--outline-color);stroke-width:calc(2 * var(--outline-width))}.toggle-button{--button-background-color:#f0f0f4;--button-background-color-hover:#e0e0e6;--button-background-color-active:#cfcfd8;--color-accent-primary:#0060df;--color-accent-primary-hover:#0250bb;--color-accent-primary-active:#054096;--border-interactive-color:#8f8f9d;--border-radius-circle:9999px;--border-width:1px;--size-item-small:16px;--size-item-large:32px;--color-canvas:white}@media (prefers-color-scheme:dark){.toggle-button{--button-background-color:color-mix(in srgb, currentColor 7%, transparent);--button-background-color-hover:color-mix(in srgb, currentColor 14%, transparent);--button-background-color-active:color-mix(in srgb, currentColor 21%, transparent);--color-accent-primary:#0df;--color-accent-primary-hover:#80ebff;--color-accent-primary-active:#aaf2ff;--border-interactive-color:#bfbfc9;--color-canvas:#1c1b22}}@media (forced-colors:active){.toggle-button{--color-accent-primary:ButtonText;--color-accent-primary-hover:SelectedItem;--color-accent-primary-active:SelectedItem;--border-interactive-color:ButtonText;--button-background-color:ButtonFace;--border-interactive-color-hover:SelectedItem;--border-interactive-color-active:SelectedItem;--border-interactive-color-disabled:GrayText;--color-canvas:ButtonText}}.toggle-button{--toggle-background-color:var(--button-background-color);--toggle-background-color-hover:var(--button-background-color-hover);--toggle-background-color-active:var(--button-background-color-active);--toggle-background-color-pressed:var(--color-accent-primary);--toggle-background-color-pressed-hover:var(--color-accent-primary-hover);--toggle-background-color-pressed-active:var(--color-accent-primary-active);--toggle-border-color:var(--border-interactive-color);--toggle-border-color-hover:var(--toggle-border-color);--toggle-border-color-active:var(--toggle-border-color);--toggle-border-radius:var(--border-radius-circle);--toggle-border-width:var(--border-width);--toggle-height:var(--size-item-small);--toggle-width:var(--size-item-large);--toggle-dot-background-color:var(--toggle-border-color);--toggle-dot-background-color-hover:var(--toggle-dot-background-color);--toggle-dot-background-color-active:var(--toggle-dot-background-color);--toggle-dot-background-color-on-pressed:var(--color-canvas);--toggle-dot-margin:1px;--toggle-dot-height:calc(var(--toggle-height) - 2 * var(--toggle-dot-margin) - 2 * var(--toggle-border-width));--toggle-dot-width:var(--toggle-dot-height);--toggle-dot-transform-x:calc(var(--toggle-width) - 4 * var(--toggle-dot-margin) - var(--toggle-dot-width));appearance:none;border:var(--toggle-border-width) solid var(--toggle-border-color);height:var(--toggle-height);width:var(--toggle-width);border-radius:var(--toggle-border-radius);background:var(--toggle-background-color);box-sizing:border-box;flex-shrink:0;margin:0;padding:0}.toggle-button:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.toggle-button:enabled:hover{background:var(--toggle-background-color-hover);border-color:var(--toggle-border-color)}.toggle-button:enabled:active{background:var(--toggle-background-color-active);border-color:var(--toggle-border-color)}.toggle-button[aria-pressed=true]{background:var(--toggle-background-color-pressed);border-color:#0000}.toggle-button[aria-pressed=true]:enabled:hover{background:var(--toggle-background-color-pressed-hover);border-color:#0000}.toggle-button[aria-pressed=true]:enabled:active{background:var(--toggle-background-color-pressed-active);border-color:#0000}.toggle-button:before{content:"";background-color:var(--toggle-dot-background-color);height:var(--toggle-dot-height);width:var(--toggle-dot-width);margin:var(--toggle-dot-margin);border-radius:var(--toggle-border-radius);display:block;translate:0}.toggle-button[aria-pressed=true]:before{translate:var(--toggle-dot-transform-x);background-color:var(--toggle-dot-background-color-on-pressed)}.toggle-button[aria-pressed=true]:enabled:hover:before,.toggle-button[aria-pressed=true]:enabled:active:before{background-color:var(--toggle-dot-background-color-on-pressed)}[dir=rtl] .toggle-button[aria-pressed=true]:before{translate:calc(-1 * var(--toggle-dot-transform-x))}@media (prefers-reduced-motion:no-preference){.toggle-button:before{transition:translate .1s}}@media (prefers-contrast){.toggle-button:enabled:hover{border-color:var(--toggle-border-color-hover)}.toggle-button:enabled:active{border-color:var(--toggle-border-color-active)}.toggle-button[aria-pressed=true]:enabled{border-color:var(--toggle-border-color);position:relative}.toggle-button[aria-pressed=true]:enabled:hover,.toggle-button[aria-pressed=true]:enabled:hover:active{border-color:var(--toggle-border-color-hover)}.toggle-button[aria-pressed=true]:enabled:active{background-color:var(--toggle-dot-background-color-active);border-color:var(--toggle-dot-background-color-hover)}.toggle-button:hover:before,.toggle-button:active:before{background-color:var(--toggle-dot-background-color-hover)}}@media (forced-colors){.toggle-button{--toggle-dot-background-color:var(--color-accent-primary);--toggle-dot-background-color-hover:var(--color-accent-primary-hover);--toggle-dot-background-color-active:var(--color-accent-primary-active);--toggle-dot-background-color-on-pressed:var(--button-background-color);--toggle-background-color-disabled:var(--button-background-color-disabled);--toggle-border-color-hover:var(--border-interactive-color-hover);--toggle-border-color-active:var(--border-interactive-color-active);--toggle-border-color-disabled:var(--border-interactive-color-disabled)}.toggle-button[aria-pressed=true]:enabled:after{border:1px solid var(--button-background-color);content:"";height:var(--toggle-height);width:var(--toggle-width);border-radius:var(--toggle-border-radius);display:block;position:absolute;inset:-2px}.toggle-button[aria-pressed=true]:enabled:active:after{border-color:var(--toggle-border-color-active)}}:root{--outline-width:2px;--outline-color:#0060df;--outline-around-width:1px;--outline-around-color:#f0f0f4;--hover-outline-around-color:var(--outline-around-color);--focus-outline:solid var(--outline-width) var(--outline-color);--unfocus-outline:solid var(--outline-width) transparent;--focus-outline-around:solid var(--outline-around-width) var(--outline-around-color);--hover-outline-color:#8f8f9d;--hover-outline:solid var(--outline-width) var(--hover-outline-color);--hover-outline-around:solid var(--outline-around-width) var(--hover-outline-around-color);--freetext-line-height:1.35;--freetext-padding:2px;--resizer-bg-color:var(--outline-color);--resizer-size:6px;--resizer-shift:calc(0px - (var(--outline-width) + var(--resizer-size)) / 2 - var(--outline-around-width));--editorFreeText-editing-cursor:text;--editorInk-editing-cursor:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M0.0189877%2013.6645L0.612989%2010.4635C0.687989%2010.0545%200.884989%209.6805%201.18099%209.3825L9.98199%200.5805C10.756%20-0.1925%2012.015%20-0.1945%2012.792%200.5805L14.42%202.2085C15.194%202.9835%2015.194%204.2435%2014.42%205.0185L5.61599%2013.8215C5.31999%2014.1165%204.94599%2014.3125%204.53799%2014.3875L1.33599%2014.9815C1.26599%2014.9935%201.19799%2015.0005%201.12999%2015.0005C0.832989%2015.0005%200.544988%2014.8835%200.330988%2014.6695C0.0679874%2014.4055%20-0.0490122%2014.0305%200.0189877%2013.6645Z'%20fill='white'/%3e%3cpath%20d='M0.0189877%2013.6645L0.612989%2010.4635C0.687989%2010.0545%200.884989%209.6805%201.18099%209.3825L9.98199%200.5805C10.756%20-0.1925%2012.015%20-0.1945%2012.792%200.5805L14.42%202.2085C15.194%202.9835%2015.194%204.2435%2014.42%205.0185L5.61599%2013.8215C5.31999%2014.1165%204.94599%2014.3125%204.53799%2014.3875L1.33599%2014.9815C1.26599%2014.9935%201.19799%2015.0005%201.12999%2015.0005C0.832989%2015.0005%200.544988%2014.8835%200.330988%2014.6695C0.0679874%2014.4055%20-0.0490122%2014.0305%200.0189877%2013.6645ZM12.472%205.1965L13.632%204.0365L13.631%203.1885L11.811%201.3675L10.963%201.3685L9.80299%202.5285L12.472%205.1965ZM4.31099%2013.1585C4.47099%2013.1285%204.61799%2013.0515%204.73399%2012.9345L11.587%206.0815L8.91899%203.4135L2.06599%2010.2655C1.94899%2010.3835%201.87199%2010.5305%201.84099%2010.6915L1.36699%2013.2485L1.75199%2013.6335L4.31099%2013.1585Z'%20fill='black'/%3e%3c/svg%3e") 0 16, pointer;--editorHighlight-editing-cursor:url("data:image/svg+xml,%3csvg%20width='29'%20height='32'%20viewBox='0%200%2029%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M28%2016.75C28.2761%2016.75%2028.5%2016.5261%2028.5%2016.25V15C28.5%2014.7239%2028.2761%2014.5%2028%2014.5H26.358C25.9117%2014.5%2025.4773%2014.6257%2025.0999%2014.8604L25.0989%2014.8611L24%2015.5484L22.9%2014.861L22.8991%2014.8604C22.5218%2014.6257%2022.0875%2014.5%2021.642%2014.5H20C19.7239%2014.5%2019.5%2014.7239%2019.5%2015V16.25C19.5%2016.5261%2019.7239%2016.75%2020%2016.75H21.642C21.6648%2016.75%2021.6885%2016.7564%2021.7101%2016.7697C21.7102%2016.7698%2021.7104%2016.7699%2021.7105%2016.77L22.817%2017.461C22.817%2017.461%2022.8171%2017.4611%2022.8171%2017.4611C22.8171%2017.4611%2022.8171%2017.4611%2022.8171%2017.4611C22.8552%2017.4849%2022.876%2017.5229%2022.876%2017.567V22.625V27.683C22.876%2027.7271%2022.8552%2027.765%2022.8172%2027.7889C22.8171%2027.7889%2022.8171%2027.789%2022.817%2027.789L21.7095%2028.48C21.7094%2028.4801%2021.7093%2028.4802%2021.7092%2028.4803C21.6872%2028.4938%2021.6644%2028.5%2021.641%2028.5H20C19.7239%2028.5%2019.5%2028.7239%2019.5%2029V30.25C19.5%2030.5261%2019.7239%2030.75%2020%2030.75H21.642C22.0883%2030.75%2022.5227%2030.6243%2022.9001%2030.3896L22.9009%2030.3891L24%2029.7026L25.1%2030.39L25.1009%2030.3906C25.4783%2030.6253%2025.9127%2030.751%2026.359%2030.751H28C28.2761%2030.751%2028.5%2030.5271%2028.5%2030.251V29.001C28.5%2028.7249%2028.2761%2028.501%2028%2028.501H26.358C26.3352%2028.501%2026.3115%2028.4946%2026.2899%2028.4813C26.2897%2028.4812%2026.2896%2028.4811%2026.2895%2028.481L25.183%2027.79C25.183%2027.79%2025.183%2027.79%2025.1829%2027.79C25.1829%2027.7899%2025.1829%2027.7899%2025.1829%2027.7899C25.1462%2027.7669%2025.125%2027.7297%2025.125%2027.684V22.625V17.567C25.125%2017.5227%2025.146%2017.4844%2025.1836%2017.4606C25.1838%2017.4605%2025.1839%2017.4604%2025.184%2017.4603L26.2895%2016.77C26.2896%2016.7699%2026.2898%2016.7698%2026.2899%2016.7697C26.3119%2016.7562%2026.3346%2016.75%2026.358%2016.75H28Z'%20fill='black'%20stroke='%23FBFBFE'%20stroke-linejoin='round'/%3e%3cpath%20d='M24.625%2017.567C24.625%2017.35%2024.735%2017.152%2024.918%2017.037L26.026%2016.345C26.126%2016.283%2026.24%2016.25%2026.358%2016.25H28V15H26.358C26.006%2015%2025.663%2015.099%2025.364%2015.285L24.256%2015.978C24.161%2016.037%2024.081%2016.113%2024%2016.187C23.918%2016.113%2023.839%2016.037%2023.744%2015.978L22.635%2015.285C22.336%2015.099%2021.993%2015%2021.642%2015H20V16.25H21.642C21.759%2016.25%2021.874%2016.283%2021.974%2016.345L23.082%2017.037C23.266%2017.152%2023.376%2017.35%2023.376%2017.567V22.625V27.683C23.376%2027.9%2023.266%2028.098%2023.082%2028.213L21.973%2028.905C21.873%2028.967%2021.759%2029%2021.641%2029H20V30.25H21.642C21.994%2030.25%2022.337%2030.151%2022.636%2029.965L23.744%2029.273C23.84%2029.213%2023.919%2029.137%2024%2029.064C24.081%2029.137%2024.161%2029.213%2024.256%2029.273L25.365%2029.966C25.664%2030.152%2026.007%2030.251%2026.359%2030.251H28V29.001H26.358C26.241%2029.001%2026.126%2028.968%2026.026%2028.906L24.918%2028.214C24.734%2028.099%2024.625%2027.901%2024.625%2027.684V22.625V17.567Z'%20fill='black'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12.2%202.59C12.28%202.51%2012.43%202.5%2012.43%202.5C12.48%202.5%2012.58%202.52%2012.66%202.6L14.45%204.39C14.58%204.52%2014.58%204.72%2014.45%204.85L11.7713%207.52872L9.51628%205.27372L12.2%202.59ZM13.2658%204.62L11.7713%206.1145L10.9305%205.27372L12.425%203.77921L13.2658%204.62Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M5.98%208.82L8.23%2011.07L10.7106%208.58938L8.45562%206.33438L5.98%208.81V8.82ZM8.23%209.65579L9.29641%208.58938L8.45562%207.74859L7.38921%208.815L8.23%209.65579Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10.1526%2012.6816L16.2125%206.6217C16.7576%206.08919%2017.05%205.3707%2017.05%204.62C17.05%203.86931%2016.7576%203.15084%2016.2126%202.61834L14.4317%200.837474C13.8992%200.29242%2013.1807%200%2012.43%200C11.6643%200%2010.9529%200.312929%2010.4329%200.832893L3.68289%207.58289C3.04127%208.22452%203.00459%209.25075%203.57288%209.93634L1.29187%2012.2239C1.09186%2012.4245%200.990263%2012.6957%201.0007%2012.9685L1%2014C0.447715%2014%200%2014.4477%200%2015V17C0%2017.5523%200.447715%2018%201%2018H16C16.5523%2018%2017%2017.5523%2017%2017V15C17%2014.4477%2016.5523%2014%2016%2014H10.2325C9.83594%2014%209.39953%2013.4347%2010.1526%2012.6816ZM4.39%209.35L4.9807%209.9407L2.39762%2012.5312H6.63877L7.10501%2012.065L7.57125%2012.5312H8.88875L15.51%205.91C15.86%205.57%2016.05%205.11%2016.05%204.62C16.05%204.13%2015.86%203.67%2015.51%203.33L13.72%201.54C13.38%201.19%2012.92%201%2012.43%201C11.94%201%2011.48%201.2%2011.14%201.54L4.39%208.29C4.1%208.58%204.1%209.06%204.39%209.35ZM16%2017V15H1V17H16Z'%20fill='%23FBFBFE'/%3e%3cpath%20d='M15.1616%205.55136L15.1616%205.55132L15.1564%205.55645L8.40645%2012.3064C8.35915%2012.3537%208.29589%2012.38%208.23%2012.38C8.16411%2012.38%208.10085%2012.3537%208.05355%2012.3064L7.45857%2011.7115L7.10501%2011.3579L6.75146%2011.7115L6.03289%2012.43H3.20465L5.33477%2010.2937L5.6873%209.94019L5.33426%209.58715L4.74355%208.99645C4.64882%208.90171%204.64882%208.73829%204.74355%208.64355L11.4936%201.89355C11.7436%201.64354%2012.0779%201.5%2012.43%201.5C12.7883%201.5%2013.1179%201.63776%2013.3614%201.88839L13.3613%201.88843L13.3664%201.89355L15.1564%203.68355L15.1564%203.68359L15.1616%203.68864C15.4122%203.93211%2015.55%204.26166%2015.55%204.62C15.55%204.97834%2015.4122%205.30789%2015.1616%205.55136ZM5.48%208.82V9.02711L5.62645%209.17355L7.87645%2011.4236L8.23%2011.7771L8.58355%2011.4236L11.0642%208.94293L11.4177%208.58938L11.0642%208.23582L8.80918%205.98082L8.45562%205.62727L8.10207%205.98082L5.62645%208.45645L5.48%208.60289V8.81V8.82ZM11.4177%207.88227L11.7713%208.23582L12.1248%207.88227L14.8036%205.20355C15.1288%204.87829%2015.1288%204.36171%2014.8036%204.03645L13.0136%202.24645C12.8186%202.05146%2012.5792%202%2012.43%202H12.4134L12.3967%202.00111L12.43%202.5C12.3967%202.00111%2012.3966%202.00112%2012.3965%202.00112L12.3963%202.00114L12.3957%202.00117L12.3947%202.00125L12.3924%202.00142L12.387%202.00184L12.3732%202.00311C12.3628%202.00416%2012.3498%202.00567%2012.3346%202.00784C12.3049%202.01208%2012.2642%202.01925%2012.2178%202.03146C12.1396%202.05202%2011.9797%202.10317%2011.8464%202.23645L9.16273%204.92016L8.80918%205.27372L9.16273%205.62727L11.4177%207.88227ZM1.5%2016.5V15.5H15.5V16.5H1.5Z'%20stroke='%2315141A'/%3e%3c/svg%3e") 24 24, text;--editorFreeHighlight-editing-cursor:url("data:image/svg+xml,%3csvg%20width='18'%20height='19'%20viewBox='0%200%2018%2019'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12.2%203.09C12.28%203.01%2012.43%203%2012.43%203C12.48%203%2012.58%203.02%2012.66%203.1L14.45%204.89C14.58%205.02%2014.58%205.22%2014.45%205.35L11.7713%208.02872L9.51628%205.77372L12.2%203.09ZM13.2658%205.12L11.7713%206.6145L10.9305%205.77372L12.425%204.27921L13.2658%205.12Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M5.98%209.32L8.23%2011.57L10.7106%209.08938L8.45562%206.83438L5.98%209.31V9.32ZM8.23%2010.1558L9.29641%209.08938L8.45562%208.24859L7.38921%209.315L8.23%2010.1558Z'%20fill='%23FBFBFE'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10.1526%2013.1816L16.2125%207.1217C16.7576%206.58919%2017.05%205.8707%2017.05%205.12C17.05%204.36931%2016.7576%203.65084%2016.2126%203.11834L14.4317%201.33747C13.8992%200.79242%2013.1807%200.5%2012.43%200.5C11.6643%200.5%2010.9529%200.812929%2010.4329%201.33289L3.68289%208.08289C3.04127%208.72452%203.00459%209.75075%203.57288%2010.4363L1.29187%2012.7239C1.09186%2012.9245%200.990263%2013.1957%201.0007%2013.4685L1%2014.5C0.447715%2014.5%200%2014.9477%200%2015.5V17.5C0%2018.0523%200.447715%2018.5%201%2018.5H16C16.5523%2018.5%2017%2018.0523%2017%2017.5V15.5C17%2014.9477%2016.5523%2014.5%2016%2014.5H10.2325C9.83594%2014.5%209.39953%2013.9347%2010.1526%2013.1816ZM4.39%209.85L4.9807%2010.4407L2.39762%2013.0312H6.63877L7.10501%2012.565L7.57125%2013.0312H8.88875L15.51%206.41C15.86%206.07%2016.05%205.61%2016.05%205.12C16.05%204.63%2015.86%204.17%2015.51%203.83L13.72%202.04C13.38%201.69%2012.92%201.5%2012.43%201.5C11.94%201.5%2011.48%201.7%2011.14%202.04L4.39%208.79C4.1%209.08%204.1%209.56%204.39%209.85ZM16%2017.5V15.5H1V17.5H16Z'%20fill='%23FBFBFE'/%3e%3cpath%20d='M15.1616%206.05136L15.1616%206.05132L15.1564%206.05645L8.40645%2012.8064C8.35915%2012.8537%208.29589%2012.88%208.23%2012.88C8.16411%2012.88%208.10085%2012.8537%208.05355%2012.8064L7.45857%2012.2115L7.10501%2011.8579L6.75146%2012.2115L6.03289%2012.93H3.20465L5.33477%2010.7937L5.6873%2010.4402L5.33426%2010.0871L4.74355%209.49645C4.64882%209.40171%204.64882%209.23829%204.74355%209.14355L11.4936%202.39355C11.7436%202.14354%2012.0779%202%2012.43%202C12.7883%202%2013.1179%202.13776%2013.3614%202.38839L13.3613%202.38843L13.3664%202.39355L15.1564%204.18355L15.1564%204.18359L15.1616%204.18864C15.4122%204.43211%2015.55%204.76166%2015.55%205.12C15.55%205.47834%2015.4122%205.80789%2015.1616%206.05136ZM7.87645%2011.9236L8.23%2012.2771L8.58355%2011.9236L11.0642%209.44293L11.4177%209.08938L11.0642%208.73582L8.80918%206.48082L8.45562%206.12727L8.10207%206.48082L5.62645%208.95645L5.48%209.10289V9.31V9.32V9.52711L5.62645%209.67355L7.87645%2011.9236ZM11.4177%208.38227L11.7713%208.73582L12.1248%208.38227L14.8036%205.70355C15.1288%205.37829%2015.1288%204.86171%2014.8036%204.53645L13.0136%202.74645C12.8186%202.55146%2012.5792%202.5%2012.43%202.5H12.4134L12.3967%202.50111L12.43%203C12.3967%202.50111%2012.3966%202.50112%2012.3965%202.50112L12.3963%202.50114L12.3957%202.50117L12.3947%202.50125L12.3924%202.50142L12.387%202.50184L12.3732%202.50311C12.3628%202.50416%2012.3498%202.50567%2012.3346%202.50784C12.3049%202.51208%2012.2642%202.51925%2012.2178%202.53146C12.1396%202.55202%2011.9797%202.60317%2011.8464%202.73645L9.16273%205.42016L8.80918%205.77372L9.16273%206.12727L11.4177%208.38227ZM1.5%2016H15.5V17H1.5V16Z'%20stroke='%2315141A'/%3e%3c/svg%3e") 1 18, pointer;--new-alt-text-warning-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.78182%202.63903C8.58882%202.28803%208.25782%202.25003%208.12482%202.25003C7.99019%202.24847%207.85771%202.28393%207.74185%202.35253C7.62599%202.42113%207.5312%202.52023%207.46782%202.63903L1.97082%2012.639C1.90673%2012.7528%201.87406%2012.8816%201.87617%2013.0122C1.87828%2013.1427%201.91509%2013.2704%201.98282%2013.382C2.04798%2013.4951%202.14207%2013.5888%202.25543%2013.6535C2.36879%2013.7182%202.49732%2013.7515%202.62782%2013.75H13.6218C13.7523%2013.7515%2013.8809%2013.7182%2013.9942%2013.6535C14.1076%2013.5888%2014.2017%2013.4951%2014.2668%2013.382C14.3346%2013.2704%2014.3714%2013.1427%2014.3735%2013.0122C14.3756%2012.8816%2014.3429%2012.7528%2014.2788%2012.639L8.78182%202.63903ZM6.37282%202.03703C6.75182%201.34603%207.43882%201.00003%208.12482%201.00003C8.48341%200.997985%208.83583%201.09326%209.14454%201.2757C9.45325%201.45814%209.70668%201.72092%209.87782%202.03603L15.3748%2012.036C16.1078%2013.369%2015.1438%2015%2013.6228%2015H2.62782C1.10682%2015%200.141823%2013.37%200.875823%2012.037L6.37282%202.03703ZM8.74982%209.06203C8.74982%209.22779%208.68397%209.38676%208.56676%209.50397C8.44955%209.62118%208.29058%209.68703%208.12482%209.68703C7.95906%209.68703%207.80009%209.62118%207.68288%209.50397C7.56566%209.38676%207.49982%209.22779%207.49982%209.06203V5.62503C7.49982%205.45927%207.56566%205.3003%207.68288%205.18309C7.80009%205.06588%207.95906%205.00003%208.12482%205.00003C8.29058%205.00003%208.44955%205.06588%208.56676%205.18309C8.68397%205.3003%208.74982%205.45927%208.74982%205.62503V9.06203ZM7.74982%2012L7.49982%2011.75V11L7.74982%2010.75H8.49982L8.74982%2011V11.75L8.49982%2012H7.74982Z'%20fill='black'/%3e%3c/svg%3e")}.visuallyHidden{white-space:nowrap;border:0;width:0;height:0;margin:0;padding:0;font-size:0;position:absolute;top:0;left:0;overflow:hidden}.textLayer.highlighting{cursor:var(--editorFreeHighlight-editing-cursor)}.textLayer.highlighting:not(.free) span{cursor:var(--editorHighlight-editing-cursor)}[role=img]:is(.textLayer.highlighting:not(.free) span),.textLayer.highlighting.free span{cursor:var(--editorFreeHighlight-editing-cursor)}:is(#viewerContainer.pdfPresentationMode:fullscreen,.annotationEditorLayer.disabled) .noAltTextBadge{display:none!important}@media (resolution>=1.1x){:root{--editorFreeText-editing-cursor:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12%202.75H12.5V2.25V1V0.5H12H10.358C9.91165%200.5%209.47731%200.625661%209.09989%200.860442L9.09886%200.861087L8%201.54837L6.89997%200.860979L6.89911%200.860443C6.5218%200.625734%206.08748%200.5%205.642%200.5H4H3.5V1V2.25V2.75H4H5.642C5.66478%202.75%205.6885%202.75641%205.71008%202.76968C5.71023%202.76977%205.71038%202.76986%205.71053%202.76995L6.817%203.461C6.81704%203.46103%206.81709%203.46105%206.81713%203.46108C6.81713%203.46108%206.81713%203.46108%206.81714%203.46109C6.8552%203.48494%206.876%203.52285%206.876%203.567V8V12.433C6.876%2012.4771%206.85523%2012.515%206.81722%2012.5389C6.81715%2012.5389%206.81707%2012.539%206.817%2012.539L5.70953%2013.23C5.70941%2013.2301%205.70929%2013.2302%205.70917%2013.2303C5.68723%2013.2438%205.6644%2013.25%205.641%2013.25H4H3.5V13.75V15V15.5H4H5.642C6.08835%2015.5%206.52269%2015.3743%206.90011%2015.1396L6.90086%2015.1391L8%2014.4526L9.10003%2015.14L9.10089%2015.1406C9.47831%2015.3753%209.91265%2015.501%2010.359%2015.501H12H12.5V15.001V13.751V13.251H12H10.358C10.3352%2013.251%2010.3115%2013.2446%2010.2899%2013.2313C10.2897%2013.2312%2010.2896%2013.2311%2010.2895%2013.231L9.183%2012.54C9.18298%2012.54%209.18295%2012.54%209.18293%2012.54C9.18291%2012.5399%209.18288%2012.5399%209.18286%2012.5399C9.14615%2012.5169%209.125%2012.4797%209.125%2012.434V8V3.567C9.125%203.52266%209.14603%203.48441%209.18364%203.4606C9.18377%203.46052%209.1839%203.46043%209.18404%203.46035L10.2895%202.76995C10.2896%202.76985%2010.2898%202.76975%2010.2899%202.76966C10.3119%202.75619%2010.3346%202.75%2010.358%202.75H12Z'%20fill='black'%20stroke='white'/%3e%3c/svg%3e") 0 16, text}}@media screen and (forced-colors:active){:root{--outline-color:CanvasText;--outline-around-color:ButtonFace;--resizer-bg-color:ButtonText;--hover-outline-color:Highlight;--hover-outline-around-color:SelectedItemText}}[data-editor-rotation="90"]{transform:rotate(90deg)}[data-editor-rotation="180"]{transform:rotate(180deg)}[data-editor-rotation="270"]{transform:rotate(270deg)}.annotationEditorLayer{font-size:calc(100px * var(--scale-factor));transform-origin:0 0;cursor:auto;background:0 0;position:absolute;inset:0}.annotationEditorLayer .selectedEditor{z-index:100000!important}.annotationEditorLayer.drawing *{pointer-events:none!important}.annotationEditorLayer.waiting{content:"";cursor:wait;width:100%;height:100%;position:absolute;inset:0}.annotationEditorLayer.disabled{pointer-events:none}.annotationEditorLayer.freetextEditing{cursor:var(--editorFreeText-editing-cursor)}.annotationEditorLayer.inkEditing{cursor:var(--editorInk-editing-cursor)}.annotationEditorLayer .draw{box-sizing:border-box}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor){z-index:1;transform-origin:0 0;cursor:auto;border:var(--unfocus-outline);background:0 0;max-width:100%;max-height:100%;position:absolute}.draggable.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)){cursor:move}.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)){border:var(--focus-outline);outline:var(--focus-outline-around)}.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)):before{content:"";border:var(--focus-outline-around);pointer-events:none;position:absolute;inset:0}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)):hover:not(.selectedEditor){border:var(--hover-outline);outline:var(--hover-outline-around)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)):hover:not(.selectedEditor):before{content:"";border:var(--focus-outline-around);position:absolute;inset:0}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-delete-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M11%203H13.6C14%203%2014.3%203.3%2014.3%203.6C14.3%203.9%2014%204.2%2013.7%204.2H13.3V14C13.3%2015.1%2012.4%2016%2011.3%2016H4.80005C3.70005%2016%202.80005%2015.1%202.80005%2014V4.2H2.40005C2.00005%204.2%201.80005%204%201.80005%203.6C1.80005%203.2%202.00005%203%202.40005%203H5.00005V2C5.00005%200.9%205.90005%200%207.00005%200H9.00005C10.1%200%2011%200.9%2011%202V3ZM6.90005%201.2L6.30005%201.8V3H9.80005V1.8L9.20005%201.2H6.90005ZM11.4%2014.7L12%2014.1V4.2H4.00005V14.1L4.60005%2014.7H11.4ZM7.00005%2012.4C7.00005%2012.7%206.70005%2013%206.40005%2013C6.10005%2013%205.80005%2012.7%205.80005%2012.4V7.6C5.70005%207.3%206.00005%207%206.40005%207C6.80005%207%207.00005%207.3%207.00005%207.6V12.4ZM10.2001%2012.4C10.2001%2012.7%209.90006%2013%209.60006%2013C9.30006%2013%209.00006%2012.7%209.00006%2012.4V7.6C9.00006%207.3%209.30006%207%209.60006%207C9.90006%207%2010.2001%207.3%2010.2001%207.6V12.4Z'%20fill='black'%20/%3e%3c/svg%3e");--editor-toolbar-bg-color:#f0f0f4;--editor-toolbar-highlight-image:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M7.10918%2011.66C7.24918%2011.8%207.43918%2011.88%207.63918%2011.88C7.83918%2011.88%208.02918%2011.8%208.16918%2011.66L14.9192%204.91C15.2692%204.57%2015.4592%204.11%2015.4592%203.62C15.4592%203.13%2015.2692%202.67%2014.9192%202.33L13.1292%200.54C12.7892%200.19%2012.3292%200%2011.8392%200C11.3492%200%2010.8892%200.2%2010.5492%200.54L3.79918%207.29C3.50918%207.58%203.50918%208.06%203.79918%208.35L4.38988%208.9407L1.40918%2011.93H5.64918L6.51419%2011.065L7.10918%2011.66ZM7.63918%2010.07L5.38918%207.82V7.81L7.8648%205.33438L10.1198%207.58938L7.63918%2010.07ZM11.1805%206.52872L13.8592%203.85C13.9892%203.72%2013.9892%203.52%2013.8592%203.39L12.0692%201.6C11.9892%201.52%2011.8892%201.5%2011.8392%201.5C11.8392%201.5%2011.6892%201.51%2011.6092%201.59L8.92546%204.27372L11.1805%206.52872Z'%20fill='%23000'/%3e%3cpath%20d='M0.40918%2014H15.4092V16H0.40918V14Z'%20fill='%23000'/%3e%3c/g%3e%3c/svg%3e");--editor-toolbar-fg-color:#2e2e56;--editor-toolbar-border-color:#8f8f9d;--editor-toolbar-hover-border-color:var(--editor-toolbar-border-color);--editor-toolbar-hover-bg-color:#e0e0e6;--editor-toolbar-hover-fg-color:var(--editor-toolbar-fg-color);--editor-toolbar-hover-outline:none;--editor-toolbar-focus-outline-color:#0060df;--editor-toolbar-shadow:0 2px 6px 0 #3a394433;--editor-toolbar-vert-offset:6px;--editor-toolbar-height:28px;--editor-toolbar-padding:2px;--alt-text-done-color:#2ac3a2;--alt-text-warning-color:#0090ed;--alt-text-hover-done-color:var(--alt-text-done-color);--alt-text-hover-warning-color:var(--alt-text-warning-color)}@media (prefers-color-scheme:dark){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-bg-color:#2b2a33;--editor-toolbar-fg-color:#fbfbfe;--editor-toolbar-hover-bg-color:#52525e;--editor-toolbar-focus-outline-color:#0df;--alt-text-done-color:#54ffbd;--alt-text-warning-color:#80ebff}}@media screen and (forced-colors:active){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-bg-color:ButtonFace;--editor-toolbar-fg-color:ButtonText;--editor-toolbar-border-color:ButtonText;--editor-toolbar-hover-border-color:AccentColor;--editor-toolbar-hover-bg-color:ButtonFace;--editor-toolbar-hover-fg-color:AccentColor;--editor-toolbar-hover-outline:2px solid var(--editor-toolbar-hover-border-color);--editor-toolbar-focus-outline-color:ButtonBorder;--editor-toolbar-shadow:none;--alt-text-done-color:var(--editor-toolbar-fg-color);--alt-text-warning-color:var(--editor-toolbar-fg-color);--alt-text-hover-done-color:var(--editor-toolbar-hover-fg-color);--alt-text-hover-warning-color:var(--editor-toolbar-hover-fg-color)}}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{width:fit-content;height:var(--editor-toolbar-height);cursor:default;pointer-events:auto;box-sizing:content-box;padding:var(--editor-toolbar-padding);background-color:var(--editor-toolbar-bg-color);border:1px solid var(--editor-toolbar-border-color);box-shadow:var(--editor-toolbar-shadow);border-radius:6px;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset-block-start:calc(100% + var(--editor-toolbar-vert-offset));inset-inline-end:0}.hidden:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar){display:none}:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar):has(:focus-visible){border-color:#0000}[dir=ltr] :is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar){transform-origin:100% 0}[dir=rtl] :is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar){transform-origin:0 0}:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons{justify-content:center;align-items:center;gap:0;height:100%;display:flex}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) button{padding:0}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .divider{width:0;height:calc(2 * var(--editor-toolbar-padding) + var(--editor-toolbar-height));border-left:1px solid var(--editor-toolbar-border-color);border-right:none;margin-inline:2px;display:inline-block}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .highlightButton{width:var(--editor-toolbar-height)}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .highlightButton):before{content:"";-webkit-mask-image:var(--editor-toolbar-highlight-image);-webkit-mask-image:var(--editor-toolbar-highlight-image);mask-image:var(--editor-toolbar-highlight-image);background-color:var(--editor-toolbar-fg-color);width:100%;height:100%;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .highlightButton):hover:before{background-color:var(--editor-toolbar-hover-fg-color)}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .delete{width:var(--editor-toolbar-height)}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .delete):before{content:"";-webkit-mask-image:var(--editor-toolbar-delete-image);-webkit-mask-image:var(--editor-toolbar-delete-image);mask-image:var(--editor-toolbar-delete-image);background-color:var(--editor-toolbar-fg-color);width:100%;height:100%;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .delete):hover:before{background-color:var(--editor-toolbar-hover-fg-color)}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>*{height:var(--editor-toolbar-height)}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider){cursor:pointer;background-color:#0000;border:none}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider)):hover{background-color:var(--editor-toolbar-hover-bg-color);color:var(--editor-toolbar-hover-fg-color);outline:var(--editor-toolbar-hover-outline);outline-offset:1px;border-radius:2px}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider)):hover:active{outline:none}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons)>:not(.divider)):focus-visible{outline:2px solid var(--editor-toolbar-focus-outline-color);border-radius:2px}:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText{--alt-text-add-image:url("data:image/svg+xml,%3csvg%20width='12'%20height='13'%20viewBox='0%200%2012%2013'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.375%207.625V11.875C5.375%2012.0408%205.44085%2012.1997%205.55806%2012.3169C5.67527%2012.4342%205.83424%2012.5%206%2012.5C6.16576%2012.5%206.32473%2012.4342%206.44194%2012.3169C6.55915%2012.1997%206.625%2012.0408%206.625%2011.875V7.625L7.125%207.125H11.375C11.5408%207.125%2011.6997%207.05915%2011.8169%206.94194C11.9342%206.82473%2012%206.66576%2012%206.5C12%206.33424%2011.9342%206.17527%2011.8169%206.05806C11.6997%205.94085%2011.5408%205.875%2011.375%205.875H7.125L6.625%205.375V1.125C6.625%200.95924%206.55915%200.800269%206.44194%200.683058C6.32473%200.565848%206.16576%200.5%206%200.5C5.83424%200.5%205.67527%200.565848%205.55806%200.683058C5.44085%200.800269%205.375%200.95924%205.375%201.125V5.375L4.875%205.875H0.625C0.45924%205.875%200.300269%205.94085%200.183058%206.05806C0.065848%206.17527%200%206.33424%200%206.5C0%206.66576%200.065848%206.82473%200.183058%206.94194C0.300269%207.05915%200.45924%207.125%200.625%207.125H4.762L5.375%207.625Z'%20fill='black'/%3e%3c/svg%3e");--alt-text-done-image:url("data:image/svg+xml,%3csvg%20width='12'%20height='13'%20viewBox='0%200%2012%2013'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6%200.5C5.21207%200.5%204.43185%200.655195%203.7039%200.956723C2.97595%201.25825%202.31451%201.70021%201.75736%202.25736C1.20021%202.81451%200.758251%203.47595%200.456723%204.2039C0.155195%204.93185%200%205.71207%200%206.5C0%207.28793%200.155195%208.06815%200.456723%208.7961C0.758251%209.52405%201.20021%2010.1855%201.75736%2010.7426C2.31451%2011.2998%202.97595%2011.7417%203.7039%2012.0433C4.43185%2012.3448%205.21207%2012.5%206%2012.5C7.5913%2012.5%209.11742%2011.8679%2010.2426%2010.7426C11.3679%209.61742%2012%208.0913%2012%206.5C12%204.9087%2011.3679%203.38258%2010.2426%202.25736C9.11742%201.13214%207.5913%200.5%206%200.5ZM5.06%208.9L2.9464%206.7856C2.85273%206.69171%202.80018%206.56446%202.80033%206.43183C2.80048%206.29921%202.85331%206.17207%202.9472%206.0784C3.04109%205.98473%203.16834%205.93218%203.30097%205.93233C3.43359%205.93248%203.56073%205.98531%203.6544%206.0792L5.3112%207.7368L8.3464%204.7008C8.44109%204.6109%208.56715%204.56153%208.69771%204.56322C8.82827%204.56492%208.95301%204.61754%209.04534%204.70986C9.13766%204.80219%209.19028%204.92693%209.19198%205.05749C9.19367%205.18805%209.1443%205.31411%209.0544%205.4088L5.5624%208.9H5.06Z'%20fill='%23FBFBFE'/%3e%3c/svg%3e");pointer-events:all;width:max-content;font:menu;color:var(--editor-toolbar-fg-color);justify-content:center;align-items:center;padding-inline:8px;font-size:12px;font-weight:590;display:flex}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):disabled{pointer-events:none}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{content:"";-webkit-mask-image:var(--alt-text-add-image);-webkit-mask-image:var(--alt-text-add-image);mask-image:var(--alt-text-add-image);background-color:var(--editor-toolbar-fg-color);width:12px;height:13px;margin-inline-end:4px;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):hover:before{background-color:var(--editor-toolbar-hover-fg-color)}.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{-webkit-mask-image:var(--alt-text-done-image);-webkit-mask-image:var(--alt-text-done-image);mask-image:var(--alt-text-done-image)}.new:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{width:16px;height:16px;-webkit-mask-image:var(--new-alt-text-warning-image);-webkit-mask-image:var(--new-alt-text-warning-image);mask-image:var(--new-alt-text-warning-image);background-color:var(--alt-text-warning-color);-webkit-mask-size:cover;mask-size:cover}.new:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):hover:before{background-color:var(--alt-text-hover-warning-color)}.new.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):before{-webkit-mask-image:var(--alt-text-done-image);-webkit-mask-image:var(--alt-text-done-image);mask-image:var(--alt-text-done-image);background-color:var(--alt-text-done-color)}.new.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText):hover:before{background-color:var(--alt-text-hover-done-color)}:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip{word-wrap:anywhere;display:none}.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){--alt-text-tooltip-bg:#f0f0f4;--alt-text-tooltip-fg:#15141a;--alt-text-tooltip-border:#8f8f9d;--alt-text-tooltip-shadow:0px 2px 6px 0px #3a394433}@media (prefers-color-scheme:dark){.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){--alt-text-tooltip-bg:#1c1b22;--alt-text-tooltip-fg:#fbfbfe;--alt-text-tooltip-shadow:0px 2px 6px 0px #15141a}}@media screen and (forced-colors:active){.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){--alt-text-tooltip-bg:Canvas;--alt-text-tooltip-fg:CanvasText;--alt-text-tooltip-border:CanvasText;--alt-text-tooltip-shadow:none}}.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){top:calc(100% + 2px);border:.5px solid var(--alt-text-tooltip-border);background:var(--alt-text-tooltip-bg);width:max-content;max-width:300px;height:auto;box-shadow:var(--alt-text-tooltip-shadow);color:var(--alt-text-tooltip-fg);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;padding-block:2px 3px;padding-inline:3px;font-size:12px;display:inline-flex;position:absolute;inset-inline-start:0}.annotationEditorLayer .freeTextEditor{padding:calc(var(--freetext-padding) * var(--scale-factor));touch-action:none;width:auto;height:auto}.annotationEditorLayer .freeTextEditor .internal{white-space:nowrap;font:10px sans-serif;line-height:var(--freetext-line-height);-webkit-user-select:none;user-select:none;background:0 0;border:none;inset:0;overflow:visible}.annotationEditorLayer .freeTextEditor .overlay{background:0 0;width:100%;height:100%;display:none;position:absolute;inset:0}.annotationEditorLayer freeTextEditor .overlay.enabled{display:block}.annotationEditorLayer .freeTextEditor .internal:empty:before{content:attr(default-content);color:gray}.annotationEditorLayer .freeTextEditor .internal:focus{-webkit-user-select:auto;user-select:auto;outline:none}.annotationEditorLayer .inkEditor{width:100%;height:100%}.annotationEditorLayer .inkEditor.editing{cursor:inherit}.annotationEditorLayer .inkEditor .inkEditorCanvas{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.annotationEditorLayer .stampEditor{width:auto;height:auto}:is(.annotationEditorLayer .stampEditor) canvas{width:100%;height:100%;margin:0;position:absolute;top:0;left:0}:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{--no-alt-text-badge-border-color:#f0f0f4;--no-alt-text-badge-bg-color:#cfcfd8;--no-alt-text-badge-fg-color:#5b5b66}@media (prefers-color-scheme:dark){:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{--no-alt-text-badge-border-color:#52525e;--no-alt-text-badge-bg-color:#fbfbfe;--no-alt-text-badge-fg-color:#15141a}}@media screen and (forced-colors:active){:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{--no-alt-text-badge-border-color:ButtonText;--no-alt-text-badge-bg-color:ButtonFace;--no-alt-text-badge-fg-color:ButtonText}}:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{pointer-events:none;z-index:1;border:1px solid var(--no-alt-text-badge-border-color);background:var(--no-alt-text-badge-bg-color);border-radius:2px;justify-content:center;align-items:center;width:32px;height:32px;padding:3px;display:inline-flex;position:absolute;inset-block-end:5px;inset-inline-end:5px}:is(:is(.annotationEditorLayer .stampEditor) .noAltTextBadge):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--new-alt-text-warning-image);-webkit-mask-image:var(--new-alt-text-warning-image);mask-image:var(--new-alt-text-warning-image);background-color:var(--no-alt-text-badge-fg-color);display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers{position:absolute;inset:0}.hidden:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers){display:none}:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer{width:var(--resizer-size);height:var(--resizer-size);background:content-box var(--resizer-bg-color);border:var(--focus-outline-around);border-radius:2px;position:absolute}.topLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:var(--resizer-shift);left:var(--resizer-shift)}.topMiddle:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:var(--resizer-shift);left:calc(50% + var(--resizer-shift))}.topRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:var(--resizer-shift);right:var(--resizer-shift)}.middleRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:calc(50% + var(--resizer-shift));right:var(--resizer-shift)}.bottomRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){bottom:var(--resizer-shift);right:var(--resizer-shift)}.bottomMiddle:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){bottom:var(--resizer-shift);left:calc(50% + var(--resizer-shift))}.bottomLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){bottom:var(--resizer-shift);left:var(--resizer-shift)}.middleLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor))>.resizers)>.resizer){top:calc(50% + var(--resizer-shift));left:var(--resizer-shift)}.topLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.bottomRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:nwse-resize}.topMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.bottomMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:ns-resize}.topRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.bottomLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:nesw-resize}.middleRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer),.middleLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]))>.resizers>.resizer){cursor:ew-resize}.topLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.bottomRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:nesw-resize}.topMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.bottomMiddle:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:ew-resize}.topRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.bottomLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:nwse-resize}.middleRight:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer),.middleLeft:is(:is(.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"]),.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"]),.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"]),.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"]))>.resizers>.resizer){cursor:ns-resize}:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"])) .editToolbar{rotate:270deg}[dir=ltr] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"])) .editToolbar){inset-block-start:0;inset-inline-end:calc(0px - var(--editor-toolbar-vert-offset))}[dir=rtl] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"])) .editToolbar){inset-block-start:0;inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset))}:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="180"],[data-main-rotation="90"] [data-editor-rotation="90"],[data-main-rotation="180"] [data-editor-rotation="0"],[data-main-rotation="270"] [data-editor-rotation="270"])) .editToolbar{inset-block-start:calc(0pc - var(--editor-toolbar-vert-offset));inset-inline-end:100%;rotate:180deg}:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"])) .editToolbar{rotate:90deg}[dir=ltr] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"])) .editToolbar){inset-block-start:100%;inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset))}[dir=rtl] :is(:is(.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"])) .editToolbar){inset-block-start:0;inset-inline-start:calc(0px - var(--editor-toolbar-vert-offset))}.dialog.altText::backdrop{-webkit-mask:url(#alttext-manager-mask);mask:url(#alttext-manager-mask)}.dialog.altText.positioned{margin:0}.dialog.altText #altTextContainer{flex-direction:column;align-items:flex-start;gap:16px;width:300px;height:fit-content;display:inline-flex}:is(.dialog.altText #altTextContainer) #overallDescription{flex-direction:column;align-self:stretch;align-items:flex-start;gap:4px;display:flex}:is(:is(.dialog.altText #altTextContainer) #overallDescription) span{align-self:stretch}:is(:is(.dialog.altText #altTextContainer) #overallDescription) .title{font-size:13px;font-style:normal;font-weight:590}:is(.dialog.altText #altTextContainer) #addDescription{flex-direction:column;align-items:stretch;gap:8px;display:flex}:is(:is(.dialog.altText #altTextContainer) #addDescription) .descriptionArea{flex:1;padding-inline:24px 10px}:is(:is(:is(.dialog.altText #altTextContainer) #addDescription) .descriptionArea) textarea{width:100%;min-height:75px}:is(.dialog.altText #altTextContainer) #buttons{justify-content:flex-end;align-self:stretch;align-items:flex-start;gap:8px;display:flex}.dialog.newAltText{--new-alt-text-ai-disclaimer-icon:url("data:image/svg+xml,%3csvg%20width='17'%20height='16'%20viewBox='0%200%2017%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3.49073%201.3015L3.30873%202.1505C3.29349%202.22246%203.25769%202.28844%203.20568%202.34045C3.15368%202.39246%203.08769%202.42826%203.01573%202.4435L2.16673%202.6255C1.76473%202.7125%201.76473%203.2865%202.16673%203.3725L3.01573%203.5555C3.08769%203.57074%203.15368%203.60654%203.20568%203.65855C3.25769%203.71056%203.29349%203.77654%203.30873%203.8485L3.49073%204.6975C3.57773%205.0995%204.15173%205.0995%204.23773%204.6975L4.42073%203.8485C4.43598%203.77654%204.47177%203.71056%204.52378%203.65855C4.57579%203.60654%204.64178%203.57074%204.71373%203.5555L5.56173%203.3725C5.96373%203.2855%205.96373%202.7115%205.56173%202.6255L4.71273%202.4435C4.64083%202.42814%204.57491%202.3923%204.52292%202.34031C4.47093%202.28832%204.43509%202.2224%204.41973%202.1505L4.23773%201.3015C4.15073%200.8995%203.57673%200.8995%203.49073%201.3015ZM10.8647%2013.9995C10.4853%2014.0056%2010.1158%2013.8782%209.82067%2013.6397C9.52553%2013.4013%209.32347%2013.0667%209.24973%2012.6945L8.89273%2011.0275C8.83676%2010.7687%208.70738%2010.5316%208.52009%2010.3445C8.3328%2010.1574%208.09554%2010.0282%207.83673%209.9725L6.16973%209.6155C5.38873%209.4465%204.86473%208.7975%204.86473%207.9995C4.86473%207.2015%205.38873%206.5525%206.16973%206.3845L7.83673%206.0275C8.09551%205.97135%208.33267%205.84193%208.51992%205.65468C8.70716%205.46744%208.83658%205.23028%208.89273%204.9715L9.25073%203.3045C9.41773%202.5235%2010.0667%201.9995%2010.8647%201.9995C11.6627%201.9995%2012.3117%202.5235%2012.4797%203.3045L12.8367%204.9715C12.9507%205.4995%2013.3647%205.9135%2013.8927%206.0265L15.5597%206.3835C16.3407%206.5525%2016.8647%207.2015%2016.8647%207.9995C16.8647%208.7975%2016.3407%209.4465%2015.5597%209.6145L13.8927%209.9715C13.6337%2010.0275%2013.3963%2010.157%2013.209%2010.3445C13.0217%2010.5319%2012.8925%2010.7694%2012.8367%2011.0285L12.4787%2012.6945C12.4054%2013.0667%2012.2036%2013.4014%2011.9086%2013.6399C11.6135%2013.8784%2011.2441%2014.0057%2010.8647%2013.9995ZM10.8647%203.2495C10.7667%203.2495%2010.5337%203.2795%2010.4727%203.5655L10.1147%205.2335C10.0081%205.72777%209.76116%206.18082%209.40361%206.53837C9.04606%206.89593%208.59301%207.14283%208.09873%207.2495L6.43173%207.6065C6.14573%207.6685%206.11473%207.9015%206.11473%207.9995C6.11473%208.0975%206.14573%208.3305%206.43173%208.3925L8.09873%208.7495C8.59301%208.85617%209.04606%209.10307%209.40361%209.46062C9.76116%209.81817%2010.0081%2010.2712%2010.1147%2010.7655L10.4727%2012.4335C10.5337%2012.7195%2010.7667%2012.7495%2010.8647%2012.7495C10.9627%2012.7495%2011.1957%2012.7195%2011.2567%2012.4335L11.6147%2010.7665C11.7212%2010.272%2011.9681%209.81878%2012.3256%209.46103C12.6832%209.10329%2013.1363%208.85624%2013.6307%208.7495L15.2977%208.3925C15.5837%208.3305%2015.6147%208.0975%2015.6147%207.9995C15.6147%207.9015%2015.5837%207.6685%2015.2977%207.6065L13.6307%207.2495C13.1365%207.14283%2012.6834%206.89593%2012.3259%206.53837C11.9683%206.18082%2011.7214%205.72777%2011.6147%205.2335L11.2567%203.5655C11.1957%203.2795%2010.9627%203.2495%2010.8647%203.2495ZM3.30873%2012.1505L3.49073%2011.3015C3.57673%2010.8995%204.15073%2010.8995%204.23773%2011.3015L4.41973%2012.1505C4.43509%2012.2224%204.47093%2012.2883%204.52292%2012.3403C4.57491%2012.3923%204.64083%2012.4281%204.71273%2012.4435L5.56173%2012.6255C5.96373%2012.7115%205.96373%2013.2855%205.56173%2013.3725L4.71273%2013.5545C4.64083%2013.5699%204.57491%2013.6057%204.52292%2013.6577C4.47093%2013.7097%204.43509%2013.7756%204.41973%2013.8475L4.23773%2014.6965C4.15173%2015.0985%203.57773%2015.0985%203.49073%2014.6965L3.30873%2013.8475C3.29337%2013.7756%203.25754%2013.7097%203.20555%2013.6577C3.15356%2013.6057%203.08764%2013.5699%203.01573%2013.5545L2.16673%2013.3725C1.76473%2013.2865%201.76473%2012.7125%202.16673%2012.6255L3.01573%2012.4435C3.08769%2012.4283%203.15368%2012.3925%203.20568%2012.3405C3.25769%2012.2884%203.29349%2012.2225%203.30873%2012.1505Z'%20fill='black'/%3e%3c/svg%3e");--new-alt-text-spinner-icon:url("data:image/svg+xml,%3c!--%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%20-%20License,%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%20-%20file,%20You%20can%20obtain%20one%20at%20http://mozilla.org/MPL/2.0/.%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%20width='16'%20height='16'%3e%3cstyle%3e%20@media%20not%20(prefers-reduced-motion)%20{%20@keyframes%20loadingRotate%20{%20from%20{%20rotate:%200;%20}%20to%20{%20rotate:%20360deg%20}%20}%20%23circle-arrows%20{%20animation:%20loadingRotate%201.8s%20linear%20infinite;%20transform-origin:%2050%25%2050%25;%20}%20%23hourglass%20{%20display:%20none;%20}%20}%20@media%20(prefers-reduced-motion)%20{%20%23circle-arrows%20{%20display:%20none;%20}%20}%20%3c/style%3e%3cpath%20id='circle-arrows'%20d='M9%205.528c0%20.42.508.63.804.333l2.528-2.528a.47.47%200%200%200%200-.666L9.805.14A.471.471%200%200%200%209%20.472v1.866A5.756%205.756%200%200%200%202.25%208c0%20.942.232%201.83.635%202.615l1.143-1.143A4.208%204.208%200%200%201%203.75%208%204.254%204.254%200%200%201%208%203.75c.345%200%20.68.042%201%20.122v1.656zM7%2010.472v1.656c.32.08.655.122%201%20.122A4.254%204.254%200%200%200%2012.25%208c0-.52-.107-1.013-.279-1.474l1.143-1.143c.404.786.636%201.674.636%202.617A5.756%205.756%200%200%201%207%2013.662v1.866a.47.47%200%200%201-.804.333l-2.528-2.528a.47.47%200%200%201%200-.666l2.528-2.528a.47.47%200%200%201%20.804.333z'/%3e%3cg%20id='hourglass'%3e%3cpath%20d='M13,1%20C13.5522847,1%2014,1.44771525%2014,2%20C14,2.55228475%2013.5522847,3%2013,3%20L12.9854217,2.99990801%20C12.9950817,3.16495885%2013,3.33173274%2013,3.5%20C13,5.24679885%2010.9877318,6.01090495%2010.9877318,8.0017538%20C10.9877318,9.99260264%2013,10.7536922%2013,12.5%20C13,12.6686079%2012.9950617,12.8357163%2012.985363,13.0010943%20L13,13%20C13.5522847,13%2014,13.4477153%2014,14%20C14,14.5522847%2013.5522847,15%2013,15%20L3,15%20C2.44771525,15%202,14.5522847%202,14%20C2,13.4477153%202.44771525,13%203,13%20L3.01463704,13.0010943%20C3.00493827,12.8357163%203,12.6686079%203,12.5%20C3,10.7536922%204.9877318,9.99260264%205,8.0017538%20C5.0122682,6.01090495%203,5.24679885%203,3.5%20C3,3.33173274%203.00491834,3.16495885%203.01457832,2.99990801%20L3,3%20C2.44771525,3%202,2.55228475%202,2%20C2,1.44771525%202.44771525,1%203,1%20L13,1%20Z%20M10.987,3%20L5.012,3%20L5.00308914,3.24815712%20C5.00103707,3.33163368%205,3.4155948%205,3.5%20C5,5.36125069%206.99153646,6.01774089%206.99153646,8.0017538%20C6.99153646,9.98576671%205,10.6393737%205,12.5%20L5.00307746,12.7513676%20L5.01222201,12.9998392%20L5.60191711,12.9988344%20L6.0425138,12.2959826%20C7.02362731,10.7653275%207.67612271,10%208,10%20C8.37014547,10%209.16950644,10.9996115%2010.3980829,12.9988344%20L10.987778,12.9998392%20C10.9958674,12.8352104%2011,12.66849%2011,12.5%20C11,10.6393737%208.98689779,10.0147381%208.98689779,8.0017538%20C8.98689779,5.98876953%2011,5.36125069%2011,3.5%20L10.9969109,3.24815712%20L10.987,3%20Z'/%3e%3cpath%20d='M6,4%20L10,4%20C8.95166016,6%208.28499349,7%208,7%20C7.71500651,7%207.04833984,6%206,4%20Z'/%3e%3c/g%3e%3c/svg%3e");--preview-image-bg-color:#f0f0f4;--preview-image-border:none}@media (prefers-color-scheme:dark){.dialog.newAltText{--preview-image-bg-color:#2b2a33}}@media screen and (forced-colors:active){.dialog.newAltText{--preview-image-bg-color:ButtonFace;--preview-image-border:1px solid ButtonText}}.dialog.newAltText{width:80%;min-width:300px;max-width:570px;padding:0}.dialog.newAltText.noAi #newAltTextDisclaimer,.dialog.newAltText.noAi #newAltTextCreateAutomatically,.dialog.newAltText.aiInstalling #newAltTextCreateAutomatically{display:none!important}.dialog.newAltText.aiInstalling #newAltTextDownloadModel{display:flex!important}.dialog.newAltText.error #newAltTextNotNow{display:none!important}.dialog.newAltText.error #newAltTextCancel{display:inline-block!important}.dialog.newAltText:not(.error) #newAltTextError{display:none!important}.dialog.newAltText #newAltTextContainer{flex-direction:column;flex:0 auto;justify-content:flex-end;align-items:flex-start;gap:12px;width:auto;padding:16px;line-height:normal;display:flex}:is(.dialog.newAltText #newAltTextContainer) #mainContent{flex:auto;justify-content:flex-end;align-self:stretch;align-items:flex-start;gap:12px;display:flex}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionAndSettings{flex-direction:column;flex:1 0 0;align-self:stretch;align-items:flex-start;gap:16px;display:flex}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction{flex-direction:column;flex:auto;align-self:stretch;align-items:flex-start;gap:8px;display:flex}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer{width:100%;height:70px;position:relative}:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea{width:100%;height:100%;padding:8px}:is(:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea)::-moz-placeholder{color:var(--text-secondary-color)}:is(:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea)::placeholder{color:var(--text-secondary-color)}:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) .altTextSpinner{background-color:var(--text-secondary-color);pointer-events:none;width:16px;height:16px;display:none;position:absolute;inset-block-start:8px;inset-inline-start:8px;-webkit-mask-size:cover;mask-size:cover}.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea::-moz-placeholder{color:#0000}.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea::placeholder{color:#0000}.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) .altTextSpinner{-webkit-mask-image:var(--new-alt-text-spinner-icon);-webkit-mask-image:var(--new-alt-text-spinner-icon);mask-image:var(--new-alt-text-spinner-icon);display:inline-block}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescription{font-size:11px}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDisclaimer{flex-direction:row;align-items:flex-start;gap:4px;font-size:11px;display:flex}:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDisclaimer):before{content:"";width:17px;height:16px;-webkit-mask-image:var(--new-alt-text-ai-disclaimer-icon);-webkit-mask-image:var(--new-alt-text-ai-disclaimer-icon);mask-image:var(--new-alt-text-ai-disclaimer-icon);background-color:var(--text-secondary-color);flex:1 0 auto;display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextDownloadModel{align-self:stretch;align-items:center;gap:4px;display:flex}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextDownloadModel):before{content:"";width:16px;height:16px;-webkit-mask-image:var(--new-alt-text-spinner-icon);-webkit-mask-image:var(--new-alt-text-spinner-icon);mask-image:var(--new-alt-text-spinner-icon);background-color:var(--text-secondary-color);display:inline-block;-webkit-mask-size:cover;mask-size:cover}:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextImagePreview{aspect-ratio:1;background-color:var(--preview-image-bg-color);border:var(--preview-image-border);flex:none;justify-content:center;align-items:center;width:180px;display:flex}:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextImagePreview)>canvas{max-width:100%;max-height:100%}.colorPicker{--hover-outline-color:#0250bb;--selected-outline-color:#0060df;--swatch-border-color:#cfcfd8}@media (prefers-color-scheme:dark){.colorPicker{--hover-outline-color:#80ebff;--selected-outline-color:#aaf2ff;--swatch-border-color:#52525e}}@media screen and (forced-colors:active){.colorPicker{--hover-outline-color:Highlight;--selected-outline-color:var(--hover-outline-color);--swatch-border-color:ButtonText}}.colorPicker .swatch{border:1px solid var(--swatch-border-color);outline-offset:2px;box-sizing:border-box;forced-color-adjust:none;border-radius:100%;width:16px;height:16px}.colorPicker button:is(:hover,.selected)>.swatch{border:none}.annotationEditorLayer[data-main-rotation="0"] .highlightEditor:not(.free)>.editToolbar{rotate:0deg}.annotationEditorLayer[data-main-rotation="90"] .highlightEditor:not(.free)>.editToolbar{rotate:270deg}.annotationEditorLayer[data-main-rotation="180"] .highlightEditor:not(.free)>.editToolbar{rotate:180deg}.annotationEditorLayer[data-main-rotation="270"] .highlightEditor:not(.free)>.editToolbar{rotate:90deg}.annotationEditorLayer .highlightEditor{z-index:1;cursor:auto;pointer-events:none;transform-origin:0 0;background:0 0;border:none;outline:none;max-width:100%;max-height:100%;position:absolute}:is(.annotationEditorLayer .highlightEditor):not(.free){transform:none}:is(.annotationEditorLayer .highlightEditor) .internal{pointer-events:auto;width:100%;height:100%;position:absolute;top:0;left:0}.disabled:is(.annotationEditorLayer .highlightEditor) .internal{pointer-events:none}.selectedEditor:is(.annotationEditorLayer .highlightEditor) .internal{cursor:pointer}:is(.annotationEditorLayer .highlightEditor) .editToolbar{--editor-toolbar-colorpicker-arrow-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M8.23336%2010.4664L11.8474%206.85339C11.894%206.8071%2011.931%206.75203%2011.9563%206.69136C11.9816%206.63069%2011.9946%206.56562%2011.9946%206.49989C11.9946%206.43417%2011.9816%206.3691%2011.9563%206.30843C11.931%206.24776%2011.894%206.19269%2011.8474%206.14639C11.7536%206.05266%2011.6264%206%2011.4939%206C11.3613%206%2011.2341%206.05266%2011.1404%206.14639L7.99236%209.29339L4.84736%206.14739C4.75305%206.05631%204.62675%206.00592%204.49566%206.00706C4.36456%206.0082%204.23915%206.06078%204.14645%206.15348C4.05374%206.24619%204.00116%206.37159%204.00002%206.50269C3.99888%206.63379%204.04928%206.76009%204.14036%206.85439L7.75236%2010.4674L8.23336%2010.4664Z'%20fill='black'/%3e%3c/svg%3e");transform-origin:50%!important}:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker{justify-content:center;align-items:center;gap:4px;width:auto;padding:4px;display:flex;position:relative}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):after{content:"";-webkit-mask-image:var(--editor-toolbar-colorpicker-arrow-image);-webkit-mask-image:var(--editor-toolbar-colorpicker-arrow-image);mask-image:var(--editor-toolbar-colorpicker-arrow-image);background-color:var(--editor-toolbar-fg-color);width:12px;height:12px;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):hover:after{background-color:var(--editor-toolbar-hover-fg-color)}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):has(.dropdown:not(.hidden)){background-color:var(--editor-toolbar-hover-bg-color)}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):has(.dropdown:not(.hidden)):after{scale:-1}:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown{background-color:var(--editor-toolbar-bg-color);border:1px solid var(--editor-toolbar-border-color);box-shadow:var(--editor-toolbar-shadow);width:calc(100% + 2 * var(--editor-toolbar-padding));border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:11px;padding-block:8px;display:flex;position:absolute;inset-block-start:calc(100% + 4px)}:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:100%;height:auto;display:flex}:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button):is(:active,:focus-visible){outline:none}:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button)>.swatch{outline-offset:2px}[aria-selected=true]:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button)>.swatch{outline:2px solid var(--selected-outline-color)}:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button):is(:hover,:active,:focus-visible)>.swatch{outline:2px solid var(--hover-outline-color)}.editorParamsToolbar:has(#highlightParamsToolbarContainer){padding:unset}#highlightParamsToolbarContainer{gap:16px;padding-block-end:12px;padding-inline:10px}#highlightParamsToolbarContainer .colorPicker{flex-direction:column;gap:8px;display:flex}:is(#highlightParamsToolbarContainer .colorPicker) .dropdown{flex-direction:row;justify-content:space-between;align-items:center;height:auto;display:flex}:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button{cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;width:auto;height:auto;padding:0;display:flex}:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button) .swatch{width:24px;height:24px}:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button):is(:active,:focus-visible){outline:none}[aria-selected=true]:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button)>.swatch{outline:2px solid var(--selected-outline-color)}:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button):is(:hover,:active,:focus-visible)>.swatch{outline:2px solid var(--hover-outline-color)}#highlightParamsToolbarContainer #editorHighlightThickness{flex-direction:column;align-self:stretch;align-items:center;gap:4px;display:flex}:is(#highlightParamsToolbarContainer #editorHighlightThickness) .editorParamsLabel{align-self:stretch;height:auto}:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{--example-color:#bfbfc9;justify-content:space-between;align-self:stretch;align-items:center;display:flex}@media (prefers-color-scheme:dark){:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{--example-color:#80808e}}@media screen and (forced-colors:active){:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{--example-color:CanvasText}}:is(:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker)>.editorParamsSlider[disabled]){opacity:.4}:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker):before,:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker):after{content:"";aspect-ratio:1;background-color:var(--example-color);border-radius:100%;width:8px;display:block}:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker):after{width:24px}:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker) .editorParamsSlider{width:unset;height:14px}#highlightParamsToolbarContainer #editorHighlightVisibility{flex-direction:column;align-self:stretch;align-items:flex-start;gap:8px;display:flex}:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{--divider-color:#d7d7db}@media (prefers-color-scheme:dark){:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{--divider-color:#8f8f9d}}@media screen and (forced-colors:active){:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{--divider-color:CanvasText}}:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{background-color:var(--divider-color);width:100%;height:1px;margin-block:4px}:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .toggler{justify-content:space-between;align-self:stretch;align-items:center;display:flex}#altTextSettingsDialog{padding:16px}#altTextSettingsDialog #altTextSettingsContainer{flex-direction:column;gap:16px;width:573px;display:flex}:is(#altTextSettingsDialog #altTextSettingsContainer) .mainContainer{gap:16px}:is(#altTextSettingsDialog #altTextSettingsContainer) .description{color:var(--text-secondary-color)}:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings{flex-direction:column;gap:12px;display:flex}:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings) button{width:fit-content}.download:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings) #deleteModelButton,:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings):not(.download) #downloadModelButton{display:none}:is(#altTextSettingsDialog #altTextSettingsContainer) #automaticAltText,:is(#altTextSettingsDialog #altTextSettingsContainer) #altTextEditor{flex-direction:column;gap:8px;display:flex}:is(#altTextSettingsDialog #altTextSettingsContainer) #createModelDescription,:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings,:is(#altTextSettingsDialog #altTextSettingsContainer) #showAltTextDialogDescription{padding-inline-start:40px}:is(#altTextSettingsDialog #altTextSettingsContainer) #automaticSettings{flex-direction:column;gap:16px;display:flex}:root{--viewer-container-height:0;--pdfViewer-padding-bottom:0;--page-margin:1px auto -8px;--page-border:9px solid transparent;--spreadHorizontalWrapped-margin-LR:-3.5px;--loading-icon-delay:.4s}@media screen and (forced-colors:active){:root{--pdfViewer-padding-bottom:9px;--page-margin:8px auto -1px;--page-border:1px solid CanvasText;--spreadHorizontalWrapped-margin-LR:3.5px}}[data-main-rotation="90"]{transform:rotate(90deg)translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg)translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg)translate(-100%)}#hiddenCopyElement,.hiddenCanvasElement{width:0;height:0;display:none;position:absolute;top:0;left:0}.pdfViewer{--scale-factor:1;--page-bg-color:unset;padding-bottom:var(--pdfViewer-padding-bottom);--hcm-highlight-filter:none;--hcm-highlight-selected-filter:none}@media screen and (forced-colors:active){.pdfViewer{--hcm-highlight-filter:invert(100%)}}.pdfViewer.copyAll{cursor:wait}.pdfViewer .canvasWrapper{width:100%;height:100%;overflow:hidden}:is(.pdfViewer .canvasWrapper) canvas{contain:content;width:100%;height:100%;margin:0;display:block;position:absolute;top:0;left:0}:is(:is(.pdfViewer .canvasWrapper) canvas) .structTree{contain:strict}.pdfViewer .page{--scale-round-x:1px;--scale-round-y:1px;width:816px;height:1056px;margin:var(--page-margin);border:var(--page-border);background-clip:content-box;background-color:var(--page-bg-color,#fff);direction:ltr;position:relative;overflow:visible}.pdfViewer .dummyPage{width:0;height:var(--viewer-container-height);position:relative}.pdfViewer.noUserSelect{-webkit-user-select:none;user-select:none}.pdfViewer.removePageBorders .page{border:none;margin:0 auto 10px}.pdfViewer.singlePageView{display:inline-block}.pdfViewer.singlePageView .page{border:none;margin:0}.pdfViewer:is(.scrollHorizontal,.scrollWrapped),.spread{text-align:center;margin-inline:3.5px}.pdfViewer.scrollHorizontal,.spread{white-space:nowrap}.pdfViewer.removePageBorders,.pdfViewer:is(.scrollHorizontal,.scrollWrapped) .spread{margin-inline:0}.spread :is(.page,.dummyPage),.pdfViewer:is(.scrollHorizontal,.scrollWrapped) :is(.page,.spread){vertical-align:middle;display:inline-block}.spread .page,.pdfViewer:is(.scrollHorizontal,.scrollWrapped) .page{margin-inline:var(--spreadHorizontalWrapped-margin-LR)}.pdfViewer.removePageBorders .spread .page,.pdfViewer.removePageBorders:is(.scrollHorizontal,.scrollWrapped) .page{margin-inline:5px}.pdfViewer .page.loadingIcon:after{content:"";width:100%;height:100%;transition-property:display;transition-delay:var(--loading-icon-delay);z-index:5;contain:strict;background:url(data:image/gif;base64,R0lGODlhGAAYAPQAAP///wAAAM7Ozvr6+uDg4LCwsOjo6I6OjsjIyJycnNjY2KioqMDAwPLy8nZ2doaGhri4uGhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJBwAAACwAAAAAGAAYAAAFriAgjiQAQWVaDgr5POSgkoTDjFE0NoQ8iw8HQZQTDQjDn4jhSABhAAOhoTqSDg7qSUQwxEaEwwFhXHhHgzOA1xshxAnfTzotGRaHglJqkJcaVEqCgyoCBQkJBQKDDXQGDYaIioyOgYSXA36XIgYMBWRzXZoKBQUMmil0lgalLSIClgBpO0g+s26nUWddXyoEDIsACq5SsTMMDIECwUdJPw0Mzsu0qHYkw72bBmozIQAh+QQJBwAAACwAAAAAGAAYAAAFsCAgjiTAMGVaDgR5HKQwqKNxIKPjjFCk0KNXC6ATKSI7oAhxWIhezwhENTCQEoeGCdWIPEgzESGxEIgGBWstEW4QCGGAIJEoxGmGt5ZkgCRQQHkGd2CESoeIIwoMBQUMP4cNeQQGDYuNj4iSb5WJnmeGng0CDGaBlIQEJziHk3sABidDAHBgagButSKvAAoyuHuUYHgCkAZqebw0AgLBQyyzNKO3byNuoSS8x8OfwIchACH5BAkHAAAALAAAAAAYABgAAAW4ICCOJIAgZVoOBJkkpDKoo5EI43GMjNPSokXCINKJCI4HcCRIQEQvqIOhGhBHhUTDhGo4diOZyFAoKEQDxra2mAEgjghOpCgz3LTBIxJ5kgwMBShACREHZ1V4Kg1rS44pBAgMDAg/Sw0GBAQGDZGTlY+YmpyPpSQDiqYiDQoCliqZBqkGAgKIS5kEjQ21VwCyp76dBHiNvz+MR74AqSOdVwbQuo+abppo10ssjdkAnc0rf8vgl8YqIQAh+QQJBwAAACwAAAAAGAAYAAAFrCAgjiQgCGVaDgZZFCQxqKNRKGOSjMjR0qLXTyciHA7AkaLACMIAiwOC1iAxCrMToHHYjWQiA4NBEA0Q1RpWxHg4cMXxNDk4OBxNUkPAQAEXDgllKgMzQA1pSYopBgonCj9JEA8REQ8QjY+RQJOVl4ugoYssBJuMpYYjDQSliwasiQOwNakALKqsqbWvIohFm7V6rQAGP6+JQLlFg7KDQLKJrLjBKbvAor3IKiEAIfkECQcAAAAsAAAAABgAGAAABbUgII4koChlmhokw5DEoI4NQ4xFMQoJO4uuhignMiQWvxGBIQC+AJBEUyUcIRiyE6CR0CllW4HABxBURTUw4nC4FcWo5CDBRpQaCoF7VjgsyCUDYDMNZ0mHdwYEBAaGMwwHDg4HDA2KjI4qkJKUiJ6faJkiA4qAKQkRB3E0i6YpAw8RERAjA4tnBoMApCMQDhFTuySKoSKMJAq6rD4GzASiJYtgi6PUcs9Kew0xh7rNJMqIhYchACH5BAkHAAAALAAAAAAYABgAAAW0ICCOJEAQZZo2JIKQxqCOjWCMDDMqxT2LAgELkBMZCoXfyCBQiFwiRsGpku0EshNgUNAtrYPT0GQVNRBWwSKBMp98P24iISgNDAS4ipGA6JUpA2WAhDR4eWM/CAkHBwkIDYcGiTOLjY+FmZkNlCN3eUoLDmwlDW+AAwcODl5bYl8wCVYMDw5UWzBtnAANEQ8kBIM0oAAGPgcREIQnVloAChEOqARjzgAQEbczg8YkWJq8nSUhACH5BAkHAAAALAAAAAAYABgAAAWtICCOJGAYZZoOpKKQqDoORDMKwkgwtiwSBBYAJ2owGL5RgxBziQQMgkwoMkhNqAEDARPSaiMDFdDIiRSFQowMXE8Z6RdpYHWnEAWGPVkajPmARVZMPUkCBQkJBQINgwaFPoeJi4GVlQ2Qc3VJBQcLV0ptfAMJBwdcIl+FYjALQgimoGNWIhAQZA4HXSpLMQ8PIgkOSHxAQhERPw7ASTSFyCMMDqBTJL8tf3y2fCEAIfkECQcAAAAsAAAAABgAGAAABa8gII4k0DRlmg6kYZCoOg5EDBDEaAi2jLO3nEkgkMEIL4BLpBAkVy3hCTAQKGAznM0AFNFGBAbj2cA9jQixcGZAGgECBu/9HnTp+FGjjezJFAwFBQwKe2Z+KoCChHmNjVMqA21nKQwJEJRlbnUFCQlFXlpeCWcGBUACCwlrdw8RKGImBwktdyMQEQciB7oACwcIeA4RVwAODiIGvHQKERAjxyMIB5QlVSTLYLZ0sW8hACH5BAkHAAAALAAAAAAYABgAAAW0ICCOJNA0ZZoOpGGQrDoOBCoSxNgQsQzgMZyIlvOJdi+AS2SoyXrK4umWPM5wNiV0UDUIBNkdoepTfMkA7thIECiyRtUAGq8fm2O4jIBgMBA1eAZ6Knx+gHaJR4QwdCMKBxEJRggFDGgQEREPjjAMBQUKIwIRDhBDC2QNDDEKoEkDoiMHDigICGkJBS2dDA6TAAnAEAkCdQ8ORQcHTAkLcQQODLPMIgIJaCWxJMIkPIoAt3EhACH5BAkHAAAALAAAAAAYABgAAAWtICCOJNA0ZZoOpGGQrDoOBCoSxNgQsQzgMZyIlvOJdi+AS2SoyXrK4umWHM5wNiV0UN3xdLiqr+mENcWpM9TIbrsBkEck8oC0DQqBQGGIz+t3eXtob0ZTPgNrIwQJDgtGAgwCWSIMDg4HiiUIDAxFAAoODwxDBWINCEGdSTQkCQcoegADBaQ6MggHjwAFBZUFCm0HB0kJCUy9bAYHCCPGIwqmRq0jySMGmj6yRiEAIfkECQcAAAAsAAAAABgAGAAABbIgII4k0DRlmg6kYZCsOg4EKhLE2BCxDOAxnIiW84l2L4BLZKipBopW8XRLDkeCiAMyMvQAA+uON4JEIo+vqukkKQ6RhLHplVGN+LyKcXA4Dgx5DWwGDXx+gIKENnqNdzIDaiMECwcFRgQCCowiCAcHCZIlCgICVgSfCEMMnA0CXaU2YSQFoQAKUQMMqjoyAglcAAyBAAIMRUYLCUkFlybDeAYJryLNk6xGNCTQXY0juHghACH5BAkHAAAALAAAAAAYABgAAAWzICCOJNA0ZVoOAmkY5KCSSgSNBDE2hDyLjohClBMNij8RJHIQvZwEVOpIekRQJyJs5AMoHA+GMbE1lnm9EcPhOHRnhpwUl3AsknHDm5RN+v8qCAkHBwkIfw1xBAYNgoSGiIqMgJQifZUjBhAJYj95ewIJCQV7KYpzBAkLLQADCHOtOpY5PgNlAAykAEUsQ1wzCgWdCIdeArczBQVbDJ0NAqyeBb64nQAGArBTt8R8mLuyPyEAOwAAAAAAAAAAAA==) 50% no-repeat;display:none;position:absolute;top:0;left:0}.pdfViewer .page.loading:after{display:block}.pdfViewer .page:not(.loading):after{transition-property:none;display:none}.pdfPresentationMode .pdfViewer{padding-bottom:0}.pdfPresentationMode .spread{margin:0}.pdfPresentationMode .pdfViewer .page{border:2px solid #0000;margin:0 auto}.textLayer{z-index:2;opacity:1;mix-blend-mode:multiply;display:flex}.annotationLayer{z-index:3;position:absolute;top:0}html body .textLayer>div:not(.PdfHighlighter__highlight-layer):not(.TextHighlight):not(.TextHighlight-icon){opacity:1;mix-blend-mode:multiply}.textLayer ::selection{mix-blend-mode:multiply}@media (-ms-high-contrast:none),(-ms-high-contrast:active){.textLayer{opacity:.5;opacity:.5}}@supports (-ms-ime-align:auto){.textLayer{opacity:.5}}.PdfHighlighter{width:100%;height:100%;position:absolute;overflow:auto}.PdfHighlighter::-webkit-scrollbar{width:10px;height:10px}.PdfHighlighter::-webkit-scrollbar-thumb{background-color:#9f9f9f;border-radius:5px}.PdfHighlighter::-webkit-scrollbar-thumb:hover{background-color:#d1d1d1}.PdfHighlighter::-webkit-scrollbar-track{background-color:#2c2c2c;border-radius:5px}.PdfHighlighter::-webkit-scrollbar-track-piece{background-color:#2c2c2c}.PdfHighlighter__tip-container{z-index:6;position:absolute}.PdfHighlighter__highlight-layer{z-index:4;pointer-events:none;position:absolute;inset:0}.textLayer>.PdfHighlighter__highlight-layer{z-index:4}.PdfHighlighter__note-layer{z-index:5;mix-blend-mode:normal;pointer-events:none;position:absolute;inset:0}.PdfHighlighter__config-layer{z-index:6;mix-blend-mode:normal;pointer-events:none;position:absolute;inset:0}.PdfHighlighter__highlight-layer>div,.PdfHighlighter__highlight-layer .MonitoredHighlightContainer,.PdfHighlighter__highlight-layer .TextHighlight,.PdfHighlighter__highlight-layer .AreaHighlight,.PdfHighlighter__highlight-layer .FreetextHighlight,.PdfHighlighter__highlight-layer .ImageHighlight,.PdfHighlighter__highlight-layer .DrawingHighlight,.PdfHighlighter__highlight-layer .ShapeHighlight,.PdfHighlighter__note-layer>div,.PdfHighlighter__note-layer .FreetextHighlight,.PdfHighlighter__config-layer>*{pointer-events:auto}.PdfHighlighter--disable-selection{-webkit-user-select:none;user-select:none;pointer-events:none}.PdfHighlighter--freetext-mode,.PdfHighlighter--freetext-mode .pdfViewer,.PdfHighlighter--freetext-mode .textLayer,.PdfHighlighter--image-mode,.PdfHighlighter--image-mode .pdfViewer,.PdfHighlighter--image-mode .textLayer,.PdfHighlighter--drawing-mode,.PdfHighlighter--drawing-mode .pdfViewer,.PdfHighlighter--drawing-mode .textLayer,.PdfHighlighter--area-mode,.PdfHighlighter--area-mode .pdfViewer,.PdfHighlighter--area-mode .textLayer{cursor:crosshair}.PdfHighlighter--dark .page{filter:invert(.9)hue-rotate(180deg)brightness(1.05)}.PdfHighlighter--dark .PdfHighlighter__highlight-layer,.PdfHighlighter--dark .PdfHighlighter__note-layer,.PdfHighlighter--dark .PdfHighlighter__config-layer{filter:invert(.9)hue-rotate(180deg)brightness(.95)}.MouseSelection{mix-blend-mode:multiply;background:#99c1da;border:1px dashed #333;position:absolute}@media (-ms-high-contrast:none),(-ms-high-contrast:active){.MouseSelection{opacity:.5}}@supports (-ms-ime-align:auto){.MouseSelection{opacity:.5}}.TextHighlight{position:absolute}.TextHighlight__parts{opacity:1}.TextHighlight__part{cursor:pointer;background:#ffe28f;transition:background .3s,box-shadow .2s;position:absolute}.TextHighlight--scrolledTo .TextHighlight__part{box-shadow:0 0 0 2px #ff4141,0 0 0 4px #ff414133}.TextHighlight__toolbar-wrapper{z-index:10}.TextHighlight__toolbar{opacity:0;pointer-events:none;background:#000000b3;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex}.TextHighlight__toolbar--visible{opacity:1;pointer-events:auto}.TextHighlight__style-button,.TextHighlight__copy-button,.TextHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.TextHighlight__style-button:hover,.TextHighlight__copy-button:hover{background:#fff3}.TextHighlight__delete-button:hover{background:#ff646499}.TextHighlight__style-panel{background:#000000e6;border-radius:6px;min-width:180px;margin-top:4px;padding:8px;box-shadow:0 2px 8px #0000004d}.TextHighlight__style-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.TextHighlight__style-row:last-child{margin-bottom:0}.TextHighlight__style-row label{color:#ccc;text-transform:uppercase;letter-spacing:.5px;margin-right:8px;font-size:11px}.TextHighlight__style-buttons{gap:4px;display:flex}.TextHighlight__style-type-button{cursor:pointer;color:#f5f5f5;background:0 0;border:1px solid #666;border-radius:4px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:all .2s;display:flex}.TextHighlight__style-type-button:hover{border-color:#b958ff}.TextHighlight__style-type-button.active{color:#b958ff;background:#b958ff33;border-color:#b958ff}.TextHighlight__color-options{align-items:center;gap:6px;display:flex}.TextHighlight__color-presets{gap:4px;display:flex}.TextHighlight__color-preset{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;height:18px;padding:0;transition:transform .2s,border-color .2s}.TextHighlight__color-preset:hover{transform:scale(1.15)}.TextHighlight__color-preset.active{border-color:#b958ff}.TextHighlight__color-options input[type=color]{cursor:pointer;background:0 0;border:none;border-radius:4px;width:24px;height:24px;padding:0}.TextHighlight__color-options input[type=color]::-webkit-color-swatch-wrapper{padding:0}.TextHighlight__color-options input[type=color]::-webkit-color-swatch{border:1px solid #666;border-radius:4px}.TextHighlight__part--underline{border-bottom:2px solid;background:0 0!important}.TextHighlight__part.TextHighlight__part--strikethrough{overflow:visible;background:0 0!important}.TextHighlight__part.TextHighlight__part--strikethrough:after{content:"";pointer-events:none;z-index:1;background-color:currentColor;height:2px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.AreaHighlight{position:absolute}.AreaHighlight__part{cursor:pointer;background:#ffe28f;transition:background .3s,box-shadow .2s;position:absolute}.AreaHighlight--scrolledTo .AreaHighlight__part{box-shadow:0 0 0 2px #ff4141,0 0 0 4px #ff414133}.AreaHighlight__toolbar-wrapper{z-index:10}.AreaHighlight__toolbar{opacity:0;pointer-events:none;background:#000000b3;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex}.AreaHighlight__toolbar--visible{opacity:1;pointer-events:auto}.AreaHighlight__style-button,.AreaHighlight__copy-button,.AreaHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.AreaHighlight__style-button:hover,.AreaHighlight__copy-button:hover{background:#fff3}.AreaHighlight__delete-button:hover{background:#ff646499}.AreaHighlight__style-panel{background:#000000e6;border-radius:6px;min-width:160px;margin-top:4px;padding:8px;box-shadow:0 2px 8px #0000004d}.AreaHighlight__style-row{justify-content:space-between;align-items:center;display:flex}.AreaHighlight__style-row label{color:#ccc;text-transform:uppercase;letter-spacing:.5px;margin-right:8px;font-size:11px}.AreaHighlight__color-options{align-items:center;gap:6px;display:flex}.AreaHighlight__color-presets{gap:4px;display:flex}.AreaHighlight__color-preset{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;height:18px;padding:0;transition:transform .2s,border-color .2s}.AreaHighlight__color-preset:hover{transform:scale(1.15)}.AreaHighlight__color-preset.active{border-color:#b958ff}.AreaHighlight__color-options input[type=color]{cursor:pointer;background:0 0;border:none;border-radius:4px;width:24px;height:24px;padding:0}.AreaHighlight__color-options input[type=color]::-webkit-color-swatch-wrapper{padding:0}.AreaHighlight__color-options input[type=color]::-webkit-color-swatch{border:1px solid #666;border-radius:4px}.FreetextHighlight{z-index:30;isolation:isolate;position:absolute}.FreetextHighlight--editing,.FreetextHighlight:hover{z-index:40}.FreetextHighlight--collapsed{z-index:35}.FreetextHighlight__container{border-radius:4px;flex-direction:column;width:100%;height:100%;transition:box-shadow .2s;display:flex;overflow:visible;box-shadow:2px 2px 8px #0003}.FreetextHighlight__rnd{z-index:inherit}.FreetextHighlight__container:hover{box-shadow:2px 2px 12px #0000004d}.FreetextHighlight__toolbar{z-index:10;opacity:0;background:#0009;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex;position:absolute;top:4px;left:4px}.FreetextHighlight__container:hover .FreetextHighlight__toolbar{opacity:1}.FreetextHighlight__drag-handle{cursor:grab;-webkit-user-select:none;user-select:none;color:#fff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;transition:background .2s;display:flex}.FreetextHighlight__drag-handle:hover{background:#fff3}.FreetextHighlight__drag-handle:active{cursor:grabbing}.FreetextHighlight__edit-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__edit-button:hover{background:#fff3}.FreetextHighlight__content{z-index:1;flex:1;padding:8px;position:relative;overflow:hidden}.FreetextHighlight__text{cursor:text;word-wrap:break-word;white-space:pre-wrap;width:100%;height:100%;overflow:auto}.FreetextHighlight__input{width:100%;height:100%;font:inherit;color:inherit;resize:none;background:0 0;border:none;outline:none;margin:0;padding:0}.FreetextHighlight--scrolledTo .FreetextHighlight__container{box-shadow:0 0 0 3px #ff4141,2px 2px 8px #0003}.FreetextHighlight--editing .FreetextHighlight__container{box-shadow:0 0 0 2px #4a90d9,2px 2px 8px #0003}.FreetextHighlight__style-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__style-button:hover{background:#fff3}.FreetextHighlight__style-panel{z-index:9999;background:#fff;border:1px solid #00000026;border-radius:4px;margin-top:2px;padding:8px;position:absolute;top:100%;left:0;right:0;box-shadow:0 4px 12px #00000040}.FreetextHighlight__style-row{flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:8px;display:flex}.FreetextHighlight__style-row:last-child{margin-bottom:0}.FreetextHighlight__style-row label{color:#555;white-space:nowrap;font-size:11px}.FreetextHighlight__style-row input[type=color]{cursor:pointer;border:1px solid #00000026;border-radius:3px;width:28px;height:24px;padding:0}.FreetextHighlight__style-row select{cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:3px;min-width:80px;padding:4px 6px;font-size:11px}.FreetextHighlight__color-options{flex-wrap:wrap;align-items:center;gap:6px;width:100%;display:flex}.FreetextHighlight__color-presets{flex-wrap:wrap;gap:4px;display:flex}.FreetextHighlight__color-preset{cursor:pointer;border:2px solid #00000026;border-radius:3px;width:20px;height:20px;padding:0;transition:transform .15s,border-color .15s}.FreetextHighlight__color-preset:hover{border-color:#0000004d;transform:scale(1.15)}.FreetextHighlight__color-preset.active{border-color:#333;box-shadow:0 0 0 1px #fff,0 0 0 2px #333}.FreetextHighlight__color-preset--transparent{background-color:#fff;background-image:linear-gradient(45deg,#ccc 25%,#0000 25%),linear-gradient(-45deg,#ccc 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#ccc 75%),linear-gradient(-45deg,#0000 75%,#ccc 75%);background-position:0 0,0 4px,4px -4px,-4px 0;background-repeat:repeat,repeat,repeat,repeat;background-size:8px 8px;background-attachment:scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box}.FreetextHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__delete-button:hover{background:#ff646499}.FreetextHighlight__collapse-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.FreetextHighlight__collapse-button:hover{background:#fff3}.FreetextHighlight--collapsed .FreetextHighlight__container{border-radius:999px;justify-content:center;align-items:center;overflow:hidden;box-shadow:0 2px 8px #0000003d}.FreetextHighlight__compact-button{border-radius:inherit;width:100%;height:100%;color:inherit;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.FreetextHighlight__compact-button:hover{background:#00000014}.ImageHighlight{position:absolute}.ImageHighlight__container{border-radius:4px;flex-direction:column;width:100%;height:100%;transition:box-shadow .2s;display:flex;overflow:visible}.ImageHighlight__container:hover{box-shadow:2px 2px 12px #0000004d}.ImageHighlight__toolbar{z-index:10;opacity:0;background:#0009;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex;position:absolute;top:4px;left:4px}.ImageHighlight__container:hover .ImageHighlight__toolbar,.ImageHighlight--scrolledTo .ImageHighlight__toolbar{opacity:1}.ImageHighlight__drag-handle{cursor:grab;color:#fff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;transition:background .2s;display:flex}.ImageHighlight__drag-handle:hover{background:#fff3}.ImageHighlight__drag-handle:active{cursor:grabbing}.ImageHighlight__content{background:#fff;border-radius:4px;flex:1;justify-content:center;align-items:center;display:flex;overflow:hidden}.ImageHighlight__image{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%}.ImageHighlight--scrolledTo .ImageHighlight__container{box-shadow:0 0 0 3px #ff4141,2px 2px 8px #0003}.ImageHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.ImageHighlight__delete-button:hover{background:#ff646499}.DrawingHighlight{position:absolute}.DrawingHighlight__container{border-radius:4px;flex-direction:column;width:100%;height:100%;transition:box-shadow .2s;display:flex;overflow:visible}.DrawingHighlight__container:hover{box-shadow:2px 2px 12px #0000004d}.DrawingHighlight__toolbar{z-index:10;opacity:0;background:#0009;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex;position:absolute;top:4px;left:4px}.DrawingHighlight__toolbar--floating{position:absolute;top:auto;left:auto}.DrawingHighlight__toolbar--visible,.DrawingHighlight__container:hover .DrawingHighlight__toolbar{opacity:1}.DrawingHighlight__drag-handle{cursor:grab;color:#fff;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;transition:background .2s;display:flex}.DrawingHighlight__drag-handle:hover{background:#fff3}.DrawingHighlight__drag-handle:active{cursor:grabbing}.DrawingHighlight__content{background:0 0;border-radius:4px;flex:1;justify-content:center;align-items:center;display:flex;overflow:hidden}.DrawingHighlight__image{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;max-width:100%;max-height:100%}.DrawingHighlight--scrolledTo .DrawingHighlight__container{box-shadow:0 0 0 3px #ff4141,2px 2px 8px #0003}.DrawingHighlight__style-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.DrawingHighlight__style-button:hover{background:#fff3}.DrawingHighlight__style-controls{z-index:20;background:#000000d9;border-radius:6px;flex-direction:column;gap:8px;min-width:120px;padding:8px;display:flex;position:absolute;top:28px;left:4px;box-shadow:0 2px 8px #0000004d}.DrawingHighlight__color-picker{flex-wrap:wrap;gap:4px;display:flex}.DrawingHighlight__color-button{cursor:pointer;border:2px solid #0000;border-radius:50%;width:20px;height:20px;padding:0;transition:transform .2s,border-color .2s}.DrawingHighlight__color-button:hover{transform:scale(1.15)}.DrawingHighlight__color-button.active{border-color:#b958ff}.DrawingHighlight__width-picker{gap:4px;display:flex}.DrawingHighlight__width-button{color:#f5f5f5;cursor:pointer;background:0 0;border:1px solid #666;border-radius:4px;padding:2px 6px;font-size:10px;transition:color .2s,border-color .2s,background-color .2s}.DrawingHighlight__width-button:hover{border-color:#b958ff}.DrawingHighlight__width-button.active{color:#b958ff;background-color:#b958ff33;border-color:#b958ff}.DrawingHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.DrawingHighlight__delete-button:hover{background:#ff646499}.DrawingCanvas{z-index:5;cursor:crosshair;touch-action:none;position:absolute;top:0;left:0}.DrawingCanvas__controls{z-index:10;background-color:#2b2e33f2;border-radius:8px;gap:10px;padding:10px 20px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}.DrawingCanvas__controls button{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-size:14px;transition:background-color .2s,transform .1s}.DrawingCanvas__controls button:hover{transform:scale(1.02)}.DrawingCanvas__doneButton{color:#fff;background-color:#4caf50}.DrawingCanvas__doneButton:hover{background-color:#45a049}.DrawingCanvas__cancelButton{color:#fff;background-color:#f44336}.DrawingCanvas__cancelButton:hover{background-color:#da190b}.DrawingCanvas__clearButton{color:#fff;background-color:#ff9800}.DrawingCanvas__clearButton:hover{background-color:#e68a00}.SignaturePad__overlay{z-index:10000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.SignaturePad__modal{background:#fff;border-radius:8px;padding:16px;box-shadow:0 4px 20px #0000004d}.SignaturePad__title{color:#333;margin:0 0 12px;font-size:16px;font-weight:600}.SignaturePad__canvas{cursor:crosshair;touch-action:none;background:#fff;border:1px solid #ccc;border-radius:4px;display:block}.SignaturePad__buttons{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.SignaturePad__button{cursor:pointer;border-radius:4px;padding:8px 16px;font-size:14px;transition:background-color .2s,border-color .2s}.SignaturePad__button--clear{color:#666;background:#fff;border:1px solid #ccc}.SignaturePad__button--clear:hover{background:#f5f5f5;border-color:#999}.SignaturePad__button--cancel{color:#666;background:#fff;border:1px solid #ccc}.SignaturePad__button--cancel:hover{background:#f5f5f5;border-color:#999}.SignaturePad__button--done{color:#fff;background:#2196f3;border:1px solid #2196f3}.SignaturePad__button--done:hover{background:#1976d2;border-color:#1976d2}.ShapeCanvas{cursor:crosshair;z-index:1000;background:#0000001a;width:100%;height:100%;position:fixed;top:0;left:0}.ShapeCanvas__controls{z-index:1002;flex-direction:column;align-items:center;gap:12px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.ShapeCanvas__hint{color:#fff;white-space:nowrap;background:#000c;border-radius:6px;padding:8px 16px;font-size:14px}.ShapeCanvas__cancelButton{color:#fff;cursor:pointer;background:#f44336;border:none;border-radius:4px;padding:8px 20px;font-size:14px;font-weight:500;transition:background .2s}.ShapeCanvas__cancelButton:hover{background:#d32f2f}.ShapeHighlight{position:absolute}.ShapeHighlight__rnd{cursor:move}.ShapeHighlight__container{width:100%;height:100%;position:relative}.ShapeHighlight__svg{width:100%;height:100%;display:block}.ShapeHighlight--scrolledTo .ShapeHighlight__svg rect,.ShapeHighlight--scrolledTo .ShapeHighlight__svg ellipse,.ShapeHighlight--scrolledTo .ShapeHighlight__svg line{stroke:#ff4141!important}.ShapeHighlight--scrolledTo .ShapeHighlight__svg polygon{fill:#ff4141!important}.ShapeHighlight__toolbar-wrapper{z-index:10}.ShapeHighlight__toolbar{opacity:0;pointer-events:none;background:#000000b3;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;transition:opacity .2s;display:flex}.ShapeHighlight__toolbar--visible{opacity:1;pointer-events:auto}.ShapeHighlight__style-button,.ShapeHighlight__delete-button{cursor:pointer;color:#fff;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .2s;display:flex}.ShapeHighlight__style-button:hover{background:#fff3}.ShapeHighlight__delete-button:hover{background:#ff646499}.ShapeHighlight__style-panel{background:#000000e6;border-radius:6px;min-width:180px;margin-top:4px;padding:8px;box-shadow:0 2px 8px #0000004d}.ShapeHighlight__style-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.ShapeHighlight__style-row:last-child{margin-bottom:0}.ShapeHighlight__style-row label{color:#ccc;text-transform:uppercase;letter-spacing:.5px;margin-right:8px;font-size:11px}.ShapeHighlight__color-options{align-items:center;gap:6px;display:flex}.ShapeHighlight__color-presets{gap:4px;display:flex}.ShapeHighlight__color-preset{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;height:18px;padding:0;transition:transform .2s,border-color .2s}.ShapeHighlight__color-preset:hover{transform:scale(1.15)}.ShapeHighlight__color-preset.active{border-color:#b958ff}.ShapeHighlight__color-options input[type=color]{cursor:pointer;background:0 0;border:none;border-radius:4px;width:24px;height:24px;padding:0}.ShapeHighlight__color-options input[type=color]::-webkit-color-swatch-wrapper{padding:0}.ShapeHighlight__color-options input[type=color]::-webkit-color-swatch{border:1px solid #666;border-radius:4px}.ShapeHighlight__width-options{gap:4px;display:flex}.ShapeHighlight__width-button{cursor:pointer;color:#ccc;background:0 0;border:1px solid #666;border-radius:4px;padding:4px 8px;font-size:11px;transition:all .2s}.ShapeHighlight__width-button:hover{color:#fff;border-color:#b958ff}.ShapeHighlight__width-button.active{color:#b958ff;background:#b958ff33;border-color:#b958ff}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--panel-bg:var(--vscode-sideBar-background);--border:var(--vscode-panel-border);--muted:var(--vscode-descriptionForeground);--accent:var(--vscode-button-background);--accent-text:var(--vscode-button-foreground);--page-bg:#f1f0eb}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}.side-tabs{flex-wrap:wrap}.side-tabs button{flex:auto}.ask-codex-editor,.selection-note-editor,.selection-translation-result{min-width:min(360px,70vw)}.ask-codex-intents{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.ask-codex-editor textarea,.research-panel input,.research-panel textarea,.repository-panel input,.repository-panel select{width:100%}.quiet-note{color:var(--vscode-descriptionForeground);font-size:12px;line-height:1.45}.field-row{grid-template-columns:minmax(90px,.7fr) minmax(140px,1.3fr);gap:8px;display:grid}.fact-status,.comparison-status{text-transform:uppercase;letter-spacing:.04em;background:var(--vscode-badge-background);width:fit-content;color:var(--vscode-badge-foreground);border-radius:999px;padding:2px 7px;font-size:11px;display:inline-flex}.fact-suggested,.comparison-inferred{background:color-mix(in srgb, var(--vscode-editorWarning-foreground) 24%, transparent);color:var(--vscode-editorWarning-foreground)}.fact-confirmed,.comparison-evidenced{background:color-mix(in srgb, var(--vscode-testing-iconPassed) 22%, transparent);color:var(--vscode-testing-iconPassed)}.fact-rejected,.comparison-conflicting,.source-missing{color:var(--vscode-errorForeground)}.relation-row,.library-root{border-bottom:1px solid var(--vscode-panel-border);overflow-wrap:anywhere;justify-content:space-between;align-items:flex-start;gap:12px;padding:8px 0;display:flex}.repository-url{overflow-wrap:anywhere;font-family:var(--vscode-editor-font-family);font-size:12px}.workspace-overlay{z-index:1000;background:var(--vscode-editor-background);color:var(--vscode-editor-foreground);flex-direction:column;gap:14px;padding:18px;display:flex;position:fixed;inset:0;overflow:auto}.workspace-header,.library-controls{justify-content:space-between;align-items:center;gap:12px;display:flex}.workspace-header h1,.workspace-header p{margin:0}.library-controls input{flex:260px;min-width:160px}.library-root>div{flex-direction:column;gap:4px;min-width:0;display:flex}.library-root span,.library-paper small{color:var(--vscode-descriptionForeground)}.library-warnings{border:1px solid var(--vscode-editorWarning-foreground);border-radius:6px;padding:8px 10px}.library-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px;display:grid}.library-paper{border:1px solid var(--vscode-panel-border);background:var(--vscode-sideBar-background);cursor:pointer;border-radius:8px;align-items:flex-start;gap:10px;padding:12px;display:flex}.library-paper>span{flex-direction:column;gap:5px;min-width:0;display:flex}.comparison-scroll{border:1px solid var(--vscode-panel-border);overflow:auto}.comparison-table{border-collapse:collapse;width:100%;min-width:900px}.comparison-table th,.comparison-table td{border-right:1px solid var(--vscode-panel-border);border-bottom:1px solid var(--vscode-panel-border);text-align:left;vertical-align:top;min-width:210px;padding:10px}.comparison-table thead th,.comparison-table tbody th{background:var(--vscode-sideBar-background);position:sticky}.comparison-table thead th{z-index:2;top:0}.comparison-table tbody th{z-index:1;left:0}.comparison-unknown{color:var(--vscode-descriptionForeground)}@media (width<=720px){.workspace-header,.library-controls{flex-direction:column;align-items:stretch}.workspace-header .actions,.library-controls>*{width:100%}}*{box-sizing:border-box}body{color:var(--vscode-foreground);background:var(--vscode-editor-background);font-family:var(--vscode-font-family);margin:0;overflow:hidden}button,input,select,textarea{font:inherit}button{color:var(--accent-text);background:var(--accent);cursor:pointer;border:0;border-radius:3px;padding:6px 10px}input,select,textarea{border:1px solid var(--vscode-input-border,var(--border));width:100%;color:var(--vscode-input-foreground);background:var(--vscode-input-background);border-radius:2px;padding:8px}textarea{resize:vertical}.shell{grid-template-columns:minmax(0,1fr) 360px;width:100vw;height:100vh;display:grid;overflow:hidden}.shell.sidebar-hidden .side-panel{display:none}.reader{border-right:1px solid var(--border);background:var(--page-bg);grid-template-rows:auto minmax(0,1fr);min-width:0;height:100vh;display:grid;overflow:hidden}.reader-toolbar{z-index:20;border-bottom:1px solid var(--border);background:var(--vscode-editor-background);align-items:center;gap:8px;min-height:44px;padding:6px 10px;display:flex;position:sticky;top:0}.reader-toolbar button{min-width:34px;padding:5px 8px}.reader-toolbar .sidebar-toggle{white-space:nowrap;flex:none;min-width:88px}.page-jump{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.page-jump input{text-align:center;width:64px;padding:5px 6px}.zoom-value{text-align:center;min-width:46px;color:var(--muted);font-size:12px}.reader-status{text-align:right;min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:12px;overflow:hidden}.pdf-host{min-width:0;min-height:0;position:relative;overflow:hidden}.pdf-host .PdfHighlighter{background:var(--page-bg);width:100%;height:100%;position:absolute;inset:0}.pdf-host .pdfViewer{width:100%;min-width:100%}.pdf-host .pdfViewer .page{margin-inline:auto}.pdf-host .pdf-scale-in-progress :is(.PdfHighlighter__highlight-layer,.PdfHighlighter__note-layer,.PdfHighlighter__config-layer){will-change:transform;pointer-events:none}.pdf-host .textLayer{z-index:2;pointer-events:auto;-webkit-user-select:text;user-select:text;display:block;position:absolute;inset:0;overflow:hidden}.pdf-host .textLayer :is(span,br){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;-webkit-user-select:text;user-select:text;position:absolute}.pdf-host .textLayer :is(.reader-margin-text,.reader-figure-text){-webkit-user-select:none!important;user-select:none!important}.pdf-host .allow-non-body-text-selection .textLayer :is(.reader-margin-text,.reader-figure-text){-webkit-user-select:text!important;user-select:text!important}.pdf-host .annotationLayer{z-index:3;pointer-events:none}.pdf-host .annotationLayer :is(a,button,input,textarea,select,[role=button]){pointer-events:auto}.loading{height:100%;min-height:280px;color:var(--muted);place-items:center;display:grid}.loading.error{color:var(--vscode-errorForeground,#b00020)}.active-highlight .TextHighlight__part{outline:2px solid var(--vscode-focusBorder,#007fd4)}.side-panel{z-index:30;background:var(--panel-bg);min-width:0;height:100vh;padding:18px;position:relative;overflow:auto}.side-panel-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.side-panel-header>div{min-width:0}.side-panel-close{flex:none;min-width:30px;padding:3px 8px;font-size:20px;line-height:1.2}.side-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:16px;display:grid}.side-tabs button{min-width:0;color:var(--vscode-button-secondaryForeground);background:var(--vscode-button-secondaryBackground);text-overflow:ellipsis;white-space:nowrap;padding:6px 8px;overflow:hidden}.side-tabs .active-tab{color:var(--accent-text);background:var(--accent)}.side-tab-panel{gap:14px;display:grid}.eyebrow{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin:0 0 5px;font-size:11px;font-weight:700}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:21px;line-height:1.2}h2{margin-bottom:10px;font-size:14px}label{color:var(--muted);margin-bottom:5px;font-size:12px;display:block}.tool-block{margin-bottom:18px}.tool-block>*+*{margin-top:8px}.actions,.annotation-actions{flex-wrap:wrap;gap:8px;display:flex}.secondary-button,.undo-button{color:var(--vscode-button-secondaryForeground);background:var(--vscode-button-secondaryBackground)}.danger-button{color:var(--vscode-button-foreground);background:var(--vscode-errorForeground,#b42318)}.edit-status,.status-line{color:var(--muted);font-size:12px}.provider-status{border-left:3px solid var(--border);color:var(--muted);background:var(--vscode-editor-background);padding:7px 9px;font-size:12px}.provider-status.ready{border-left-color:var(--vscode-testing-iconPassed,#2ea043)}.provider-status.missing{border-left-color:var(--vscode-inputValidation-warningBorder,#cca700)}.overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.metric-card{border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;padding:10px}.metric-card span{color:var(--muted);margin-bottom:4px;font-size:11px;display:block}.metric-card strong{font-size:18px}.meta-list{gap:8px;margin:0;display:grid}.meta-list div{grid-template-columns:82px minmax(0,1fr);gap:8px;display:grid}.meta-list dt{color:var(--muted);font-size:12px}.meta-list dd{overflow-wrap:anywhere;margin:0}.selection-preview,.translation-preview{border:1px solid var(--border);color:var(--vscode-foreground);background:var(--vscode-editor-background);white-space:pre-wrap;border-radius:6px;padding:10px;font-size:12px;line-height:1.5}.compact-empty{padding:10px}.annotation-summary{flex-wrap:wrap;gap:6px;display:flex}.annotation-summary span,.annotation-tags span{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:2px 7px;font-size:11px}.list{gap:10px;display:grid}.item{content-visibility:auto;contain-intrinsic-size:auto 150px;border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;padding:10px}.item p{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.4}.item.active-item{border-color:var(--vscode-focusBorder,#007fd4)}.note{color:var(--vscode-foreground)!important}.annotation-tags{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.annotation-actions{margin-top:9px}.annotation-actions button{padding:4px 7px;font-size:12px}.empty{border:1px solid var(--border);color:var(--muted);background:var(--vscode-editor-background);padding:12px}.fatal-error{color:var(--vscode-errorForeground,#b00020);background:var(--vscode-editor-background);padding:24px}.startup-state{color:var(--vscode-foreground);background:var(--vscode-editor-background);padding:24px}.reader-mounted #startupStatus{display:none}.startup-state h1{font-size:18px}.startup-error{color:var(--vscode-errorForeground,#b00020)}.fatal-error pre,.startup-state pre{border:1px solid var(--border);color:var(--vscode-foreground);background:var(--vscode-input-background);white-space:pre-wrap;padding:12px;overflow:auto}@media (width<=900px){.shell{grid-template-columns:1fr}.reader,.side-panel{height:auto;min-height:50vh}}.word-details{border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;padding:12px}.word-details h3{margin:0 0 4px;font-size:15px}.phonetic{color:var(--muted);margin-bottom:8px;font-size:12px;display:block}.compact-phonetic{margin-top:4px;margin-bottom:0}.word-details ul{margin:0;padding-left:18px;list-style:none}.word-details li,.word-definition-list li{margin-bottom:4px;font-size:13px;line-height:1.4}.word-definition-list{gap:4px;margin:8px 0 0;padding:0;list-style:none;display:grid}.word-details small,.word-definition-list small{color:var(--muted);margin-top:2px;font-size:11px;display:block}.pos{min-width:36px;color:var(--vscode-symbolIcon-variableForeground,var(--accent));font-size:11px;font-weight:600;display:inline-block}.selection-toolbar{background:var(--vscode-editor-background);border-radius:8px;flex-direction:column;align-items:stretch;gap:6px;width:min(320px,100vw - 48px);padding:6px 8px;display:flex;box-shadow:0 4px 16px #0000003d}.selection-toolbar-row{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.selection-toolbar .swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:18px;min-width:0;height:18px;padding:0;transition:border-color .15s}.selection-toolbar .swatch:hover{border-color:var(--vscode-focusBorder,#007fd4)}.selection-toolbar .swatch.active{border-color:var(--vscode-foreground)}.selection-toolbar button:not(.swatch){letter-spacing:.3px;padding:3px 8px;font-size:11px;font-weight:600;line-height:1.4}.selection-toolbar .active-command{outline:2px solid var(--vscode-focusBorder,#007fd4);outline-offset:1px}.annotation-inline-editor{gap:8px;width:min(360px,100vw - 32px);max-height:min(520px,100vh - 48px);display:grid;overflow:auto}.annotation-inline-actions{flex-direction:row;justify-content:flex-end;width:auto}.annotation-inline-title{font-size:13px;font-weight:700}.annotation-inline-editor label{color:var(--muted);gap:4px;font-size:11px;font-weight:600;display:grid}.annotation-inline-editor input,.annotation-inline-editor textarea{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--vscode-input-foreground);background:var(--vscode-input-background);font:inherit;border-radius:6px;padding:6px 8px;font-size:12px;font-weight:400;line-height:1.4}.annotation-inline-editor textarea{resize:vertical}.selection-note-editor,.selection-translation-result{gap:6px;display:grid}.selection-note-editor textarea{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--vscode-input-foreground);background:var(--vscode-input-background);font:inherit;white-space:normal;resize:vertical;border-radius:6px;min-height:72px;padding:6px 8px;font-size:12px;line-height:1.4}.selection-translation-result .word-details{max-height:260px;overflow:auto}.selection-result-status{color:var(--muted);text-align:center;padding:10px;font-size:12px}.selection-translation-text{border:1px solid var(--border);max-height:220px;color:var(--vscode-foreground);background:var(--vscode-input-background);white-space:pre-wrap;border-radius:6px;margin:0;padding:9px;font-size:12px;line-height:1.5;overflow:auto}.selection-note-actions{justify-content:flex-end;gap:6px;display:flex}.selection-note-actions button:disabled{cursor:default;opacity:.55}.highlight-tooltip{border:1px solid var(--border);background:var(--vscode-editor-background);border-radius:6px;max-width:320px;padding:8px 10px;box-shadow:0 4px 12px #00000047}.highlight-tooltip p{color:var(--vscode-foreground);margin:0 0 6px;font-size:12px;line-height:1.45}.highlight-tooltip p:last-child{margin-bottom:0}.highlight-tooltip .annotation-tags{margin-top:0}:root{--inleaf-canvas:var(--vscode-editor-background);--inleaf-surface:var(--vscode-sideBar-background,var(--vscode-editor-background));--inleaf-surface-raised:var(--vscode-editorWidget-background,var(--vscode-editor-background));--inleaf-line:color-mix(in srgb, var(--vscode-foreground) 14%, transparent);--inleaf-line-strong:color-mix(in srgb, var(--vscode-foreground) 25%, transparent);--inleaf-accent:var(--vscode-focusBorder,#2ba9c7);--inleaf-accent-soft:color-mix(in srgb, var(--inleaf-accent) 14%, transparent);--inleaf-success:var(--vscode-testing-iconPassed,#3fb950);--inleaf-warning:var(--vscode-editorWarning-foreground,#d7a13c);--inleaf-danger:var(--vscode-errorForeground,#f85149);--inleaf-shadow:0 14px 40px #00000047}button{border:1px solid color-mix(in srgb, var(--vscode-button-background) 76%, var(--vscode-foreground));border-radius:4px;min-height:28px;font-weight:600;transition:border-color .12s,background .12s,color .12s}button:hover:not(:disabled){border-color:var(--inleaf-accent)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:1px solid var(--inleaf-accent);outline-offset:1px}button:disabled{cursor:default;opacity:.5}.secondary-button{border-color:var(--inleaf-line-strong)}.shell,.shell.sidebar-hidden{background:var(--inleaf-canvas);grid-template-columns:58px minmax(0,1fr) 390px}.shell.sidebar-hidden{grid-template-columns:58px minmax(0,1fr)}.activity-rail{z-index:1200;border-right:1px solid var(--inleaf-line);background:linear-gradient(180deg, var(--inleaf-accent-soft), transparent 150px), var(--vscode-activityBar-background,var(--inleaf-surface));flex-direction:column;grid-column:1;align-items:stretch;min-width:0;height:100vh;display:flex;position:relative}.activity-brand{border-bottom:1px solid var(--inleaf-line);flex:0 0 58px;place-items:center;display:grid}.activity-brand span{border:1px solid var(--inleaf-accent);width:30px;height:30px;color:var(--inleaf-accent);background:color-mix(in srgb, var(--inleaf-accent) 8%, transparent);font-family:var(--vscode-editor-font-family,monospace);letter-spacing:.08em;border-radius:6px;place-items:center;font-size:11px;font-weight:800;display:grid}.activity-rail button{min-height:58px;color:var(--vscode-activityBar-inactiveForeground,var(--muted));background:0 0;border:0;border-left:2px solid #0000;border-radius:0;align-content:center;place-items:center;gap:3px;padding:6px 2px 5px 0;font-weight:500;display:grid;position:relative}.activity-rail button:hover,.activity-rail button.active-activity{border-color:var(--inleaf-accent);color:var(--vscode-activityBar-foreground,var(--vscode-foreground));background:var(--inleaf-accent-soft)}.activity-glyph{min-width:26px;min-height:22px;font-family:var(--vscode-editor-font-family,monospace);place-items:center;font-size:13px;font-weight:800;line-height:1;display:grid}.activity-rail small{text-overflow:ellipsis;max-width:52px;font-size:9px;line-height:1.1;overflow:hidden}.activity-rail b{min-width:15px;color:var(--vscode-badge-foreground);background:var(--vscode-badge-background);text-align:center;border-radius:8px;padding:1px 4px;font-size:9px;line-height:13px;position:absolute;top:7px;right:5px}.activity-spacer{border-bottom:1px solid var(--inleaf-line);flex:auto}.reader{border-right:0;grid-column:2;grid-template-rows:auto minmax(0,1fr) 24px;height:100vh;min-height:0}.reader-chrome{z-index:25;border-bottom:1px solid var(--inleaf-line-strong);background:var(--inleaf-surface);position:relative;box-shadow:0 5px 16px #0000001a}.reader-titlebar{background:linear-gradient(90deg, var(--inleaf-accent-soft), transparent 35%), var(--inleaf-surface);justify-content:space-between;align-items:center;gap:18px;min-height:50px;padding:7px 14px 6px 16px;display:flex}.reader-identity{flex-direction:column;gap:2px;min-width:0;display:flex}.reader-kicker,.workspace-metrics span,.comparison-summary span,.library-controls label>span{color:var(--inleaf-accent);font-family:var(--vscode-editor-font-family,monospace);letter-spacing:.12em;font-size:9px;font-weight:800}.reader-identity strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.3;overflow:hidden}.reader-health{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:5px;display:flex}.health-pill{border:1px solid var(--inleaf-line);color:var(--muted);background:color-mix(in srgb, var(--inleaf-canvas) 72%, transparent);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:3px 7px;font-size:10px;display:inline-flex}.health-pill i,.status-dot{width:6px;height:6px;box-shadow:0 0 0 2px color-mix(in srgb, currentColor 14%, transparent);background:currentColor;border-radius:50%;display:inline-block}.health-local,.health-ready{color:var(--inleaf-success)}.reader-toolbar{border-top:1px solid var(--inleaf-line);background:color-mix(in srgb, var(--inleaf-surface) 92%, var(--inleaf-accent) 8%);border-bottom:0;gap:10px;min-height:38px;padding:5px 10px 5px 14px;position:static}.toolbar-cluster{border:1px solid var(--inleaf-line);background:var(--inleaf-surface-raised);border-radius:4px;flex:none;align-items:center;display:inline-flex;overflow:hidden}.reader-toolbar .toolbar-cluster button{border:0;border-right:1px solid var(--inleaf-line);min-width:30px;min-height:27px;color:var(--vscode-foreground);background:0 0;border-radius:0}.reader-toolbar .toolbar-cluster button:last-child{border-right:0}.reader-toolbar .toolbar-cluster button:hover{color:var(--inleaf-accent);background:var(--inleaf-accent-soft)}.page-jump{color:var(--muted);font-family:var(--vscode-editor-font-family,monospace);letter-spacing:.06em;gap:4px;margin:0;padding:0 6px;font-size:9px;font-weight:700}.page-jump input{background:0 0;border:0;width:42px;padding:3px 2px;font-size:11px}.zoom-value{min-width:48px;font-family:var(--vscode-editor-font-family,monospace);font-size:10px}.reader-toolbar>.tool-text{border-color:var(--inleaf-line-strong);min-height:28px;color:var(--vscode-button-secondaryForeground);background:var(--vscode-button-secondaryBackground);font-size:11px}.reader-statusbar{min-width:0;color:var(--vscode-statusBar-foreground,#fff);background:var(--vscode-statusBar-background,#167f9d);font-family:var(--vscode-editor-font-family,monospace);white-space:nowrap;align-items:center;gap:14px;padding:0 10px;font-size:9px;line-height:24px;display:flex;overflow:hidden}.reader-statusbar span{align-items:center;gap:5px;display:inline-flex}.statusbar-spacer{flex:auto}.status-dot-local{color:var(--inleaf-success)}.side-panel{z-index:30;border-left:1px solid var(--inleaf-line-strong);background:var(--inleaf-surface);grid-column:3;padding:0}.side-panel-header{z-index:3;border-bottom:1px solid var(--inleaf-line);background:linear-gradient(90deg, var(--inleaf-accent-soft), transparent 60%), var(--inleaf-surface);align-items:center;min-height:74px;margin:0;padding:12px 14px;position:sticky;top:0}.side-panel-header h1{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.eyebrow{color:var(--inleaf-accent);font-family:var(--vscode-editor-font-family,monospace);letter-spacing:.1em;font-size:9px}.side-tabs{z-index:2;border-bottom:1px solid var(--inleaf-line);background:var(--inleaf-surface);grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;margin:0;padding:6px;position:sticky;top:74px}.side-tabs button{min-height:28px;color:var(--muted);background:0 0;border:1px solid #0000;font-size:10px}.side-tabs button:hover,.side-tabs .active-tab{border-color:var(--inleaf-line);color:var(--vscode-foreground);background:var(--inleaf-accent-soft)}.side-tabs .active-tab{border-bottom-color:var(--inleaf-accent);box-shadow:inset 0 -1px var(--inleaf-accent)}.side-tab-panel,.research-panel,.repository-panel{padding:14px}.tool-block{border:1px solid var(--inleaf-line);background:color-mix(in srgb, var(--inleaf-surface-raised) 82%, transparent);border-radius:6px;margin-bottom:0;padding:12px}.tool-block h2{color:var(--vscode-foreground);font-family:var(--vscode-editor-font-family,monospace);letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px;font-size:11px}.overview-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-card{border-color:var(--inleaf-line);background:var(--inleaf-surface-raised);border-radius:5px;position:relative;overflow:hidden}.metric-card:before{background:var(--inleaf-accent);content:"";opacity:.75;height:2px;position:absolute;top:0;left:0;right:0}.metric-card strong{font-family:var(--vscode-editor-font-family,monospace);font-size:16px}.item,.word-details,.selection-preview,.translation-preview,.empty{border-color:var(--inleaf-line);background:var(--inleaf-surface-raised)}.selection-toolbar{border:1px solid var(--inleaf-line-strong);background:var(--inleaf-surface-raised);box-shadow:var(--inleaf-shadow)}.workspace-overlay{z-index:1000;background:radial-gradient(circle at 5% 0%, var(--inleaf-accent-soft), transparent 30%), var(--inleaf-canvas);gap:18px;padding:22px 24px 28px;inset:0 0 0 58px}.workspace-header{border-bottom:1px solid var(--inleaf-line-strong);align-items:flex-start;padding-bottom:15px}.workspace-header>div:first-child{min-width:0}.workspace-header h1{letter-spacing:-.025em;font-size:24px}.workspace-subtitle{max-width:720px;color:var(--muted);margin:7px 0 0;font-size:12px;line-height:1.5}.workspace-header .actions{justify-content:flex-end}.workspace-metrics,.comparison-summary{border:1px solid var(--inleaf-line);background:var(--inleaf-surface);border-radius:6px;grid-template-columns:repeat(4,minmax(130px,1fr));display:grid}.workspace-metrics>div,.comparison-summary>div{border-right:1px solid var(--inleaf-line);align-content:center;gap:3px;min-height:78px;padding:11px 14px;display:grid;position:relative}.workspace-metrics>div:last-child,.comparison-summary>div:last-child{border-right:0}.workspace-metrics strong,.comparison-summary strong{font-family:var(--vscode-editor-font-family,monospace);font-size:23px;line-height:1}.workspace-metrics small,.comparison-summary small{color:var(--muted);font-size:10px}.library-controls{border:1px solid var(--inleaf-line);background:var(--inleaf-surface);border-radius:6px;justify-content:flex-start;padding:10px}.library-controls label{flex:260px;gap:5px;margin:0;display:grid}.library-controls button{align-self:end;min-height:34px}.library-root{border:1px solid var(--inleaf-line);background:color-mix(in srgb, var(--inleaf-surface) 82%, transparent);border-radius:5px;padding:9px 11px}.library-root strong{font-family:var(--vscode-editor-font-family,monospace);font-size:11px}.library-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.library-paper{border-color:var(--inleaf-line);background:var(--inleaf-surface-raised);border-radius:6px;min-height:128px;margin:0;padding:13px;transition:border-color .12s,transform .12s,background .12s;position:relative;box-shadow:0 4px 14px #00000014}.library-paper:hover{border-color:var(--inleaf-accent);transform:translateY(-1px)}.library-paper:has(input:checked){border-color:var(--inleaf-accent);background:linear-gradient(135deg, var(--inleaf-accent-soft), var(--inleaf-surface-raised) 55%);box-shadow:inset 3px 0 var(--inleaf-accent)}.library-paper input{width:15px;height:15px;accent-color:var(--inleaf-accent)}.library-paper>span{gap:9px}.library-paper strong{color:var(--vscode-foreground);font-size:13px;line-height:1.4}.library-paper-meta,.library-paper-tags{flex-wrap:wrap;gap:5px;display:flex}.library-paper-meta small,.library-paper-tags small{border:1px solid var(--inleaf-line);font-family:var(--vscode-editor-font-family,monospace);border-radius:999px;padding:2px 6px;font-size:9px}.library-paper-meta small{color:var(--inleaf-accent);letter-spacing:.06em;border:0;border-radius:0;padding:0;font-weight:700}.comparison-summary{grid-template-columns:repeat(6,minmax(105px,1fr))}.comparison-summary>div:before{background:var(--inleaf-line-strong);content:"";width:2px;position:absolute;top:0;bottom:0;left:0}.comparison-summary .summary-evidenced:before{background:var(--inleaf-success)}.comparison-summary .summary-inferred:before{background:var(--inleaf-warning)}.comparison-summary .summary-conflicting:before{background:var(--inleaf-danger)}.comparison-scroll{border-color:var(--inleaf-line-strong);background:var(--inleaf-surface-raised);border-radius:6px;flex:auto;min-height:0}.comparison-table th,.comparison-table td{border-color:var(--inleaf-line);padding:12px}.comparison-table thead th,.comparison-table tbody th{background:var(--inleaf-surface)}.comparison-table thead th{color:var(--inleaf-accent);font-family:var(--vscode-editor-font-family,monospace);letter-spacing:.04em;font-size:10px}.comparison-table td{border-top:2px solid #0000}.comparison-table td.comparison-evidenced{border-top-color:var(--inleaf-success)}.comparison-table td.comparison-inferred{border-top-color:var(--inleaf-warning)}.comparison-table td.comparison-conflicting{border-top-color:var(--inleaf-danger)}@media (width<=1050px){.shell,.shell.sidebar-hidden{grid-template-columns:50px minmax(0,1fr)}.activity-rail{width:50px}.activity-brand{flex-basis:50px}.activity-rail button{min-height:52px}.activity-rail small{display:none}.side-panel{width:min(390px,100vw - 50px);height:100vh;min-height:0;position:fixed;top:0;bottom:0;right:0;box-shadow:-12px 0 32px #00000040}.reader-health .health-muted{display:none}.workspace-overlay{left:50px}.workspace-metrics,.comparison-summary{grid-template-columns:repeat(2,minmax(130px,1fr))}.workspace-metrics>div:nth-child(2n),.comparison-summary>div:nth-child(2n){border-right:0}.workspace-metrics>div:nth-child(-n+2),.comparison-summary>div:not(:nth-last-child(-n+2)){border-bottom:1px solid var(--inleaf-line)}}@media (width<=720px){.reader-titlebar{min-height:44px}.reader-health{display:none}.reader-toolbar{flex-wrap:wrap}.reader-status{text-align:left;order:4;width:100%}.reader-statusbar span:nth-child(3),.reader-statusbar span:nth-child(4),.reader-statusbar span:nth-last-child(2){display:none}.workspace-overlay{padding:16px}.workspace-header,.library-controls{align-items:stretch}.workspace-header .actions{justify-content:flex-start}.workspace-header .actions button{width:auto}.overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}} /*$vite$:1*/ \ No newline at end of file diff --git a/media/reader-app.js b/media/reader-app.js index be8276d..220875e 100644 --- a/media/reader-app.js +++ b/media/reader-app.js @@ -134,12 +134,12 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (e._status === 1) return e._result.default; throw e._result; } - var N = { current: null }, te = { transition: null }, ne = { + var N = { current: null }, P = { transition: null }, te = { ReactCurrentDispatcher: N, - ReactCurrentBatchConfig: te, + ReactCurrentBatchConfig: P, ReactCurrentOwner: C }; - function re() { + function ne() { throw Error("act(...) is not supported in production builds of React."); } e.Children = { @@ -164,7 +164,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (!D(e)) throw Error("React.Children.only expected to receive a single React element child."); return e; } - }, e.Component = _, e.Fragment = r, e.Profiler = a, e.PureComponent = y, e.StrictMode = i, e.Suspense = l, e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ne, e.act = re, e.cloneElement = function(e, n, r) { + }, e.Component = _, e.Fragment = r, e.Profiler = a, e.PureComponent = y, e.StrictMode = i, e.Suspense = l, e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = te, e.act = ne, e.cloneElement = function(e, n, r) { if (e == null) throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + e + "."); var i = h({}, e.props), a = e.key, o = e.ref, s = e._owner; if (n != null) { @@ -226,14 +226,14 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr compare: t === void 0 ? null : t }; }, e.startTransition = function(e) { - var t = te.transition; - te.transition = {}; + var t = P.transition; + P.transition = {}; try { e(); } finally { - te.transition = t; + P.transition = t; } - }, e.unstable_act = re, e.useCallback = function(e, t) { + }, e.unstable_act = ne, e.useCallback = function(e, t) { return N.current.useCallback(e, t); }, e.useContext = function(e) { return N.current.useContext(e); @@ -580,24 +580,24 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr var i = y.hasOwnProperty(t) ? y[t] : null; (i === null ? r || !(2 < t.length) || t[0] !== "o" && t[0] !== "O" || t[1] !== "n" && t[1] !== "N" : i.type !== 0) && (_(t, n, i, r) && (n = null), r || i === null ? h(t) && (n === null ? e.removeAttribute(t) : e.setAttribute(t, "" + n)) : i.mustUseProperty ? e[i.propertyName] = n === null ? i.type === 3 ? !1 : "" : n : (t = i.attributeName, r = i.attributeNamespace, n === null ? e.removeAttribute(t) : (i = i.type, n = i === 3 || i === 4 && !0 === n ? "" : "" + n, r ? e.setAttributeNS(r, t, n) : e.setAttribute(t, n)))); } - var C = t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, w = Symbol.for("react.element"), T = Symbol.for("react.portal"), E = Symbol.for("react.fragment"), D = Symbol.for("react.strict_mode"), O = Symbol.for("react.profiler"), k = Symbol.for("react.provider"), A = Symbol.for("react.context"), j = Symbol.for("react.forward_ref"), M = Symbol.for("react.suspense"), ee = Symbol.for("react.suspense_list"), N = Symbol.for("react.memo"), te = Symbol.for("react.lazy"), ne = Symbol.for("react.offscreen"), re = Symbol.iterator; - function P(e) { - return typeof e != "object" || !e ? null : (e = re && e[re] || e["@@iterator"], typeof e == "function" ? e : null); + var C = t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, w = Symbol.for("react.element"), T = Symbol.for("react.portal"), E = Symbol.for("react.fragment"), D = Symbol.for("react.strict_mode"), O = Symbol.for("react.profiler"), k = Symbol.for("react.provider"), A = Symbol.for("react.context"), j = Symbol.for("react.forward_ref"), M = Symbol.for("react.suspense"), ee = Symbol.for("react.suspense_list"), N = Symbol.for("react.memo"), P = Symbol.for("react.lazy"), te = Symbol.for("react.offscreen"), ne = Symbol.iterator; + function re(e) { + return typeof e != "object" || !e ? null : (e = ne && e[ne] || e["@@iterator"], typeof e == "function" ? e : null); } - var F = Object.assign, ie; - function ae(e) { - if (ie === void 0) try { + var F = Object.assign, I; + function ie(e) { + if (I === void 0) try { throw Error(); } catch (e) { var t = e.stack.trim().match(/\n( *(at )?)/); - ie = t && t[1] || ""; + I = t && t[1] || ""; } - return "\n" + ie + e; + return "\n" + I + e; } - var oe = !1; - function se(e, t) { - if (!e || oe) return ""; - oe = !0; + var ae = !1; + function oe(e, t) { + if (!e || ae) return ""; + ae = !0; var n = Error.prepareStackTrace; Error.prepareStackTrace = void 0; try { @@ -642,25 +642,25 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } } } finally { - oe = !1, Error.prepareStackTrace = n; + ae = !1, Error.prepareStackTrace = n; } - return (e = e ? e.displayName || e.name : "") ? ae(e) : ""; + return (e = e ? e.displayName || e.name : "") ? ie(e) : ""; } - function ce(e) { + function se(e) { switch (e.tag) { - case 5: return ae(e.type); - case 16: return ae("Lazy"); - case 13: return ae("Suspense"); - case 19: return ae("SuspenseList"); + case 5: return ie(e.type); + case 16: return ie("Lazy"); + case 13: return ie("Suspense"); + case 19: return ie("SuspenseList"); case 0: case 2: - case 15: return e = se(e.type, !1), e; - case 11: return e = se(e.type.render, !1), e; - case 1: return e = se(e.type, !0), e; + case 15: return e = oe(e.type, !1), e; + case 11: return e = oe(e.type.render, !1), e; + case 1: return e = oe(e.type, !0), e; default: return ""; } } - function le(e) { + function ce(e) { if (e == null) return null; if (typeof e == "function") return e.displayName || e.name || null; if (typeof e == "string") return e; @@ -678,16 +678,16 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr case j: var t = e.render; return e = e.displayName, e ||= (e = t.displayName || t.name || "", e === "" ? "ForwardRef" : "ForwardRef(" + e + ")"), e; - case N: return t = e.displayName || null, t === null ? le(e.type) || "Memo" : t; - case te: + case N: return t = e.displayName || null, t === null ? ce(e.type) || "Memo" : t; + case P: t = e._payload, e = e._init; try { - return le(e(t)); + return ce(e(t)); } catch {} } return null; } - function ue(e) { + function le(e) { var t = e.type; switch (e.tag) { case 24: return "Cache"; @@ -700,7 +700,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr case 4: return "Portal"; case 3: return "Root"; case 6: return "Text"; - case 16: return le(t); + case 16: return ce(t); case 8: return t === D ? "StrictMode" : "Mode"; case 22: return "Offscreen"; case 12: return "Profiler"; @@ -719,7 +719,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } return null; } - function de(e) { + function ue(e) { switch (typeof e) { case "boolean": case "number": @@ -729,12 +729,12 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr default: return ""; } } - function fe(e) { + function de(e) { var t = e.type; return (e = e.nodeName) && e.toLowerCase() === "input" && (t === "checkbox" || t === "radio"); } - function pe(e) { - var t = fe(e) ? "checked" : "value", n = Object.getOwnPropertyDescriptor(e.constructor.prototype, t), r = "" + e[t]; + function fe(e) { + var t = de(e) ? "checked" : "value", n = Object.getOwnPropertyDescriptor(e.constructor.prototype, t), r = "" + e[t]; if (!e.hasOwnProperty(t) && n !== void 0 && typeof n.get == "function" && typeof n.set == "function") { var i = n.get, a = n.set; return Object.defineProperty(e, t, { @@ -758,17 +758,17 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr }; } } - function me(e) { - e._valueTracker ||= pe(e); + function pe(e) { + e._valueTracker ||= fe(e); } - function he(e) { + function me(e) { if (!e) return !1; var t = e._valueTracker; if (!t) return !0; var n = t.getValue(), r = ""; - return e && (r = fe(e) ? e.checked ? "true" : "false" : e.value), e = r, e === n ? !1 : (t.setValue(e), !0); + return e && (r = de(e) ? e.checked ? "true" : "false" : e.value), e = r, e === n ? !1 : (t.setValue(e), !0); } - function ge(e) { + function he(e) { if (e ||= typeof document < "u" ? document : void 0, e === void 0) return null; try { return e.activeElement || e.body; @@ -776,7 +776,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr return e.body; } } - function _e(e, t) { + function ge(e, t) { var n = t.checked; return F({}, t, { defaultChecked: void 0, @@ -785,28 +785,28 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr checked: n ?? e._wrapperState.initialChecked }); } - function I(e, t) { + function L(e, t) { var n = t.defaultValue == null ? "" : t.defaultValue, r = t.checked == null ? t.defaultChecked : t.checked; - n = de(t.value == null ? n : t.value), e._wrapperState = { + n = ue(t.value == null ? n : t.value), e._wrapperState = { initialChecked: r, initialValue: n, controlled: t.type === "checkbox" || t.type === "radio" ? t.checked != null : t.value != null }; } - function ve(e, t) { + function _e(e, t) { t = t.checked, t != null && S(e, "checked", t, !1); } - function ye(e, t) { - ve(e, t); - var n = de(t.value), r = t.type; + function ve(e, t) { + _e(e, t); + var n = ue(t.value), r = t.type; if (n != null) r === "number" ? (n === 0 && e.value === "" || e.value != n) && (e.value = "" + n) : e.value !== "" + n && (e.value = "" + n); else if (r === "submit" || r === "reset") { e.removeAttribute("value"); return; } - t.hasOwnProperty("value") ? xe(e, t.type, n) : t.hasOwnProperty("defaultValue") && xe(e, t.type, de(t.defaultValue)), t.checked == null && t.defaultChecked != null && (e.defaultChecked = !!t.defaultChecked); + t.hasOwnProperty("value") ? be(e, t.type, n) : t.hasOwnProperty("defaultValue") && be(e, t.type, ue(t.defaultValue)), t.checked == null && t.defaultChecked != null && (e.defaultChecked = !!t.defaultChecked); } - function be(e, t, n) { + function ye(e, t, n) { if (t.hasOwnProperty("value") || t.hasOwnProperty("defaultValue")) { var r = t.type; if (!(r !== "submit" && r !== "reset" || t.value !== void 0 && t.value !== null)) return; @@ -814,17 +814,17 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } n = e.name, n !== "" && (e.name = ""), e.defaultChecked = !!e._wrapperState.initialChecked, n !== "" && (e.name = n); } - function xe(e, t, n) { - (t !== "number" || ge(e.ownerDocument) !== e) && (n == null ? e.defaultValue = "" + e._wrapperState.initialValue : e.defaultValue !== "" + n && (e.defaultValue = "" + n)); + function be(e, t, n) { + (t !== "number" || he(e.ownerDocument) !== e) && (n == null ? e.defaultValue = "" + e._wrapperState.initialValue : e.defaultValue !== "" + n && (e.defaultValue = "" + n)); } - var Se = Array.isArray; - function Ce(e, t, n, r) { + var xe = Array.isArray; + function Se(e, t, n, r) { if (e = e.options, t) { t = {}; for (var i = 0; i < n.length; i++) t["$" + n[i]] = !0; for (n = 0; n < e.length; n++) i = t.hasOwnProperty("$" + e[n].value), e[n].selected !== i && (e[n].selected = i), i && r && (e[n].defaultSelected = !0); } else { - for (n = "" + de(n), t = null, i = 0; i < e.length; i++) { + for (n = "" + ue(n), t = null, i = 0; i < e.length; i++) { if (e[i].value === n) { e[i].selected = !0, r && (e[i].defaultSelected = !0); return; @@ -834,7 +834,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr t !== null && (t.selected = !0); } } - function we(e, t) { + function Ce(e, t) { if (t.dangerouslySetInnerHTML != null) throw Error(r(91)); return F({}, t, { value: void 0, @@ -842,12 +842,12 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr children: "" + e._wrapperState.initialValue }); } - function Te(e, t) { + function we(e, t) { var n = t.value; if (n == null) { if (n = t.children, t = t.defaultValue, n != null) { if (t != null) throw Error(r(92)); - if (Se(n)) { + if (xe(n)) { if (1 < n.length) throw Error(r(93)); n = n[0]; } @@ -855,27 +855,27 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } t ??= "", n = t; } - e._wrapperState = { initialValue: de(n) }; + e._wrapperState = { initialValue: ue(n) }; } - function Ee(e, t) { - var n = de(t.value), r = de(t.defaultValue); + function Te(e, t) { + var n = ue(t.value), r = ue(t.defaultValue); n != null && (n = "" + n, n !== e.value && (e.value = n), t.defaultValue == null && e.defaultValue !== n && (e.defaultValue = n)), r != null && (e.defaultValue = "" + r); } - function De(e) { + function Ee(e) { var t = e.textContent; t === e._wrapperState.initialValue && t !== "" && t !== null && (e.value = t); } - function Oe(e) { + function De(e) { switch (e) { case "svg": return "http://www.w3.org/2000/svg"; case "math": return "http://www.w3.org/1998/Math/MathML"; default: return "http://www.w3.org/1999/xhtml"; } } - function ke(e, t) { - return e == null || e === "http://www.w3.org/1999/xhtml" ? Oe(t) : e === "http://www.w3.org/2000/svg" && t === "foreignObject" ? "http://www.w3.org/1999/xhtml" : e; + function Oe(e, t) { + return e == null || e === "http://www.w3.org/1999/xhtml" ? De(t) : e === "http://www.w3.org/2000/svg" && t === "foreignObject" ? "http://www.w3.org/1999/xhtml" : e; } - var Ae, je = function(e) { + var ke, Ae = function(e) { return typeof MSApp < "u" && MSApp.execUnsafeLocalFunction ? function(t, n, r, i) { MSApp.execUnsafeLocalFunction(function() { return e(t, n, r, i); @@ -884,11 +884,11 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr }(function(e, t) { if (e.namespaceURI !== "http://www.w3.org/2000/svg" || "innerHTML" in e) e.innerHTML = t; else { - for (Ae ||= document.createElement("div"), Ae.innerHTML = "" + t.valueOf().toString() + "", t = Ae.firstChild; e.firstChild;) e.removeChild(e.firstChild); + for (ke ||= document.createElement("div"), ke.innerHTML = "" + t.valueOf().toString() + "", t = ke.firstChild; e.firstChild;) e.removeChild(e.firstChild); for (; t.firstChild;) e.appendChild(t.firstChild); } }); - function Me(e, t) { + function je(e, t) { if (t) { var n = e.firstChild; if (n && n === e.lastChild && n.nodeType === 3) { @@ -898,7 +898,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } e.textContent = t; } - var L = { + var R = { animationIterationCount: !0, aspectRatio: !0, borderImageOutset: !0, @@ -942,27 +942,27 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr strokeMiterlimit: !0, strokeOpacity: !0, strokeWidth: !0 - }, Ne = [ + }, z = [ "Webkit", "ms", "Moz", "O" ]; - Object.keys(L).forEach(function(e) { - Ne.forEach(function(t) { - t = t + e.charAt(0).toUpperCase() + e.substring(1), L[t] = L[e]; + Object.keys(R).forEach(function(e) { + z.forEach(function(t) { + t = t + e.charAt(0).toUpperCase() + e.substring(1), R[t] = R[e]; }); }); - function Pe(e, t, n) { - return t == null || typeof t == "boolean" || t === "" ? "" : n || typeof t != "number" || t === 0 || L.hasOwnProperty(e) && L[e] ? ("" + t).trim() : t + "px"; + function Me(e, t, n) { + return t == null || typeof t == "boolean" || t === "" ? "" : n || typeof t != "number" || t === 0 || R.hasOwnProperty(e) && R[e] ? ("" + t).trim() : t + "px"; } - function Fe(e, t) { + function Ne(e, t) { for (var n in e = e.style, t) if (t.hasOwnProperty(n)) { - var r = n.indexOf("--") === 0, i = Pe(n, t[n], r); + var r = n.indexOf("--") === 0, i = Me(n, t[n], r); n === "float" && (n = "cssFloat"), r ? e.setProperty(n, i) : e[n] = i; } } - var Ie = F({ menuitem: !0 }, { + var Pe = F({ menuitem: !0 }, { area: !0, base: !0, br: !0, @@ -979,9 +979,9 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr track: !0, wbr: !0 }); - function Le(e, t) { + function Fe(e, t) { if (t) { - if (Ie[e] && (t.children != null || t.dangerouslySetInnerHTML != null)) throw Error(r(137, e)); + if (Pe[e] && (t.children != null || t.dangerouslySetInnerHTML != null)) throw Error(r(137, e)); if (t.dangerouslySetInnerHTML != null) { if (t.children != null) throw Error(r(60)); if (typeof t.dangerouslySetInnerHTML != "object" || !("__html" in t.dangerouslySetInnerHTML)) throw Error(r(61)); @@ -989,7 +989,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (t.style != null && typeof t.style != "object") throw Error(r(62)); } } - function Re(e, t) { + function Ie(e, t) { if (e.indexOf("-") === -1) return typeof t.is == "string"; switch (e) { case "annotation-xml": @@ -1003,45 +1003,45 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr default: return !0; } } - var ze = null; - function Be(e) { + var Le = null; + function Re(e) { return e = e.target || e.srcElement || window, e.correspondingUseElement && (e = e.correspondingUseElement), e.nodeType === 3 ? e.parentNode : e; } - var Ve = null, He = null, Ue = null; - function We(e) { - if (e = Fi(e)) { - if (typeof Ve != "function") throw Error(r(280)); + var ze = null, Be = null, Ve = null; + function He(e) { + if (e = Pi(e)) { + if (typeof ze != "function") throw Error(r(280)); var t = e.stateNode; - t && (t = Li(t), Ve(e.stateNode, e.type, t)); + t && (t = Ii(t), ze(e.stateNode, e.type, t)); } } - function Ge(e) { - He ? Ue ? Ue.push(e) : Ue = [e] : He = e; + function Ue(e) { + Be ? Ve ? Ve.push(e) : Ve = [e] : Be = e; } - function Ke() { - if (He) { - var e = He, t = Ue; - if (Ue = He = null, We(e), t) for (e = 0; e < t.length; e++) We(t[e]); + function We() { + if (Be) { + var e = Be, t = Ve; + if (Ve = Be = null, He(e), t) for (e = 0; e < t.length; e++) He(t[e]); } } - function qe(e, t) { + function Ge(e, t) { return e(t); } - function Je() {} - var Ye = !1; - function Xe(e, t, n) { - if (Ye) return e(t, n); - Ye = !0; + function Ke() {} + var qe = !1; + function Je(e, t, n) { + if (qe) return e(t, n); + qe = !0; try { - return qe(e, t, n); + return Ge(e, t, n); } finally { - Ye = !1, (He !== null || Ue !== null) && (Je(), Ke()); + qe = !1, (Be !== null || Ve !== null) && (Ke(), We()); } } - function Ze(e, t) { + function Ye(e, t) { var n = e.stateNode; if (n === null) return null; - var i = Li(n); + var i = Ii(n); if (i === null) return null; n = i[t]; a: switch (t) { @@ -1064,16 +1064,16 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (n && typeof n != "function") throw Error(r(231, t, typeof n)); return n; } - var Qe = !1; + var Xe = !1; if (c) try { - var $e = {}; - Object.defineProperty($e, "passive", { get: function() { - Qe = !0; - } }), window.addEventListener("test", $e, $e), window.removeEventListener("test", $e, $e); + var Ze = {}; + Object.defineProperty(Ze, "passive", { get: function() { + Xe = !0; + } }), window.addEventListener("test", Ze, Ze), window.removeEventListener("test", Ze, Ze); } catch { - Qe = !1; + Xe = !1; } - function et(e, t, n, r, i, a, o, s, c) { + function Qe(e, t, n, r, i, a, o, s, c) { var l = Array.prototype.slice.call(arguments, 3); try { t.apply(n, l); @@ -1081,22 +1081,22 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr this.onError(e); } } - var tt = !1, nt = null, rt = !1, it = null, at = { onError: function(e) { - tt = !0, nt = e; + var $e = !1, et = null, tt = !1, nt = null, rt = { onError: function(e) { + $e = !0, et = e; } }; - function ot(e, t, n, r, i, a, o, s, c) { - tt = !1, nt = null, et.apply(at, arguments); - } - function st(e, t, n, i, a, o, s, c, l) { - if (ot.apply(this, arguments), tt) { - if (tt) { - var u = nt; - tt = !1, nt = null; + function it(e, t, n, r, i, a, o, s, c) { + $e = !1, et = null, Qe.apply(rt, arguments); + } + function at(e, t, n, i, a, o, s, c, l) { + if (it.apply(this, arguments), $e) { + if ($e) { + var u = et; + $e = !1, et = null; } else throw Error(r(198)); - rt || (rt = !0, it = u); + tt || (tt = !0, nt = u); } } - function ct(e) { + function ot(e) { var t = e, n = e; if (e.alternate) for (; t.return;) t = t.return; else { @@ -1107,20 +1107,20 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } return t.tag === 3 ? n : null; } - function R(e) { + function B(e) { if (e.tag === 13) { var t = e.memoizedState; if (t === null && (e = e.alternate, e !== null && (t = e.memoizedState)), t !== null) return t.dehydrated; } return null; } - function lt(e) { - if (ct(e) !== e) throw Error(r(188)); + function st(e) { + if (ot(e) !== e) throw Error(r(188)); } - function ut(e) { + function ct(e) { var t = e.alternate; if (!t) { - if (t = ct(e), t === null) throw Error(r(188)); + if (t = ot(e), t === null) throw Error(r(188)); return t === e ? e : null; } for (var n = e, i = t;;) { @@ -1136,8 +1136,8 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } if (a.child === o.child) { for (o = a.child; o;) { - if (o === n) return lt(a), e; - if (o === i) return lt(a), t; + if (o === n) return st(a), e; + if (o === i) return st(a), t; o = o.sibling; } throw Error(r(188)); @@ -1175,30 +1175,30 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (n.tag !== 3) throw Error(r(188)); return n.stateNode.current === n ? e : t; } - function dt(e) { - return e = ut(e), e === null ? null : ft(e); + function lt(e) { + return e = ct(e), e === null ? null : ut(e); } - function ft(e) { + function ut(e) { if (e.tag === 5 || e.tag === 6) return e; for (e = e.child; e !== null;) { - var t = ft(e); + var t = ut(e); if (t !== null) return t; e = e.sibling; } return null; } - var pt = n.unstable_scheduleCallback, mt = n.unstable_cancelCallback, ht = n.unstable_shouldYield, gt = n.unstable_requestPaint, z = n.unstable_now, B = n.unstable_getCurrentPriorityLevel, _t = n.unstable_ImmediatePriority, vt = n.unstable_UserBlockingPriority, yt = n.unstable_NormalPriority, bt = n.unstable_LowPriority, xt = n.unstable_IdlePriority, St = null, Ct = null; - function wt(e) { - if (Ct && typeof Ct.onCommitFiberRoot == "function") try { - Ct.onCommitFiberRoot(St, e, void 0, (e.current.flags & 128) == 128); + var dt = n.unstable_scheduleCallback, ft = n.unstable_cancelCallback, pt = n.unstable_shouldYield, mt = n.unstable_requestPaint, V = n.unstable_now, H = n.unstable_getCurrentPriorityLevel, ht = n.unstable_ImmediatePriority, gt = n.unstable_UserBlockingPriority, _t = n.unstable_NormalPriority, vt = n.unstable_LowPriority, yt = n.unstable_IdlePriority, bt = null, xt = null; + function St(e) { + if (xt && typeof xt.onCommitFiberRoot == "function") try { + xt.onCommitFiberRoot(bt, e, void 0, (e.current.flags & 128) == 128); } catch {} } - var Tt = Math.clz32 ? Math.clz32 : Ot, Et = Math.log, Dt = Math.LN2; - function Ot(e) { - return e >>>= 0, e === 0 ? 32 : 31 - (Et(e) / Dt | 0) | 0; + var Ct = Math.clz32 ? Math.clz32 : Et, wt = Math.log, Tt = Math.LN2; + function Et(e) { + return e >>>= 0, e === 0 ? 32 : 31 - (wt(e) / Tt | 0) | 0; } - var V = 64, H = 4194304; - function kt(e) { + var U = 64, W = 4194304; + function Dt(e) { switch (e & -e) { case 1: return 1; case 2: return 2; @@ -1234,20 +1234,20 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr default: return e; } } - function At(e, t) { + function Ot(e, t) { var n = e.pendingLanes; if (n === 0) return 0; var r = 0, i = e.suspendedLanes, a = e.pingedLanes, o = n & 268435455; if (o !== 0) { var s = o & ~i; - s === 0 ? (a &= o, a !== 0 && (r = kt(a))) : r = kt(s); - } else o = n & ~i, o === 0 ? a !== 0 && (r = kt(a)) : r = kt(o); + s === 0 ? (a &= o, a !== 0 && (r = Dt(a))) : r = Dt(s); + } else o = n & ~i, o === 0 ? a !== 0 && (r = Dt(a)) : r = Dt(o); if (r === 0) return 0; if (t !== 0 && t !== r && (t & i) === 0 && (i = r & -r, a = t & -t, i >= a || i === 16 && a & 4194240)) return t; - if (r & 4 && (r |= n & 16), t = e.entangledLanes, t !== 0) for (e = e.entanglements, t &= r; 0 < t;) n = 31 - Tt(t), i = 1 << n, r |= e[n], t &= ~i; + if (r & 4 && (r |= n & 16), t = e.entangledLanes, t !== 0) for (e = e.entanglements, t &= r; 0 < t;) n = 31 - Ct(t), i = 1 << n, r |= e[n], t &= ~i; return r; } - function jt(e, t) { + function kt(e, t) { switch (e) { case 1: case 2: @@ -1283,99 +1283,99 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr default: return -1; } } - function U(e, t) { + function G(e, t) { for (var n = e.suspendedLanes, r = e.pingedLanes, i = e.expirationTimes, a = e.pendingLanes; 0 < a;) { - var o = 31 - Tt(a), s = 1 << o, c = i[o]; - c === -1 ? ((s & n) === 0 || (s & r) !== 0) && (i[o] = jt(s, t)) : c <= t && (e.expiredLanes |= s), a &= ~s; + var o = 31 - Ct(a), s = 1 << o, c = i[o]; + c === -1 ? ((s & n) === 0 || (s & r) !== 0) && (i[o] = kt(s, t)) : c <= t && (e.expiredLanes |= s), a &= ~s; } } - function Mt(e) { + function At(e) { return e = e.pendingLanes & -1073741825, e === 0 ? e & 1073741824 ? 1073741824 : 0 : e; } - function Nt() { - var e = V; - return V <<= 1, !(V & 4194240) && (V = 64), e; + function jt() { + var e = U; + return U <<= 1, !(U & 4194240) && (U = 64), e; } - function Pt(e) { + function Mt(e) { for (var t = [], n = 0; 31 > n; n++) t.push(e); return t; } - function Ft(e, t, n) { - e.pendingLanes |= t, t !== 536870912 && (e.suspendedLanes = 0, e.pingedLanes = 0), e = e.eventTimes, t = 31 - Tt(t), e[t] = n; + function Nt(e, t, n) { + e.pendingLanes |= t, t !== 536870912 && (e.suspendedLanes = 0, e.pingedLanes = 0), e = e.eventTimes, t = 31 - Ct(t), e[t] = n; } - function It(e, t) { + function Pt(e, t) { var n = e.pendingLanes & ~t; e.pendingLanes = t, e.suspendedLanes = 0, e.pingedLanes = 0, e.expiredLanes &= t, e.mutableReadLanes &= t, e.entangledLanes &= t, t = e.entanglements; var r = e.eventTimes; for (e = e.expirationTimes; 0 < n;) { - var i = 31 - Tt(n), a = 1 << i; + var i = 31 - Ct(n), a = 1 << i; t[i] = 0, r[i] = -1, e[i] = -1, n &= ~a; } } - function Lt(e, t) { + function Ft(e, t) { var n = e.entangledLanes |= t; for (e = e.entanglements; n;) { - var r = 31 - Tt(n), i = 1 << r; + var r = 31 - Ct(n), i = 1 << r; i & t | e[r] & t && (e[r] |= t), n &= ~i; } } - var W = 0; - function Rt(e) { + var K = 0; + function It(e) { return e &= -e, 1 < e ? 4 < e ? e & 268435455 ? 16 : 536870912 : 4 : 1; } - var zt, Bt, Vt, Ht, Ut, Wt = !1, Gt = [], Kt = null, G = null, qt = null, Jt = /* @__PURE__ */ new Map(), Yt = /* @__PURE__ */ new Map(), Xt = [], Zt = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" "); - function Qt(e, t) { + var Lt, Rt, zt, Bt, Vt, Ht = !1, Ut = [], Wt = null, q = null, Gt = null, Kt = /* @__PURE__ */ new Map(), qt = /* @__PURE__ */ new Map(), Jt = [], Yt = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" "); + function Xt(e, t) { switch (e) { case "focusin": case "focusout": - Kt = null; + Wt = null; break; case "dragenter": case "dragleave": - G = null; + q = null; break; case "mouseover": case "mouseout": - qt = null; + Gt = null; break; case "pointerover": case "pointerout": - Jt.delete(t.pointerId); + Kt.delete(t.pointerId); break; case "gotpointercapture": - case "lostpointercapture": Yt.delete(t.pointerId); + case "lostpointercapture": qt.delete(t.pointerId); } } - function $t(e, t, n, r, i, a) { + function Zt(e, t, n, r, i, a) { return e === null || e.nativeEvent !== a ? (e = { blockedOn: t, domEventName: n, eventSystemFlags: r, nativeEvent: a, targetContainers: [i] - }, t !== null && (t = Fi(t), t !== null && Bt(t)), e) : (e.eventSystemFlags |= r, t = e.targetContainers, i !== null && t.indexOf(i) === -1 && t.push(i), e); + }, t !== null && (t = Pi(t), t !== null && Rt(t)), e) : (e.eventSystemFlags |= r, t = e.targetContainers, i !== null && t.indexOf(i) === -1 && t.push(i), e); } - function en(e, t, n, r, i) { + function Qt(e, t, n, r, i) { switch (t) { - case "focusin": return Kt = $t(Kt, e, t, n, r, i), !0; - case "dragenter": return G = $t(G, e, t, n, r, i), !0; - case "mouseover": return qt = $t(qt, e, t, n, r, i), !0; + case "focusin": return Wt = Zt(Wt, e, t, n, r, i), !0; + case "dragenter": return q = Zt(q, e, t, n, r, i), !0; + case "mouseover": return Gt = Zt(Gt, e, t, n, r, i), !0; case "pointerover": var a = i.pointerId; - return Jt.set(a, $t(Jt.get(a) || null, e, t, n, r, i)), !0; - case "gotpointercapture": return a = i.pointerId, Yt.set(a, $t(Yt.get(a) || null, e, t, n, r, i)), !0; + return Kt.set(a, Zt(Kt.get(a) || null, e, t, n, r, i)), !0; + case "gotpointercapture": return a = i.pointerId, qt.set(a, Zt(qt.get(a) || null, e, t, n, r, i)), !0; } return !1; } - function tn(e) { - var t = Pi(e.target); + function $t(e) { + var t = Ni(e.target); if (t !== null) { - var n = ct(t); + var n = ot(t); if (n !== null) { if (t = n.tag, t === 13) { - if (t = R(n), t !== null) { - e.blockedOn = t, Ut(e.priority, function() { - Vt(n); + if (t = B(n), t !== null) { + e.blockedOn = t, Vt(e.priority, function() { + zt(n); }); return; } @@ -1387,89 +1387,89 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } e.blockedOn = null; } - function nn(e) { + function en(e) { if (e.blockedOn !== null) return !1; for (var t = e.targetContainers; 0 < t.length;) { - var n = mn(e.domEventName, e.eventSystemFlags, t[0], e.nativeEvent); + var n = fn(e.domEventName, e.eventSystemFlags, t[0], e.nativeEvent); if (n === null) { n = e.nativeEvent; var r = new n.constructor(n.type, n); - ze = r, n.target.dispatchEvent(r), ze = null; - } else return t = Fi(n), t !== null && Bt(t), e.blockedOn = n, !1; + Le = r, n.target.dispatchEvent(r), Le = null; + } else return t = Pi(n), t !== null && Rt(t), e.blockedOn = n, !1; t.shift(); } return !0; } - function rn(e, t, n) { - nn(e) && n.delete(t); + function tn(e, t, n) { + en(e) && n.delete(t); } - function an() { - Wt = !1, Kt !== null && nn(Kt) && (Kt = null), G !== null && nn(G) && (G = null), qt !== null && nn(qt) && (qt = null), Jt.forEach(rn), Yt.forEach(rn); + function nn() { + Ht = !1, Wt !== null && en(Wt) && (Wt = null), q !== null && en(q) && (q = null), Gt !== null && en(Gt) && (Gt = null), Kt.forEach(tn), qt.forEach(tn); } - function on(e, t) { - e.blockedOn === t && (e.blockedOn = null, Wt || (Wt = !0, n.unstable_scheduleCallback(n.unstable_NormalPriority, an))); + function rn(e, t) { + e.blockedOn === t && (e.blockedOn = null, Ht || (Ht = !0, n.unstable_scheduleCallback(n.unstable_NormalPriority, nn))); } - function sn(e) { + function an(e) { function t(t) { - return on(t, e); + return rn(t, e); } - if (0 < Gt.length) { - on(Gt[0], e); - for (var n = 1; n < Gt.length; n++) { - var r = Gt[n]; + if (0 < Ut.length) { + rn(Ut[0], e); + for (var n = 1; n < Ut.length; n++) { + var r = Ut[n]; r.blockedOn === e && (r.blockedOn = null); } } - for (Kt !== null && on(Kt, e), G !== null && on(G, e), qt !== null && on(qt, e), Jt.forEach(t), Yt.forEach(t), n = 0; n < Xt.length; n++) r = Xt[n], r.blockedOn === e && (r.blockedOn = null); - for (; 0 < Xt.length && (n = Xt[0], n.blockedOn === null);) tn(n), n.blockedOn === null && Xt.shift(); + for (Wt !== null && rn(Wt, e), q !== null && rn(q, e), Gt !== null && rn(Gt, e), Kt.forEach(t), qt.forEach(t), n = 0; n < Jt.length; n++) r = Jt[n], r.blockedOn === e && (r.blockedOn = null); + for (; 0 < Jt.length && (n = Jt[0], n.blockedOn === null);) $t(n), n.blockedOn === null && Jt.shift(); } - var cn = C.ReactCurrentBatchConfig, ln = !0; - function un(e, t, n, r) { - var i = W, a = cn.transition; - cn.transition = null; + var on = C.ReactCurrentBatchConfig, sn = !0; + function cn(e, t, n, r) { + var i = K, a = on.transition; + on.transition = null; try { - W = 1, fn(e, t, n, r); + K = 1, un(e, t, n, r); } finally { - W = i, cn.transition = a; + K = i, on.transition = a; } } - function dn(e, t, n, r) { - var i = W, a = cn.transition; - cn.transition = null; + function ln(e, t, n, r) { + var i = K, a = on.transition; + on.transition = null; try { - W = 4, fn(e, t, n, r); + K = 4, un(e, t, n, r); } finally { - W = i, cn.transition = a; + K = i, on.transition = a; } } - function fn(e, t, n, r) { - if (ln) { - var i = mn(e, t, n, r); - if (i === null) oi(e, t, r, pn, n), Qt(e, r); - else if (en(i, e, t, n, r)) r.stopPropagation(); - else if (Qt(e, r), t & 4 && -1 < Zt.indexOf(e)) { + function un(e, t, n, r) { + if (sn) { + var i = fn(e, t, n, r); + if (i === null) ai(e, t, r, dn, n), Xt(e, r); + else if (Qt(i, e, t, n, r)) r.stopPropagation(); + else if (Xt(e, r), t & 4 && -1 < Yt.indexOf(e)) { for (; i !== null;) { - var a = Fi(i); - if (a !== null && zt(a), a = mn(e, t, n, r), a === null && oi(e, t, r, pn, n), a === i) break; + var a = Pi(i); + if (a !== null && Lt(a), a = fn(e, t, n, r), a === null && ai(e, t, r, dn, n), a === i) break; i = a; } i !== null && r.stopPropagation(); - } else oi(e, t, r, null, n); + } else ai(e, t, r, null, n); } } - var pn = null; - function mn(e, t, n, r) { - if (pn = null, e = Be(r), e = Pi(e), e !== null) if (t = ct(e), t === null) e = null; + var dn = null; + function fn(e, t, n, r) { + if (dn = null, e = Re(r), e = Ni(e), e !== null) if (t = ot(e), t === null) e = null; else if (n = t.tag, n === 13) { - if (e = R(t), e !== null) return e; + if (e = B(t), e !== null) return e; e = null; } else if (n === 3) { if (t.stateNode.current.memoizedState.isDehydrated) return t.tag === 3 ? t.stateNode.containerInfo : null; e = null; } else t !== e && (e = null); - return pn = e, null; + return dn = e, null; } - function hn(e) { + function pn(e) { switch (e) { case "cancel": case "click": @@ -1541,56 +1541,56 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr case "mouseleave": case "pointerenter": case "pointerleave": return 4; - case "message": switch (B()) { - case _t: return 1; - case vt: return 4; - case yt: - case bt: return 16; - case xt: return 536870912; + case "message": switch (H()) { + case ht: return 1; + case gt: return 4; + case _t: + case vt: return 16; + case yt: return 536870912; default: return 16; } default: return 16; } } - var gn = null, _n = null, K = null; - function vn() { - if (K) return K; - var e, t = _n, n = t.length, r, i = "value" in gn ? gn.value : gn.textContent, a = i.length; + var mn = null, hn = null, J = null; + function gn() { + if (J) return J; + var e, t = hn, n = t.length, r, i = "value" in mn ? mn.value : mn.textContent, a = i.length; for (e = 0; e < n && t[e] === i[e]; e++); var o = n - e; for (r = 1; r <= o && t[n - r] === i[a - r]; r++); - return K = i.slice(e, 1 < r ? 1 - r : void 0); + return J = i.slice(e, 1 < r ? 1 - r : void 0); } - function yn(e) { + function _n(e) { var t = e.keyCode; return "charCode" in e ? (e = e.charCode, e === 0 && t === 13 && (e = 13)) : e = t, e === 10 && (e = 13), 32 <= e || e === 13 ? e : 0; } - function bn() { + function vn() { return !0; } - function xn() { + function yn() { return !1; } - function Sn(e) { + function bn(e) { function t(t, n, r, i, a) { for (var o in this._reactName = t, this._targetInst = r, this.type = n, this.nativeEvent = i, this.target = a, this.currentTarget = null, e) e.hasOwnProperty(o) && (t = e[o], this[o] = t ? t(i) : i[o]); - return this.isDefaultPrevented = (i.defaultPrevented == null ? !1 === i.returnValue : i.defaultPrevented) ? bn : xn, this.isPropagationStopped = xn, this; + return this.isDefaultPrevented = (i.defaultPrevented == null ? !1 === i.returnValue : i.defaultPrevented) ? vn : yn, this.isPropagationStopped = yn, this; } return F(t.prototype, { preventDefault: function() { this.defaultPrevented = !0; var e = this.nativeEvent; - e && (e.preventDefault ? e.preventDefault() : typeof e.returnValue != "unknown" && (e.returnValue = !1), this.isDefaultPrevented = bn); + e && (e.preventDefault ? e.preventDefault() : typeof e.returnValue != "unknown" && (e.returnValue = !1), this.isDefaultPrevented = vn); }, stopPropagation: function() { var e = this.nativeEvent; - e && (e.stopPropagation ? e.stopPropagation() : typeof e.cancelBubble != "unknown" && (e.cancelBubble = !0), this.isPropagationStopped = bn); + e && (e.stopPropagation ? e.stopPropagation() : typeof e.cancelBubble != "unknown" && (e.cancelBubble = !0), this.isPropagationStopped = vn); }, persist: function() {}, - isPersistent: bn + isPersistent: vn }), t; } - var Cn = { + var xn = { eventPhase: 0, bubbles: 0, cancelable: 0, @@ -1599,10 +1599,10 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr }, defaultPrevented: 0, isTrusted: 0 - }, wn = Sn(Cn), Tn = F({}, Cn, { + }, Sn = bn(xn), Cn = F({}, xn, { view: 0, detail: 0 - }), En = Sn(Tn), Dn, On, kn, An = F({}, Tn, { + }), wn = bn(Cn), Tn, En, Dn, On = F({}, Cn, { screenX: 0, screenY: 0, clientX: 0, @@ -1613,25 +1613,25 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr shiftKey: 0, altKey: 0, metaKey: 0, - getModifierState: Vn, + getModifierState: zn, button: 0, buttons: 0, relatedTarget: function(e) { return e.relatedTarget === void 0 ? e.fromElement === e.srcElement ? e.toElement : e.fromElement : e.relatedTarget; }, movementX: function(e) { - return "movementX" in e ? e.movementX : (e !== kn && (kn && e.type === "mousemove" ? (Dn = e.screenX - kn.screenX, On = e.screenY - kn.screenY) : On = Dn = 0, kn = e), Dn); + return "movementX" in e ? e.movementX : (e !== Dn && (Dn && e.type === "mousemove" ? (Tn = e.screenX - Dn.screenX, En = e.screenY - Dn.screenY) : En = Tn = 0, Dn = e), Tn); }, movementY: function(e) { - return "movementY" in e ? e.movementY : On; + return "movementY" in e ? e.movementY : En; } - }), jn = Sn(An), Mn = Sn(F({}, An, { dataTransfer: 0 })), Nn = Sn(F({}, Tn, { relatedTarget: 0 })), Pn = Sn(F({}, Cn, { + }), kn = bn(On), An = bn(F({}, On, { dataTransfer: 0 })), jn = bn(F({}, Cn, { relatedTarget: 0 })), Mn = bn(F({}, xn, { animationName: 0, elapsedTime: 0, pseudoElement: 0 - })), Fn = Sn(F({}, Cn, { clipboardData: function(e) { + })), Nn = bn(F({}, xn, { clipboardData: function(e) { return "clipboardData" in e ? e.clipboardData : window.clipboardData; - } })), In = Sn(F({}, Cn, { data: 0 })), Ln = { + } })), Pn = bn(F({}, xn, { data: 0 })), Fn = { Esc: "Escape", Spacebar: " ", Left: "ArrowLeft", @@ -1644,7 +1644,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr Apps: "ContextMenu", Scroll: "ScrollLock", MozPrintableKey: "Unidentified" - }, Rn = { + }, In = { 8: "Backspace", 9: "Tab", 12: "Clear", @@ -1681,26 +1681,26 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr 144: "NumLock", 145: "ScrollLock", 224: "Meta" - }, zn = { + }, Ln = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" }; - function Bn(e) { + function Rn(e) { var t = this.nativeEvent; - return t.getModifierState ? t.getModifierState(e) : (e = zn[e]) ? !!t[e] : !1; + return t.getModifierState ? t.getModifierState(e) : (e = Ln[e]) ? !!t[e] : !1; } - function Vn() { - return Bn; + function zn() { + return Rn; } - var Hn = Sn(F({}, Tn, { + var Bn = bn(F({}, Cn, { key: function(e) { if (e.key) { - var t = Ln[e.key] || e.key; + var t = Fn[e.key] || e.key; if (t !== "Unidentified") return t; } - return e.type === "keypress" ? (e = yn(e), e === 13 ? "Enter" : String.fromCharCode(e)) : e.type === "keydown" || e.type === "keyup" ? Rn[e.keyCode] || "Unidentified" : ""; + return e.type === "keypress" ? (e = _n(e), e === 13 ? "Enter" : String.fromCharCode(e)) : e.type === "keydown" || e.type === "keyup" ? In[e.keyCode] || "Unidentified" : ""; }, code: 0, location: 0, @@ -1710,17 +1710,17 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr metaKey: 0, repeat: 0, locale: 0, - getModifierState: Vn, + getModifierState: zn, charCode: function(e) { - return e.type === "keypress" ? yn(e) : 0; + return e.type === "keypress" ? _n(e) : 0; }, keyCode: function(e) { return e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0; }, which: function(e) { - return e.type === "keypress" ? yn(e) : e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0; + return e.type === "keypress" ? _n(e) : e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0; } - })), Un = Sn(F({}, An, { + })), Vn = bn(F({}, On, { pointerId: 0, width: 0, height: 0, @@ -1731,7 +1731,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr twist: 0, pointerType: 0, isPrimary: 0 - })), Wn = Sn(F({}, Tn, { + })), Hn = bn(F({}, Cn, { touches: 0, targetTouches: 0, changedTouches: 0, @@ -1739,12 +1739,12 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr metaKey: 0, ctrlKey: 0, shiftKey: 0, - getModifierState: Vn - })), Gn = Sn(F({}, Cn, { + getModifierState: zn + })), Un = bn(F({}, xn, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 - })), Kn = Sn(F({}, An, { + })), Wn = bn(F({}, On, { deltaX: function(e) { return "deltaX" in e ? e.deltaX : "wheelDeltaX" in e ? -e.wheelDeltaX : 0; }, @@ -1753,17 +1753,17 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr }, deltaZ: 0, deltaMode: 0 - })), qn = [ + })), Gn = [ 9, 13, 27, 32 - ], Jn = c && "CompositionEvent" in window, Yn = null; - c && "documentMode" in document && (Yn = document.documentMode); - var Xn = c && "TextEvent" in window && !Yn, Zn = c && (!Jn || Yn && 8 < Yn && 11 >= Yn), Qn = " ", $n = !1; - function er(e, t) { + ], Kn = c && "CompositionEvent" in window, qn = null; + c && "documentMode" in document && (qn = document.documentMode); + var Jn = c && "TextEvent" in window && !qn, Yn = c && (!Kn || qn && 8 < qn && 11 >= qn), Xn = " ", Zn = !1; + function Qn(e, t) { switch (e) { - case "keyup": return qn.indexOf(t.keyCode) !== -1; + case "keyup": return Gn.indexOf(t.keyCode) !== -1; case "keydown": return t.keyCode !== 229; case "keypress": case "mousedown": @@ -1771,20 +1771,20 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr default: return !1; } } - function tr(e) { + function $n(e) { return e = e.detail, typeof e == "object" && "data" in e ? e.data : null; } - var nr = !1; - function rr(e, t) { + var er = !1; + function tr(e, t) { switch (e) { - case "compositionend": return tr(t); - case "keypress": return t.which === 32 ? ($n = !0, Qn) : null; - case "textInput": return e = t.data, e === Qn && $n ? null : e; + case "compositionend": return $n(t); + case "keypress": return t.which === 32 ? (Zn = !0, Xn) : null; + case "textInput": return e = t.data, e === Xn && Zn ? null : e; default: return null; } } - function ir(e, t) { - if (nr) return e === "compositionend" || !Jn && er(e, t) ? (e = vn(), K = _n = gn = null, nr = !1, e) : null; + function nr(e, t) { + if (er) return e === "compositionend" || !Kn && Qn(e, t) ? (e = gn(), J = hn = mn = null, er = !1, e) : null; switch (e) { case "paste": return null; case "keypress": @@ -1793,11 +1793,11 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (t.which) return String.fromCharCode(t.which); } return null; - case "compositionend": return Zn && t.locale !== "ko" ? null : t.data; + case "compositionend": return Yn && t.locale !== "ko" ? null : t.data; default: return null; } } - var ar = { + var rr = { color: !0, date: !0, datetime: !0, @@ -1814,81 +1814,81 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr url: !0, week: !0 }; - function or(e) { + function ir(e) { var t = e && e.nodeName && e.nodeName.toLowerCase(); - return t === "input" ? !!ar[e.type] : t === "textarea"; + return t === "input" ? !!rr[e.type] : t === "textarea"; } - function sr(e, t, n, r) { - Ge(r), t = ci(t, "onChange"), 0 < t.length && (n = new wn("onChange", "change", null, n, r), e.push({ + function ar(e, t, n, r) { + Ue(r), t = si(t, "onChange"), 0 < t.length && (n = new Sn("onChange", "change", null, n, r), e.push({ event: n, listeners: t })); } - var cr = null, lr = null; - function ur(e) { - ti(e, 0); + var or = null, sr = null; + function cr(e) { + $r(e, 0); } - function dr(e) { - if (he(Ii(e))) return e; + function lr(e) { + if (me(Fi(e))) return e; } - function fr(e, t) { + function ur(e, t) { if (e === "change") return t; } - var pr = !1; + var dr = !1; if (c) { - var mr; + var fr; if (c) { - var hr = "oninput" in document; - if (!hr) { - var gr = document.createElement("div"); - gr.setAttribute("oninput", "return;"), hr = typeof gr.oninput == "function"; + var pr = "oninput" in document; + if (!pr) { + var mr = document.createElement("div"); + mr.setAttribute("oninput", "return;"), pr = typeof mr.oninput == "function"; } - mr = hr; - } else mr = !1; - pr = mr && (!document.documentMode || 9 < document.documentMode); + fr = pr; + } else fr = !1; + dr = fr && (!document.documentMode || 9 < document.documentMode); } - function _r() { - cr && (cr.detachEvent("onpropertychange", vr), lr = cr = null); + function hr() { + or && (or.detachEvent("onpropertychange", gr), sr = or = null); } - function vr(e) { - if (e.propertyName === "value" && dr(lr)) { + function gr(e) { + if (e.propertyName === "value" && lr(sr)) { var t = []; - sr(t, lr, e, Be(e)), Xe(ur, t); + ar(t, sr, e, Re(e)), Je(cr, t); } } - function yr(e, t, n) { - e === "focusin" ? (_r(), cr = t, lr = n, cr.attachEvent("onpropertychange", vr)) : e === "focusout" && _r(); + function _r(e, t, n) { + e === "focusin" ? (hr(), or = t, sr = n, or.attachEvent("onpropertychange", gr)) : e === "focusout" && hr(); } - function br(e) { - if (e === "selectionchange" || e === "keyup" || e === "keydown") return dr(lr); + function vr(e) { + if (e === "selectionchange" || e === "keyup" || e === "keydown") return lr(sr); } - function xr(e, t) { - if (e === "click") return dr(t); + function yr(e, t) { + if (e === "click") return lr(t); } - function Sr(e, t) { - if (e === "input" || e === "change") return dr(t); + function br(e, t) { + if (e === "input" || e === "change") return lr(t); } - function Cr(e, t) { + function xr(e, t) { return e === t && (e !== 0 || 1 / e == 1 / t) || e !== e && t !== t; } - var wr = typeof Object.is == "function" ? Object.is : Cr; - function Tr(e, t) { - if (wr(e, t)) return !0; + var Sr = typeof Object.is == "function" ? Object.is : xr; + function Cr(e, t) { + if (Sr(e, t)) return !0; if (typeof e != "object" || !e || typeof t != "object" || !t) return !1; var n = Object.keys(e), r = Object.keys(t); if (n.length !== r.length) return !1; for (r = 0; r < n.length; r++) { var i = n[r]; - if (!l.call(t, i) || !wr(e[i], t[i])) return !1; + if (!l.call(t, i) || !Sr(e[i], t[i])) return !1; } return !0; } - function Er(e) { + function wr(e) { for (; e && e.firstChild;) e = e.firstChild; return e; } - function Dr(e, t) { - var n = Er(e); + function Tr(e, t) { + var n = wr(e); e = 0; for (var r; n;) { if (n.nodeType === 3) { @@ -1908,14 +1908,14 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } n = void 0; } - n = Er(n); + n = wr(n); } } - function Or(e, t) { - return e && t ? e === t ? !0 : e && e.nodeType === 3 ? !1 : t && t.nodeType === 3 ? Or(e, t.parentNode) : "contains" in e ? e.contains(t) : e.compareDocumentPosition ? !!(e.compareDocumentPosition(t) & 16) : !1 : !1; + function Er(e, t) { + return e && t ? e === t ? !0 : e && e.nodeType === 3 ? !1 : t && t.nodeType === 3 ? Er(e, t.parentNode) : "contains" in e ? e.contains(t) : e.compareDocumentPosition ? !!(e.compareDocumentPosition(t) & 16) : !1 : !1; } - function kr() { - for (var e = window, t = ge(); t instanceof e.HTMLIFrameElement;) { + function Dr() { + for (var e = window, t = he(); t instanceof e.HTMLIFrameElement;) { try { var n = typeof t.contentWindow.location.href == "string"; } catch { @@ -1923,24 +1923,24 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } if (n) e = t.contentWindow; else break; - t = ge(e.document); + t = he(e.document); } return t; } - function Ar(e) { + function Or(e) { var t = e && e.nodeName && e.nodeName.toLowerCase(); return t && (t === "input" && (e.type === "text" || e.type === "search" || e.type === "tel" || e.type === "url" || e.type === "password") || t === "textarea" || e.contentEditable === "true"); } - function jr(e) { - var t = kr(), n = e.focusedElem, r = e.selectionRange; - if (t !== n && n && n.ownerDocument && Or(n.ownerDocument.documentElement, n)) { - if (r !== null && Ar(n)) { + function kr(e) { + var t = Dr(), n = e.focusedElem, r = e.selectionRange; + if (t !== n && n && n.ownerDocument && Er(n.ownerDocument.documentElement, n)) { + if (r !== null && Or(n)) { if (t = r.start, e = r.end, e === void 0 && (e = t), "selectionStart" in n) n.selectionStart = t, n.selectionEnd = Math.min(e, n.value.length); else if (e = (t = n.ownerDocument || document) && t.defaultView || window, e.getSelection) { e = e.getSelection(); var i = n.textContent.length, a = Math.min(r.start, i); - r = r.end === void 0 ? a : Math.min(r.end, i), !e.extend && a > r && (i = r, r = a, a = i), i = Dr(n, a); - var o = Dr(n, r); + r = r.end === void 0 ? a : Math.min(r.end, i), !e.extend && a > r && (i = r, r = a, a = i), i = Tr(n, a); + var o = Tr(n, r); i && o && (e.rangeCount !== 1 || e.anchorNode !== i.node || e.anchorOffset !== i.offset || e.focusNode !== o.node || e.focusOffset !== o.offset) && (t = t.createRange(), t.setStart(i.node, i.offset), e.removeAllRanges(), a > r ? (e.addRange(t), e.extend(o.node, o.offset)) : (t.setEnd(o.node, o.offset), e.addRange(t))); } } @@ -1952,10 +1952,10 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr for (typeof n.focus == "function" && n.focus(), n = 0; n < t.length; n++) e = t[n], e.element.scrollLeft = e.left, e.element.scrollTop = e.top; } } - var Mr = c && "documentMode" in document && 11 >= document.documentMode, Nr = null, Pr = null, Fr = null, Ir = !1; - function Lr(e, t, n) { + var Ar = c && "documentMode" in document && 11 >= document.documentMode, jr = null, Mr = null, Nr = null, Pr = !1; + function Fr(e, t, n) { var r = n.window === n ? n.document : n.nodeType === 9 ? n : n.ownerDocument; - Ir || Nr == null || Nr !== ge(r) || (r = Nr, "selectionStart" in r && Ar(r) ? r = { + Pr || jr == null || jr !== he(r) || (r = jr, "selectionStart" in r && Or(r) ? r = { start: r.selectionStart, end: r.selectionEnd } : (r = (r.ownerDocument && r.ownerDocument.defaultView || window).getSelection(), r = { @@ -1963,49 +1963,49 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr anchorOffset: r.anchorOffset, focusNode: r.focusNode, focusOffset: r.focusOffset - }), Fr && Tr(Fr, r) || (Fr = r, r = ci(Pr, "onSelect"), 0 < r.length && (t = new wn("onSelect", "select", null, t, n), e.push({ + }), Nr && Cr(Nr, r) || (Nr = r, r = si(Mr, "onSelect"), 0 < r.length && (t = new Sn("onSelect", "select", null, t, n), e.push({ event: t, listeners: r - }), t.target = Nr))); + }), t.target = jr))); } - function Rr(e, t) { + function Ir(e, t) { var n = {}; return n[e.toLowerCase()] = t.toLowerCase(), n["Webkit" + e] = "webkit" + t, n["Moz" + e] = "moz" + t, n; } - var zr = { - animationend: Rr("Animation", "AnimationEnd"), - animationiteration: Rr("Animation", "AnimationIteration"), - animationstart: Rr("Animation", "AnimationStart"), - transitionend: Rr("Transition", "TransitionEnd") - }, Br = {}, Vr = {}; - c && (Vr = document.createElement("div").style, "AnimationEvent" in window || (delete zr.animationend.animation, delete zr.animationiteration.animation, delete zr.animationstart.animation), "TransitionEvent" in window || delete zr.transitionend.transition); - function Hr(e) { - if (Br[e]) return Br[e]; - if (!zr[e]) return e; - var t = zr[e], n; - for (n in t) if (t.hasOwnProperty(n) && n in Vr) return Br[e] = t[n]; + var Lr = { + animationend: Ir("Animation", "AnimationEnd"), + animationiteration: Ir("Animation", "AnimationIteration"), + animationstart: Ir("Animation", "AnimationStart"), + transitionend: Ir("Transition", "TransitionEnd") + }, Rr = {}, zr = {}; + c && (zr = document.createElement("div").style, "AnimationEvent" in window || (delete Lr.animationend.animation, delete Lr.animationiteration.animation, delete Lr.animationstart.animation), "TransitionEvent" in window || delete Lr.transitionend.transition); + function Br(e) { + if (Rr[e]) return Rr[e]; + if (!Lr[e]) return e; + var t = Lr[e], n; + for (n in t) if (t.hasOwnProperty(n) && n in zr) return Rr[e] = t[n]; return e; } - var Ur = Hr("animationend"), Wr = Hr("animationiteration"), Gr = Hr("animationstart"), Kr = Hr("transitionend"), qr = /* @__PURE__ */ new Map(), Jr = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" "); - function Yr(e, t) { - qr.set(e, t), o(t, [e]); + var Vr = Br("animationend"), Hr = Br("animationiteration"), Ur = Br("animationstart"), Wr = Br("transitionend"), Gr = /* @__PURE__ */ new Map(), Kr = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" "); + function qr(e, t) { + Gr.set(e, t), o(t, [e]); } - for (var Xr = 0; Xr < Jr.length; Xr++) { - var Zr = Jr[Xr]; - Yr(Zr.toLowerCase(), "on" + (Zr[0].toUpperCase() + Zr.slice(1))); + for (var Jr = 0; Jr < Kr.length; Jr++) { + var Yr = Kr[Jr]; + qr(Yr.toLowerCase(), "on" + (Yr[0].toUpperCase() + Yr.slice(1))); } - Yr(Ur, "onAnimationEnd"), Yr(Wr, "onAnimationIteration"), Yr(Gr, "onAnimationStart"), Yr("dblclick", "onDoubleClick"), Yr("focusin", "onFocus"), Yr("focusout", "onBlur"), Yr(Kr, "onTransitionEnd"), s("onMouseEnter", ["mouseout", "mouseover"]), s("onMouseLeave", ["mouseout", "mouseover"]), s("onPointerEnter", ["pointerout", "pointerover"]), s("onPointerLeave", ["pointerout", "pointerover"]), o("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")), o("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")), o("onBeforeInput", [ + qr(Vr, "onAnimationEnd"), qr(Hr, "onAnimationIteration"), qr(Ur, "onAnimationStart"), qr("dblclick", "onDoubleClick"), qr("focusin", "onFocus"), qr("focusout", "onBlur"), qr(Wr, "onTransitionEnd"), s("onMouseEnter", ["mouseout", "mouseover"]), s("onMouseLeave", ["mouseout", "mouseover"]), s("onPointerEnter", ["pointerout", "pointerover"]), s("onPointerLeave", ["pointerout", "pointerover"]), o("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")), o("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")), o("onBeforeInput", [ "compositionend", "keypress", "textInput", "paste" ]), o("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")), o("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")), o("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" ")); - var Qr = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), $r = new Set("cancel close invalid load scroll toggle".split(" ").concat(Qr)); - function ei(e, t, n) { + var Xr = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), Zr = new Set("cancel close invalid load scroll toggle".split(" ").concat(Xr)); + function Qr(e, t, n) { var r = e.type || "unknown-event"; - e.currentTarget = n, st(r, t, void 0, e), e.currentTarget = null; + e.currentTarget = n, at(r, t, void 0, e), e.currentTarget = null; } - function ti(e, t) { + function $r(e, t) { t = (t & 4) != 0; for (var n = 0; n < e.length; n++) { var r = e[n], i = r.event; @@ -2015,52 +2015,52 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (t) for (var o = r.length - 1; 0 <= o; o--) { var s = r[o], c = s.instance, l = s.currentTarget; if (s = s.listener, c !== a && i.isPropagationStopped()) break a; - ei(i, s, l), a = c; + Qr(i, s, l), a = c; } else for (o = 0; o < r.length; o++) { if (s = r[o], c = s.instance, l = s.currentTarget, s = s.listener, c !== a && i.isPropagationStopped()) break a; - ei(i, s, l), a = c; + Qr(i, s, l), a = c; } } } - if (rt) throw e = it, rt = !1, it = null, e; + if (tt) throw e = nt, tt = !1, nt = null, e; } - function q(e, t) { - var n = t[ji]; - n === void 0 && (n = t[ji] = /* @__PURE__ */ new Set()); + function ei(e, t) { + var n = t[Ai]; + n === void 0 && (n = t[Ai] = /* @__PURE__ */ new Set()); var r = e + "__bubble"; - n.has(r) || (ai(t, e, 2, !1), n.add(r)); + n.has(r) || (ii(t, e, 2, !1), n.add(r)); } - function ni(e, t, n) { + function ti(e, t, n) { var r = 0; - t && (r |= 4), ai(n, e, r, t); + t && (r |= 4), ii(n, e, r, t); } - var ri = "_reactListening" + Math.random().toString(36).slice(2); - function ii(e) { - if (!e[ri]) { - e[ri] = !0, i.forEach(function(t) { - t !== "selectionchange" && ($r.has(t) || ni(t, !1, e), ni(t, !0, e)); + var ni = "_reactListening" + Math.random().toString(36).slice(2); + function ri(e) { + if (!e[ni]) { + e[ni] = !0, i.forEach(function(t) { + t !== "selectionchange" && (Zr.has(t) || ti(t, !1, e), ti(t, !0, e)); }); var t = e.nodeType === 9 ? e : e.ownerDocument; - t === null || t[ri] || (t[ri] = !0, ni("selectionchange", !1, t)); + t === null || t[ni] || (t[ni] = !0, ti("selectionchange", !1, t)); } } - function ai(e, t, n, r) { - switch (hn(t)) { + function ii(e, t, n, r) { + switch (pn(t)) { case 1: - var i = un; + var i = cn; break; case 4: - i = dn; + i = ln; break; - default: i = fn; + default: i = un; } - n = i.bind(null, t, n, e), i = void 0, !Qe || t !== "touchstart" && t !== "touchmove" && t !== "wheel" || (i = !0), r ? i === void 0 ? e.addEventListener(t, n, !0) : e.addEventListener(t, n, { + n = i.bind(null, t, n, e), i = void 0, !Xe || t !== "touchstart" && t !== "touchmove" && t !== "wheel" || (i = !0), r ? i === void 0 ? e.addEventListener(t, n, !0) : e.addEventListener(t, n, { capture: !0, passive: i }) : i === void 0 ? e.addEventListener(t, n, !1) : e.addEventListener(t, n, { passive: i }); } - function oi(e, t, n, r, i) { + function ai(e, t, n, r, i) { var a = r; if (!(t & 1) && !(t & 2) && r !== null) a: for (;;) { if (r === null) return; @@ -2074,7 +2074,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr o = o.return; } for (; s !== null;) { - if (o = Pi(s), o === null) return; + if (o = Ni(s), o === null) return; if (c = o.tag, c === 5 || c === 6) { r = a = o; continue a; @@ -2084,27 +2084,27 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } r = r.return; } - Xe(function() { - var r = a, i = Be(n), o = []; + Je(function() { + var r = a, i = Re(n), o = []; a: { - var s = qr.get(e); + var s = Gr.get(e); if (s !== void 0) { - var c = wn, l = e; + var c = Sn, l = e; switch (e) { - case "keypress": if (yn(n) === 0) break a; + case "keypress": if (_n(n) === 0) break a; case "keydown": case "keyup": - c = Hn; + c = Bn; break; case "focusin": - l = "focus", c = Nn; + l = "focus", c = jn; break; case "focusout": - l = "blur", c = Nn; + l = "blur", c = jn; break; case "beforeblur": case "afterblur": - c = Nn; + c = jn; break; case "click": if (n.button === 2) break a; case "auxclick": @@ -2115,7 +2115,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr case "mouseout": case "mouseover": case "contextmenu": - c = jn; + c = kn; break; case "drag": case "dragend": @@ -2125,32 +2125,32 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr case "dragover": case "dragstart": case "drop": - c = Mn; + c = An; break; case "touchcancel": case "touchend": case "touchmove": case "touchstart": - c = Wn; + c = Hn; break; + case Vr: + case Hr: case Ur: - case Wr: - case Gr: - c = Pn; + c = Mn; break; - case Kr: - c = Gn; + case Wr: + c = Un; break; case "scroll": - c = En; + c = wn; break; case "wheel": - c = Kn; + c = Wn; break; case "copy": case "cut": case "paste": - c = Fn; + c = Nn; break; case "gotpointercapture": case "lostpointercapture": @@ -2159,14 +2159,14 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr case "pointermove": case "pointerout": case "pointerover": - case "pointerup": c = Un; + case "pointerup": c = Vn; } var u = (t & 4) != 0, d = !u && e === "scroll", f = u ? s === null ? null : s + "Capture" : s; u = []; for (var p = r, m; p !== null;) { m = p; var h = m.stateNode; - if (m.tag === 5 && h !== null && (m = h, f !== null && (h = Ze(p, f), h != null && u.push(si(p, h, m)))), d) break; + if (m.tag === 5 && h !== null && (m = h, f !== null && (h = Ye(p, f), h != null && u.push(oi(p, h, m)))), d) break; p = p.return; } 0 < u.length && (s = new c(s, l, null, n, i), o.push({ @@ -2177,58 +2177,58 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } if (!(t & 7)) { a: { - if (s = e === "mouseover" || e === "pointerover", c = e === "mouseout" || e === "pointerout", s && n !== ze && (l = n.relatedTarget || n.fromElement) && (Pi(l) || l[Ai])) break a; - if ((c || s) && (s = i.window === i ? i : (s = i.ownerDocument) ? s.defaultView || s.parentWindow : window, c ? (l = n.relatedTarget || n.toElement, c = r, l = l ? Pi(l) : null, l !== null && (d = ct(l), l !== d || l.tag !== 5 && l.tag !== 6) && (l = null)) : (c = null, l = r), c !== l)) { - if (u = jn, h = "onMouseLeave", f = "onMouseEnter", p = "mouse", (e === "pointerout" || e === "pointerover") && (u = Un, h = "onPointerLeave", f = "onPointerEnter", p = "pointer"), d = c == null ? s : Ii(c), m = l == null ? s : Ii(l), s = new u(h, p + "leave", c, n, i), s.target = d, s.relatedTarget = m, h = null, Pi(i) === r && (u = new u(f, p + "enter", l, n, i), u.target = m, u.relatedTarget = d, h = u), d = h, c && l) b: { - for (u = c, f = l, p = 0, m = u; m; m = li(m)) p++; - for (m = 0, h = f; h; h = li(h)) m++; - for (; 0 < p - m;) u = li(u), p--; - for (; 0 < m - p;) f = li(f), m--; + if (s = e === "mouseover" || e === "pointerover", c = e === "mouseout" || e === "pointerout", s && n !== Le && (l = n.relatedTarget || n.fromElement) && (Ni(l) || l[ki])) break a; + if ((c || s) && (s = i.window === i ? i : (s = i.ownerDocument) ? s.defaultView || s.parentWindow : window, c ? (l = n.relatedTarget || n.toElement, c = r, l = l ? Ni(l) : null, l !== null && (d = ot(l), l !== d || l.tag !== 5 && l.tag !== 6) && (l = null)) : (c = null, l = r), c !== l)) { + if (u = kn, h = "onMouseLeave", f = "onMouseEnter", p = "mouse", (e === "pointerout" || e === "pointerover") && (u = Vn, h = "onPointerLeave", f = "onPointerEnter", p = "pointer"), d = c == null ? s : Fi(c), m = l == null ? s : Fi(l), s = new u(h, p + "leave", c, n, i), s.target = d, s.relatedTarget = m, h = null, Ni(i) === r && (u = new u(f, p + "enter", l, n, i), u.target = m, u.relatedTarget = d, h = u), d = h, c && l) b: { + for (u = c, f = l, p = 0, m = u; m; m = ci(m)) p++; + for (m = 0, h = f; h; h = ci(h)) m++; + for (; 0 < p - m;) u = ci(u), p--; + for (; 0 < m - p;) f = ci(f), m--; for (; p--;) { if (u === f || f !== null && u === f.alternate) break b; - u = li(u), f = li(f); + u = ci(u), f = ci(f); } u = null; } else u = null; - c !== null && ui(o, s, c, u, !1), l !== null && d !== null && ui(o, d, l, u, !0); + c !== null && li(o, s, c, u, !1), l !== null && d !== null && li(o, d, l, u, !0); } } a: { - if (s = r ? Ii(r) : window, c = s.nodeName && s.nodeName.toLowerCase(), c === "select" || c === "input" && s.type === "file") var g = fr; - else if (or(s)) if (pr) g = Sr; + if (s = r ? Fi(r) : window, c = s.nodeName && s.nodeName.toLowerCase(), c === "select" || c === "input" && s.type === "file") var g = ur; + else if (ir(s)) if (dr) g = br; else { - g = br; - var _ = yr; + g = vr; + var _ = _r; } - else (c = s.nodeName) && c.toLowerCase() === "input" && (s.type === "checkbox" || s.type === "radio") && (g = xr); + else (c = s.nodeName) && c.toLowerCase() === "input" && (s.type === "checkbox" || s.type === "radio") && (g = yr); if (g &&= g(e, r)) { - sr(o, g, n, i); + ar(o, g, n, i); break a; } - _ && _(e, s, r), e === "focusout" && (_ = s._wrapperState) && _.controlled && s.type === "number" && xe(s, "number", s.value); + _ && _(e, s, r), e === "focusout" && (_ = s._wrapperState) && _.controlled && s.type === "number" && be(s, "number", s.value); } - switch (_ = r ? Ii(r) : window, e) { + switch (_ = r ? Fi(r) : window, e) { case "focusin": - (or(_) || _.contentEditable === "true") && (Nr = _, Pr = r, Fr = null); + (ir(_) || _.contentEditable === "true") && (jr = _, Mr = r, Nr = null); break; case "focusout": - Fr = Pr = Nr = null; + Nr = Mr = jr = null; break; case "mousedown": - Ir = !0; + Pr = !0; break; case "contextmenu": case "mouseup": case "dragend": - Ir = !1, Lr(o, n, i); + Pr = !1, Fr(o, n, i); break; - case "selectionchange": if (Mr) break; + case "selectionchange": if (Ar) break; case "keydown": - case "keyup": Lr(o, n, i); + case "keyup": Fr(o, n, i); } var v; - if (Jn) b: { + if (Kn) b: { switch (e) { case "compositionstart": var y = "onCompositionStart"; @@ -2242,86 +2242,86 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } y = void 0; } - else nr ? er(e, n) && (y = "onCompositionEnd") : e === "keydown" && n.keyCode === 229 && (y = "onCompositionStart"); - y && (Zn && n.locale !== "ko" && (nr || y !== "onCompositionStart" ? y === "onCompositionEnd" && nr && (v = vn()) : (gn = i, _n = "value" in gn ? gn.value : gn.textContent, nr = !0)), _ = ci(r, y), 0 < _.length && (y = new In(y, e, null, n, i), o.push({ + else er ? Qn(e, n) && (y = "onCompositionEnd") : e === "keydown" && n.keyCode === 229 && (y = "onCompositionStart"); + y && (Yn && n.locale !== "ko" && (er || y !== "onCompositionStart" ? y === "onCompositionEnd" && er && (v = gn()) : (mn = i, hn = "value" in mn ? mn.value : mn.textContent, er = !0)), _ = si(r, y), 0 < _.length && (y = new Pn(y, e, null, n, i), o.push({ event: y, listeners: _ - }), v ? y.data = v : (v = tr(n), v !== null && (y.data = v)))), (v = Xn ? rr(e, n) : ir(e, n)) && (r = ci(r, "onBeforeInput"), 0 < r.length && (i = new In("onBeforeInput", "beforeinput", null, n, i), o.push({ + }), v ? y.data = v : (v = $n(n), v !== null && (y.data = v)))), (v = Jn ? tr(e, n) : nr(e, n)) && (r = si(r, "onBeforeInput"), 0 < r.length && (i = new Pn("onBeforeInput", "beforeinput", null, n, i), o.push({ event: i, listeners: r }), i.data = v)); } - ti(o, t); + $r(o, t); }); } - function si(e, t, n) { + function oi(e, t, n) { return { instance: e, listener: t, currentTarget: n }; } - function ci(e, t) { + function si(e, t) { for (var n = t + "Capture", r = []; e !== null;) { var i = e, a = i.stateNode; - i.tag === 5 && a !== null && (i = a, a = Ze(e, n), a != null && r.unshift(si(e, a, i)), a = Ze(e, t), a != null && r.push(si(e, a, i))), e = e.return; + i.tag === 5 && a !== null && (i = a, a = Ye(e, n), a != null && r.unshift(oi(e, a, i)), a = Ye(e, t), a != null && r.push(oi(e, a, i))), e = e.return; } return r; } - function li(e) { + function ci(e) { if (e === null) return null; do e = e.return; while (e && e.tag !== 5); return e || null; } - function ui(e, t, n, r, i) { + function li(e, t, n, r, i) { for (var a = t._reactName, o = []; n !== null && n !== r;) { var s = n, c = s.alternate, l = s.stateNode; if (c !== null && c === r) break; - s.tag === 5 && l !== null && (s = l, i ? (c = Ze(n, a), c != null && o.unshift(si(n, c, s))) : i || (c = Ze(n, a), c != null && o.push(si(n, c, s)))), n = n.return; + s.tag === 5 && l !== null && (s = l, i ? (c = Ye(n, a), c != null && o.unshift(oi(n, c, s))) : i || (c = Ye(n, a), c != null && o.push(oi(n, c, s)))), n = n.return; } o.length !== 0 && e.push({ event: t, listeners: o }); } - var di = /\r\n?/g, fi = /\u0000|\uFFFD/g; - function pi(e) { - return (typeof e == "string" ? e : "" + e).replace(di, "\n").replace(fi, ""); + var ui = /\r\n?/g, di = /\u0000|\uFFFD/g; + function fi(e) { + return (typeof e == "string" ? e : "" + e).replace(ui, "\n").replace(di, ""); } - function mi(e, t, n) { - if (t = pi(t), pi(e) !== t && n) throw Error(r(425)); + function pi(e, t, n) { + if (t = fi(t), fi(e) !== t && n) throw Error(r(425)); } - function hi() {} - var gi = null, _i = null; - function vi(e, t) { + function mi() {} + var hi = null, gi = null; + function _i(e, t) { return e === "textarea" || e === "noscript" || typeof t.children == "string" || typeof t.children == "number" || typeof t.dangerouslySetInnerHTML == "object" && t.dangerouslySetInnerHTML !== null && t.dangerouslySetInnerHTML.__html != null; } - var yi = typeof setTimeout == "function" ? setTimeout : void 0, bi = typeof clearTimeout == "function" ? clearTimeout : void 0, xi = typeof Promise == "function" ? Promise : void 0, Si = typeof queueMicrotask == "function" ? queueMicrotask : xi === void 0 ? yi : function(e) { - return xi.resolve(null).then(e).catch(Ci); + var vi = typeof setTimeout == "function" ? setTimeout : void 0, yi = typeof clearTimeout == "function" ? clearTimeout : void 0, bi = typeof Promise == "function" ? Promise : void 0, xi = typeof queueMicrotask == "function" ? queueMicrotask : bi === void 0 ? vi : function(e) { + return bi.resolve(null).then(e).catch(Si); }; - function Ci(e) { + function Si(e) { setTimeout(function() { throw e; }); } - function wi(e, t) { + function Ci(e, t) { var n = t, r = 0; do { var i = n.nextSibling; if (e.removeChild(n), i && i.nodeType === 8) if (n = i.data, n === "/$") { if (r === 0) { - e.removeChild(i), sn(t); + e.removeChild(i), an(t); return; } r--; } else n !== "$" && n !== "$?" && n !== "$!" || r++; n = i; } while (n); - sn(t); + an(t); } - function Ti(e) { + function wi(e) { for (; e != null; e = e.nextSibling) { var t = e.nodeType; if (t === 1 || t === 3) break; @@ -2332,7 +2332,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } return e; } - function Ei(e) { + function Ti(e) { e = e.previousSibling; for (var t = 0; e;) { if (e.nodeType === 8) { @@ -2346,15 +2346,15 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } return null; } - var Di = Math.random().toString(36).slice(2), Oi = "__reactFiber$" + Di, ki = "__reactProps$" + Di, Ai = "__reactContainer$" + Di, ji = "__reactEvents$" + Di, Mi = "__reactListeners$" + Di, Ni = "__reactHandles$" + Di; - function Pi(e) { - var t = e[Oi]; + var Ei = Math.random().toString(36).slice(2), Di = "__reactFiber$" + Ei, Oi = "__reactProps$" + Ei, ki = "__reactContainer$" + Ei, Ai = "__reactEvents$" + Ei, ji = "__reactListeners$" + Ei, Mi = "__reactHandles$" + Ei; + function Ni(e) { + var t = e[Di]; if (t) return t; for (var n = e.parentNode; n;) { - if (t = n[Ai] || n[Oi]) { - if (n = t.alternate, t.child !== null || n !== null && n.child !== null) for (e = Ei(e); e !== null;) { - if (n = e[Oi]) return n; - e = Ei(e); + if (t = n[ki] || n[Di]) { + if (n = t.alternate, t.child !== null || n !== null && n.child !== null) for (e = Ti(e); e !== null;) { + if (n = e[Di]) return n; + e = Ti(e); } return t; } @@ -2362,27 +2362,27 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } return null; } - function Fi(e) { - return e = e[Oi] || e[Ai], !e || e.tag !== 5 && e.tag !== 6 && e.tag !== 13 && e.tag !== 3 ? null : e; + function Pi(e) { + return e = e[Di] || e[ki], !e || e.tag !== 5 && e.tag !== 6 && e.tag !== 13 && e.tag !== 3 ? null : e; } - function Ii(e) { + function Fi(e) { if (e.tag === 5 || e.tag === 6) return e.stateNode; throw Error(r(33)); } - function Li(e) { - return e[ki] || null; + function Ii(e) { + return e[Oi] || null; } - var Ri = [], zi = -1; - function Bi(e) { + var Li = [], Ri = -1; + function zi(e) { return { current: e }; } - function J(e) { - 0 > zi || (e.current = Ri[zi], Ri[zi] = null, zi--); + function Bi(e) { + 0 > Ri || (e.current = Li[Ri], Li[Ri] = null, Ri--); } function Vi(e, t) { - zi++, Ri[zi] = e.current, e.current = t; + Ri++, Li[Ri] = e.current, e.current = t; } - var Hi = {}, Ui = Bi(Hi), Wi = Bi(!1), Gi = Hi; + var Hi = {}, Ui = zi(Hi), Wi = zi(!1), Gi = Hi; function Ki(e, t) { var n = e.type.contextTypes; if (!n) return Hi; @@ -2396,7 +2396,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr return e = e.childContextTypes, e != null; } function Ji() { - J(Wi), J(Ui); + Bi(Wi), Bi(Ui); } function Yi(e, t, n) { if (Ui.current !== Hi) throw Error(r(168)); @@ -2405,7 +2405,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr function Xi(e, t, n) { var i = e.stateNode; if (t = t.childContextTypes, typeof i.getChildContext != "function") return n; - for (var a in i = i.getChildContext(), i) if (!(a in t)) throw Error(r(108, ue(e) || "Unknown", a)); + for (var a in i = i.getChildContext(), i) if (!(a in t)) throw Error(r(108, le(e) || "Unknown", a)); return F({}, n, i); } function Zi(e) { @@ -2414,7 +2414,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr function Qi(e, t, n) { var i = e.stateNode; if (!i) throw Error(r(169)); - n ? (e = Xi(e, t, Gi), i.__reactInternalMemoizedMergedChildContext = e, J(Wi), J(Ui), Vi(Ui, e)) : J(Wi), Vi(Wi, n); + n ? (e = Xi(e, t, Gi), i.__reactInternalMemoizedMergedChildContext = e, Bi(Wi), Bi(Ui), Vi(Ui, e)) : Bi(Wi), Vi(Wi, n); } var $i = null, ea = !1, ta = !1; function na(e) { @@ -2426,10 +2426,10 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr function ia() { if (!ta && $i !== null) { ta = !0; - var e = 0, t = W; + var e = 0, t = K; try { var n = $i; - for (W = 1; e < n.length; e++) { + for (K = 1; e < n.length; e++) { var r = n[e]; do r = r(!0); @@ -2437,9 +2437,9 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } $i = null, ea = !1; } catch (t) { - throw $i !== null && ($i = $i.slice(e + 1)), pt(_t, ia), t; + throw $i !== null && ($i = $i.slice(e + 1)), dt(ht, ia), t; } finally { - W = t, ta = !1; + K = t, ta = !1; } } return null; @@ -2452,12 +2452,12 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr la[ua++] = fa, la[ua++] = pa, la[ua++] = da, da = e; var r = fa; e = pa; - var i = 32 - Tt(r) - 1; + var i = 32 - Ct(r) - 1; r &= ~(1 << i), n += 1; - var a = 32 - Tt(t) + i; + var a = 32 - Ct(t) + i; if (30 < a) { var o = i - i % 5; - a = (r & (1 << o) - 1).toString(32), r >>= o, i -= o, fa = 1 << 32 - Tt(t) + i | n << i | r, pa = a + e; + a = (r & (1 << o) - 1).toString(32), r >>= o, i -= o, fa = 1 << 32 - Ct(t) + i | n << i | r, pa = a + e; } else fa = 1 << a | n << i | r, pa = e; } function ga(e) { @@ -2476,7 +2476,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr switch (e.tag) { case 5: var n = e.type; - return t = t.nodeType !== 1 || n.toLowerCase() !== t.nodeName.toLowerCase() ? null : t, t === null ? !1 : (e.stateNode = t, va = e, ya = Ti(t.firstChild), !0); + return t = t.nodeType !== 1 || n.toLowerCase() !== t.nodeName.toLowerCase() ? null : t, t === null ? !1 : (e.stateNode = t, va = e, ya = wi(t.firstChild), !0); case 6: return t = e.pendingProps === "" || t.nodeType !== 3 ? null : t, t === null ? !1 : (e.stateNode = t, va = e, ya = null, !0); case 13: return t = t.nodeType === 8 ? t : null, t === null ? !1 : (n = da === null ? null : { id: fa, @@ -2499,7 +2499,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr var n = t; if (!Ca(e, t)) { if (wa(e)) throw Error(r(418)); - t = Ti(n.nextSibling); + t = wi(n.nextSibling); var i = va; t && Ca(e, t) ? Sa(i, n) : (e.flags = e.flags & -4097 | 2, ba = !1, va = e); } @@ -2517,9 +2517,9 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (e !== va) return !1; if (!ba) return Ea(e), ba = !0, !1; var t; - if ((t = e.tag !== 3) && !(t = e.tag !== 5) && (t = e.type, t = t !== "head" && t !== "body" && !vi(e.type, e.memoizedProps)), t &&= ya) { + if ((t = e.tag !== 3) && !(t = e.tag !== 5) && (t = e.type, t = t !== "head" && t !== "body" && !_i(e.type, e.memoizedProps)), t &&= ya) { if (wa(e)) throw Oa(), Error(r(418)); - for (; t;) Sa(e, t), t = Ti(t.nextSibling); + for (; t;) Sa(e, t), t = wi(t.nextSibling); } if (Ea(e), e.tag === 13) { if (e = e.memoizedState, e = e === null ? null : e.dehydrated, !e) throw Error(r(317)); @@ -2529,7 +2529,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr var n = e.data; if (n === "/$") { if (t === 0) { - ya = Ti(e.nextSibling); + ya = wi(e.nextSibling); break a; } t--; @@ -2539,11 +2539,11 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } ya = null; } - } else ya = va ? Ti(e.stateNode.nextSibling) : null; + } else ya = va ? wi(e.stateNode.nextSibling) : null; return !0; } function Oa() { - for (var e = ya; e;) e = Ti(e.nextSibling); + for (var e = ya; e;) e = wi(e.nextSibling); } function ka() { ya = va = null, ba = !1; @@ -2608,7 +2608,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } function l(e, t, n, r) { var i = n.type; - return i === E ? d(e, t, n.props.children, r, n.key) : t !== null && (t.elementType === i || typeof i == "object" && i && i.$$typeof === te && Na(i) === t.type) ? (r = a(t, n.props), r.ref = ja(e, t, n), r.return = e, r) : (r = Xl(n.type, n.key, n.props, null, e.mode, r), r.ref = ja(e, t, n), r.return = e, r); + return i === E ? d(e, t, n.props.children, r, n.key) : t !== null && (t.elementType === i || typeof i == "object" && i && i.$$typeof === P && Na(i) === t.type) ? (r = a(t, n.props), r.ref = ja(e, t, n), r.return = e, r) : (r = Xl(n.type, n.key, n.props, null, e.mode, r), r.ref = ja(e, t, n), r.return = e, r); } function u(e, t, n, r) { return t === null || t.tag !== 4 || t.stateNode.containerInfo !== n.containerInfo || t.stateNode.implementation !== n.implementation ? (t = eu(n, e.mode, r), t.return = e, t) : (t = a(t, n.children || []), t.return = e, t); @@ -2622,11 +2622,11 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr switch (t.$$typeof) { case w: return n = Xl(t.type, t.key, t.props, null, e.mode, n), n.ref = ja(e, null, t), n.return = e, n; case T: return t = eu(t, e.mode, n), t.return = e, t; - case te: + case P: var r = t._init; return f(e, r(t._payload), n); } - if (Se(t) || P(t)) return t = Zl(t, e.mode, n, null), t.return = e, t; + if (xe(t) || re(t)) return t = Zl(t, e.mode, n, null), t.return = e, t; Ma(e, t); } return null; @@ -2638,9 +2638,9 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr switch (n.$$typeof) { case w: return n.key === i ? l(e, t, n, r) : null; case T: return n.key === i ? u(e, t, n, r) : null; - case te: return i = n._init, p(e, t, i(n._payload), r); + case P: return i = n._init, p(e, t, i(n._payload), r); } - if (Se(n) || P(n)) return i === null ? d(e, t, n, r, null) : null; + if (xe(n) || re(n)) return i === null ? d(e, t, n, r, null) : null; Ma(e, n); } return null; @@ -2651,11 +2651,11 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr switch (r.$$typeof) { case w: return e = e.get(r.key === null ? n : r.key) || null, l(t, e, r, i); case T: return e = e.get(r.key === null ? n : r.key) || null, u(t, e, r, i); - case te: + case P: var a = r._init; return m(e, t, n, a(r._payload), i); } - if (Se(r) || P(r)) return e = e.get(n) || null, d(t, e, r, i, null); + if (xe(r) || re(r)) return e = e.get(n) || null, d(t, e, r, i, null); Ma(t, r); } return null; @@ -2681,7 +2681,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr }), ba && ma(r, h), l; } function g(a, s, c, l) { - var u = P(c); + var u = re(c); if (typeof u != "function") throw Error(r(150)); if (c = u.call(c), c == null) throw Error(r(151)); for (var d = u = null, h = s, g = s = 0, _ = null, v = c.next(); h !== null && !v.done; g++, v = c.next()) { @@ -2715,7 +2715,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr n(e, l.sibling), r = a(l, i.props.children), r.return = e, e = r; break a; } - } else if (l.elementType === c || typeof c == "object" && c && c.$$typeof === te && Na(c) === l.type) { + } else if (l.elementType === c || typeof c == "object" && c && c.$$typeof === P && Na(c) === l.type) { n(e, l.sibling), r = a(l, i.props), r.ref = ja(e, l, i), r.return = e, e = r; break a; } @@ -2743,23 +2743,23 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr r = eu(i, e.mode, o), r.return = e, e = r; } return s(e); - case te: return l = i._init, _(e, r, l(i._payload), o); + case P: return l = i._init, _(e, r, l(i._payload), o); } - if (Se(i)) return h(e, r, i, o); - if (P(i)) return g(e, r, i, o); + if (xe(i)) return h(e, r, i, o); + if (re(i)) return g(e, r, i, o); Ma(e, i); } return typeof i == "string" && i !== "" || typeof i == "number" ? (i = "" + i, r !== null && r.tag === 6 ? (n(e, r.sibling), r = a(r, i), r.return = e, e = r) : (n(e, r), r = $l(i, e.mode, o), r.return = e, e = r), s(e)) : n(e, r); } return _; } - var Fa = Pa(!0), Ia = Pa(!1), La = Bi(null), Ra = null, za = null, Ba = null; + var Fa = Pa(!0), Ia = Pa(!1), La = zi(null), Ra = null, za = null, Ba = null; function Va() { Ba = za = Ra = null; } function Ha(e) { var t = La.current; - J(La), e._currentValue = t; + Bi(La), e._currentValue = t; } function Ua(e, t, n) { for (; e !== null;) { @@ -2836,7 +2836,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr function eo(e, t, n) { var r = e.updateQueue; if (r === null) return null; - if (r = r.shared, $ & 2) { + if (r = r.shared, Q & 2) { var i = r.pending; return i === null ? t.next = t : (t.next = i.next, i.next = t), r.pending = t, Ya(e, n); } @@ -2845,7 +2845,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr function to(e, t, n) { if (t = t.updateQueue, t !== null && (t = t.shared, n & 4194240)) { var r = t.lanes; - r &= e.pendingLanes, n |= r, t.lanes = n, Lt(e, n); + r &= e.pendingLanes, n |= r, t.lanes = n, Ft(e, n); } } function no(e, t) { @@ -2940,7 +2940,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr o |= i.lane, i = i.next; while (i !== t); } else a === null && (i.shared.lanes = 0); - Jc |= o, e.lanes = o, e.memoizedState = d; + Yc |= o, e.lanes = o, e.memoizedState = d; } } function io(e, t, n) { @@ -2952,7 +2952,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } } } - var ao = {}, oo = Bi(ao), so = Bi(ao), co = Bi(ao); + var ao = {}, oo = zi(ao), so = zi(ao), co = zi(ao); function lo(e) { if (e === ao) throw Error(r(174)); return e; @@ -2961,24 +2961,24 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr switch (Vi(co, t), Vi(so, e), Vi(oo, ao), e = t.nodeType, e) { case 9: case 11: - t = (t = t.documentElement) ? t.namespaceURI : ke(null, ""); + t = (t = t.documentElement) ? t.namespaceURI : Oe(null, ""); break; - default: e = e === 8 ? t.parentNode : t, t = e.namespaceURI || null, e = e.tagName, t = ke(t, e); + default: e = e === 8 ? t.parentNode : t, t = e.namespaceURI || null, e = e.tagName, t = Oe(t, e); } - J(oo), Vi(oo, t); + Bi(oo), Vi(oo, t); } function fo() { - J(oo), J(so), J(co); + Bi(oo), Bi(so), Bi(co); } function po(e) { lo(co.current); - var t = lo(oo.current), n = ke(t, e.type); + var t = lo(oo.current), n = Oe(t, e.type); t !== n && (Vi(so, e), Vi(oo, n)); } function mo(e) { - so.current === e && (J(oo), J(so)); + so.current === e && (Bi(oo), Bi(so)); } - var ho = Bi(0); + var ho = zi(0); function go(e) { for (var t = e; t !== null;) { if (t.tag === 13) { @@ -3010,7 +3010,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } function ko(e, t) { if (t === null) return !1; - for (var n = 0; n < t.length && n < e.length; n++) if (!wr(e[n], t[n])) return !1; + for (var n = 0; n < t.length && n < e.length; n++) if (!Sr(e[n], t[n])) return !1; return !0; } function Ao(e, t, n, i, a, o) { @@ -3092,16 +3092,16 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr eagerState: u.eagerState, next: null }; - l === null ? (c = l = f, s = i) : l = l.next = f, So.lanes |= d, Jc |= d; + l === null ? (c = l = f, s = i) : l = l.next = f, So.lanes |= d, Yc |= d; } u = u.next; } while (u !== null && u !== o); - l === null ? s = i : l.next = c, wr(i, t.memoizedState) || (Ns = !0), t.memoizedState = i, t.baseState = s, t.baseQueue = l, n.lastRenderedState = i; + l === null ? s = i : l.next = c, Sr(i, t.memoizedState) || (Ns = !0), t.memoizedState = i, t.baseState = s, t.baseQueue = l, n.lastRenderedState = i; } if (e = n.interleaved, e !== null) { a = e; do - o = a.lane, So.lanes |= o, Jc |= o, a = a.next; + o = a.lane, So.lanes |= o, Yc |= o, a = a.next; while (a !== e); } else a === null && (n.lanes = 0); return [t.memoizedState, n.dispatch]; @@ -3117,15 +3117,15 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr do o = e(o, s.action), s = s.next; while (s !== a); - wr(o, t.memoizedState) || (Ns = !0), t.memoizedState = o, t.baseQueue === null && (t.baseState = o), n.lastRenderedState = o; + Sr(o, t.memoizedState) || (Ns = !0), t.memoizedState = o, t.baseQueue === null && (t.baseState = o), n.lastRenderedState = o; } return [o, i]; } function Lo() {} function Ro(e, t) { - var n = So, i = No(), a = t(), o = !wr(i.memoizedState, a); + var n = So, i = No(), a = t(), o = !Sr(i.memoizedState, a); if (o && (i.memoizedState = a, Ns = !0), i = i.queue, Xo(Vo.bind(null, n, i, e), [e]), i.getSnapshot !== t || o || wo !== null && wo.memoizedState.tag & 1) { - if (n.flags |= 2048, Go(9, Bo.bind(null, n, i, a, t), void 0, null), Vc === null) throw Error(r(349)); + if (n.flags |= 2048, Go(9, Bo.bind(null, n, i, a, t), void 0, null), Hc === null) throw Error(r(349)); xo & 30 || zo(n, t, a); } return a; @@ -3152,7 +3152,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr e = e.value; try { var n = t(); - return !wr(e, n); + return !Sr(e, n); } catch { return !0; } @@ -3241,17 +3241,17 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr return r !== null && t !== null && ko(t, r[1]) ? r[0] : (e = e(), n.memoizedState = [e, t], e); } function is(e, t, n) { - return xo & 21 ? (wr(n, t) || (n = Nt(), So.lanes |= n, Jc |= n, e.baseState = !0), t) : (e.baseState && (e.baseState = !1, Ns = !0), e.memoizedState = n); + return xo & 21 ? (Sr(n, t) || (n = jt(), So.lanes |= n, Yc |= n, e.baseState = !0), t) : (e.baseState && (e.baseState = !1, Ns = !0), e.memoizedState = n); } function as(e, t) { - var n = W; - W = n !== 0 && 4 > n ? n : 4, e(!0); + var n = K; + K = n !== 0 && 4 > n ? n : 4, e(!0); var r = bo.transition; bo.transition = {}; try { e(!1), t(); } finally { - W = n, bo.transition = r; + K = n, bo.transition = r; } } function os() { @@ -3284,7 +3284,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr var a = e.alternate; if (e.lanes === 0 && (a === null || a.lanes === 0) && (a = t.lastRenderedReducer, a !== null)) try { var o = t.lastRenderedState, s = a(o, n); - if (i.hasEagerState = !0, i.eagerState = s, wr(s, o)) { + if (i.hasEagerState = !0, i.eagerState = s, Sr(s, o)) { var c = t.interleaved; c === null ? (i.next = i, qa(t)) : (i.next = c.next, c.next = i), t.interleaved = i; return; @@ -3305,7 +3305,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr function ds(e, t, n) { if (n & 4194240) { var r = t.lanes; - r &= e.pendingLanes, n |= r, t.lanes = n, Lt(e, n); + r &= e.pendingLanes, n |= r, t.lanes = n, Ft(e, n); } } var fs = { @@ -3378,7 +3378,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (n === void 0) throw Error(r(407)); n = n(); } else { - if (n = t(), Vc === null) throw Error(r(349)); + if (n = t(), Hc === null) throw Error(r(349)); xo & 30 || zo(i, t, n); } a.memoizedState = n; @@ -3389,10 +3389,10 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr return a.queue = o, Yo(Vo.bind(null, i, o, e), [e]), i.flags |= 2048, Go(9, Bo.bind(null, i, o, n, t), void 0, null), n; }, useId: function() { - var e = Mo(), t = Vc.identifierPrefix; + var e = Mo(), t = Hc.identifierPrefix; if (ba) { var n = pa, r = fa; - n = (r & ~(1 << 32 - Tt(r) - 1)).toString(32) + n, t = ":" + t + "R" + n, n = Do++, 0 < n && (t += "H" + n.toString(32)), t += ":"; + n = (r & ~(1 << 32 - Ct(r) - 1)).toString(32) + n, t = ":" + t + "R" + n, n = Do++, 0 < n && (t += "H" + n.toString(32)), t += ":"; } else n = Oo++, t = ":" + t + "r" + n.toString(32) + ":"; return e.memoizedState = t; }, @@ -3461,7 +3461,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } var vs = { isMounted: function(e) { - return (e = e._reactInternals) ? ct(e) === e : !1; + return (e = e._reactInternals) ? ot(e) === e : !1; }, enqueueSetState: function(e, t, n) { e = e._reactInternals; @@ -3480,7 +3480,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } }; function ys(e, t, n, r, i, a, o) { - return e = e.stateNode, typeof e.shouldComponentUpdate == "function" ? e.shouldComponentUpdate(r, a, o) : t.prototype && t.prototype.isPureReactComponent ? !Tr(n, r) || !Tr(i, a) : !0; + return e = e.stateNode, typeof e.shouldComponentUpdate == "function" ? e.shouldComponentUpdate(r, a, o) : t.prototype && t.prototype.isPureReactComponent ? !Cr(n, r) || !Cr(i, a) : !0; } function bs(e, t, n) { var r = !1, i = Hi, a = t.contextType; @@ -3499,7 +3499,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr try { var n = "", r = t; do - n += ce(r), r = r.return; + n += se(r), r = r.return; while (r); var i = n; } catch (e) { @@ -3591,14 +3591,14 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } if (a = e.child, (e.lanes & i) === 0) { var o = a.memoizedProps; - if (n = n.compare, n = n === null ? Tr : n, n(o, r) && e.ref === t.ref) return tc(e, t, i); + if (n = n.compare, n = n === null ? Cr : n, n(o, r) && e.ref === t.ref) return tc(e, t, i); } return t.flags |= 1, e = Yl(a, r), e.ref = t.ref, e.return = t, t.child = e; } function Ls(e, t, n, r, i) { if (e !== null) { var a = e.memoizedProps; - if (Tr(a, r) && e.ref === t.ref) if (Ns = !1, t.pendingProps = r = a, (e.lanes & i) !== 0) e.flags & 131072 && (Ns = !0); + if (Cr(a, r) && e.ref === t.ref) if (Ns = !1, t.pendingProps = r = a, (e.lanes & i) !== 0) e.flags & 131072 && (Ns = !0); else return t.lanes = e.lanes, tc(e, t, i); } return Bs(e, t, n, r, i); @@ -3609,20 +3609,20 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr baseLanes: 0, cachePool: null, transitions: null - }, Vi(Gc, Wc), Wc |= n; + }, Vi(Kc, Gc), Gc |= n; else { if (!(n & 1073741824)) return e = a === null ? n : a.baseLanes | n, t.lanes = t.childLanes = 1073741824, t.memoizedState = { baseLanes: e, cachePool: null, transitions: null - }, t.updateQueue = null, Vi(Gc, Wc), Wc |= e, null; + }, t.updateQueue = null, Vi(Kc, Gc), Gc |= e, null; t.memoizedState = { baseLanes: 0, cachePool: null, transitions: null - }, r = a === null ? n : a.baseLanes, Vi(Gc, Wc), Wc |= r; + }, r = a === null ? n : a.baseLanes, Vi(Kc, Gc), Gc |= r; } - else a === null ? r = n : (r = a.baseLanes | n, t.memoizedState = null), Vi(Gc, Wc), Wc |= r; + else a === null ? r = n : (r = a.baseLanes | n, t.memoizedState = null), Vi(Kc, Gc), Gc |= r; return Ps(e, t, i, n), t.child; } function zs(e, t) { @@ -3728,7 +3728,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr return i = c, o = Error(r(419)), i = ws(o, i, void 0), Ys(e, t, s, i); } if (c = (s & e.childLanes) !== 0, Ns || c) { - if (i = Vc, i !== null) { + if (i = Hc, i !== null) { switch (s & -s) { case 4: a = 2; @@ -3768,7 +3768,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr } return Ol(), i = ws(Error(r(421))), Ys(e, t, s, i); } - return a.data === "$?" ? (t.flags |= 128, t.child = e.child, t = Vl.bind(null, e), a._reactRetry = t, null) : (e = o.treeContext, ya = Ti(a.nextSibling), va = t, ba = !0, xa = null, e !== null && (la[ua++] = fa, la[ua++] = pa, la[ua++] = da, fa = e.id, pa = e.overflow, da = t), t = Js(t, i.children), t.flags |= 4096, t); + return a.data === "$?" ? (t.flags |= 128, t.child = e.child, t = Vl.bind(null, e), a._reactRetry = t, null) : (e = o.treeContext, ya = wi(a.nextSibling), va = t, ba = !0, xa = null, e !== null && (la[ua++] = fa, la[ua++] = pa, la[ua++] = da, fa = e.id, pa = e.overflow, da = t), t = Js(t, i.children), t.flags |= 4096, t); } function Zs(e, t, n) { e.lanes |= t; @@ -3833,7 +3833,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr !(t.mode & 1) && e !== null && (e.alternate = null, t.alternate = null, t.flags |= 2); } function tc(e, t, n) { - if (e !== null && (t.dependencies = e.dependencies), Jc |= t.lanes, (n & t.childLanes) === 0) return null; + if (e !== null && (t.dependencies = e.dependencies), Yc |= t.lanes, (n & t.childLanes) === 0) return null; if (e !== null && t.child !== e.child) throw Error(r(153)); if (t.child !== null) { for (e = t.child, n = Yl(e, e.pendingProps), t.child = n, n.return = t; e.sibling !== null;) e = e.sibling, n = n.sibling = Yl(e, e.pendingProps), n.return = t; @@ -3896,17 +3896,17 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr var o = null; switch (n) { case "input": - i = _e(e, i), r = _e(e, r), o = []; + i = ge(e, i), r = ge(e, r), o = []; break; case "select": i = F({}, i, { value: void 0 }), r = F({}, r, { value: void 0 }), o = []; break; case "textarea": - i = we(e, i), r = we(e, r), o = []; + i = Ce(e, i), r = Ce(e, r), o = []; break; - default: typeof i.onClick != "function" && typeof r.onClick == "function" && (e.onclick = hi); + default: typeof i.onClick != "function" && typeof r.onClick == "function" && (e.onclick = mi); } - Le(n, r); + Fe(n, r); var s; for (u in n = null, i) if (!r.hasOwnProperty(u) && i.hasOwnProperty(u) && i[u] != null) if (u === "style") { var c = i[u]; @@ -3918,7 +3918,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr for (s in c) !c.hasOwnProperty(s) || l && l.hasOwnProperty(s) || (n ||= {}, n[s] = ""); for (s in l) l.hasOwnProperty(s) && c[s] !== l[s] && (n ||= {}, n[s] = l[s]); } else n || (o ||= [], o.push(u, n)), n = l; - else u === "dangerouslySetInnerHTML" ? (l = l ? l.__html : void 0, c = c ? c.__html : void 0, l != null && c !== l && (o ||= []).push(u, l)) : u === "children" ? typeof l != "string" && typeof l != "number" || (o ||= []).push(u, "" + l) : u !== "suppressContentEditableWarning" && u !== "suppressHydrationWarning" && (a.hasOwnProperty(u) ? (l != null && u === "onScroll" && q("scroll", e), o || c === l || (o = [])) : (o ||= []).push(u, l)); + else u === "dangerouslySetInnerHTML" ? (l = l ? l.__html : void 0, c = c ? c.__html : void 0, l != null && c !== l && (o ||= []).push(u, l)) : u === "children" ? typeof l != "string" && typeof l != "number" || (o ||= []).push(u, "" + l) : u !== "suppressContentEditableWarning" && u !== "suppressHydrationWarning" && (a.hasOwnProperty(u) ? (l != null && u === "onScroll" && ei("scroll", e), o || c === l || (o = [])) : (o ||= []).push(u, l)); } n && (o ||= []).push("style", n); var u = o; @@ -3960,7 +3960,7 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr case 9: case 14: return sc(t), null; case 1: return qi(t.type) && Ji(), sc(t), null; - case 3: return i = t.stateNode, fo(), J(Wi), J(Ui), vo(), i.pendingContext && (i.context = i.pendingContext, i.pendingContext = null), (e === null || e.child === null) && (Da(t) ? t.flags |= 4 : e === null || e.memoizedState.isDehydrated && !(t.flags & 256) || (t.flags |= 1024, xa !== null && (vl(xa), xa = null))), sc(t), null; + case 3: return i = t.stateNode, fo(), Bi(Wi), Bi(Ui), vo(), i.pendingContext && (i.context = i.pendingContext, i.pendingContext = null), (e === null || e.child === null) && (Da(t) ? t.flags |= 4 : e === null || e.memoizedState.isDehydrated && !(t.flags & 256) || (t.flags |= 1024, xa !== null && (vl(xa), xa = null))), sc(t), null; case 5: mo(t); var o = lo(co.current); @@ -3973,114 +3973,114 @@ var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescr if (e = lo(oo.current), Da(t)) { i = t.stateNode, n = t.type; var s = t.memoizedProps; - switch (i[Oi] = t, i[ki] = s, e = (t.mode & 1) != 0, n) { + switch (i[Di] = t, i[Oi] = s, e = (t.mode & 1) != 0, n) { case "dialog": - q("cancel", i), q("close", i); + ei("cancel", i), ei("close", i); break; case "iframe": case "object": case "embed": - q("load", i); + ei("load", i); break; case "video": case "audio": - for (o = 0; o < Qr.length; o++) q(Qr[o], i); + for (o = 0; o < Xr.length; o++) ei(Xr[o], i); break; case "source": - q("error", i); + ei("error", i); break; case "img": case "image": case "link": - q("error", i), q("load", i); + ei("error", i), ei("load", i); break; case "details": - q("toggle", i); + ei("toggle", i); break; case "input": - I(i, s), q("invalid", i); + L(i, s), ei("invalid", i); break; case "select": - i._wrapperState = { wasMultiple: !!s.multiple }, q("invalid", i); + i._wrapperState = { wasMultiple: !!s.multiple }, ei("invalid", i); break; - case "textarea": Te(i, s), q("invalid", i); + case "textarea": we(i, s), ei("invalid", i); } - for (var c in Le(n, s), o = null, s) if (s.hasOwnProperty(c)) { + for (var c in Fe(n, s), o = null, s) if (s.hasOwnProperty(c)) { var l = s[c]; - c === "children" ? typeof l == "string" ? i.textContent !== l && (!0 !== s.suppressHydrationWarning && mi(i.textContent, l, e), o = ["children", l]) : typeof l == "number" && i.textContent !== "" + l && (!0 !== s.suppressHydrationWarning && mi(i.textContent, l, e), o = ["children", "" + l]) : a.hasOwnProperty(c) && l != null && c === "onScroll" && q("scroll", i); + c === "children" ? typeof l == "string" ? i.textContent !== l && (!0 !== s.suppressHydrationWarning && pi(i.textContent, l, e), o = ["children", l]) : typeof l == "number" && i.textContent !== "" + l && (!0 !== s.suppressHydrationWarning && pi(i.textContent, l, e), o = ["children", "" + l]) : a.hasOwnProperty(c) && l != null && c === "onScroll" && ei("scroll", i); } switch (n) { case "input": - me(i), be(i, s, !0); + pe(i), ye(i, s, !0); break; case "textarea": - me(i), De(i); + pe(i), Ee(i); break; case "select": case "option": break; - default: typeof s.onClick == "function" && (i.onclick = hi); + default: typeof s.onClick == "function" && (i.onclick = mi); } i = o, t.updateQueue = i, i !== null && (t.flags |= 4); } else { - c = o.nodeType === 9 ? o : o.ownerDocument, e === "http://www.w3.org/1999/xhtml" && (e = Oe(n)), e === "http://www.w3.org/1999/xhtml" ? n === "script" ? (e = c.createElement("div"), e.innerHTML = " @@ -451,7 +966,9 @@ export class PaperReaderPanel { } private dispose() { + for (const request of this.translationRequests.values()) request.controller.abort(); this.translation.dispose(); + this.codex.dispose(); PaperReaderPanel.currentPanel = undefined; while (this.disposables.length) { const disposable = this.disposables.pop(); @@ -479,3 +996,39 @@ function getLocalResourceRoots(extensionUri: vscode.Uri, pdfUri: vscode.Uri) { function ensureTrailingSlash(value: string) { return value.endsWith('/') ? value : `${value}/`; } + +function requireArtifact(artifacts: ResearchArtifact[], id: string) { + const artifact = artifacts.find(candidate => candidate.id === id); + if (!artifact) throw new Error('未找到该仓库工件。'); + return artifact; +} + +function withoutLicense( + snapshot: NonNullable & { license: string } +): NonNullable { + const { license: _license, ...checkout } = snapshot; + return checkout; +} + +function repositoryDirectoryName(url: string) { + const withoutQuery = url.split(/[?#]/, 1)[0].replace(/[\\/]+$/, '').replace(/\.git$/i, ''); + const candidate = withoutQuery.split(/[\\/:]/).filter(Boolean).pop() || 'repository'; + return candidate.replace(/[^a-zA-Z0-9._-]+/g, '-').slice(0, 100) || 'repository'; +} + +async function readAnnotationsSidecar(pdfUri: vscode.Uri): Promise { + const uri = vscode.Uri.file(path.join( + path.dirname(pdfUri.fsPath), + INLEAF_IDS.sidecarDirectory, + `${path.basename(pdfUri.fsPath)}.annotations.json` + )); + try { + const bytes = await vscode.workspace.fs.readFile(uri); + const value = JSON.parse(Buffer.from(bytes).toString('utf8')) as unknown; + if (!Array.isArray(value)) throw new Error('标注侧车文件必须包含 JSON 数组。'); + return value as AnnotationRecord[]; + } catch (error) { + if (error instanceof vscode.FileSystemError && error.code === 'FileNotFound') return []; + throw error; + } +} diff --git a/src/pdfIdentity.ts b/src/pdfIdentity.ts index 1052cc3..f50fba2 100644 --- a/src/pdfIdentity.ts +++ b/src/pdfIdentity.ts @@ -12,7 +12,8 @@ export type SidecarKind = | 'annotations.md' | 'annotated.pdf' | 'wordbook' - | 'progress'; + | 'progress' + | 'research'; export interface PdfLocation { pdfPath: string; @@ -30,7 +31,8 @@ export const SIDECAR_KINDS: SidecarKind[] = [ 'annotations.md', 'annotated.pdf', 'wordbook', - 'progress' + 'progress', + 'research' ]; export function createPdfLocation(pdfPath: string, updatedAt = new Date().toISOString()): PdfLocation { @@ -50,7 +52,8 @@ export function getSidecarPaths(location: PdfLocation): SidecarPaths { 'annotations.md': `${prefix}.annotations.md`, 'annotated.pdf': `${prefix}.annotated.pdf`, wordbook: `${prefix}.wordbook.json`, - progress: `${prefix}.progress.json` + progress: `${prefix}.progress.json`, + research: `${prefix}.research.json` }; } diff --git a/src/quickStart.ts b/src/quickStart.ts new file mode 100644 index 0000000..e1257b8 --- /dev/null +++ b/src/quickStart.ts @@ -0,0 +1,70 @@ +export type QuickStartAction = + | 'openPaper' + | 'chooseLibraryRoot' + | 'rebuildLibrary' + | 'setupCodex' + | 'configureDeepSeek' + | 'openGuide'; + +export interface QuickStartOption { + action: QuickStartAction; + label: string; + description: string; + detail?: string; +} + +export function buildQuickStartOptions(input: { + activePaperName?: string; + libraryRootCount: number; + hasDeepSeekKey: boolean; +}): QuickStartOption[] { + const options: QuickStartOption[] = [ + { + action: 'openPaper', + label: '$(book) 打开论文', + description: input.activePaperName + ? `在 Inleaf Reader 中打开 ${input.activePaperName}` + : '选择 PDF 并开始阅读', + detail: '最快进入标注、翻译和询问 Codex 的入口。' + }, + { + action: 'chooseLibraryRoot', + label: '$(library) 添加论文文库', + description: input.libraryRootCount + ? `已配置 ${input.libraryRootCount} 个文库目录` + : '选择存放论文的文件夹', + detail: '建立可重建的本地索引,用于论文分类与比较。' + } + ]; + + if (input.libraryRootCount) { + options.push({ + action: 'rebuildLibrary', + label: '$(refresh) 刷新论文文库', + description: '重新索引 PDF 及其研究档案', + detail: '添加论文或修改分类后使用此操作。' + }); + } + + options.push( + { + action: 'setupCodex', + label: '$(terminal) 检查 Codex 集成', + description: '验证“询问 Codex”,并可选连接只读文库工具', + detail: '询问 Codex 只需要本地 CLI;MCP 文库访问是可选项,需要单独确认。' + }, + { + action: 'configureDeepSeek', + label: '$(globe) 配置 DeepSeek 翻译', + description: input.hasDeepSeekKey ? 'API Key 已配置' : '安全保存你的 API Key', + detail: '密钥只保存在 VS Code SecretStorage 中。' + }, + { + action: 'openGuide', + label: '$(question) 打开入门指南', + description: '查看最简阅读与研究流程' + } + ); + + return options; +} diff --git a/src/readerMessages.ts b/src/readerMessages.ts index 0bc008b..deb16dd 100644 --- a/src/readerMessages.ts +++ b/src/readerMessages.ts @@ -1,11 +1,14 @@ import type { AnnotationRecord } from './annotationTypes'; import type { ProgressRecord, WordRecord } from './readerStorage'; +import type { ResearchReaderMessage } from './researchMessages'; export type TranslationMode = 'local' | 'deepseek'; /** Messages sent from the reader Webview to the extension host. */ export type ReaderMessage = ( + | ResearchReaderMessage | { type: 'ready' } + | { type: 'openQuickStart' } | { type: 'saveAnnotation'; payload: Omit } | { type: 'updateAnnotation'; @@ -24,7 +27,9 @@ export type ReaderMessage = ( | { type: 'deleteWord'; payload: { id: string } } | { type: 'saveProgress'; payload: ProgressRecord } | { type: 'setTranslationMode'; payload: { mode: TranslationMode } } + | { type: 'setDeepSeekModel'; payload: { model: 'deepseek-v4-flash' | 'deepseek-v4-pro' } } | { type: 'configureDeepSeek' } | { type: 'diagnoseTranslation' } - | { type: 'translate'; payload: { text: string } } + | { type: 'translate'; payload: { text: string; requestId: string } } + | { type: 'cancelTranslation'; payload: { requestId: string } } ) & { documentId: string }; diff --git a/src/repositoryService.ts b/src/repositoryService.ts new file mode 100644 index 0000000..4ea21b5 --- /dev/null +++ b/src/repositoryService.ts @@ -0,0 +1,107 @@ +import { execFile } from 'child_process'; +import { readdir, stat } from 'fs/promises'; +import * as path from 'path'; +import { promisify } from 'util'; +import type { ResearchArtifact } from './researchTypes'; + +const execFileAsync = promisify(execFile); + +export class RepositoryService { + validateUrl(value: string) { + return normalizeRepositoryUrl(value); + } + + async snapshot(localPath: string): Promise & { license: string }> { + const resolved = path.resolve(localPath); + const fileStat = await stat(resolved); + if (!fileStat.isDirectory()) { + throw new Error('Repository checkout must be a directory.'); + } + const [commit, branch, statusOutput] = await Promise.all([ + git(resolved, ['rev-parse', 'HEAD']), + git(resolved, ['branch', '--show-current']), + git(resolved, ['status', '--porcelain=v1', '--untracked-files=normal']) + ]); + return { + path: resolved, + commit: commit.trim(), + branch: branch.trim() || undefined, + dirty: !!statusOutput.trim(), + capturedAt: new Date().toISOString(), + license: await detectLicense(resolved) + }; + } + + async clone(url: string, targetPath: string) { + const normalizedUrl = normalizeRepositoryUrl(url); + const resolvedTarget = path.resolve(targetPath); + await validateCloneTarget(resolvedTarget); + await execFileAsync('git', ['clone', '--', normalizedUrl, resolvedTarget], { + timeout: 10 * 60 * 1000, + maxBuffer: 4 * 1024 * 1024 + }); + return this.snapshot(resolvedTarget); + } +} + +export function normalizeRepositoryUrl(value: string) { + const trimmed = value.trim(); + if (!trimmed) throw new Error('Enter a repository URL.'); + if (/^[\w.-]+@[\w.-]+:[\w./-]+(?:\.git)?$/.test(trimmed)) { + return trimmed; + } + let parsed: URL; + try { + parsed = new URL(trimmed); + } catch { + throw new Error('Repository URL is invalid.'); + } + if (!['https:', 'http:', 'ssh:', 'git:'].includes(parsed.protocol)) { + throw new Error('Repository URL must use HTTPS, HTTP, SSH, or Git.'); + } + if (!parsed.hostname) throw new Error('Repository URL must include a host.'); + parsed.username = ''; + parsed.password = ''; + parsed.hash = ''; + parsed.search = ''; + return parsed.toString().replace(/\/$/, ''); +} + +async function git(cwd: string, args: string[]) { + try { + const { stdout } = await execFileAsync('git', ['-C', cwd, ...args], { + timeout: 15000, + maxBuffer: 2 * 1024 * 1024 + }); + return stdout; + } catch (error) { + const detail = error instanceof Error ? error.message : String(error); + throw new Error(`Could not inspect repository at ${cwd}: ${detail}`); + } +} + +async function detectLicense(root: string) { + const candidates = (await readdir(root)) + .filter(name => /^licen[cs]e(?:\.|$)|^copying(?:\.|$)/i.test(name)) + .sort(); + return candidates[0] || ''; +} + +async function validateCloneTarget(targetPath: string) { + const parsed = path.parse(targetPath); + if (targetPath === parsed.root) { + throw new Error('A filesystem root cannot be used as a clone target.'); + } + try { + const targetStat = await stat(targetPath); + if (!targetStat.isDirectory()) { + throw new Error('Clone target exists and is not a directory.'); + } + const entries = await readdir(targetPath); + if (entries.length) { + throw new Error('Clone target already exists and is not empty.'); + } + } catch (error) { + if ((error as NodeJS.ErrnoException)?.code !== 'ENOENT') throw error; + } +} diff --git a/src/researchMessages.ts b/src/researchMessages.ts new file mode 100644 index 0000000..4725824 --- /dev/null +++ b/src/researchMessages.ts @@ -0,0 +1,41 @@ +import type { + EvidenceLocator, + PaperBibliography, + PaperClassification, + ResearchFactStatus +} from './researchTypes'; + +export type ResearchReaderMessage = + | { + type: 'updateResearchProfile'; + payload: { + bibliography?: Partial; + classification?: Partial; + }; + } + | { + type: 'addResearchFact'; + payload: { + field: string; + value: string; + status: Extract; + locator?: EvidenceLocator; + }; + } + | { type: 'setResearchFactStatus'; payload: { id: string; status: ResearchFactStatus } } + | { type: 'addRepositoryArtifact'; payload: { url: string; relationship: string } } + | { type: 'deleteRepositoryArtifact'; payload: { id: string } } + | { type: 'chooseRepositoryCheckout'; payload: { id: string } } + | { type: 'refreshRepositoryArtifact'; payload: { id: string } } + | { type: 'cloneRepositoryArtifact'; payload: { id: string } } + | { type: 'analyzeRepositoryWithCodex'; payload: { id: string } } + | { type: 'askCodex'; payload: { question: string; locator: EvidenceLocator; currentPage: number } } + | { type: 'analyzeComparisonWithCodex'; payload: { comparisonId: string } } + | { type: 'focusEvidence'; payload: { locator: EvidenceLocator } } + | { type: 'setCurrentSelection'; payload: { locator?: EvidenceLocator; currentPage: number } } + | { type: 'chooseLibraryRoot' } + | { type: 'rebuildLibrary'; payload: { rootPath: string } } + | { type: 'createComparison'; payload: { fingerprints: string[] } } + | { type: 'exportComparison'; payload: { comparisonId: string } } + | { type: 'configureCodexMcp' } + | { type: 'removeCodexMcp' }; diff --git a/src/researchStorage.ts b/src/researchStorage.ts new file mode 100644 index 0000000..cc74382 --- /dev/null +++ b/src/researchStorage.ts @@ -0,0 +1,192 @@ +import { randomUUID } from 'crypto'; +import * as path from 'path'; +import * as vscode from 'vscode'; +import { AtomicJsonFile } from './atomicJsonFile'; +import { fingerprintPdf } from './pdfIdentity'; +import { + createDefaultResearchProfile, + normalizeResearchProfile, + type PaperBibliography, + type PaperClassification, + type ResearchArtifact, + type ResearchFact, + type ResearchFactStatus, + type ResearchProfile, + type ResearchRelation +} from './researchTypes'; + +export class ResearchStorage { + private readonly file: AtomicJsonFile; + private fingerprintPromise?: Promise; + + constructor(private readonly pdfUri: vscode.Uri) { + const uri = vscode.Uri.file(path.join( + path.dirname(pdfUri.fsPath), + '.inleaf-reader', + `${path.basename(pdfUri.fsPath)}.research.json` + )); + this.file = new AtomicJsonFile( + uri, + () => createDefaultResearchProfile('', pdfUri.fsPath), + (value, fallback) => normalizeResearchProfile(value, fallback) + ); + } + + get uri() { + return this.file.uri; + } + + fingerprint() { + this.fingerprintPromise ??= fingerprintPdf(this.pdfUri.fsPath); + return this.fingerprintPromise; + } + + async readProfile(): Promise { + const [fingerprint, stored] = await Promise.all([this.fingerprint(), this.file.read()]); + const fallback = createDefaultResearchProfile(fingerprint, this.pdfUri.fsPath); + const profile = normalizeResearchProfile(stored, fallback); + if (!profile.paperFingerprint) { + profile.paperFingerprint = fingerprint; + } + if (profile.paperFingerprint !== fingerprint) { + throw new Error( + `Research profile fingerprint mismatch for ${path.basename(this.pdfUri.fsPath)}. ` + + 'The sidecar was not applied to this PDF.' + ); + } + return profile; + } + + async updateProfile(input: { + bibliography?: Partial; + classification?: Partial; + }) { + const fingerprint = await this.fingerprint(); + return this.file.mutate(stored => { + const current = normalizeResearchProfile( + stored, + createDefaultResearchProfile(fingerprint, this.pdfUri.fsPath) + ); + assertFingerprint(current, fingerprint); + const next = normalizeResearchProfile({ + ...current, + bibliography: { ...current.bibliography, ...input.bibliography }, + classification: { ...current.classification, ...input.classification }, + updatedAt: new Date().toISOString() + }, current); + next.paperFingerprint = fingerprint; + return next; + }); + } + + async addFact(input: Omit) { + const fingerprint = await this.fingerprint(); + return this.file.mutate(stored => { + const current = normalizedForMutation(stored, fingerprint, this.pdfUri.fsPath); + const now = new Date().toISOString(); + const fact: ResearchFact = { + ...input, + id: randomUUID(), + createdAt: now, + updatedAt: now + }; + return { ...current, facts: [fact, ...current.facts], updatedAt: now }; + }); + } + + async setFactStatus(id: string, status: ResearchFactStatus) { + const fingerprint = await this.fingerprint(); + return this.file.mutate(stored => { + const current = normalizedForMutation(stored, fingerprint, this.pdfUri.fsPath); + const now = new Date().toISOString(); + let found = false; + const facts = current.facts.map(fact => { + if (fact.id !== id) return fact; + found = true; + return { ...fact, status, updatedAt: now }; + }); + if (!found) throw new Error('Research fact not found.'); + return { ...current, facts, updatedAt: now }; + }); + } + + async addArtifact(input: Omit) { + const fingerprint = await this.fingerprint(); + return this.file.mutate(stored => { + const current = normalizedForMutation(stored, fingerprint, this.pdfUri.fsPath); + const now = new Date().toISOString(); + const artifact: ResearchArtifact = { + ...input, + id: randomUUID(), + createdAt: now, + updatedAt: now + }; + return { ...current, artifacts: [artifact, ...current.artifacts], updatedAt: now }; + }); + } + + async updateArtifact(id: string, patch: Partial>) { + const fingerprint = await this.fingerprint(); + return this.file.mutate(stored => { + const current = normalizedForMutation(stored, fingerprint, this.pdfUri.fsPath); + const now = new Date().toISOString(); + let found = false; + const artifacts = current.artifacts.map(artifact => { + if (artifact.id !== id) return artifact; + found = true; + return { ...artifact, ...patch, id: artifact.id, createdAt: artifact.createdAt, updatedAt: now }; + }); + if (!found) throw new Error('Research artifact not found.'); + return { ...current, artifacts, updatedAt: now }; + }); + } + + async deleteArtifact(id: string) { + const fingerprint = await this.fingerprint(); + return this.file.mutate(stored => { + const current = normalizedForMutation(stored, fingerprint, this.pdfUri.fsPath); + if (!current.artifacts.some(artifact => artifact.id === id)) { + return current; + } + const now = new Date().toISOString(); + return { + ...current, + artifacts: current.artifacts.filter(artifact => artifact.id !== id), + updatedAt: now + }; + }); + } + + async addRelation(input: Omit) { + const fingerprint = await this.fingerprint(); + return this.file.mutate(stored => { + const current = normalizedForMutation(stored, fingerprint, this.pdfUri.fsPath); + const relation: ResearchRelation = { + ...input, + id: randomUUID(), + createdAt: new Date().toISOString() + }; + return { + ...current, + relations: [relation, ...current.relations], + updatedAt: relation.createdAt + }; + }); + } +} + +function normalizedForMutation(value: unknown, fingerprint: string, pdfPath: string) { + const current = normalizeResearchProfile( + value, + createDefaultResearchProfile(fingerprint, pdfPath) + ); + if (!current.paperFingerprint) current.paperFingerprint = fingerprint; + assertFingerprint(current, fingerprint); + return current; +} + +function assertFingerprint(profile: ResearchProfile, fingerprint: string) { + if (profile.paperFingerprint && profile.paperFingerprint !== fingerprint) { + throw new Error('Research profile fingerprint does not match the active PDF.'); + } +} diff --git a/src/researchTypes.ts b/src/researchTypes.ts new file mode 100644 index 0000000..eaaa870 --- /dev/null +++ b/src/researchTypes.ts @@ -0,0 +1,341 @@ +import * as path from 'path'; +import type { AnnotationRect } from './annotationTypes'; + +export interface EvidenceLocator { + schemaVersion: 1; + documentFingerprint: string; + annotationId?: string; + page: number; + rects?: AnnotationRect[]; + quote: string; + contextBefore?: string; + contextAfter?: string; +} + +export type EvidenceFocusTarget = + | { kind: 'annotation'; annotationId: string; page: number; locator: EvidenceLocator } + | { kind: 'geometry'; page: number; rects: AnnotationRect[]; locator: EvidenceLocator } + | { kind: 'quote'; page: number; locator: EvidenceLocator } + | { kind: 'sourceMissing'; page: number; reason: string; locator: EvidenceLocator } + | { kind: 'wrongDocument'; reason: string; locator: EvidenceLocator }; + +export interface PaperBibliography { + title: string; + authors: string[]; + year: number | null; + venue: string; + doi: string; + arxivId: string; + projectUrl: string; +} + +export interface PaperClassification { + areas: string[]; + tasks: string[]; + methods: string[]; + robots: string[]; + endEffectors: string[]; + sensors: string[]; + dataSources: string[]; + environments: string[]; + evaluationTypes: string[]; + custom: Record; +} + +export type ResearchFactStatus = 'suggested' | 'confirmed' | 'rejected' | 'unknown'; + +export interface ResearchFact { + id: string; + field: string; + value: string; + status: ResearchFactStatus; + source: { + type: 'paper' | 'repository' | 'user'; + section?: string; + locator?: EvidenceLocator; + repository?: RepositoryEvidence; + }; + extractedBy?: { + kind: 'rule' | 'provider' | 'user'; + name: string; + model?: string; + capturedAt: string; + }; + confidence?: number; + createdAt: string; + updatedAt: string; +} + +export interface RepositoryEvidence { + url: string; + commit: string; + path?: string; + line?: number; + capturedAt: string; +} + +export type ResearchArtifactType = + | 'github' + | 'git_repository' + | 'dataset' + | 'model_weights' + | 'project_page' + | 'supplementary_material'; + +export interface ResearchArtifact { + id: string; + type: ResearchArtifactType; + url: string; + relationship: string; + verification: { + status: ResearchFactStatus; + sourceType: 'paper' | 'user' | 'repository'; + page?: number; + locator?: EvidenceLocator; + }; + localCheckout?: { + path: string; + commit: string; + branch?: string; + dirty: boolean | null; + capturedAt: string; + }; + license: string; + notes: string; + createdAt: string; + updatedAt: string; +} + +export interface ResearchRelation { + id: string; + from: { type: 'fact' | 'annotation' | 'artifact' | 'note'; id: string }; + to: { type: 'fact' | 'annotation' | 'artifact' | 'note'; id: string }; + type: 'supportedBy' | 'derivedFrom' | 'discusses' | 'contradicts' | 'relatedTo'; + createdAt: string; +} + +export interface ResearchProfile { + schemaVersion: 1; + paperFingerprint: string; + bibliography: PaperBibliography; + classification: PaperClassification; + artifacts: ResearchArtifact[]; + facts: ResearchFact[]; + relations: ResearchRelation[]; + updatedAt: string; +} + +export type SourceOutcome = 'ok' | 'empty' | 'error' | 'notQueried'; + +export interface FieldProvenance { + source: string; + sourceRecordId?: string; + fetchedAt: string; + outcome: SourceOutcome; +} + +export interface LibraryPaper { + fingerprint: string; + pdfPath: string; + researchPath: string; + title: string; + year: number | null; + tags: string[]; + repositoryCount: number; + updatedAt: string; +} + +export interface LibraryIndexData { + schemaVersion: 1; + generatedAt: string; + rootPath: string; + papers: LibraryPaper[]; + warnings: string[]; +} + +export type ComparisonCellStatus = 'evidenced' | 'inferred' | 'conflicting' | 'unknown'; + +export type ComparisonEvidenceRef = + | { type: 'fact'; paperFingerprint: string; factId: string; locator?: EvidenceLocator } + | { type: 'locator'; paperFingerprint: string; locator: EvidenceLocator } + | { type: 'repository'; paperFingerprint: string; repository: RepositoryEvidence }; + +export interface ComparisonCell { + paperFingerprint: string; + dimensionId: string; + status: ComparisonCellStatus; + value: string; + evidenceRefs: ComparisonEvidenceRef[]; + sourceMissing?: boolean; + stale?: boolean; +} + +export interface ComparisonDimension { + id: string; + label: string; + factFields: string[]; +} + +export interface PaperComparison { + schemaVersion: 1; + id: string; + title: string; + createdAt: string; + updatedAt: string; + papers: Array>; + dimensions: ComparisonDimension[]; + cells: ComparisonCell[]; +} + +export const CLASSIFICATION_FIELDS = [ + 'areas', + 'tasks', + 'methods', + 'robots', + 'endEffectors', + 'sensors', + 'dataSources', + 'environments', + 'evaluationTypes' +] as const satisfies readonly (keyof Omit)[]; + +export type ClassificationField = typeof CLASSIFICATION_FIELDS[number]; + +export function createEmptyClassification(): PaperClassification { + return { + areas: [], + tasks: [], + methods: [], + robots: [], + endEffectors: [], + sensors: [], + dataSources: [], + environments: [], + evaluationTypes: [], + custom: {} + }; +} + +export function inferBibliographyFromFilename(pdfPath: string): PaperBibliography { + const stem = path.basename(pdfPath).replace(/\.pdf$/i, ''); + const yearMatch = stem.match(/^(19|20)\d{2}(?:[_ -]+|$)/); + const titleStem = yearMatch ? stem.slice(yearMatch[0].length) : stem; + return { + title: titleStem.replace(/[_-]+/g, ' ').replace(/\s+/g, ' ').trim(), + authors: [], + year: yearMatch ? Number(yearMatch[0].slice(0, 4)) : null, + venue: '', + doi: '', + arxivId: '', + projectUrl: '' + }; +} + +export function createDefaultResearchProfile( + paperFingerprint: string, + pdfPath: string, + updatedAt = new Date().toISOString() +): ResearchProfile { + return { + schemaVersion: 1, + paperFingerprint, + bibliography: inferBibliographyFromFilename(pdfPath), + classification: createEmptyClassification(), + artifacts: [], + facts: [], + relations: [], + updatedAt + }; +} + +export function normalizeStringList(values: unknown): string[] { + if (!Array.isArray(values)) { + return []; + } + return [...new Set(values + .filter((value): value is string => typeof value === 'string') + .map(value => value.trim().toLowerCase()) + .filter(Boolean))]; +} + +export function normalizeResearchProfile( + value: unknown, + fallback: ResearchProfile +): ResearchProfile { + if (!value || typeof value !== 'object' || Array.isArray(value)) { + return fallback; + } + const raw = value as Partial; + const rawBibliography = raw.bibliography && typeof raw.bibliography === 'object' + ? raw.bibliography as Partial + : {}; + const rawClassification = raw.classification && typeof raw.classification === 'object' + ? raw.classification as Partial + : {}; + const classification = createEmptyClassification(); + for (const field of CLASSIFICATION_FIELDS) { + classification[field] = normalizeStringList(rawClassification[field]); + } + const custom: Record = {}; + if (rawClassification.custom && typeof rawClassification.custom === 'object') { + for (const [key, values] of Object.entries(rawClassification.custom)) { + const normalized = normalizeStringList(values); + if (key.trim() && normalized.length) { + custom[key.trim()] = normalized; + } + } + } + classification.custom = custom; + + return { + ...fallback, + ...raw, + schemaVersion: 1, + paperFingerprint: typeof raw.paperFingerprint === 'string' && raw.paperFingerprint + ? raw.paperFingerprint + : fallback.paperFingerprint, + bibliography: { + ...fallback.bibliography, + ...rawBibliography, + title: stringValue(rawBibliography.title, fallback.bibliography.title), + authors: normalizeStringArrayPreservingCase(rawBibliography.authors), + year: typeof rawBibliography.year === 'number' ? rawBibliography.year : fallback.bibliography.year, + venue: stringValue(rawBibliography.venue), + doi: stringValue(rawBibliography.doi), + arxivId: stringValue(rawBibliography.arxivId), + projectUrl: stringValue(rawBibliography.projectUrl) + }, + classification, + artifacts: Array.isArray(raw.artifacts) ? raw.artifacts : [], + facts: Array.isArray(raw.facts) ? raw.facts : [], + relations: Array.isArray(raw.relations) ? raw.relations : [], + updatedAt: typeof raw.updatedAt === 'string' ? raw.updatedAt : fallback.updatedAt + }; +} + +export function researchProfileTags(profile: ResearchProfile): string[] { + const tags = CLASSIFICATION_FIELDS.flatMap(field => profile.classification[field]); + for (const values of Object.values(profile.classification.custom)) { + tags.push(...values); + } + for (const fact of profile.facts) { + if (fact.status === 'confirmed' && fact.value.trim()) { + tags.push(fact.value.trim().toLowerCase()); + } + } + return [...new Set(tags)].sort(); +} + +function normalizeStringArrayPreservingCase(values: unknown): string[] { + if (!Array.isArray(values)) { + return []; + } + return [...new Set(values + .filter((value): value is string => typeof value === 'string') + .map(value => value.trim()) + .filter(Boolean))]; +} + +function stringValue(value: unknown, fallback = '') { + return typeof value === 'string' ? value.trim() : fallback; +} diff --git a/src/translationService.ts b/src/translationService.ts index acd74f9..dfa1051 100644 --- a/src/translationService.ts +++ b/src/translationService.ts @@ -35,17 +35,21 @@ export class TranslationService implements vscode.Disposable { return { mode: provider === 'deepseek' ? 'deepseek' : 'local', provider, + deepSeekModel: config.get<'deepseek-v4-flash' | 'deepseek-v4-pro'>('deepSeekModel') || 'deepseek-v4-flash', hasDeepSeekApiKey: !!(await this.secrets.get(INLEAF_IDS.secrets.deepSeekApiKey)), dictionaryReady: fs.existsSync(this.extensionPath('scripts', 'ecdict_compact.json.gz')), argosPythonFound: fs.existsSync(this.argosPythonPath(config)) }; } - async translate(text: string): Promise { + async translate(text: string, signal?: AbortSignal): Promise { const trimmed = text.trim(); if (!trimmed) { return { error: 'Select or paste text before translating.' }; } + if (signal?.aborted) { + return { error: 'Translation canceled.' }; + } const config = vscode.workspace.getConfiguration(INLEAF_IDS.configuration); const provider = config.get('translationProvider') || 'argos'; @@ -62,12 +66,12 @@ export class TranslationService implements vscode.Disposable { } if (provider === 'deepseek') { - return this.captureProviderError(() => this.translateWithDeepSeek(trimmed)); + return this.captureProviderError(() => this.translateWithDeepSeek(trimmed, signal)); } if (provider === 'argos') { try { - return await this.translateWithDaemon(trimmed); + return await this.translateWithDaemon(trimmed, signal); } catch (error) { if (config.get('translationFallbackToLibreTranslate') === false) { const detail = error instanceof Error ? error.message : String(error); @@ -78,7 +82,7 @@ export class TranslationService implements vscode.Disposable { } } - return this.captureProviderError(() => this.translateWithLibreTranslate(trimmed)); + return this.captureProviderError(() => this.translateWithLibreTranslate(trimmed, signal)); } async enrichWord( @@ -137,18 +141,20 @@ export class TranslationService implements vscode.Disposable { }; } - private async translateWithDaemon(text: string): Promise { + private async translateWithDaemon(text: string, signal?: AbortSignal): Promise { + if (signal?.aborted) throw abortError(); const config = vscode.workspace.getConfiguration(INLEAF_IDS.configuration); const source = normalizeArgosLanguage(config.get('translationSource') || 'auto', 'en'); const target = normalizeArgosLanguage(config.get('translationTarget') || 'zh', 'zh'); const result = await this.argos.request({ text, source, target, mode: 'translate' }); + if (signal?.aborted) throw abortError(); if (result.error) { throw new Error(result.error); } return result; } - private async translateWithDeepSeek(text: string) { + private async translateWithDeepSeek(text: string, signal?: AbortSignal) { const apiKey = await this.secrets.get(INLEAF_IDS.secrets.deepSeekApiKey); if (!apiKey) { throw new Error('DeepSeek API key is not configured. Run “Inleaf Reader: Set DeepSeek API Key”.'); @@ -156,64 +162,20 @@ export class TranslationService implements vscode.Disposable { const config = vscode.workspace.getConfiguration(INLEAF_IDS.configuration); const model = config.get('deepSeekModel') || 'deepseek-v4-flash'; const target = describeTargetLanguage(config.get('translationTarget') || 'zh'); - const controller = new AbortController(); - const timeout = setTimeout(() => controller.abort(), 45000); - - try { - const response = await fetch('https://api.deepseek.com/chat/completions', { - method: 'POST', - headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' }, - body: JSON.stringify({ - model, - messages: [ - { - role: 'system', - content: `You are a professional academic translator. Translate the user's text into ${target}. Preserve formulas, citations, terminology, paragraph structure, and proper nouns accurately. Return only the translation, without commentary or quotation marks.` - }, - { role: 'user', content: text } - ], - thinking: { type: 'disabled' }, - max_tokens: 4096, - stream: false - }), - signal: controller.signal - }); - const responseText = await response.text(); - let data: { choices?: { message?: { content?: string | null } }[]; error?: { message?: string } } = {}; - try { - data = responseText ? JSON.parse(responseText) : {}; - } catch { - throw new Error(response.ok ? 'DeepSeek returned an invalid response.' : `DeepSeek returned HTTP ${response.status}.`); - } - if (!response.ok) { - if (response.status === 401) { - throw new Error('DeepSeek rejected the API key. Run “Inleaf Reader: Set DeepSeek API Key” with a valid key.'); - } - throw new Error(data.error?.message?.trim() || `DeepSeek returned HTTP ${response.status}.`); - } - const translatedText = data.choices?.[0]?.message?.content?.trim(); - if (!translatedText) { - throw new Error('DeepSeek response did not include translated text.'); - } - return translatedText; - } catch (error) { - if (error instanceof Error && error.name === 'AbortError') { - throw new Error('DeepSeek translation timed out.'); - } - if (error instanceof TypeError) { - throw new Error('Could not reach the DeepSeek API. Check your network connection.'); - } - throw error; - } finally { - clearTimeout(timeout); - } + return requestDeepSeekTranslation({ apiKey, model, target, text, signal }); } - private async translateWithLibreTranslate(text: string) { + private async translateWithLibreTranslate(text: string, signal?: AbortSignal) { const config = vscode.workspace.getConfiguration(INLEAF_IDS.configuration); const endpoint = config.get('libreTranslateEndpoint') || 'http://localhost:5000/translate'; const controller = new AbortController(); - const timeout = setTimeout(() => controller.abort(), 12000); + let timedOut = false; + const abortFromCaller = () => controller.abort(); + signal?.addEventListener('abort', abortFromCaller, { once: true }); + const timeout = setTimeout(() => { + timedOut = true; + controller.abort(); + }, 12000); try { const response = await fetch(endpoint, { method: 'POST', @@ -239,7 +201,9 @@ export class TranslationService implements vscode.Disposable { return data.translatedText; } catch (error) { if (error instanceof Error && error.name === 'AbortError') { - throw new Error('LibreTranslate request timed out. Is the local server running?'); + throw new Error(timedOut + ? 'LibreTranslate request timed out. Is the local server running?' + : 'Translation canceled.'); } if (error instanceof TypeError) { throw new Error('Could not reach LibreTranslate. Start the local server or change inleafReader.libreTranslateEndpoint.'); @@ -247,6 +211,7 @@ export class TranslationService implements vscode.Disposable { throw error; } finally { clearTimeout(timeout); + signal?.removeEventListener('abort', abortFromCaller); } } @@ -260,6 +225,95 @@ export class TranslationService implements vscode.Disposable { } } +export async function requestDeepSeekTranslation({ + apiKey, + model, + target, + text, + signal, + fetchImpl = fetch, + timeoutMs = 45000 +}: { + apiKey: string; + model: string; + target: string; + text: string; + signal?: AbortSignal; + fetchImpl?: typeof fetch; + timeoutMs?: number; +}) { + const controller = new AbortController(); + let timedOut = false; + const abortFromCaller = () => controller.abort(); + signal?.addEventListener('abort', abortFromCaller, { once: true }); + if (signal?.aborted) controller.abort(); + const timeout = setTimeout(() => { + timedOut = true; + controller.abort(); + }, timeoutMs); + try { + const response = await fetchImpl('https://api.deepseek.com/chat/completions', { + method: 'POST', + headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ + model, + messages: [ + { + role: 'system', + content: `You are a professional academic translator. Translate the user's text into ${target}. Preserve formulas, citations, terminology, paragraph structure, and proper nouns accurately. Return only the translation, without commentary or quotation marks.` + }, + { role: 'user', content: text } + ], + thinking: { type: 'disabled' }, + max_tokens: 4096, + stream: false + }), + signal: controller.signal + }); + const responseText = await response.text(); + let data: { choices?: { message?: { content?: string | null } }[]; error?: { message?: string } } = {}; + try { + data = responseText ? JSON.parse(responseText) : {}; + } catch { + throw new Error(response.ok ? 'DeepSeek returned an invalid response.' : `DeepSeek returned HTTP ${response.status}.`); + } + if (!response.ok) { + if (response.status === 401) { + throw new Error('DeepSeek rejected the API key. Run “Inleaf Reader: Set DeepSeek API Key” with a valid key.'); + } + if (response.status === 429) { + throw new Error('DeepSeek rate limit or quota was reached. Wait, check account balance, and try again.'); + } + if (response.status >= 500) { + throw new Error(`DeepSeek service is temporarily unavailable (HTTP ${response.status}).`); + } + throw new Error(data.error?.message?.trim() || `DeepSeek returned HTTP ${response.status}.`); + } + const translatedText = data.choices?.[0]?.message?.content?.trim(); + if (!translatedText) { + throw new Error('DeepSeek response did not include translated text.'); + } + return translatedText; + } catch (error) { + if (error instanceof Error && error.name === 'AbortError') { + throw new Error(timedOut ? 'DeepSeek translation timed out.' : 'Translation canceled.'); + } + if (error instanceof TypeError) { + throw new Error('Could not reach the DeepSeek API. Check your network connection.'); + } + throw error; + } finally { + clearTimeout(timeout); + signal?.removeEventListener('abort', abortFromCaller); + } +} + +function abortError() { + const error = new Error('Translation canceled.'); + error.name = 'AbortError'; + return error; +} + export function isSingleEnglishWord(text: string) { const trimmed = text.trim(); return /^[a-zA-Z'-]+$/.test(trimmed) && trimmed.length > 1; diff --git a/src/translationTypes.ts b/src/translationTypes.ts index b43146d..b973cf5 100644 --- a/src/translationTypes.ts +++ b/src/translationTypes.ts @@ -13,6 +13,7 @@ export interface TranslationResult { export interface TranslationSettings { mode: 'local' | 'deepseek'; provider: string; + deepSeekModel: 'deepseek-v4-flash' | 'deepseek-v4-pro'; hasDeepSeekApiKey: boolean; dictionaryReady: boolean; argosPythonFound: boolean; diff --git a/webview/src/components/AnnotationWidgets.tsx b/webview/src/components/AnnotationWidgets.tsx index 5c7621a..ab2d553 100644 --- a/webview/src/components/AnnotationWidgets.tsx +++ b/webview/src/components/AnnotationWidgets.tsx @@ -1,27 +1,33 @@ import React, { useEffect, useRef, useState } from 'react'; import { normalizeTags } from '../annotationModel'; +import { + getReaderActions, + type ReaderActionContext, + type ReaderActionId, + type ReaderActionOptions +} from '../readerActions'; import type { AnnotationKind, AnnotationRecord, WordDetails, WordRecord } from '../types'; +import { AskCodexActions } from './AskCodexActions'; export interface SelectionToolbarContextValue { selectedText: string; translationSourceText: string; translationText: string; wordDetails?: WordDetails; - onHighlight(color: string): void; - onUnderline(color: string): void; - onSaveNote(note: string, color: string): void; - onTranslate(): void; + actionContext: ReaderActionContext; + onInvoke(actionId: ReaderActionId, options?: ReaderActionOptions): void; + onCancelTranslation(): void; onSaveWord(details: WordDetails): void; } export const SelectionToolbarContext = React.createContext(undefined); export const colorOptions = [ - { label: 'Yellow', value: '#ffd654' }, - { label: 'Blue', value: '#8fd3ff' }, - { label: 'Green', value: '#a6e99f' }, - { label: 'Red', value: '#ffaaa5' }, - { label: 'Purple', value: '#d7b8ff' } + { label: '黄色', value: '#ffd654' }, + { label: '蓝色', value: '#8fd3ff' }, + { label: '绿色', value: '#a6e99f' }, + { label: '红色', value: '#ffaaa5' }, + { label: '紫色', value: '#d7b8ff' } ]; export function AnnotationItem({ @@ -30,6 +36,7 @@ export function AnnotationItem({ onFocus, onEdit, onCopy, + onResearch, onDelete }: { annotation: AnnotationRecord; @@ -37,19 +44,21 @@ export function AnnotationItem({ onFocus(): void; onEdit(): void; onCopy(): void; + onResearch(): void; onDelete(): void; }) { return (
- Page {annotation.page || annotation.highlighterPosition?.boundingRect.pageNumber || '-'} -

{shorten(annotation.selectedText || annotation.note || 'Page note', 220)}

+ 第 {annotation.page || annotation.highlighterPosition?.boundingRect.pageNumber || '-'} 页 +

{shorten(annotation.selectedText || annotation.note || '页面笔记', 220)}

{annotation.note ?

{shorten(annotation.note, 180)}

: null} {annotation.tags?.length ?
{annotation.tags.map(tag => #{tag})}
: null}
- - - - + + + + +
); @@ -66,8 +75,8 @@ export function AnnotationSummary({ annotations }: { annotations: AnnotationReco const topTags = [...tagCount.entries()].sort((a, b) => b[1] - a[1]).slice(0, 4); return (
- {highlights} highlights - {underlines} underlines + {highlights} 条高亮 + {underlines} 条下划线 {topTags.map(([tag, count]) => #{tag} {count})}
); @@ -92,7 +101,7 @@ export function WordItem({ word, onDelete }: { word: WordRecord; onDelete(): voi ) : null} {word.note ?

{word.note}

: null}
- +
); @@ -157,7 +166,7 @@ export function InlineAnnotationEditor({ onMouseDown={event => event.stopPropagation()} onPointerDown={event => event.stopPropagation()} > -
Edit annotation
+
编辑标注
{colorOptions.map(option => (