From cb90cd49a84eccfb54b23f3e145fef0764131e72 Mon Sep 17 00:00:00 2001 From: Yao Jingxi <23722032@bjtu.edu.cn> Date: Mon, 2 Nov 2026 23:10:28 +0800 Subject: [PATCH] feat: refine HTTP workbench editing, response tools and globe icon --- .github/workflows/ci.yml | 11 + .gitignore | 1 + NOTICE | 4 + README.md | 37 +- assets/http.svg | 12 +- package-lock.json | 787 ++++++++++++++++++++++++++++++++++++ package.json | 22 + plugin.json | 9 +- scripts/build-ui.mjs | 45 +++ scripts/test_protocol.py | 10 +- scripts/test_ui.js | 357 +++++++++++++--- shared/i18n/en-US.json | 69 ++++ shared/i18n/zh-CN.json | 69 ++++ src/files.rs | 246 +++++++++++ src/main.rs | 7 +- ui/DEPENDENCIES.json | 107 +++++ ui/THIRD_PARTY_LICENSES.txt | 516 +++++++++++++++++++++++ ui/index.html | 51 ++- ui/main.js | 144 ++----- ui/src/main.js | 378 +++++++++++++++++ ui/style.css | 209 ++++++++-- 21 files changed, 2870 insertions(+), 221 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scripts/build-ui.mjs create mode 100644 shared/i18n/en-US.json create mode 100644 shared/i18n/zh-CN.json create mode 100644 src/files.rs create mode 100644 ui/DEPENDENCIES.json create mode 100644 ui/THIRD_PARTY_LICENSES.txt create mode 100644 ui/src/main.js diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 993ace6..199fce4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,12 @@ jobs: timeout-minutes: 15 steps: - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + - run: npm ci + - run: npm run check - uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy @@ -19,6 +25,11 @@ jobs: - run: cargo clippy --locked -- -D warnings - run: cargo build --release --locked - run: timeout 90s python3 scripts/test_protocol.py --binary target/release/lithe-http-client + - run: npx playwright install --with-deps chromium + - run: timeout 90s node scripts/test_ui.js + env: + HTTP_CLIENT_BINARY: target/release/lithe-http-client + HTTP_CLIENT_BROWSER: chromium - uses: actions/upload-artifact@v4 if: always() with: diff --git a/.gitignore b/.gitignore index ae5aaf4..2bd6c68 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ __pycache__/ *.pyc .DS_Store +/node_modules/ diff --git a/NOTICE b/NOTICE index 04f82fe..2930b92 100644 --- a/NOTICE +++ b/NOTICE @@ -12,3 +12,7 @@ Revision: e689971c000c15a044df0502052fe7b2c1c6f84f Original copyright and license notices are retained in licenses/ in each release package. DEPENDENCIES.json records Cargo dependencies and notices. Upstream authors do not endorse this plugin. + +The bundled UI uses CodeMirror 6 and Lezer (MIT). Exact bundled versions +and their original license texts are in ui/DEPENDENCIES.json and +ui/THIRD_PARTY_LICENSES.txt. diff --git a/README.md b/README.md index 0f339fb..91e5051 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ **0.1.1 preview:** protocol/Core integration is verified; native install/window and Intel hardware acceptance are still pending. -A small HTTP workbench inside Lithe's native macOS tool window. Paste `.http` requests, select one, send it, and inspect the response without leaving the IDE. +A compact HTTP workbench inside Lithe's native macOS tool window. Paste `.http` requests, select one, send it, and inspect the response without leaving the IDE. ## Install and use -Install **HTTP Client** from the Lithe plugin marketplace when its listing is available, or download the ZIP from [Releases](https://github.com/Lithe-IDEA/lithe-plugin-http-client/releases) and use Lithe's install-from-disk action. The universal macOS package contains Apple Silicon and Intel code. The host must advertise `backend: 1`, `serverProcess: 1`, and `ui: 2` (plugin API 3). Windows is not supported in this release. +Install **HTTP Client** from the Lithe plugin marketplace when its listing is available, or download the ZIP from [Releases](https://github.com/Lithe-IDEA/lithe-plugin-http-client/releases) and use Lithe's install-from-disk action. The universal macOS package contains Apple Silicon and Intel code. This development branch requires `backend: 2`, `serverProcess: 1`, and `ui: 2` (plugin API 3), adding workspace metadata, document-summary and preview permissions for HTML preview. Windows is not supported in this release. -Open the **HTTP Client** bottom tool window. Paste a request, then click **Send** (⌘/Ctrl+Enter). For multiple requests, use **Read requests**, choose an entry, then send. Editing the text invalidates the selection; sending reparses and selects the first request. No network request runs automatically. +Open the **HTTP Client** bottom tool window. Use **Open .http** to choose a UTF-8 `.http` or `.rest` file (up to 128 KiB), or paste a request. Files are read and their requests listed immediately. Choose an entry and click **Send** (⌘/Ctrl+Enter). **Read requests** reparses pasted text. Editing invalidates the selection; sending reparses and selects the first request. Choosing a file, request or history entry never sends it automatically. ```http @base = http://localhost:8080 @@ -23,14 +23,28 @@ Content-Type: application/json {"name":"example"} ``` -Replace the address with a service you intend to call. The UI follows the host's theme and language (English / Chinese), displays status, elapsed time and received size, and switches between body and headers. JSON formatting is optional. Header names and values are separated; values start on one line and expand on click. The toolbar preview limit applies to the next send and is kept only for the current page session. JSON-escaped responses may be truncated earlier to fit the 900 KiB transport budget. Select response text and use the normal copy shortcut. Responses are displayed as text; returned HTML is never executed. +Replace the address with a service you intend to call. The request editor provides HTTP / inline-variable / JSON highlighting, line numbers and undo. The divider is draggable (arrow keys also resize it; double-click resets it). Narrow windows stack the panes. The UI follows the host's theme and language (English / Chinese), displays status, elapsed time and received size, and switches between body and headers. JSON formatting is optional. Header names and values are separated; values start on one line and expand on click. The toolbar preview limit applies to the next send and is kept only for the current page session. JSON-escaped responses may be truncated earlier to fit the 900 KiB transport budget. Select response text and use the normal copy shortcut. The wrap icon switches between wrapped lines and horizontal scrolling. Request/response editors use CodeMirror's viewport rendering. Responses stay text in the plugin page. + +The history selector keeps up to 20 sent requests / 1 MiB of source text in the current page session. It restores the source and selected request without sending; use the clear icon to discard it. No history or draft is persisted. + +The workbench uses theme-aware inset editor panels, compact segmented response tabs, colored method/status badges, header/history counts, and response content-type metadata. Empty, loading and failed states explain the current operation without replacing real response content. Cancel appears while an operation is active; keyboard hints follow the host platform. Narrow and short docked panels retain the same controls, and reduced-motion preferences disable animation. + +The tool-window icon, panel identity and empty state reuse the minimal globe in `assets/http.svg`. The host tints the template icon for inactive and selected sidebar states; the panel uses an accent color in light mode and a light neutral color in dark mode. The empty request editor uses a single-line example and CodeMirror's cursor/selection rendering, keeping the caret at one line in WebKit as well as Chromium. + +Response headers use the host's proportional UI font and text size, with compact rows and readable name/value contrast. Code bodies keep the editor's monospace font. Long header names show their full name on hover; values expand on click. + +The bottom-right save action opens the host's native save dialog and exports **Body only** or **Headers + body**, preserving the raw response rather than the formatted JSON display. A truncated response exports only its available preview, with a visible notice. Binary bodies are not exported. File dialogs require Web bridge 2; older hosts keep sending/inspection available and disable file actions. + +HTML responses collapse complete leading blank lines in the text viewer, keeping the first content line at the top. The footer shows the collapsed line count and lets you restore the original view. Internal whitespace, saved files and the editor preview retain the original response. + +HTML responses expose **Preview**. The current public host API accepts workspace files rather than arbitrary HTML strings: this action asks where to save the response **inside the current local workspace**, then opens that file in the editor's **preview-only** presentation. It checks host capability availability and refuses an already-open target to avoid displaying an older live buffer. The file remains in the location you chose; there is no hidden response cache. HTML runs only in the host's separate HTML preview, without the plugin bridge. Native dialog and editor-preview acceptance are still pending on this branch. ## Scope and data handling - The declared executable `bin/lithe-http-client` runs locally via the official Lithe plugin SDK. It performs HTTP(S) requests explicitly requested by the user. The Web UI only talks to the host bridge. -- No request history, draft persistence or automatic workspace/file reads. Request text, headers and response content stay in memory; closing/recreating the page can discard them. The plugin does not write to its package or application bundle. +- Requests, session history and responses stay in memory until you explicitly save or preview. No automatic workspace scanning, file reads or draft persistence. The plugin reads only the chosen request file, and writes only the chosen export/HTML file with an atomic replacement. Application bundles, installed plugin resources, symbolic-link export targets and special files are refused. Closing/recreating the page discards history. HTML preview uses workspace metadata and document summaries to find the current root and avoid stale open buffers; it does not read other documents' contents. - Inline `@variables`, headers, request bodies and `###` separators use the unchanged OpenIDEA parser/executor. Environment files, local body includes, response scripts and file redirects are unsupported. Includes and scripts/redirects fail explicitly before sending. -- 128 KiB input, 30-second overall request timeout, cancellable operations, configurable 48 / 256 / 512 KiB text preview (512 KiB default). Upstream retains at most 16 MiB of network body. Received size can exceed the preview size; truncation is visible. Binary responses show status/headers without a body preview. +- 128 KiB input, 30-second overall request timeout, cancellable operations, configurable 1–512 KiB text preview (1 KiB steps, 128 KiB default). Upstream retains at most 16 MiB of network body. Received size can exceed the preview size; truncation is visible. Binary responses show status/headers without a body preview. - Network/prepare errors are localized stable codes; raw request URLs and transport errors are not exposed in diagnostics. User-supplied text and server responses can contain secrets; this is a local HTTP client, not a redaction tool. - Uses upstream default proxy behavior; Lithe's proxy settings are not synchronized. No custom TLS/credential/environment UI. - macOS host chrome remains native; the plugin content is a themed Web page. This is not a replacement for the editor or a new host architecture. @@ -38,9 +52,12 @@ Replace the address with a service you intend to call. The UI follows the host's ## Build and verify -Requires macOS, Python 3, Rust (edition 2024), Xcode command line tools, and the `x86_64-apple-darwin` Rust target. Pinning uses Cargo.lock and Git revisions; no runtime downloads. +Requires macOS, Node.js 22+, Python 3, Rust (edition 2024), Xcode command line tools, and the `x86_64-apple-darwin` Rust target. Pinning uses Cargo.lock and Git revisions; no runtime downloads. ```sh +npm ci +npm run build +npm run check cargo build --release --locked cargo build --release --locked --target x86_64-apple-darwin cargo fmt --check @@ -59,7 +76,7 @@ Optional real Core integration (requires a compatible host Core library): python3 scripts/test_core.py --core /path/to/liblithe_core.dylib --binary dist/io.github.lithe-idea.http-client/bin/lithe-http-client ``` -Run that C ABI integration under an external 30-second process watchdog. `scripts/test_ui.js` is a browser test function for the loaded `ui/index.html`; its mocked bridge checks interaction state, cancellation and text-only rendering. Mocked UI tests do not replace native host acceptance. +Run that C ABI integration under an external 30-second process watchdog. `scripts/test_ui.js` launches a real SDK backend, a loopback HTTP server and headless Chrome. It checks caret/input/focus behavior, parsing/sending, highlighting, history, headers, resize/wrap, truncation, cancellation, real file reads/exports, install-directory refusal, localization and responsive layout. Run `node scripts/test_ui.js` after a debug build, or set `HTTP_CLIENT_BINARY=target/release/lithe-http-client`. For Playwright Chromium use `npx playwright install chromium` and `HTTP_CLIENT_BROWSER=chromium`; for WebKit use `npx playwright install webkit` and `HTTP_CLIENT_BROWSER=webkit`. Reports are `.artifacts/test-stability/ui.html` / `ui.junit.xml`; screenshots are under `.artifacts/`. The test bridge forwards real function calls and does not simulate native file dialogs or editor previews. Those flows still require native host acceptance. ## Architecture and attribution @@ -69,4 +86,6 @@ This project's adapter and UI are Apache-2.0. Release packages retain original d ## 中文说明 -保留 Lithe 原生 Mac 工作台,在底部工具窗口提供独立 HTTP 面板。粘贴 `.http` 文本后可发送请求、取消、查看状态码/耗时/大小,切换正文与响应头,格式化 JSON。界面跟随宿主中英文和主题。首版仅支持 macOS;没有环境文件、文件引用、响应脚本、历史记录或编辑器行内按钮,不会自动保存含有令牌的请求。 +保留 Lithe 原生 Mac 工作台,在底部工具窗口提供独立 HTTP 面板。粘贴 `.http` 文本后可发送请求、取消、查看状态码/耗时/大小,切换正文与响应头,格式化 JSON。界面跟随宿主中英文和主题。首版仅支持 macOS;支持原生选择 `.http` / `.rest` 文件、请求高亮、会话历史、可拖动分栏、响应换行和原始内容保存。HTML 响应可先保存到当前工作区,再在编辑区预览。没有环境文件、正文文件引用、响应脚本或编辑器行内按钮;历史不会写入磁盘,只有显式保存或预览才写入选择的文件。原生文件对话框和编辑区 HTML 预览的完整验收仍待进行。 + +UI source is `ui/src/main.js`; translations live in `shared/i18n/`. `npm run build` bundles all editor code locally into `ui/main.js` and records bundled UI dependency licenses. Commit generated outputs; `npm run check` verifies the bundle, licenses and matching English/Chinese keys. Packaging copies those files verbatim and requires no runtime downloads. diff --git a/assets/http.svg b/assets/http.svg index d4bd658..101dfa5 100644 --- a/assets/http.svg +++ b/assets/http.svg @@ -1,9 +1,5 @@ - - - - - - - - + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3e85a11 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,787 @@ +{ + "name": "lithe-plugin-http-client-ui", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lithe-plugin-http-client-ui", + "dependencies": { + "@codemirror/commands": "6.10.1", + "@codemirror/lang-html": "6.4.11", + "@codemirror/lang-json": "6.0.2", + "@codemirror/language": "6.12.4", + "@codemirror/legacy-modes": "6.5.5", + "@codemirror/state": "6.7.6", + "@codemirror/view": "6.43.15", + "@lezer/highlight": "1.2.3" + }, + "devDependencies": { + "esbuild": "0.25.12", + "playwright": "1.62.1" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.20.4", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.4.tgz", + "integrity": "sha512-yF8RhOf2SXlg00+qtupzLhrglcas61boqaONiNcbPIebHCpJocpqTBA6dyrtUrQO47hqyTdeob/3XnYilT7TaQ==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.1.tgz", + "integrity": "sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz", + "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.1.7" + } + }, + "node_modules/@codemirror/lang-html": { + "version": "6.4.11", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.11.tgz", + "integrity": "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.12" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.5.tgz", + "integrity": "sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.2.tgz", + "integrity": "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.4.tgz", + "integrity": "sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.5.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/legacy-modes": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.5.5.tgz", + "integrity": "sha512-9ltT214oMb3Y1w5eAZMSigzrjzZnMI2Wa3Feq73rU/i4C56MkwrpfswfQYOr28C5pXr6dWwspNTMyeHXlzWMxg==", + "license": "MIT", + "dependencies": { + "@codemirror/streamparser": "^6.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.7.tgz", + "integrity": "sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.42.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.7.6", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.6.tgz", + "integrity": "sha512-kAz+AncRtKuIknedxT1bq4XwXv4UowhbkHU1myPrtVb/jZtImWuV5BXzv5vK6i3kYACsdiZiQKFQQ5Mq7elW8w==", + "license": "MIT", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/streamparser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/streamparser/-/streamparser-6.0.0.tgz", + "integrity": "sha512-JTFPF6xrfjt0mnfGPgzcLiMwYmvIyNaoizp8BYzv8FE8KrT6GBGDZ190rtt+O7Wke3gG/MFHyiY9YGNeimof4w==", + "license": "MIT" + }, + "node_modules/@codemirror/view": { + "version": "6.43.15", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.15.tgz", + "integrity": "sha512-HHsfpqFeHyXLs983pSRe38Xajs0vFWZQ2BuX0m7Ki8w3jZ5iD8cuR3lBz2/5/X53Dhf32SBHKh6rtSTB6tKeGw==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.7.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@lezer/common": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.5.tgz", + "integrity": "sha512-Pw7PVCndruF1pb3ebCxpSVpkMHSDjwRCLcTRw+RizUKco5QbWylwq2g4lnG/RYN7yTTQDXE9F77MwtkAyphrjg==", + "license": "MIT" + }, + "node_modules/@lezer/css": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.9.tgz", + "integrity": "sha512-ZmzgvTOBdJWGIsY/ItAfN7UW8DV802oZG+jeG6E508SwEzz5YhuAajptpWPICvIyqYAD2+VjMdOS40GgGkyEOQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", + "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.3.0" + } + }, + "node_modules/@lezer/html": { + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.13.tgz", + "integrity": "sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.6.tgz", + "integrity": "sha512-sEvOqpl4vJQca0NugSQK02vQPbc5KrvoojnYGoqqFgFO0MtcYhwGiHKVEB+LuXYJnfyXo4QPA8ztbrEa4Fw5NA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/json": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.3.tgz", + "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.12.tgz", + "integrity": "sha512-On9HU4oMMiHPMkQDgoTnGahjgG5n/MkN38CgG77sMraKLL+3JBbeQNi1FcCXV9QRqwF9/BUXP3caHyJC1fBOTQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.4.tgz", + "integrity": "sha512-Wy0V7+SGUjnF9/TkiM1hKVDPj7jKXduPNboMVtHTA8dySMURWqfg/JZ9E2Sq8JgSJmkl7k7Qe9FLeMSrSraWmQ==", + "license": "MIT" + }, + "node_modules/crelt": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.7.tgz", + "integrity": "sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/playwright": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/style-mod": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.4.tgz", + "integrity": "sha512-XXWIQt633/EpAFx8aZDOTjBzrCaGmhvEQlQo6MVPfa2OzO2cWo+4hV9h+6UkHYlXGfy+ODXKUdP7Pthmcu5ATw==", + "license": "MIT" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1065927 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "lithe-plugin-http-client-ui", + "private": true, + "scripts": { + "build": "node scripts/build-ui.mjs", + "check": "node scripts/build-ui.mjs --check" + }, + "dependencies": { + "@codemirror/commands": "6.10.1", + "@codemirror/lang-html": "6.4.11", + "@codemirror/lang-json": "6.0.2", + "@codemirror/language": "6.12.4", + "@codemirror/legacy-modes": "6.5.5", + "@codemirror/state": "6.7.6", + "@codemirror/view": "6.43.15", + "@lezer/highlight": "1.2.3" + }, + "devDependencies": { + "esbuild": "0.25.12", + "playwright": "1.62.1" + } +} diff --git a/plugin.json b/plugin.json index c3938d9..746aa35 100644 --- a/plugin.json +++ b/plugin.json @@ -5,7 +5,7 @@ "version": "0.1.1", "pluginAPIVersion": 3, "requires": { - "backend": 1, + "backend": 2, "serverProcess": 1, "ui": 2 }, @@ -17,7 +17,10 @@ "permissions": [ "backend.launch", "ui.contribute", - "ui.web" + "ui.web", + "workspace.metadata", + "preview.open", + "documents.read" ], "activationEvents": [ "onView:io.github.lithe-idea.http-client.client" @@ -40,7 +43,7 @@ "entry": "ui/index.html" }, "icon": { - "path": "assets/http-tool.svg", + "path": "assets/http.svg", "mode": "template" } } diff --git a/scripts/build-ui.mjs b/scripts/build-ui.mjs new file mode 100644 index 0000000..58081d3 --- /dev/null +++ b/scripts/build-ui.mjs @@ -0,0 +1,45 @@ +import { build } from 'esbuild'; +import { readFile, writeFile } from 'node:fs/promises'; +import { fileURLToPath } from 'node:url'; +import { dirname, join } from 'node:path'; + +const root = fileURLToPath(new URL('..', import.meta.url)); +const en = JSON.parse(await readFile(join(root, 'shared/i18n/en-US.json'), 'utf8')); +const zh = JSON.parse(await readFile(join(root, 'shared/i18n/zh-CN.json'), 'utf8')); +if (JSON.stringify(Object.keys(en).sort()) !== JSON.stringify(Object.keys(zh).sort()) || + [...Object.values(en), ...Object.values(zh)].some(value => typeof value !== 'string' || !value.trim())) { + throw new Error('English and Chinese message keys must match and contain text.'); +} +const output = await build({ + absWorkingDir: root, entryPoints: ['ui/src/main.js'], bundle: true, + outfile: 'ui/main.js', format: 'iife', target: ['safari16'], + minify: true, legalComments: 'eof', write: false, metafile: true, +}); +const packages = new Set(); +for (const input of Object.keys(output.metafile.inputs)) { + if (!input.startsWith('node_modules/')) continue; + let directory = dirname(join(root, input)); + while (directory.startsWith(join(root, 'node_modules'))) { + try { await readFile(join(directory, 'package.json')); packages.add(directory); break; } + catch (error) { if (error.code !== 'ENOENT') throw error; directory = dirname(directory); } + } +} +const dependencies = [], licenses = []; +for (const directory of [...packages].sort()) { + const metadata = JSON.parse(await readFile(join(directory, 'package.json'), 'utf8')); + const license = await readFile(join(directory, 'LICENSE'), 'utf8'); + dependencies.push({ name: metadata.name, version: metadata.version, license: metadata.license }); + licenses.push(`${metadata.name} ${metadata.version}\n${license.trim()}\n`); +} +for (const [name, generated] of [ + ['main.js', output.outputFiles[0].text], + ['DEPENDENCIES.json', JSON.stringify(dependencies, null, 2) + '\n'], + ['THIRD_PARTY_LICENSES.txt', licenses.join('\n--------------------\n\n')], +]) { + const destination = join(root, 'ui', name); + if (process.argv.includes('--check')) { + if (await readFile(destination, 'utf8') !== generated) throw new Error(`Run npm run build and include ui/${name}.`); + } else { + await writeFile(destination, generated); + } +} diff --git a/scripts/test_protocol.py b/scripts/test_protocol.py index e921b80..6dbcdb2 100644 --- a/scripts/test_protocol.py +++ b/scripts/test_protocol.py @@ -185,22 +185,24 @@ def test_unicode_response_preview_is_bounded(self): self.assertNotIn("\ufffd", value["body"]) def test_configurable_preview_and_default(self): - for limit in [256, 512]: + for limit in [1, 49, 256, 512]: value = self.host.answer(self.host.invoke("requests.execute", {"text": f"GET {self.url}/large", "index": 0, "previewLimitKiB": limit}))["result"] self.assertGreater(len(value["body"].encode()), (limit - 1) * 1024) self.assertLessEqual(len(value["body"].encode()), limit * 1024) self.assertTrue(value["truncated"]) value = self.execute(f"GET {self.url}/large")["result"] - self.assertGreater(len(value["body"].encode()), 511 * 1024) + self.assertGreater(len(value["body"].encode()), 127 * 1024) + self.assertLessEqual(len(value["body"].encode()), 128 * 1024) + self.assertTrue(value["truncated"]) def test_escaped_preview_respects_transport_budget(self): - value = self.execute(f"GET {self.url}/escaped")["result"] + value = self.host.answer(self.host.invoke("requests.execute", {"text": f"GET {self.url}/escaped", "index": 0, "previewLimitKiB": 512}))["result"] self.assertTrue(value["truncated"]) self.assertGreater(len(value["body"]), 100 * 1024) self.assertLessEqual(len(json.dumps(value, separators=(",", ":")).encode()), 900 * 1024) def test_invalid_preview_limit_is_rejected(self): - for limit in [0, 1024, "512", None, 48.5]: + for limit in [0, 513, 1024, "512", None, 48.5]: reply = self.host.answer(self.host.invoke("requests.execute", {"text": f"GET {self.url}/ok", "index": 0, "previewLimitKiB": limit})) self.assertIn("httpClient.invalidInput", json.dumps(reply)) diff --git a/scripts/test_ui.js b/scripts/test_ui.js index 235e36d..7f91380 100644 --- a/scripts/test_ui.js +++ b/scripts/test_ui.js @@ -1,47 +1,312 @@ -async () => { - const assert = (value, message) => { if (!value) throw new Error(message); }; - const checks = []; - const original = window.lithe; - const sample = {status:200,statusText:"OK",version:"HTTP/1.1",headers:[["content-type","application/json"]],body:'{"ok":true}',size:11,totalMs:12,truncated:false}; - let calls = [], pending; - window.lithe = {context:{locale:"en"}, request:async (method,args) => { - calls.push([method,args]); - if (method === "functions.cancel") { pending?.({value:sample}); return {}; } - if (args.function === "requests.parse") return {value:{requests:[{index:0,method:"GET",url:"http://example.invalid"}]}}; - return {value:sample}; - }}; - try { - source.value="GET http://example.invalid"; source.dispatchEvent(new Event("input")); - await run(true); - assert(calls.map(x=>x[1].function).join() === "requests.parse,requests.execute", "Send must parse before executing"); - assert(response.value.includes('\n "ok": true'), "Pretty JSON missing"); checks.push("parse-send-format"); - $("headers-tab").click(); assert($("response-headers").textContent.includes("content-type"), "Headers missing"); - assert(response.hidden && document.querySelector(".pretty-label").hidden, "Body-only controls must be hidden"); - const details = $("response-headers").querySelector("details"); - assert(!details.open, "Headers must start collapsed"); - details.querySelector("summary").click(); assert(details.open, "Header cannot expand"); - assert(details.querySelector(".header-value").textContent === "application/json", "Full header lost"); - assert(calls.at(-1)[1].params.previewLimitKiB === 512, "Default preview size missing"); - $("preview-limit").value = "256"; - await run(true); assert(calls.at(-1)[1].params.previewLimitKiB === 256, "Preview setting not used"); - checks.push("header-disclosure-preview-setting"); - $("body-tab").click(); $("pretty").checked=false; $("pretty").dispatchEvent(new Event("change")); - assert(response.value === sample.body, "Raw body changed"); checks.push("headers-raw"); - sample.body=''; - await run(true); assert(!window.injected && response.value === sample.body, "HTML must stay text"); checks.push("text-only-response"); - sample.truncated=true; await run(true); assert(!$("notice").hidden && $("pretty").disabled, "Truncated preview not marked"); checks.push("truncation"); - source.value="GET http://example.invalid/changed"; source.dispatchEvent(new Event("input")); - assert(!requests.options.length, "Stale selection retained"); await run(true); - assert(calls.at(-2)[1].function === "requests.parse", "Edited text was not reparsed"); checks.push("stale-selection"); - window.lithe.request = async (method,args) => { - if (method === "functions.cancel") { pending({value:sample}); return {}; } - return new Promise(resolve => { pending=resolve; }); - }; - const running=run(true); assert(source.disabled && !cancel.disabled, "Busy controls incorrect"); - cancel.click(); await running; - assert(!source.disabled && response.value === "" && $("status").textContent===t("cancelled"), "Late cancelled response displayed"); checks.push("cancel-late-result"); - window.lithe.request = async () => { throw {pluginErrorCode:"httpClient.transportFailed"}; }; - await run(true); assert($("status").textContent===t("httpClient.transportFailed") && !send.disabled, "Error recovery incorrect"); checks.push("error-recovery"); - return {passed: checks}; - } finally { window.lithe=original; busy=false; active=null; cancelled=false; controls(); } +// Real browser + SDK backend integration; the loopback server routes bridge +// calls to the plugin process. Native-only dialogs/preview are not simulated. +const { chromium, webkit } = require('playwright'); +const { spawn } = require('node:child_process'); +const { createServer } = require('node:http'); +const { readFile, mkdtemp, rm, writeFile, mkdir } = require('node:fs/promises'); +const { tmpdir } = require('node:os'); +const { join, resolve, extname } = require('node:path'); +const assert = require('node:assert/strict'); +const root = resolve(__dirname, '..'); +const pending = new Map(), calls = new Map(), heldResponses = new Set(); +let sequence = 0, buffer = Buffer.alloc(0), backend, server, browser, temporary; +const records = []; + +function send(message) { + const data = Buffer.from(JSON.stringify({ jsonrpc: '2.0', ...message })); + backend.stdin.write(Buffer.concat([Buffer.from(`Content-Length: ${data.length}\r\n\r\n`), data])); +} +function request(method, params) { + const id = ++sequence; + const result = new Promise((accept, reject) => { + const timer = setTimeout(() => { + pending.delete(id); send({ method: '$/cancelRequest', params: { id } }); + reject(new Error(`${method} exceeded 8 seconds`)); + }, 8000); + pending.set(id, { accept, reject, timer }); send({ id, method, params }); + }); + return { id, result }; } +async function check(name, action) { + const started = performance.now(); let failure; + try { await action(); } catch (error) { failure = error; throw error; } + finally { records.push({ name, seconds: (performance.now() - started) / 1000, failure: failure?.stack }); } +} +const escape = value => String(value).replace(/[<>&"']/g, c => ({ '<': '<', '>': '>', '&': '&', '"': '"', "'": ''' })[c]); +(async () => { + temporary = await mkdtemp(join(tmpdir(), 'lithe-http-ui-')); + backend = spawn(resolve(root, process.env.HTTP_CLIENT_BINARY || 'target/debug/lithe-http-client'), [], { + cwd: temporary, stdio: ['pipe', 'pipe', 'inherit'], + }); + backend.stdout.on('data', chunk => { + buffer = Buffer.concat([buffer, chunk]); + while (true) { + const head = buffer.indexOf('\r\n\r\n'); if (head < 0) break; + const length = Number(/Content-Length:\s*(\d+)/i.exec(buffer.subarray(0, head).toString())[1]); + if (buffer.length < head + 4 + length) break; + const message = JSON.parse(buffer.subarray(head + 4, head + 4 + length)); buffer = buffer.subarray(head + 4 + length); + const entry = pending.get(message.id); + if (entry) { pending.delete(message.id); clearTimeout(entry.timer); message.error ? entry.reject(message.error) : entry.accept(message.result); } + } + }); + backend.on('error', error => { for (const entry of pending.values()) { clearTimeout(entry.timer); entry.reject(error); } pending.clear(); }); + await request('initialize', { rootUri: new URL(`file://${temporary}/`).href, capabilities: { experimental: { litheFunctions: { versions: [1, 2, 3] } } } }).result; + send({ method: 'initialized', params: {} }); + const bridgeSource = `window.lithe = { version: 1, context: { locale: new URL(location.href).searchParams.get('locale') || 'en', platform: 'macos' }, request: async (method, params) => { + const response = await fetch('/bridge', {method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({method,params})}); + const reply = await response.json(); if (reply.error) throw reply.error; return reply.result; + }};`; + server = createServer(async (req, res) => { + const url = new URL(req.url, 'http://localhost'); + try { + if (url.pathname === '/api/slow') { heldResponses.add(res); res.on('close', () => heldResponses.delete(res)); return; } + if (url.pathname === '/api/json') { + res.writeHead(200, { 'Content-Type': 'application/json', 'X-Test': 'one; two; three' }); + res.end(JSON.stringify({ ok: true, unicode: '世界', long: 'x'.repeat(1600) })); return; + } + if (url.pathname === '/api/html') { + res.writeHead(200, { 'Content-Type': 'text/html' }); + // Same six leading blank lines as the GitHub HTML regression. Internal + // blank lines must remain visible when only the leading ones collapse. + res.end('\n\n\n\n \n\n\n\n\n

Real loopback response

'); return; + } + if (url.pathname === '/api/large') { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ text: '好'.repeat(100000) })); return; } + if (url.pathname === '/bridge') { + const chunks = []; let size = 0; + for await (const chunk of req) { size += chunk.length; if (size > 1024 * 1024) throw new Error('Bridge input too large'); chunks.push(chunk); } + const { method, params } = JSON.parse(Buffer.concat(chunks)); let result; + if (method === 'functions.cancel') { const id = calls.get(params.call); if (id) send({ method: '$/cancelRequest', params: { id } }); result = {}; } + else if (method === 'functions.invoke') { + const operation = request('lithe/function/invoke', { functionID: params.function, params: params.params, operationID: params.call }); + calls.set(params.call, operation.id); + try { result = { value: await operation.result }; } + finally { calls.delete(params.call); } + } else throw new Error(`Native-only or unknown bridge method: ${method}`); + res.writeHead(200, { 'Content-Type': 'application/json' }).end(JSON.stringify({ result })); return; + } + if (url.pathname === '/bridge.js') { res.writeHead(200, { 'Content-Type': 'text/javascript' }).end(bridgeSource); return; } + const isAsset = url.pathname.startsWith('/assets/'); + const base = resolve(root, isAsset ? 'assets' : 'ui'); + const name = url.pathname === '/' ? 'index.html' : url.pathname.slice(isAsset ? 8 : 1); + const file = resolve(base, name); + if (!file.startsWith(base + '/')) throw new Error('Invalid path'); + let data = await readFile(file); + if (name === 'index.html') data = Buffer.from(data.toString().replace(' -
⌘ / Ctrl ↵
+
+
.http
+ + + + + + + + +
-
-
-
-
-
-
-
+
+
+ + + + + +
+
+ +
+ +
+
+ +
+ + + + +
+
+
+ +

⌘ ↵ +
+
+
+ +
+ + diff --git a/ui/main.js b/ui/main.js index 9978055..8b75564 100644 --- a/ui/main.js +++ b/ui/main.js @@ -1,115 +1,29 @@ -"use strict"; -const messages = { - en: { previewLimit: "Body preview", expandHeader: "Expand or collapse header value", source: "Request · .http", response: "Response", select: "Select request", parse: "Read requests", send: "Send", cancel: "Cancel", ready: "Ready", empty: "No requests found. Check the request line.", working: "Working…", cancelling: "Cancelling…", cancelled: "Cancelled", truncated: "Response preview truncated. Increase the preview limit and send again; escaped content may reach the transport limit earlier.", binary: "Binary response — text preview unavailable.", bridge: "Open this plugin in Lithe to send requests.", failed: "Request failed. Try again.", body: "Body", headers: "Headers", pretty: "Format JSON", memory: "Not saved to disk", hint: "Send a request to inspect its response.", stale: "Request changed. Send will read it again.", "httpClient.invalidInput": "Invalid or oversized input (maximum 128 KiB).", "httpClient.fileIncludeUnsupported": "Local file includes are not supported. Paste the body instead.", "httpClient.handlerUnsupported": "Response scripts and file redirects are not supported. Remove them before sending.", "httpClient.prepareFailed": "Check request syntax and inline variables. Environment files are not loaded.", "httpClient.invalidScheme": "Only HTTP and HTTPS are supported.", "httpClient.timeout": "The request exceeded 30 seconds.", "httpClient.transportFailed": "Connection failed. Check the URL, network and certificate.", "httpClient.responseTooLarge": "Response metadata exceeds the plugin limit." }, - zh: { previewLimit: "正文预览上限", expandHeader: "展开或收起响应头值", source: "请求 · .http", response: "响应", select: "选择请求", parse: "读取请求", send: "发送", cancel: "取消", ready: "就绪", empty: "未找到请求,请检查请求行。", working: "处理中…", cancelling: "正在取消…", cancelled: "已取消", truncated: "响应预览已截断。可调高预览上限后重新发送;含转义字符的内容可能先达到传输上限。", binary: "二进制响应,无法预览文本。", bridge: "请在 Lithe 中打开此插件以发送请求。", failed: "请求失败,请重试。", body: "正文", headers: "响应头", pretty: "格式化 JSON", memory: "不保存到磁盘", hint: "发送请求后在此查看响应。", stale: "请求已修改,发送时会重新读取。", "httpClient.invalidInput": "输入无效或超过 128 KiB。", "httpClient.fileIncludeUnsupported": "暂不支持本地文件引用,请直接粘贴正文。", "httpClient.handlerUnsupported": "暂不支持响应脚本和文件重定向,请移除后再发送。", "httpClient.prepareFailed": "请检查请求语法与内联变量;不会加载环境文件。", "httpClient.invalidScheme": "仅支持 HTTP 和 HTTPS。", "httpClient.timeout": "请求超过 30 秒。", "httpClient.transportFailed": "连接失败,请检查地址、网络与证书。", "httpClient.responseTooLarge": "响应元数据超过插件限制。" } -}; -const chinese = String(window.lithe?.context?.locale || navigator.language).startsWith("zh"); -const t = key => (chinese ? messages.zh : messages.en)[key] || messages.en.failed; -document.documentElement.lang = chinese ? "zh-CN" : "en"; -document.querySelectorAll("[data-i18n]").forEach(el => { el.textContent = t(el.dataset.i18n); }); -document.querySelectorAll("[data-label]").forEach(el => { el.setAttribute("aria-label", t(el.dataset.label)); }); -const $ = id => document.getElementById(id); -const source = $("source"), requests = $("requests"), response = $("response"); -const parseButton = $("parse"), send = $("send"), cancel = $("cancel"); -let active = null, busy = false, parsedText = null, cancelled = false, result = null, tab = "body"; -source.placeholder = "### Health\nGET http://localhost:8080/health\nAccept: application/json"; -response.placeholder = t("hint"); -function status(key, error = false) { $("status").textContent = t(key); document.querySelector("footer").dataset.error = String(error); } -function controls() { - parseButton.disabled = busy || !window.lithe || !source.value.trim(); - send.disabled = busy || !window.lithe || !source.value.trim(); - cancel.disabled = !active || cancelled; - $("preview-limit").disabled = busy; - source.disabled = busy; requests.disabled = busy || !requests.options.length; - $("pretty").disabled = tab !== "body" || !result || result.truncated || result.body == null; -} -function render() { - $("body-tab").setAttribute("aria-pressed", String(tab === "body")); - $("headers-tab").setAttribute("aria-pressed", String(tab === "headers")); - $("code").textContent = result ? String(result.status) : ""; - $("code").dataset.kind = result?.status >= 400 ? "error" : "success"; - $("metrics").textContent = result ? `${Math.round(result.totalMs)} ms · ${result.size >= 1024 ? (result.size / 1024).toFixed(1) + " KiB" : result.size + " B"}` : ""; - let content = ""; - if (result) { - content = tab === "headers" ? `${result.version} ${result.status} ${result.statusText}\n${result.headers.map(([k,v]) => `${k}: ${v}`).join("\n")}` : result.body ?? t("binary"); - if (tab === "body" && $("pretty").checked && !result.truncated && result.body != null) { - try { const formatted = JSON.stringify(JSON.parse(content), null, 2); if (formatted.length <= 2 * 1024 * 1024) content = formatted; } catch { /* Non-JSON stays verbatim. */ } - } - } - response.value = content; - response.hidden = tab === "headers"; - $("response-headers").hidden = tab !== "headers"; - document.querySelector(".pretty-label").hidden = tab !== "body"; - renderHeaders(); - $("notice").hidden = tab !== "body" || !result?.truncated; - $("notice").textContent = result?.truncated ? t("truncated") : ""; - controls(); -} -let renderedHeaders = null; -function renderHeaders() { - if (renderedHeaders === result) return; - renderedHeaders = result; - const container = $("response-headers"); - container.replaceChildren(); - if (!result) return; - const protocol = document.createElement("p"); - protocol.className = "response-protocol"; - protocol.textContent = `${result.version} ${result.status} ${result.statusText}`; - container.append(protocol); - for (const [key, value] of result.headers) { - const detail = document.createElement("details"); - const summary = document.createElement("summary"); - summary.title = t("expandHeader"); - const name = document.createElement("span"); name.className = "header-key"; name.textContent = key; - const preview = document.createElement("span"); preview.className = "header-preview"; preview.textContent = value; - const full = document.createElement("div"); full.className = "header-value"; full.textContent = value; - summary.append(name, preview); detail.append(summary, full); container.append(detail); - } -} -async function invoke(name, params) { - active = crypto.randomUUID(); controls(); - try { - const reply = await window.lithe.request("functions.invoke", { function: name, params, call: active }); - if (cancelled) return null; - return reply.value; - } finally { active = null; controls(); } -} -async function parse() { - const text = source.value; - parsedText = null; requests.replaceChildren(); - const value = await invoke("requests.parse", { text }); - if (!value) return false; - for (const item of value.requests) requests.add(new Option(`${item.method} ${item.name || item.url}`, String(item.index))); - parsedText = text; - if (!requests.options.length) { status("empty"); return false; } - return true; -} -async function run(execute) { - if (busy || !window.lithe || !source.value.trim()) return; - busy = true; cancelled = false; result = null; render(); status("working"); - try { - if (!execute || parsedText !== source.value) { if (!await parse()) return; } - if (cancelled) return; - if (execute) result = await invoke("requests.execute", { text: source.value, index: Number(requests.value), previewLimitKiB: Number($("preview-limit").value) }); - status("ready"); - } catch (error) { - const wasCancelled = cancelled || error?.code === "requestCancelled"; - status(wasCancelled ? "cancelled" : error?.pluginErrorCode || "failed", !wasCancelled); - } finally { - if (cancelled) status("cancelled"); - busy = false; render(); - } -} -parseButton.addEventListener("click", () => run(false)); -send.addEventListener("click", () => run(true)); -cancel.addEventListener("click", async () => { - if (!active || cancelled) return; - const call = active; cancelled = true; controls(); status("cancelling"); - try { await window.lithe.request("functions.cancel", { call }); } - catch { if (active === call) status("failed", true); } -}); -source.addEventListener("input", () => { parsedText = null; requests.replaceChildren(); status("stale"); controls(); }); -for (const name of ["body", "headers"]) $(name + "-tab").addEventListener("click", () => { tab = name; render(); }); -$("pretty").addEventListener("change", render); -document.addEventListener("keydown", event => { if ((event.metaKey || event.ctrlKey) && event.key === "Enter") { event.preventDefault(); run(true); } }); -status(window.lithe ? "ready" : "bridge"); render(); +(()=>{var io=[],kh=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,1n,9,16,o,,x,1i,3,,i,,7,a,2,t,3,1k,,,7,2,2,2,3,9,,a,2,q,,2,3,1k,,,5,4,2,2,3,3,,u,2,3,,b,3,1k,,,8,,3,,3,k,2,m,6,,3,1k,,,7,2,2,2,3,7,3,a,2,u,,1n,5,3,3,,4,9,,14,5,1j,,,7,,3,,4,7,2,b,2,t,3,1k,,,7,,3,,4,7,2,b,2,f,,c,4,1j,2,,7,,3,,4,9,,a,2,t,3,1y,,4,6,,,,8,i,2,1p,,,8,c,8,2q,,,a,b,7,21,2,r,,,,,,4,2,1d,k,,2,5,b,,10,9,,2u,b,,6,n,4,4,3,g,4,d,,,3,6,,f,,jj,3,qa,4,s,3,t,2,u,2,1s,w,9,,19,3,,,39,2,y,,3a,c,4,c,63,5,1l,a,,,,,2,o,2,,1c,1a,2,c,k,5,1b,h,12,9,c,3,u,d,1k,e,1c,k,48,3,,l,4,,6,,2,3,5i,1s,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,n,5,4,,2b,2,1e,i,q,i,d,,12,8,p,d,18,4,1b,e,10,,1v,e,c,,8,2,1a,,1f,,,3,2,2,5,2,,,15,5,5,2,6k,8,,2,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,1t,5,8t,2,25,6,1y,b,1d,4,3e,3,1h,f,15,,2,2,a,4,19,b,7,,1p,3,10,e,g,2,18,,c,3,1c,e,8,4,,2,2k,c,6,,2,,4d,c,l,4,1j,2,,7,2,2,2,3,9,,a,2,2,7,3,5,1v,9,,,2,,,4,,5,,,e,2,2a,i,n,,29,k,6j,7,2,9,r,2,2a,h,2y,d,2t,3,2,a,74,f,6t,6,,2,2,4,,,,2,3x,7,2,7,3,,s,a,14,7,,4,8,,9,b,1a,g,5i,8,5j,8,,8,2a,m,,e,3e,6,3,,,2,,7,,,1u,5,,2,,5,9n,4,9,2,,,1c,7,3,5,n,,44l,,6,f,8ug,i,1xc,5,1n,7,t4,,,1j,7,4,29,,b,2,f57,2,3mp,1a,2,n,f2,5,3,6,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,2s,,4g,7,af,,1p,4,e4,4,72,2,6r,,2,,7,2,5,,d6,7,31,7,240,5".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=kh[i])e=i+1;else return!0;if(e==t)return!1}}function Qh(n){return n>=127462&&n<=127487}var xh=8205;function $h(n,e,t=!0,i=!0){return(t?vh:HO)(n,e,i)}function vh(n,e,t){if(e==n.length)return e;e&&Ph(n.charCodeAt(e))&&Ch(n.charCodeAt(e-1))&&e--;let i=to(n,e);for(e+=wh(i);e=0&&Qh(to(n,o));)s++,o-=2;if(s%2==0)break;e+=2}else break}return e}function HO(n,e,t){for(;e>1;){let i=vh(n,e-2,t);if(i=56320&&n<57344}function Ch(n){return n>=55296&&n<56320}function wh(n){return n<65536?1:2}var U=class n{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=Gi(this,e,t);let r=[];return this.decompose(0,e,r,2),i.length&&i.decompose(0,i.length,r,3),this.decompose(t,this.length,r,1),Ii.from(r,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=Gi(this,e,t);let i=[];return this.decompose(e,t,i,0),Ii.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),r=new Si(this),s=new Si(e);for(let o=t,l=t;;){if(r.next(o),s.next(o),o=0,r.lineBreak!=s.lineBreak||r.done!=s.done||r.value!=s.value)return!1;if(l+=r.value.length,r.done||l>=i)return!0}}iter(e=1){return new Si(this,e)}iterRange(e,t=this.length){return new Yr(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let r=this.line(e).from;i=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new qr(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?n.empty:e.length<=32?new De(e):Ii.from(De.split(e,[]))}},De=class n extends U{constructor(e,t=KO(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,r){for(let s=0;;s++){let o=this.text[s],l=r+o.length;if((t?i:l)>=e)return new ro(r,l,i,o);r=l+1,i++}}decompose(e,t,i,r){let s=e<=0&&t>=this.length?this:new n(Th(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(r&1){let o=i.pop(),l=Lr(s.text,o.text.slice(),0,s.length);if(l.length<=32)i.push(new n(l,o.length+s.length));else{let a=l.length>>1;i.push(new n(l.slice(0,a)),new n(l.slice(a)))}}else i.push(s)}replace(e,t,i){if(!(i instanceof n))return super.replace(e,t,i);[e,t]=Gi(this,e,t);let r=Lr(this.text,Lr(i.text,Th(this.text,0,e)),t),s=this.length+i.length-(t-e);return r.length<=32?new n(r,s):Ii.from(n.split(r,[]),s)}sliceString(e,t=this.length,i=` +`){[e,t]=Gi(this,e,t);let r="";for(let s=0,o=0;s<=t&&oe&&o&&(r+=i),es&&(r+=l.slice(Math.max(0,e-s),t-s)),s=a+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],r=-1;for(let s of e)i.push(s),r+=s.length+1,i.length==32&&(t.push(new n(i,r)),i=[],r=-1);return r>-1&&t.push(new n(i,r)),t}},Ii=class n extends U{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,r){for(let s=0;;s++){let o=this.children[s],l=r+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,r);r=l+1,i=a+1}}decompose(e,t,i,r){for(let s=0,o=0;o<=t&&s=o){let h=r&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=Gi(this,e,t),i.lines=s&&t<=l){let a=o.replace(e-s,t-s,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let c=this.children.slice();return c[r]=a,new n(c,this.length-(t-e)+i.length)}return super.replace(s,l,a)}s=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` +`){[e,t]=Gi(this,e,t);let r="";for(let s=0,o=0;se&&s&&(r+=i),eo&&(r+=l.sliceString(e-o,t-o,i)),o=a+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof n))return 0;let i=0,[r,s,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;r+=t,s+=t){if(r==o||s==l)return i;let a=this.children[r],h=e.children[s];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,r)=>i+r.length+1,-1)){let i=0;for(let O of e)i+=O.lines;if(i<32){let O=[];for(let p of e)p.flatten(O);return new De(O,t)}let r=Math.max(32,i>>5),s=r<<1,o=r>>1,l=[],a=0,h=-1,c=[];function f(O){let p;if(O.lines>s&&O instanceof n)for(let g of O.children)f(g);else O.lines>o&&(a>o||!a)?(u(),l.push(O)):O instanceof De&&a&&(p=c[c.length-1])instanceof De&&O.lines+p.lines<=32?(a+=O.lines,h+=O.length+1,c[c.length-1]=new De(p.text.concat(O.text),p.length+1+O.length)):(a+O.lines>r&&u(),a+=O.lines,h+=O.length+1,c.push(O))}function u(){a!=0&&(l.push(c.length==1?c[0]:n.from(c,h)),h=-1,a=c.length=0)}for(let O of e)f(O);return u(),l.length==1?l[0]:new n(l,t)}};U.empty=new De([""],0);function KO(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Lr(n,e,t=0,i=1e9){for(let r=0,s=0,o=!0;s=t&&(a>i&&(l=l.slice(0,i-r)),r0?1:(e instanceof De?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,r=this.nodes[i],s=this.offsets[i],o=s>>1,l=r instanceof De?r.text.length:r.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(r instanceof De){let a=r.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=r.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof De?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Yr=class{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new Si(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=i?r:t<0?r.slice(r.length-i):r.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},qr=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<"u"&&(U.prototype[Symbol.iterator]=function(){return this.iter()},Si.prototype[Symbol.iterator]=Yr.prototype[Symbol.iterator]=qr.prototype[Symbol.iterator]=function(){return this});var ro=class{constructor(e,t,i,r){this.from=e,this.to=t,this.number=i,this.text=r}get length(){return this.to-this.from}};function Gi(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function Qe(n,e,t=!0,i=!0){return $h(n,e,t,i)}function JO(n){return n>=56320&&n<57344}function ep(n){return n>=55296&&n<56320}function bo(n,e){let t=n.charCodeAt(e);if(!ep(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return JO(i)?(t-55296<<10)+(i-56320)+65536:t}function So(n){return n<65536?1:2}var so=/\r\n?|\n/,ve=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(ve||(ve={})),Mt=class n{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return s+(e-r);s+=l}else{if(i!=ve.Simple&&h>=e&&(i==ve.TrackDel&&re||i==ve.TrackBefore&&re))return null;if(h>e||h==e&&t<0&&!l)return e==r||t<0?s:s+a;s+=a}r=h}if(e>r)throw new RangeError(`Position ${e} is out of range for changeset of length ${r}`);return s}touchesRange(e,t=e){for(let i=0,r=0;i=0&&r<=t&&l>=e)return rt?"cover":!0;r=l}return!1}toString(){let e="";for(let t=0;t=0?":"+r:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new n(e)}static create(e){return new n(e)}},Ae=class n extends Mt{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return oo(this,(t,i,r,s,o)=>e=e.replace(r,r+(i-t),o),!1),e}mapDesc(e,t=!1){return lo(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let r=0,s=0;r=0){t[r]=l,t[r+1]=o;let a=r>>1;for(;i.length0&&Ut(i,t,s.text),s.forward(c),l+=c}let h=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,i){let r=[],s=[],o=0,l=null;function a(c=!1){if(!c&&!r.length)return;ou||f<0||u>t)throw new RangeError(`Invalid change range ${f} to ${u} (in doc of length ${t})`);let p=O?typeof O=="string"?U.of(O.split(i||so)):O:U.empty,g=p.length;if(f==u&&g==0)return;fo&&Ce(r,f-o,-1),Ce(r,u-f,g),Ut(s,r,p),o=u}}return h(e),a(!l),l}static empty(e){return new n(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let r=0;rl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(s.length==1)t.push(s[0],0);else{for(;i.length=0&&t<=0&&t==n[r+1]?n[r]+=e:r>=0&&e==0&&n[r]==0?n[r+1]+=t:i?(n[r]+=e,n[r+1]+=t):n.push(e,t)}function Ut(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(r,h,s,c,f),r=h,s=c}}}function lo(n,e,t,i=!1){let r=[],s=i?[]:null,o=new yi(n),l=new yi(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);Ce(r,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,c=o.len;for(;c;)if(l.ins==-1){let f=Math.min(c,l.len);h+=f,c-=f,l.forward(f)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),s.forward2(a),o.forward(a)}}}}var yi=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?U.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?U.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},mi=class n{constructor(e,t,i,r){this.from=e,this.to=t,this.flags=i,this.goalColumn=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(e,t=-1){let i,r;return this.empty?i=r=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),r=e.mapPos(this.to,-1)),i==this.from&&r==this.to?this:new n(i,r,this.flags,this.goalColumn)}extend(e,t=e,i=0){if(e<=this.anchor&&t>=this.anchor)return k.range(e,t,void 0,void 0,i);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return k.range(this.anchor,r,void 0,void 0,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return k.range(e.anchor,e.head)}static create(e,t,i,r){return new n(e,t,i,r)}},k=class n{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:n.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;ie.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new n(e.ranges.map(t=>mi.fromJSON(t)),e.main)}static single(e,t=e){return new n([n.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,r=0;rr.from-s.from),t=e.indexOf(i);for(let r=1;rs.head?n.range(a,l):n.range(l,a))}}return new n(e,t)}};function jh(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}var yo=0,j=class n{constructor(e,t,i,r,s){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=r,this.id=yo++,this.default=e([]),this.extensions=typeof s=="function"?s(this):s}get reader(){return this}static define(e={}){return new n(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:Qo),!!e.static,e.enables)}of(e){return new Ui([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ui(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Ui(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}};function Qo(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}var Ui=class{constructor(e,t,i,r){this.dependencies=e,this.facet=t,this.type=i,this.value=r,this.id=yo++}dynamicSlot(e){var t;let i=this.value,r=this.facet.compareInput,s=this.id,o=e[s]>>1,l=this.type==2,a=!1,h=!1,c=[];for(let f of this.dependencies)f=="doc"?a=!0:f=="selection"?h=!0:(((t=e[f.id])!==null&&t!==void 0?t:1)&1)==0&&c.push(e[f.id]);return{create(f){return f.values[o]=i(f),1},update(f,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||ao(f,c)){let O=i(f);if(l?!Xh(O,f.values[o],r):!r(O,f.values[o]))return f.values[o]=O,1}return 0},reconfigure:(f,u)=>{let O,p=u.config.address[s];if(p!=null){let g=Wr(u,p);if(this.dependencies.every(Q=>Q instanceof j?u.facet(Q)===f.facet(Q):Q instanceof Be?u.field(Q,!1)==f.field(Q,!1):!0)||(l?Xh(O=i(f),g,r):r(O=i(f),g)))return f.values[o]=g,0}else O=i(f);return f.values[o]=O,1}}}get extension(){return this}};function Xh(n,e,t){if(n.length!=e.length)return!1;for(let i=0;in[a.id]),r=t.map(a=>a.type),s=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let c=0;ci===r),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(Mr).find(i=>i.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,r)=>{let s=i.values[t],o=this.updateF(s,r);return this.compareF(s,o)?0:(i.values[t]=o,1)},reconfigure:(i,r)=>{let s=i.facet(Mr),o=r.facet(Mr),l;return(l=s.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):r.config.address[this.id]!=null?(i.values[t]=r.field(this),0):(i.values[t]=this.create(i),1)}}}init(e){return[this,Mr.of({field:this,create:e})]}get extension(){return this}},gi={lowest:4,low:3,default:2,high:1,highest:0};function jn(n){return e=>new _r(e,n)}var Ft={highest:jn(gi.highest),high:jn(gi.high),default:jn(gi.default),low:jn(gi.low),lowest:jn(gi.lowest)},_r=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Gt=class n{of(e){return new Ln(this,e)}reconfigure(e){return n.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}},Ln=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},zr=class n{constructor(e,t,i,r,s,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=r,this.staticValues=s,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,i){let r=[],s=Object.create(null),o=new Map;for(let u of ip(e,t,o))u instanceof Be?r.push(u):(s[u.facet.id]||(s[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of r)l[u.id]=h.length<<1,h.push(O=>u.slot(O));let c=i?.config.facets;for(let u in s){let O=s[u],p=O[0].facet,g=c&&c[u]||[];if(O.every(Q=>Q.type==0))if(l[p.id]=a.length<<1|1,Qo(g,O))a.push(i.facet(p));else{let Q=p.combine(O.map(x=>x.value));a.push(i&&p.compare(Q,i.facet(p))?i.facet(p):Q)}else{for(let Q of O)Q.type==0?(l[Q.id]=a.length<<1|1,a.push(Q.value)):(l[Q.id]=h.length<<1,h.push(x=>Q.dynamicSlot(x)));l[p.id]=h.length<<1,h.push(Q=>tp(Q,p,O))}}let f=h.map(u=>u(l));return new n(e,o,f,l,a,s)}};function ip(n,e,t){let i=[[],[],[],[],[]],r=new Map;function s(o,l){let a=r.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof Ln&&t.delete(o.compartment)}if(r.set(o,l),Array.isArray(o))for(let h of o)s(h,l);else if(o instanceof Ln){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),s(h,l)}else if(o instanceof _r)s(o.inner,o.prec);else if(o instanceof Be)i[l].push(o),o.provides&&s(o.provides,l);else if(o instanceof Ui)i[l].push(o),o.facet.extensions&&s(o.facet.extensions,gi.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}).`);if(h==o)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);s(h,l)}}return s(n,gi.default),i.reduce((o,l)=>o.concat(l))}function En(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let r=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|r}function Wr(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}var Eh=j.define(),ho=j.define({combine:n=>n.some(e=>e),static:!0}),Lh=j.define({combine:n=>n.length?n[0]:void 0,static:!0}),Yh=j.define(),qh=j.define(),_h=j.define(),zh=j.define({combine:n=>n.length?n[0]:!1}),Le=class{constructor(e,t){this.type=e,this.value=t}static define(){return new co}},co=class{of(e){return new Le(this,e)}},fo=class{constructor(e){this.map=e}of(e){return new le(this,e)}},le=class n{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new n(this.type,t)}is(e){return this.type==e}static define(e={}){return new fo(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let r of e){let s=r.map(t);s&&i.push(s)}return i}};le.reconfigure=le.define();le.appendConfig=le.define();var ge=class n{constructor(e,t,i,r,s,o){this.startState=e,this.changes=t,this.selection=i,this.effects=r,this.annotations=s,this.scrollIntoView=o,this._doc=null,this._state=null,i&&jh(i,t.newLength),s.some(l=>l.type==n.time)||(this.annotations=s.concat(n.time.of(Date.now())))}static create(e,t,i,r,s,o){return new n(e,t,i,r,s,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(n.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}};ge.time=Le.define();ge.userEvent=Le.define();ge.addToHistory=Le.define();ge.remote=Le.define();function np(n,e){let t=[];for(let i=0,r=0;;){let s,o;if(i=n[i]))s=n[i++],o=n[i++];else if(r=0;r--){let s=i[r](n);s instanceof ge?n=s:Array.isArray(s)&&s.length==1&&s[0]instanceof ge?n=s[0]:n=Vh(e,Ni(s),!1)}return n}function sp(n){let e=n.startState,t=e.facet(_h),i=n;for(let r=t.length-1;r>=0;r--){let s=t[r](n);s&&Object.keys(s).length&&(i=Wh(i,uo(e,s,n.changes.newLength),!0))}return i==n?n:ge.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}var op=[];function Ni(n){return n==null?op:Array.isArray(n)?n:[n]}var He=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(He||(He={})),lp=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Oo;try{Oo=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function ap(n){if(Oo)return Oo.test(n);for(let e=0;e"\x80"&&(t.toUpperCase()!=t.toLowerCase()||lp.test(t)))return!0}return!1}function hp(n){return e=>{if(!/\S/.test(e))return He.Space;if(ap(e))return He.Word;for(let t=0;t-1)return He.Word;return He.Other}}var ue=class n{constructor(e,t,i,r,s,o){this.config=e,this.doc=t,this.selection=i,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=s,o&&(o._state=this);for(let l=0;lr.set(h,a)),t=null),r.set(l.value.compartment,l.value.extension)):l.is(le.reconfigure)?(t=null,i=l.value):l.is(le.appendConfig)&&(t=null,i=Ni(i).concat(l.value));let s;t?s=e.startState.values.slice():(t=zr.resolve(i,r,this),s=new n(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(ho)?e.newSelection:e.newSelection.asSingle();new n(t,e.newDoc,o,s,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:k.cursor(t.from+e.length,-1)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),r=this.changes(i.changes),s=[i.range],o=Ni(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return n.create({doc:e.doc,selection:k.fromJSON(e.selection),extensions:t.extensions?r.concat([t.extensions]):r})}static create(e={}){let t=zr.resolve(e.extensions||[],new Map),i=e.doc instanceof U?e.doc:U.of((e.doc||"").split(t.staticFacet(n.lineSeparator)||so)),r=e.selection?e.selection instanceof k?e.selection:k.single(e.selection.anchor,e.selection.head):k.single(0);return jh(r,i.length),t.staticFacet(ho)||(r=r.asSingle()),new n(t,i,r,t.dynamicSlots.map(()=>null),(s,o)=>o.create(s),null)}get tabSize(){return this.facet(n.tabSize)}get lineBreak(){return this.facet(n.lineSeparator)||` +`}get readOnly(){return this.facet(zh)}phrase(e,...t){for(let i of this.facet(n.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(i,r)=>{if(r=="$")return"$";let s=+(r||1);return!s||s>t.length?i:t[s-1]})),e}languageDataAt(e,t,i=-1){let r=[];for(let s of this.facet(Eh))for(let o of s(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&r.push(o[e]);return r}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return hp(t.length?t[0]:"")}wordAt(e){let{text:t,from:i,length:r}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=Qe(t,o,!1);if(s(t.slice(a,o))!=He.Word)break;o=a}for(;ln.length?n[0]:4});ue.lineSeparator=Lh;ue.readOnly=zh;ue.phrases=j.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(r=>n[r]==e[r])}});ue.languageData=Eh;ue.changeFilter=Yh;ue.transactionFilter=qh;ue.transactionExtender=_h;Gt.reconfigure=le.define();function Qi(n,e,t={}){let i={};for(let r of n)for(let s of Object.keys(r)){let o=r[s],l=i[s];if(l===void 0)i[s]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,s))i[s]=t[s](l,o);else throw new Error("Config merge conflict for field "+s)}for(let r in e)i[r]===void 0&&(i[r]=e[r]);return i}var Ke=class{eq(e){return this==e}range(e,t=e){return Yn.create(e,t,this)}};Ke.prototype.startSide=Ke.prototype.endSide=0;Ke.prototype.point=!1;Ke.prototype.mapMode=ve.TrackDel;function xo(n,e){return n==e||n.constructor==e.constructor&&n.eq(e)}var Yn=class n{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new n(e,t,i)}};function po(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}var mo=class n{constructor(e,t,i,r){this.from=e,this.to=t,this.value=i,this.maxPoint=r}get length(){return Bi(this.to)}findIndex(e,t,i,r=0){let s=i?this.to:this.from;for(let o=r,l=s.length;;){if(o==l)return o;let a=o+l>>1,h=s[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,r){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,s);sQ||g==Q&&u.startSide>0&&u.endSide<=0)continue;if(!((Q-g||u.endSide-u.startSide)<0))if(h<0&&(h=g),u.point&&(c=Math.max(c,Q-g)),(g-i||u.startSide-r)>=0)o.push(u),l.push(g-h),a.push(Q-h),i=Q,r=u.endSide;else{if(g==Q)for(let x=o.length;x>0;x--){if((g-(a[x-1]+h)||u.startSide-o[x-1].endSide)>=0){o.splice(x,0,u),l.splice(x,0,g-h),a.splice(x,0,Q-h);continue e}if((g-(l[x-1]+h)||u.endSide-o[x-1].startSide)>0)break}s(g,Q,u)}}return{mapped:o.length?new n(l,a,o,c):null,pos:h}}},re=class n{constructor(e,t,i,r){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=r}static create(e,t,i,r){return new n(e,t,i,r)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:r=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(po)),this.isEmpty)return t.length?n.of(t):this;let l=new Vr(this,null,-1).goto(0),a=0,h=[],c=new Nt;for(;l.value||a=0){let f=t[a++];c.addInner(f.from,f.to,f.value,!1)||h.push(f)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||sl.to||s{s||(s=new Nt),s.addRange(a,h,c,!1)};for(let a=0;a=s&&e<=s+o.length&&o.between(s,e-s,t-s,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return qn.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return qn.from(e).goto(t)}static compare(e,t,i,r,s=-1){let o=e.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=s),l=t.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=s),a=Zh(o,l,i),h=new bi(o,a,s),c=new bi(l,a,s);i.iterGaps((f,u,O)=>Ah(h,f,c,u,O,r)),i.empty&&i.length==0&&Ah(h,0,c,0,0,r)}static eq(e,t,i=0,r){r==null&&(r=999999999);let s=e.filter(c=>!c.isEmpty&&t.indexOf(c)<0),o=t.filter(c=>!c.isEmpty&&e.indexOf(c)<0);if(s.length!=o.length)return!1;if(!s.length)return!0;let l=Zh(s,o),a=new bi(s,l,0).goto(i),h=new bi(o,l,0).goto(i);for(;;){if(a.to!=h.to||!go(a.active,h.active)||a.point&&(!h.point||!xo(a.point,h.point)))return!1;if(a.to>r)return!0;a.next(),h.next()}}static spans(e,t,i,r,s=-1){let o=new bi(e,null,s).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let c=o.activeForPoint(o.to),f=o.pointFroml&&(r.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(e,t=!1){let i=new Nt;for(let r of e instanceof Yn?[e]:t?cp(e):e)i.add(r.from,r.to,r.value);return i.finish()}static join(e){if(!e.length)return n.empty;let t=Bi(e);for(let i=e.length-2;i>=0;i--)for(let r=e[i];r!=n.empty;r=r.nextLayer)t=new n(r.chunkPos,r.chunk,t,Math.max(r.maxPoint,t.maxPoint));return t}};re.empty=new re([],[],null,-1);function Bi(n){return n[n.length-1]}function cp(n){if(n.length>1)for(let e=n[0],t=1;t0)return n.slice().sort(po);e=i}return n}re.empty.nextLayer=re.empty;var Nt=class n{finishChunk(e){this.chunks.push(new mo(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addRange(e,t,i,!0)}addRange(e,t,i,r){this.addInner(e,t,i,r)||(this.nextLayer||(this.nextLayer=new n)).addRange(e,t,i,r)}addInner(e,t,i,r){let s=e-this.lastTo||i.startSide-this.last.endSide;if(r&&s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(re.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=re.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function Zh(n,e,t){let i=new Map;for(let s of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&r.push(new Vr(o,t,i,s));return r.length==1?r[0]:new n(r)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)no(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)no(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),no(this.heap,0)}}};function no(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let r=n[i];if(i+1=0&&(r=n[i+1],i++),t.compare(r)<0)break;n[i]=t,n[e]=r,e=i}}var bi=class{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=qn.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){jr(this.active,e),jr(this.activeTo,e),jr(this.activeRank,e),this.minActive=Rh(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:r,rank:s}=this.cursor;for(;t0;)t++;Er(this.active,t,i),Er(this.activeTo,t,r),Er(this.activeRank,t,s),e&&Er(e,t,this.cursor.from),this.minActive=Rh(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),i&&jr(i,r)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let s=this.cursor.value;if(!s.point)this.addActive(i),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&i[r]=0&&!(this.activeRank[i]e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}};function Ah(n,e,t,i,r,s){n.goto(e),t.goto(i);let o=i+r,l=i,a=i-e,h=!!s.boundChange;for(let c=!1;;){let f=n.to+a-t.to,u=f||n.endSide-t.endSide,O=u<0?n.to+a:t.to,p=Math.min(O,o);if(n.point||t.point?(n.point&&t.point&&xo(n.point,t.point)&&go(n.activeForPoint(n.to),t.activeForPoint(t.to))||s.comparePoint(l,p,n.point,t.point),c=!1):(c&&(s.boundChange(l),c=!1),p>l&&!go(n.active,t.active)&&s.compareRange(l,p,n.active,t.active),h&&po)break;l=O,u<=0&&n.next(),u>=0&&t.next()}}function go(n,e){if(n.length!=e.length)return!1;for(let t=0;t=e;i--)n[i+1]=n[i];n[e]=t}function Rh(n,e){let t=-1,i=1e9;for(let r=0;r=e)return r;if(r==n.length)break;s+=n.charCodeAt(r)==9?t-s%t:1,r=Qe(n,r)}return i===!0?-1:n.length}var Bh=typeof Symbol>"u"?"__\u037C":Symbol.for("\u037C"),wo=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Ih=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{},Je=class{constructor(e,t){this.rules=[];let{finish:i}=t||{};function r(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function s(o,l,a,h){let c=[],f=/^@(\w+)\b/.exec(o[0]),u=f&&f[1]=="keyframes";if(f&&l==null)return a.push(o[0]+";");for(let O in l){let p=l[O];if(/&/.test(O))s(O.split(/,\s*/).map(g=>o.map(Q=>g.replace(/&/,Q))).reduce((g,Q)=>g.concat(Q)),p,a);else if(p&&typeof p=="object"){if(!f)throw new RangeError("The value of a property ("+O+") should be a primitive value.");s(r(O),p,c,u)}else p!=null&&c.push(O.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(c.length||u)&&a.push((i&&!f&&!h?o.map(i):o).join(", ")+" {"+c.join(" ")+"}")}for(let o in e)s(r(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=Ih[Bh]||1;return Ih[Bh]=e+1,"\u037C"+e.toString(36)}static mount(e,t,i){let r=e[wo],s=i&&i.nonce;r?s&&r.setNonce(s):r=new ko(e,s),r.mount(Array.isArray(t)?t:[t],e)}},Uh=new Map,ko=class{constructor(e,t){let i=e.ownerDocument||e,r=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){let s=Uh.get(i);if(s)return e[wo]=s;this.sheet=new r.CSSStyleSheet,Uh.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[wo]=this}mount(e,t){let i=this.sheet,r=0,s=0,o=!1;for(let l=0;l-1&&(this.modules.splice(h,1),o=!0,s--,h=-1),h==-1){if(this.modules.splice(s++,0,a),o=!0,i)for(let c=0;c",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},fp=typeof navigator<"u"&&/Mac/.test(navigator.platform),up=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(be=0;be<10;be++)jt[48+be]=jt[96+be]=String(be);var be;for(be=1;be<=24;be++)jt[be+111]="F"+be;var be;for(be=65;be<=90;be++)jt[be]=String.fromCharCode(be+32),Fi[be]=String.fromCharCode(be);var be;for(Dr in jt)Fi.hasOwnProperty(Dr)||(Fi[Dr]=jt[Dr]);var Dr;function Nh(n){var e=fp&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||up&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Fi:jt)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}var Re=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},Ao=typeof document<"u"?document:{documentElement:{style:{}}},Ro=/Edge\/(\d+)/.exec(Re.userAgent),$c=/MSIE \d/.test(Re.userAgent),Mo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Re.userAgent),Os=!!($c||Mo||Ro),Gh=!Os&&/gecko\/(\d+)/i.test(Re.userAgent),$o=!Os&&/Chrome\/(\d+)/.exec(Re.userAgent),Fh="webkitFontSmoothing"in Ao.documentElement.style,jo=!Os&&/Apple Computer/.test(Re.vendor),Hh=jo&&(/Mobile\/\w+/.test(Re.userAgent)||Re.maxTouchPoints>2),A={mac:Hh||/Mac/.test(Re.platform),windows:/Win/.test(Re.platform),linux:/Linux|X11/.test(Re.platform),ie:Os,ie_version:$c?Ao.documentMode||6:Mo?+Mo[1]:Ro?+Ro[1]:0,gecko:Gh,gecko_version:Gh?+(/Firefox\/(\d+)/.exec(Re.userAgent)||[0,0])[1]:0,chrome:!!$o,chrome_version:$o?+$o[1]:0,ios:Hh,android:/Android\b/.test(Re.userAgent),webkit:Fh,webkit_version:Fh?+(/\bAppleWebKit\/(\d+)/.exec(Re.userAgent)||[0,0])[1]:0,safari:jo,safari_version:jo?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Re.userAgent)||[0,0])[1]:0,tabSize:Ao.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function $l(n,e){for(let t in n)t=="class"&&e.class?e.class+=" "+n.class:t=="style"&&e.style?e.style+=";"+n.style:e[t]=n[t];return e}var ts=Object.create(null);function vl(n,e,t){if(n==e)return!0;n||(n=ts),e||(e=ts);let i=Object.keys(n),r=Object.keys(e);if(i.length-0!=r.length-0)return!1;for(let s of i)if(s!=t&&(r.indexOf(s)==-1||n[s]!==e[s]))return!1;return!0}function dp(n,e){for(let t=n.attributes.length-1;t>=0;t--){let i=n.attributes[t].name;e[i]==null&&n.removeAttribute(i)}for(let t in e){let i=e[t];t=="style"?n.style.cssText=i:n.getAttribute(t)!=i&&n.setAttribute(t,i)}}function Kh(n,e,t){let i=!1;if(e)for(let r in e)t&&r in t||(i=!0,r=="style"?n.style.cssText="":n.removeAttribute(r));if(t)for(let r in t)e&&e[r]==t[r]||(i=!0,r=="style"?n.style.cssText=t[r]:n.setAttribute(r,t[r]));return i}function Op(n){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new vi(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,r;if(e.isBlockGap)i=-5e8,r=4e8;else{let{start:s,end:o}=vc(e,t);i=(s?t?-3e8:-1:5e8)-1,r=(o?t?2e8:1:-6e8)+1}return new vi(e,i,r,t,e.widget||null,!0)}static line(e){return new Kn(e)}static set(e,t=!1){return re.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}};K.none=re.empty;var Hn=class n extends K{constructor(e){let{start:t,end:i}=vc(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.attrs=e.class&&e.attributes?$l(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||ts}eq(e){return this==e||e instanceof n&&this.tagName==e.tagName&&vl(this.attrs,e.attrs)}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}};Hn.prototype.point=!1;var Kn=class n extends K{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof n&&this.spec.class==e.spec.class&&vl(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}};Kn.prototype.mapMode=ve.TrackBefore;Kn.prototype.point=!0;var vi=class n extends K{constructor(e,t,i,r,s,o){super(t,i,s,e),this.block=r,this.isReplace=o,this.mapMode=r?t<=0?ve.TrackBefore:ve.TrackAfter:ve.TrackDel}get type(){return this.startSide!=this.endSide?Pe.WidgetRange:this.startSide<=0?Pe.WidgetBefore:Pe.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof n&&pp(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}};vi.prototype.point=!0;function vc(n,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=n;return t==null&&(t=n.inclusive),i==null&&(i=n.inclusive),{start:t??e,end:i??e}}function pp(n,e){return n==e||!!(n&&e&&n.compare(e))}function tn(n,e,t,i=0){let r=t.length-1;r>=0&&t[r]+i>=n?t[r]=Math.max(t[r],e):t.push(n,e)}var is=class n extends Ke{constructor(e,t,i){super(),this.tagName=e,this.attributes=t,this.rank=i}eq(e){return e==this||e instanceof n&&this.tagName==e.tagName&&vl(this.attributes,e.attributes)}static create(e){return new n(e.tagName,e.attributes||ts,e.rank==null?50:Math.max(0,Math.min(e.rank,100)))}static set(e,t=!1){return re.of(e,t)}};is.prototype.startSide=is.prototype.endSide=-1;var xe=n=>n.nodeType==1,rn=n=>n.nodeType==3;function Jn(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Eo(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function Wn(n,e){if(!e.anchorNode)return!1;try{return Eo(n,e.anchorNode)}catch{return!1}}function Vn(n){return rn(n)?tr(n,0,n.nodeValue.length).getClientRects():xe(n)?n.getClientRects():[]}function Dn(n,e,t,i){return t?Jh(n,e,t,i,-1)||Jh(n,e,t,i,1):!1}function Jt(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function ns(n){return xe(n)&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function Jh(n,e,t,i,r){for(;;){if(n==t&&e==i)return!0;if(e==(r<0?0:Yt(n))){if(n.nodeName=="DIV")return!1;let s=n.parentNode;if(!s||!xe(s))return!1;e=Jt(n)+(r<0?0:1),n=s}else if(xe(n)){if(n=n.childNodes[e+(r<0?-1:0)],xe(n)&&(n.nodeName=="IMG"||n.nodeName=="BR"||n.contentEditable=="false"))return!1;e=r<0?Yt(n):0}else return!1}}function Yt(n){return rn(n)?n.nodeValue.length:n.childNodes.length}function er(n,e){let{left:t,right:i}=n;if(t==i)return n;let r=e?t:i;return{left:r,right:r,top:n.top,bottom:n.bottom}}function mp(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function Pc(n,e){let t=e.width/n.offsetWidth,i=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-n.offsetHeight)<1)&&(i=1),{scaleX:t,scaleY:i}}function gp(n,e,t,i,r,s,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let c=n,f=!1;c&&!f;)if(xe(c)){let u,O=c==a.body,p=1,g=1,Q=!0,x=!0;if(O)u=mp(h);else{let W=getComputedStyle(c);if(/^(fixed|sticky)$/.test(W.position)&&(f=!0),(c.scrollHeight<=c.clientHeight||!/auto|scroll/.test(W.overflowY))&&(x=!1),(c.scrollWidth<=c.clientWidth||!/auto|scroll/.test(W.overflowX))&&(Q=!1),!Q&&!x){c=c.assignedSlot||c.parentNode;continue}let $=c.getBoundingClientRect();({scaleX:p,scaleY:g}=Pc(c,$)),u={left:$.left,right:$.left+c.clientWidth*p,top:$.top,bottom:$.top+c.clientHeight*g}}let P=0,v=0;if(x)if(r=="nearest")e.top0&&e.bottom>u.bottom+v&&(v=e.bottom-u.bottom+o)):e.bottom>u.bottom-o&&(v=e.bottom-u.bottom+o,t<0&&e.top-v0&&e.right>u.right+P&&(P=e.right-u.right+s)):e.right>u.right-s&&(P=e.right-u.right+s,t<0&&e.leftu.bottom||e.leftu.right)&&(e={left:Math.max(e.left,u.left),right:Math.min(e.right,u.right),top:Math.max(e.top,u.top),bottom:Math.min(e.bottom,u.bottom)}),c=c.assignedSlot||c.parentNode}else if(c.nodeType==11)c=c.host;else break}function Cc(n,e=!0){let t=n.ownerDocument,i=null,r=null;for(let s=n.parentNode;s&&!(s==t.body||(!e||i)&&r);)if(xe(s))!r&&s.scrollHeight>s.clientHeight&&/scroll|auto/.test(getComputedStyle(s).overflowY)&&(r=s),e&&!i&&s.scrollWidth>s.clientWidth&&/scroll|auto/.test(getComputedStyle(s).overflowX)&&(i=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:i,y:r}}var Lo=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?Yt(t):0),i,Math.min(e.focusOffset,i?Yt(i):0))}set(e,t,i,r){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=r}};function Tc(n){let e=[];for(let t=n;t;t=t.nodeType==11?t.host:t.parentNode)xe(t)&&e.push({node:t,left:t.scrollLeft,top:t.scrollTop});return e}function Xc(n,e=!0){for(let{node:t,left:i,top:r}of n)e&&t.scrollTop!=r&&(t.scrollTop=r),t.scrollLeft!=i&&(t.scrollLeft=i)}var wi=null;A.safari&&A.safari_version>=26&&(wi=!1);function Zc(n){if(n.setActive)return n.setActive();if(wi)return n.focus(wi);let e=Tc(n);n.focus(wi==null?{get preventScroll(){return wi={preventScroll:!0},!0}}:void 0),wi||(wi=!1,Xc(e))}var ec;function tr(n,e,t=e){let i=ec||(ec=document.createRange());return i.setEnd(n,t),i.setStart(n,e),i}function nn(n,e,t,i){let r={key:e,code:e,keyCode:t,which:t,cancelable:!0};i&&({altKey:r.altKey,ctrlKey:r.ctrlKey,shiftKey:r.shiftKey,metaKey:r.metaKey}=i);let s=new KeyboardEvent("keydown",r);s.synthetic=!0,n.dispatchEvent(s);let o=new KeyboardEvent("keyup",r);return o.synthetic=!0,n.dispatchEvent(o),s.defaultPrevented||o.defaultPrevented}function bp(n){for(;n;){if(n&&(n.nodeType==9||n.nodeType==11&&n.host))return n;n=n.assignedSlot||n.parentNode}return null}function Sp(n,e){let t=e.focusNode,i=e.focusOffset;if(!t||e.anchorNode!=t||e.anchorOffset!=i)return!1;for(i=Math.min(i,Yt(t));;)if(i){if(!xe(t))return!1;let r=t.childNodes[i-1];r.contentEditable=="false"?i--:(t=r,i=Yt(t))}else{if(t==n)return!0;i=Jt(t),t=t.parentNode}}function Ac(n){return n instanceof Window?n.pageYOffset>Math.max(0,n.document.documentElement.scrollHeight-n.innerHeight-4):n.scrollTop>Math.max(1,n.scrollHeight-n.clientHeight-4)}function Rc(n,e){for(let t=n,i=e;;){if(rn(t)&&i>0)return{node:t,offset:i};if(xe(t)&&i>0){if(t.contentEditable=="false")return null;t=t.childNodes[i-1],i=Yt(t)}else if(t.parentNode&&!ns(t))i=Jt(t),t=t.parentNode;else return null}}function Mc(n,e){for(let t=n,i=e;;){if(rn(t)&&i=t){if(l.level==i)return o;(s<0||(r!=0?r<0?l.fromt:e[s].level>l.level))&&(s=o)}}if(s<0)throw new RangeError("Index out of range");return s}};function Lc(n,e){if(n.length!=e.length)return!1;for(let t=0;t=0;g-=3)if(bt[g+1]==-O){let Q=bt[g+2],x=Q&2?r:Q&4?Q&1?s:r:0;x&&(he[f]=he[bt[g]]=x),l=g;break}}else{if(bt.length==189)break;bt[l++]=f,bt[l++]=u,bt[l++]=a}else if((p=he[f])==2||p==1){let g=p==r;a=g?0:1;for(let Q=l-3;Q>=0;Q-=3){let x=bt[Q+2];if(x&2)break;if(g)bt[Q+2]|=2;else{if(x&4)break;bt[Q+2]|=4}}}}}function $p(n,e,t,i){for(let r=0,s=i;r<=t.length;r++){let o=r?t[r-1].to:n,l=ra;)p==Q&&(p=t[--g].from,Q=g?t[g-1].to:n),he[--p]=O;a=c}else s=h,a++}}}function qo(n,e,t,i,r,s,o){let l=i%2?2:1;if(i%2==r%2)for(let a=e,h=0;aa&&o.push(new it(a,g.from,O));let Q=g.direction==sn!=!(O%2);_o(n,Q?i+1:i,r,g.inner,g.from,g.to,o),a=g.to}p=g.to}else{if(p==t||(c?he[p]!=l:he[p]==l))break;p++}u?qo(n,a,p,i+1,r,u,o):ae;){let c=!0,f=!1;if(!h||a>s[h-1].to){let g=he[a-1];g!=l&&(c=!1,f=g==16)}let u=!c&&l==1?[]:null,O=c?i:i+1,p=a;e:for(;;)if(h&&p==s[h-1].to){if(f)break e;let g=s[--h];if(!c)for(let Q=g.from,x=h;;){if(Q==e)break e;if(x&&s[x-1].to==Q)Q=s[--x].from;else{if(he[Q-1]==l)break e;break}}if(u)u.push(g);else{g.tohe.length;)he[he.length]=256;let i=[],r=e==sn?0:1;return _o(n,r,r,t,0,n.length,i),i}function Yc(n){return[new it(0,n,0)]}var qc="";function Pp(n,e,t,i,r){var s;if(!n.length)return null;let o=i.head-n.from,l;if(i.head==n.from&&i.assoc<0){if(!r)return null;o=e[l=0].side(!1,t)}else if(i.head==n.to&&i.assoc>0){if(r)return null;o=e[l=e.length-1].side(!0,t)}else l=it.find(e,o,(s=i.bidiLevel)!==null&&s!==void 0?s:-1,i.assoc);let a=e[l],h=a.side(r,t);if(o==h){let u=l+=r?1:-1;if(u<0||u>=e.length)return null;a=e[l=u],o=a.side(!r,t),h=a.side(r,t)}let c=Qe(n.text,o,a.forward(r,t));(ca.to)&&(c=h),qc=n.text.slice(Math.min(o,c),Math.max(o,c));let f=l==(r?e.length-1:0)?null:e[l+(r?1:-1)];if(c==h){if(!f)return r?k.cursor(n.to,1):k.cursor(n.from,-1);if(f.level+(r?0:1)n.some(e=>e)}),Uc=j.define({combine:n=>n.some(e=>e)}),Nc=j.define(),Bn=class n{constructor(e,t,i,r,s,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=r,this.xMargin=s,this.isSnapshot=o}map(e){return e.empty?this:new n(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new n(k.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},Br=le.define({map:(n,e)=>n.map(e)}),Gc=le.define();function nt(n,e,t){let i=n.facet(Vc);i.length?i[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}var Et=j.define({combine:n=>n.length?n[0]:!0}),Tp=0,Ki=j.define({combine(n){return n.filter((e,t)=>{for(let i=0;i{let a=[];return o&&a.push(ps.of(h=>{let c=h.plugin(l);return c?o(c):K.none})),s&&a.push(s(l)),a})}static fromClass(e,t){return n.define((i,r)=>new e(i,r),t)}},In=class{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(nt(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){nt(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){nt(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}},Fc=j.define(),Xl=j.define(),ps=j.define(),Hc=j.define(),Zl=j.define(),ir=j.define(),Kc=j.define();function tc(n,e){let t=n.state.facet(Kc);if(!t.length)return t;let i=t.map(s=>s instanceof Function?s(n):s),r=[];return re.spans(i,e.from,e.to,{point(){},span(s,o,l,a){let h=s-e.from,c=o-e.from,f=r;for(let u=l.length-1;u>=0;u--,a--){let O=l[u].spec.bidiIsolate,p;if(a>0&&f.length&&(p=f[f.length-1]).to==h&&p.direction==O)p.to=c,f=p.inner;else{let g={from:h,to:c,direction:O,inner:[]};f.push(g),f=g.inner}}}}),Jc(e.text,r)}function Jc(n,e){for(let t of e){if(t.direction==null){for(let i=t.from,r=0;i0;t--){let r=e[t-1];if(!(r.fromA>i.toA)){if(r.toAr.push(new ct(s,o,l,a))),this.changedRanges=r}static create(e,t,i){return new n(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Xp=[],de=class{constructor(e,t,i=0){this.dom=e,this.length=t,this.flags=i,this.parent=null,e.cmTile=this}get breakAfter(){return this.flags&1}get children(){return Xp}isWidget(){return!1}get isHidden(){return!1}isComposite(){return!1}isLine(){return!1}isText(){return!1}isBlock(){return!1}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let t=this.domAttrs;t&&dp(this.dom,t)}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:"")+(this.breakAfter?"#":"")}destroy(){this.parent=null}setDOM(e){this.dom=e,e.cmTile=this}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let i=t;for(let r of this.children){if(r==e)return i;i+=r.length+r.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}covers(e){return!0}coordsIn(e,t,i){return null}domPosFor(e,t){let i=Jt(this.dom),r=this.length?e>0:t>0;return new St(this.parent.dom,i+(r?1:0),e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(!1)}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof ln)return e;return null}static get(e){return e.cmTile}},on=class extends de{constructor(e){super(e,0),this._children=[]}isComposite(){return!0}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,i=null,r,s=e?.node==t?e:null,o=0;for(let l of this.children){if(l.sync(e),o+=l.length+l.breakAfter,r=i?i.nextSibling:t.firstChild,s&&r!=l.dom&&(s.written=!0),l.dom.parentNode==t)for(;r&&r!=l.dom;)r=ic(r);else t.insertBefore(l.dom,r);i=l.dom}for(r=i?i.nextSibling:t.firstChild,s&&r&&(s.written=!0);r;)r=ic(r);this.length=o}};function ic(n){let e=n.nextSibling;return n.parentNode.removeChild(n),e}var ln=class extends on{constructor(e,t){super(t),this.view=e}owns(e){for(;e;e=e.parent)if(e==this)return!0;return!1}isBlock(){return!0}nearest(e){for(;;){if(!e)return null;let t=de.get(e);if(t&&this.owns(t))return t;e=e.parentNode}}blockTiles(e){for(let t=[],i=this,r=0,s=0;;)if(r==i.children.length){if(!t.length)return;i=i.parent,i.breakAfter&&s++,r=t.pop()}else{let o=i.children[r++];if(o instanceof Lt)t.push(r),i=o,r=0;else{let l=s+o.length,a=e(o,s);if(a!==void 0)return a;s=l+o.breakAfter}}}resolveBlock(e,t){let i,r=-1,s,o=-1;if(this.blockTiles((l,a)=>{let h=a+l.length;if(e>=a&&e<=h){if(l.isWidget()&&t>=-1&&t<=1){if(l.flags&32)return!0;l.flags&16&&(i=void 0)}(ae||e==a&&(t>1?l.length:l.covers(-1)))&&(!s||!l.isWidget()&&s.isWidget())&&(s=l,o=e-a)}}),!i&&!s)throw new Error("No tile at position "+e);return i&&t<0||!s?{tile:i,offset:r}:{tile:s,offset:o}}},Lt=class n extends on{constructor(e,t){super(e),this.wrapper=t}isBlock(){return!0}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):!1}get domAttrs(){return this.wrapper.attributes}static of(e,t){let i=new n(t||document.createElement(e.tagName),e);return t||(i.flags|=4),i}},an=class n extends on{constructor(e,t){super(e),this.attrs=t}isLine(){return!0}static start(e,t,i){let r=new n(t||document.createElement("div"),e);return(!t||!i)&&(r.flags|=4),r}get domAttrs(){return this.attrs}resolveInline(e,t,i=!1){let r=null,s=-1,o=null,l=-1;function a(c,f){for(let u=0,O=0;u=f&&(p.isComposite()?a(p,f-O):(!o||i&&o.isHidden&&(t>0&&!(o.flags&32)||i&&Ap(o,p)))&&(g>f||p.flags&32&&t<=1)?(o=p,l=f-O):(O=-1)&&(r=p,s=f-O)),O=g}}a(this,e);let h=(t<0?r:o)||r||o;return h?{tile:h,offset:h==r?s:l}:null}coordsIn(e,t,i){let r=this.resolveInline(e,t,!0);return r?r.tile.coordsIn(Math.max(0,r.offset),t,i):Zp(this)}domIn(e,t){let i=this.resolveInline(e,t);if(i){let{tile:r,offset:s}=i;if(this.dom.contains(r.dom))return r.isText()?new St(r.dom,Math.min(r.dom.nodeValue.length,s)):r.domPosFor(s,r.flags&16?1:r.flags&32?-1:t);let o=i.tile.parent,l=!1;for(let a of o.children){if(l)return new St(a.dom,0);a==i.tile&&(l=!0)}}return new St(this.dom,0)}};function Zp(n){let e=n.dom.lastChild;if(!e)return n.dom.getBoundingClientRect();let t=Vn(e);return t[t.length-1]||null}function Ap(n,e){let t=n.coordsIn(0,1),i=e.coordsIn(0,1);return t&&i&&i.topr&&(e=r);let s=e,o=e,l=0;e==0&&t<0||e==r&&t>=0?A.chrome||A.gecko||(e?(s--,l=1):o=0)?0:a.length-1];return A.safari&&!l&&h.width==0&&(h=Array.prototype.find.call(a,c=>c.width)||h),i==null?h:er(h,(l?l>0:t<0)==i)}static of(e,t){let i=new n(t||document.createTextNode(e),e);return t||(i.flags|=2),i}},Pi=class n extends de{constructor(e,t,i,r){super(e,t,r),this.widget=i}isWidget(){return!0}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?!1:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,!1)}coordsInWidget(e,t,i){let r=this.widget.coordsAt(this.dom,e,t);if(r)return r;if(i)return er(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let s=this.dom.getClientRects(),o=null;if(!s.length)return null;let l=this.flags&16?!0:this.flags&32?!1:e>0;for(let a=l?s.length-1:0;o=s[a],!(e>0?a==0:a==s.length-1||o.top0==i)}},Wo=class{constructor(e){this.index=0,this.beforeBreak=!1,this.parents=[],this.tile=e}advance(e,t,i){let{tile:r,index:s,beforeBreak:o,parents:l}=this;for(;e||t>0;)if(r.isComposite())if(o){if(!e)break;i&&i.break(),e--,o=!1}else if(s==r.children.length){if(!e&&!l.length)break;i&&i.leave(r),o=!!r.breakAfter,{tile:r,index:s}=l.pop(),s++}else{let a=r.children[s],h=a.breakAfter;(t>0?a.length<=e:a.length=0;l--){let a=t.marks[l],h=r.lastChild;if(h instanceof Ye&&h.mark.eq(a.mark))h.dom!=a.dom&&h.setDOM(vo(a.dom)),r=h;else{let{dom:c}=a;this.cache.reused.get(a)&&de.get(a.dom)&&(c=vo(a.dom));let f=Ye.of(a.mark,c);r.append(f),r=f}this.cache.reused.set(a,2)}let s=de.get(e.text);s&&this.cache.reused.set(s,2);let o=new ki(e.text,e.text.nodeValue);o.flags|=8,this.pos=e.range.toB,r.append(o)}addInlineWidget(e,t,i){let r=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);r||this.flushBuffer();let s=this.ensureMarks(t,i);!r&&!(e.flags&16)&&s.append(this.getBuffer(1)),s.append(e),this.pos+=e.length,this.afterWidget=e}addMark(e,t,i){this.flushBuffer(),this.ensureMarks(t,i).append(e),this.pos+=e.length,this.afterWidget=null}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e}addLineStart(e,t){var i;e||(e=nf);let r=an.start(e,t||((i=this.cache.find(an))===null||i===void 0?void 0:i.dom),!!t);this.getBlockPos().append(this.lastBlock=this.curLine=r)}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine()}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e)}ensureLine(e){this.curLine||this.addLineStart(e)}ensureMarks(e,t){var i;let r=this.curLine;for(let s=e.length-1;s>=0;s--){let o=e[s],l;if(t>0&&(l=r.lastChild)&&l instanceof Ye&&l.mark.eq(o))r=l,t--;else{let a=Ye.of(o,(i=this.cache.find(Ye,h=>h.mark.eq(o)))===null||i===void 0?void 0:i.dom);r.append(a),r=a,t=0}}return r}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!nc(this.curLine,!1)||e.dom.nodeName!="BR"&&e.isWidget()&&!(A.ios&&nc(this.curLine,!0)))&&this.curLine.append(this.cache.findWidget(Po,0,32)||new Pi(Po.toDOM(),0,Po,32)),this.curLine=this.afterWidget=null}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=e.rank*102+e.value.rank,i=new Vo(e.from,e.to,e.value,t),r=this.wrappers.length;for(;r>0&&(this.wrappers[r-1].rank-i.rank||this.wrappers[r-1].to-i.to)<0;)r--;this.wrappers.splice(r,0,i)}this.wrapperPos=this.pos}getBlockPos(){var e;this.updateBlockWrappers();let t=this.root;for(let i of this.wrappers){let r=t.lastChild;if(i.fromo.wrapper.eq(i.wrapper)))===null||e===void 0?void 0:e.dom);t.append(s),t=s}}return t}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),i=this.cache.find(hn,void 0,1);return i&&(i.flags=t),i||new hn(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null)}},Bo=class{constructor(e){this.skipCount=0,this.text="",this.textOff=0,this.cursor=e.iter()}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text="",this.textOff=0)}next(e){if(this.textOff==this.text.length){let{value:r,lineBreak:s,done:o}=this.cursor.next(this.skipCount);if(this.skipCount=0,o)throw new Error("Ran out of text content when drawing inline views");this.text=r;let l=this.textOff=Math.min(e,r.length);return s?null:r.slice(0,l)}let t=Math.min(this.text.length,this.textOff+e),i=this.text.slice(this.textOff,t);return this.textOff=t,i}},ss=[Pi,an,ki,Ye,hn,Lt,ln];for(let n=0;n[]),this.index=ss.map(()=>0),this.reused=new Map}add(e){let t=e.constructor.bucket,i=this.buckets[t];i.length<6?i.push(e):i[this.index[t]=(this.index[t]+1)%6]=e}find(e,t,i=2){let r=e.bucket,s=this.buckets[r],o=this.index[r];for(let l=0;l{if(this.cache.add(o),o.isComposite())return!1},enter:o=>this.cache.add(o),leave:()=>{},break:()=>{}}}run(e,t){let i=t&&this.getCompositionContext(t.text);for(let r=0,s=0,o=0;;){let l=or){let h=a-r;this.preserve(h,!o,!l),r=a,s+=h}if(!l)break;t&&l.fromA<=t.range.fromA&&l.toA>=t.range.toA?(this.forward(l.fromA,t.range.fromA,t.range.fromA{if(o.isWidget())if(this.openWidget)this.builder.continueWidget(a-l);else{let h=a>0||l{o.isLine()?this.builder.addLineStart(o.attrs,this.cache.maybeReuse(o)):(this.cache.add(o),o instanceof Ye&&r.unshift(o.mark)),this.openWidget=!1},leave:o=>{o.isLine()?r.length&&(r.length=s=0):o instanceof Ye&&(r.shift(),s=Math.min(s,r.length))},break:()=>{this.builder.addBreak(),this.openWidget=!1}}),this.text.skip(e)}emit(e,t){let i=null,r=this.builder,s=-1,o=re.spans(this.decorations,e,t,{point:(l,a,h,c,f,u)=>{if(h instanceof vi){if(this.disallowBlockEffectsFor[u]){if(h.block)throw new RangeError("Block decorations may not be specified via plugins");if(a>this.view.state.doc.lineAt(l).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}if(s=c.length,f>c.length)r.continueWidget(a-l);else{let O=h.widget||(h.block?ei.block:ei.inline),p=Rp(h),g=this.cache.findWidget(O,a-l,p)||Pi.of(O,this.view,a-l,p);h.block?(h.startSide>0&&r.addLineStartIfNotCovered(i),r.addBlockWidget(g)):(r.ensureLine(i),r.addInlineWidget(g,c,f))}i=null}else i=Mp(i,h);a>l&&this.text.skip(a-l)},span:(l,a,h,c)=>{for(let f=l;f-1&&(this.openWidget=o>s),this.openWidget||r.addLineStartIfNotCovered(i),this.openMarks=o}forward(e,t,i=1){t-e<=10?this.old.advance(t-e,i,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,i,this.reuseWalker))}getCompositionContext(e){let t=[],i=null;for(let r=e.parentNode;;r=r.parentNode){let s=de.get(r);if(r==this.view.contentDOM)break;s instanceof Ye?t.push(s):s?.isLine()?i=s:s instanceof Lt||(r.nodeName=="DIV"&&!i?i=new an(r,nf):i||t.push(Ye.of(new Hn({tagName:r.nodeName.toLowerCase(),attributes:Op(r)}),r)))}return i?{line:i,marks:t}:null}};function nc(n,e){let t=i=>{for(let r of i.children)if((e?r.isText():r.length)||t(r))return!0;return!1};return t(n)}function Rp(n){let e=n.isReplace?(n.startSide<0?64:0)|(n.endSide>0?128:0):n.startSide>0?32:16;return n.block&&(e|=256),e}var nf={class:"cm-line"};function Mp(n,e){let t=e.spec.attributes,i=e.spec.class;return!t&&!i||(n||(n={class:"cm-line"}),t&&$l(t,n),i&&(n.class+=" "+i)),n}function jp(n){let e=[];for(let t=n.parents.length;t>1;t--){let i=t==n.parents.length?n.tile:n.parents[t].tile;i instanceof Ye&&e.push(i.mark)}return e}function vo(n){let e=de.get(n);return e&&e.setDOM(n.cloneNode()),n}var ei=class extends yt{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}};ei.inline=new ei("span");ei.block=new ei("div");var Po=new class extends yt{toDOM(){return document.createElement("br")}get isHidden(){return!0}get editable(){return!0}},os=class{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=K.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new ln(e,e.contentDOM),this.updateInner([new ct(0,0,0,e.state.doc.length)],null)}update(e){var t;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:c,toA:f})=>fthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let r=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?r=this.domChanged.newSel.head:!Vp(e.changes,this.hasComposition)&&!e.selectionSet&&(r=e.state.selection.main.head));let s=r>-1?Lp(this.view,e.changes,r):null;if(this.domChanged=null,this.hasComposition){let{from:c,to:f}=this.hasComposition;i=new ct(c,f,e.changes.mapPos(c,-1),e.changes.mapPos(f,1)).addToSet(i.slice())}this.hasComposition=s?{from:s.range.fromB,to:s.range.toB}:null,(A.ie||A.chrome)&&!s&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.blockWrappers;this.updateDeco();let a=_p(o,this.decorations,e.changes);a.length&&(i=ct.extendWithRanges(i,a));let h=zp(l,this.blockWrappers,e.changes);return h.length&&(i=ct.extendWithRanges(i,h)),s&&!i.some(c=>c.fromA<=s.range.fromA&&c.toA>=s.range.toA)&&(i=s.range.addToSet(i.slice())),this.tile.flags&2&&i.length==0?!1:(this.updateInner(i,s),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t){this.view.viewState.mustMeasureContent=!0;let{observer:i}=this.view;i.ignore(()=>{if(t||e.length){let o=this.tile,l=new Uo(this.view,o,this.blockWrappers,this.decorations,this.dynamicDecorationMap);t&&de.get(t.text)&&l.cache.reused.set(de.get(t.text),2),this.tile=l.run(e,t),No(o,l.cache.reused)}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let s=A.chrome||A.ios?{node:i.selectionRange.focusNode,written:!1}:void 0;this.tile.sync(s),s&&(s.written||i.selectionRange.focusNode!=s.node||!this.tile.dom.contains(s.node))&&(this.forceSelection=!0),this.tile.dom.style.height=""});let r=[];if(this.view.viewport.from||this.view.viewport.to-1)&&Wn(i,this.view.observer.selectionRange)&&!(r&&i.contains(r));if(!(s||t||o))return;let l=this.forceSelection;this.forceSelection=!1;let a=this.view.state.selection.main,h,c;if(a.empty?c=h=this.inlineDOMNearPos(a.anchor,a.assoc||1):(c=this.inlineDOMNearPos(a.head,a.head==a.from?1:-1),h=this.inlineDOMNearPos(a.anchor,a.anchor==a.from?1:-1)),A.gecko&&a.empty&&!this.hasComposition&&Ep(h)){let u=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(u,h.node.childNodes[h.offset]||null)),h=c=new St(u,0),l=!0}let f=this.view.observer.selectionRange;(l||!f.focusNode||(!Dn(h.node,h.offset,f.anchorNode,f.anchorOffset)||!Dn(c.node,c.offset,f.focusNode,f.focusOffset))&&!this.suppressWidgetCursorChange(f,a))&&(this.view.observer.ignore(()=>{A.android&&A.chrome&&i.contains(f.focusNode)&&Wp(f.focusNode,i)&&(i.blur(),i.focus({preventScroll:!0}));let u=Jn(this.view.root);if(u)if(a.empty){if(A.gecko){let O=Yp(h.node,h.offset);if(O&&O!=3){let p=(O==1?Rc:Mc)(h.node,h.offset);p&&(h=new St(p.node,p.offset))}}u.collapse(h.node,h.offset),a.bidiLevel!=null&&u.caretBidiLevel!==void 0&&(u.caretBidiLevel=a.bidiLevel)}else if(u.extend){u.collapse(h.node,h.offset);try{u.extend(c.node,c.offset)}catch{}}else{let O=document.createRange();a.anchor>a.head&&([h,c]=[c,h]),O.setEnd(c.node,c.offset),O.setStart(h.node,h.offset),u.removeAllRanges(),u.addRange(O)}o&&this.view.root.activeElement==i&&(i.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(h,c)),this.impreciseAnchor=h.precise?null:new St(f.anchorNode,f.anchorOffset),this.impreciseHead=c.precise?null:new St(f.focusNode,f.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&Dn(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,i=Jn(e.root),{anchorNode:r,anchorOffset:s}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=this.lineAt(t.head,t.assoc);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let c=this.domAtPos(t.head+t.assoc,t.assoc);i.collapse(c.node,c.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let f=e.observer.selectionRange;e.docView.posFromDOM(f.anchorNode,f.anchorOffset)!=t.from&&i.collapse(r,s)}posFromDOM(e,t){let i=this.tile.nearest(e);if(!i)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let r=i.posAtStart;if(i.isComposite()){let s;if(e==i.dom)s=i.dom.childNodes[t];else{let o=Yt(e)==0?0:t==0?-1:1;for(;;){let l=e.parentNode;if(l==i.dom)break;o==0&&l.firstChild!=l.lastChild&&(e==l.firstChild?o=-1:o=1),e=l}o<0?s=e:s=e.nextSibling}if(s==i.dom.firstChild)return r;for(;s&&!de.get(s);)s=s.nextSibling;if(!s)return r+i.length;for(let o=0,l=r;;o++){let a=i.children[o];if(a.dom==s)return l;l+=a.length+a.breakAfter}}else return i.isText()?e==i.dom?r+t:r+(t?i.length:0):r}domAtPos(e,t){let{tile:i,offset:r}=this.tile.resolveBlock(e,t);return i.isWidget()?i.domPosFor(r,t):i.domIn(r,t)}inlineDOMNearPos(e,t){let i,r=-1,s=!1,o,l=-1,a=!1;return this.tile.blockTiles((h,c)=>{if(h.isWidget()){if(h.flags&32&&c>=e)return!0;h.flags&16&&(s=!0)}else{let f=c+h.length;if(c<=e&&(i=h,r=e-c,s=f=e&&!o&&(o=h,l=e-c,a=c>e),c>e&&o)return!0}}),!i&&!o?this.domAtPos(e,t):(s&&o?i=null:a&&i&&(o=null),i&&t<0||!o?i.domIn(r,t):o.domIn(l,t))}coordsAt(e,t,i){let{tile:r,offset:s}=this.tile.resolveBlock(e,t);return r.isWidget()?r.widget instanceof Un?null:r.coordsInWidget(s,t,!0):r.coordsIn(s,t,i)}lineAt(e,t){let{tile:i}=this.tile.resolveBlock(e,t);return i.isLine()?i:null}coordsForChar(e){let{tile:t,offset:i}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function r(s,o){if(s.isComposite())for(let l of s.children){if(l.length>=o){let a=r(l,o);if(a)return a}if(o-=l.length,o<0)break}else if(s.isText()&&oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==ae.LTR,h=0,c=(f,u,O)=>{for(let p=0;pr);p++){let g=f.children[p],Q=u+g.length,x=g.dom.getBoundingClientRect(),{height:P}=x;if(O&&!p&&(h+=x.top-O.top),g instanceof Lt)Q>i&&c(g,u,x);else if(u>=i&&(h>0&&t.push(-h),t.push(P+h),h=0,o)){let v=g.dom.lastChild,W=v?Vn(v):[];if(W.length){let $=W[W.length-1],Z=a?$.right-x.left:x.right-$.left;Z>l&&(l=Z,this.minWidth=s,this.minWidthFrom=u,this.minWidthTo=Q)}}O&&p==f.children.length-1&&(h+=O.bottom-x.bottom),u=Q+g.breakAfter}};return c(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction=="rtl"?ae.RTL:ae.LTR}measureTextSize(){let e=this.tile.blockTiles(o=>{if(o.isLine()&&o.children.length&&o.length<=20){let l=0,a;for(let h of o.children){if(!h.isText()||/[^ -~]/.test(h.text))return;let c=Vn(h.dom);if(c.length!=1)return;l+=c[0].width,a=c[0].height}if(l)return{lineHeight:o.dom.getBoundingClientRect().height,charWidth:l/o.length,textHeight:a}}});if(e)return e;let t=document.createElement("div"),i,r,s;return t.className="cm-line",t.style.width="99999px",t.style.position="absolute",t.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let o=Vn(t.firstChild)[0];i=t.getBoundingClientRect().height,r=o&&o.width?o.width/27:7,s=o&&o.height?o.height:i,t.remove()}),{lineHeight:i,charWidth:r,textHeight:s}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,r=0;;r++){let s=r==t.viewports.length?null:t.viewports[r],o=s?s.from-1:this.view.state.doc.length;if(o>i){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(i).top)/this.view.scaleY;e.push(K.replace({widget:new Un(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!s)break;i=s.to+1}return K.set(e)}updateDeco(){let e=1,t=this.view.state.facet(ps).map(s=>(this.dynamicDecorationMap[e++]=typeof s=="function")?s(this.view):s),i=!1,r=this.view.state.facet(Zl).map((s,o)=>{let l=typeof s=="function";return l&&(i=!0),l?s(this.view):s});for(r.length&&(this.dynamicDecorationMap[e++]=i,t.push(re.join(r))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];etypeof s=="function"?s(this.view):s)}scrollIntoView(e){if(e.isSnapshot){let h=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=h.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let h of this.view.state.facet(Nc))try{if(h(this.view,e.range,e))return!0}catch(c){nt(this.view.state,c,"scroll handler")}let{range:t}=e,i=this.coordsAt(t.head,t.assoc||(t.head>t.anchor?-1:1)),r;if(!i)return;!t.empty&&(r=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(i={left:Math.min(i.left,r.left),top:Math.min(i.top,r.top),right:Math.max(i.right,r.right),bottom:Math.max(i.bottom,r.bottom)});let s=tf(this.view),o={left:i.left-s.left,top:i.top-s.top,right:i.right+s.right,bottom:i.bottom+s.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;if(gp(this.view.scrollDOM,o,t.head1&&(i.top>window.visualViewport.offsetTop+window.visualViewport.height||i.bottomi.isWidget()||i.children.some(t);return t(this.tile.resolveBlock(e,1).tile)}destroy(){No(this.tile)}};function No(n,e){let t=e?.get(n);if(t!=1){t==null&&n.destroy();for(let i of n.children)No(i,e)}}function Ep(n){return xe(n.node)&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function rf(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let i=Rc(t.focusNode,t.focusOffset),r=Mc(t.focusNode,t.focusOffset),s=i||r;if(r&&i&&r.node!=i.node){let l=de.get(r.node);if(!l||l.isText()&&l.text!=r.node.nodeValue)s=r;else if(n.docView.lastCompositionAfterCursor){let a=de.get(i.node);!a||a.isText()&&a.text!=i.node.nodeValue||(s=r)}}if(n.docView.lastCompositionAfterCursor=s!=i,!s)return null;let o=e-s.offset;return{from:o,to:o+s.node.nodeValue.length,node:s.node}}function Lp(n,e,t){let i=rf(n,t);if(!i)return null;let{node:r,from:s,to:o}=i,l=r.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=e.invertedDesc;return{range:new ct(a.mapPos(s),a.mapPos(o),s,o),text:r}}function Yp(n,e){return xe(n)?(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e{ie.from&&(t=!0)}),t}var Un=class extends yt{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}};function Dp(n,e,t=1){let i=n.charCategorizer(e),r=n.doc.lineAt(e),s=e-r.from;if(r.length==0)return k.cursor(e);s==0?t=1:s==r.length&&(t=-1);let o=s,l=s;t<0?o=Qe(r.text,s,!1):l=Qe(r.text,s);let a=i(r.text.slice(o,l));for(;o>0;){let h=Qe(r.text,o,!1);if(i(r.text.slice(h,o))!=a)break;o=h}for(;ln.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((r-t.top-(n.defaultLineHeight-l)*.5)/l);s+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+Dh(o,s,n.state.tabSize)}function Fo(n,e,t){let i=n.lineBlockAt(e);if(Array.isArray(i.type)){let r;for(let s of i.type){if(s.from>e)break;if(!(s.toe)return s;(!r||s.type==Pe.Text&&(r.type!=s.type||(t<0?s.frome)))&&(r=s)}}return r||i}return i}function Ip(n,e,t,i){let r=Fo(n,e.head,e.assoc||-1),s=!i||r.type!=Pe.Text||!(n.lineWrapping||r.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>r.from?e.head-1:e.head);if(s){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(r.from),a=n.posAndSideAtCoords({x:t==(l==ae.LTR)?o.right-1:o.left+1,y:(s.top+s.bottom)/2});if(a)return k.cursor(a.pos,a.assoc)}return k.cursor(t?r.to:r.from,t?1:-1)}function rc(n,e,t,i){let r=n.state.doc.lineAt(e.head),s=n.bidiSpans(r),o=n.textDirectionAt(r.from);for(let l=e,a=null;;){let h=Pp(r,s,o,l,t),c=qc;if(!h){if(r.number==(t?n.state.doc.lines:1))return l;c=` +`,r=n.state.doc.line(r.number+(t?1:-1)),s=n.bidiSpans(r),h=t?k.cursor(r.from,-1):k.cursor(r.to,1)}if(a){if(!a(c))return l}else{if(!i)return h;a=i(c)}l=h}}function Up(n,e,t){let i=n.state.charCategorizer(e),r=i(t);return s=>{let o=i(s);return r==He.Space&&(r=o),r==o}}function Np(n,e,t,i){let r=e.head,s=t?1:-1;if(r==(t?n.state.doc.length:0))return k.cursor(r,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(r,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),c=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=s<0?h.top:h.bottom;else{let p=n.viewState.lineBlockAt(r);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(r-p.from))),l=(s<0?p.top:p.bottom)+c}let f=a.left+o,u=n.viewState.heightOracle.textHeight>>1,O=i??u;for(let p=0;;p+=u){let g=l+(O+p)*s,Q=Ho(n,{x:f,y:g},!1,s);if(t?g>a.bottom:gl:P{if(e>s&&er(n)),t.from,e.head>t.from?-1:1);return i==t.from?t:k.cursor(i,in.viewState.docHeight)return new tt(n.state.doc.length,-1);if(h=n.elementAtHeight(a),i==null)break;if(h.type==Pe.Text){if(i<0?h.ton.viewport.to)break;let u=n.docView.coordsAt(i<0?h.from:h.to,i>0?-1:1);if(u&&(i<0?u.top<=a+s:u.bottom>=a+s))break}let f=n.viewState.heightOracle.textHeight/2;a=i>0?h.bottom+f:h.top-f}if(n.viewport.from>=h.to||n.viewport.to<=h.from){if(t)return null;if(h.type==Pe.Text){let f=Bp(n,r,h,o,l);return new tt(f,f==h.from?1:-1)}}if(h.type!=Pe.Text)return a<(h.top+h.bottom)/2?new tt(h.from,1):new tt(h.to,-1);let c=n.docView.lineAt(h.from,2);return(!c||c.length!=h.length)&&(c=n.docView.lineAt(h.from,-2)),new Ko(n,o,l,n.textDirectionAt(h.from)).scanTile(c,h.from)}var Ko=class{constructor(e,t,i,r){this.view=e,this.x=t,this.y=i,this.baseDir=r,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to1||i.length&&(i[0].level!=this.baseDir||i[0].to+r.from>1;t:if(o.has(g)){for(let P=1;P=s&&(v-=p),!o.has(v)){g=v;break t}}break e}o.add(g);let Q=t(g),x=0;if(Q)for(let P=0;P1))if(v.bottomthis.y)(!h||h.top>v.top)&&(h=v),x=-1;else{let W=v.left>this.x?this.x-v.left:v.right(p+p+g)/3)return this.y=a.bottom-1,this.scan(e,t,!0);if(h&&h.top<(p+g+g)/3)return this.y=h.top+1,this.scan(e,t,!0)}let O=(l?this.dirAt(e[c],1):this.baseDir)==ae.LTR;return{i:c,after:this.x>(u.left+u.right)/2==O}}scanText(e,t){let i=[];for(let s=0;s{let o=i[s]-t,l=i[s+1]-t;return tr(e.dom,o,l).getClientRects()});return r.after?new tt(i[r.i+1],-1):new tt(i[r.i],1)}scanTile(e,t){if(!e.length)return new tt(t,1);if(e.children.length==1){let l=e.children[0];if(l.isText())return this.scanText(l,t);if(l.isComposite())return this.scanTile(l,t)}let i=[t];for(let l=0,a=t;l{let a=e.children[l];return a.flags&48?null:(xe(a.dom)?a.dom:tr(a.dom,0,a.length)).getClientRects()}),s=e.children[r.i],o=i[r.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):r.after?new tt(i[r.i+1],-1):new tt(o,1)}},Hi="\uFFFF",Jo=class{constructor(e,t){this.points=e,this.view=t,this.text="",this.lineSeparator=t.state.facet(ue.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Hi}readRange(e,t){if(!e)return this;let i=e.parentNode;for(let r=e;;){this.findPointBefore(i,r);let s=this.text.length;this.readNode(r);let o=de.get(r),l=r.nextSibling;if(l==t){o?.breakAfter&&!l&&i!=this.view.contentDOM&&this.lineBreak();break}let a=de.get(l);(o&&a?o.breakAfter:(o?o.breakAfter:ns(r))||ns(l)&&(r.nodeName!="BR"||o?.isWidget())&&this.text.length>s)&&!Fp(l,t)&&this.lineBreak(),r=l}return this.findPointBefore(i,t),this}readTextNode(e){let t=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,t.length));for(let i=0,r=this.lineSeparator?null:/\r\n?|\n/g;;){let s=-1,o=1,l;if(this.lineSeparator?(s=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=r.exec(t))&&(s=l.index,o=l[0].length),this.append(t.slice(i,s<0?t.length:s)),s<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=s+o}}readNode(e){let t=de.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let r=i.iter();!r.next().done;)r.lineBreak?this.lineBreak():this.append(r.value)}else rn(e)?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():xe(e)&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(rn(e)?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(Gp(e,i.node,i.offset)?t:0))}};function Gp(n,e,t){for(;;){if(!e||t-1;let{impreciseHead:s,impreciseAnchor:o}=e.docView,l=e.state.selection;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=of(e.docView.tile,t,i,0))){let a=s||o?[]:Kp(e),h=new Jo(a,e);h.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=h.text,this.newSel=Jp(a,this.bounds.from)}else{let a=e.observer.selectionRange,h=s&&s.node==a.focusNode&&s.offset==a.focusOffset||!Eo(e.contentDOM,a.focusNode)?l.main.head:e.docView.posFromDOM(a.focusNode,a.focusOffset),c=o&&o.node==a.anchorNode&&o.offset==a.anchorOffset||!Eo(e.contentDOM,a.anchorNode)?l.main.anchor:e.docView.posFromDOM(a.anchorNode,a.anchorOffset),f=e.viewport;if((A.ios||A.chrome)&&h!=c&&Math.min(h,c)<=l.main.from&&Math.max(h,c)>=l.main.to&&(f.from>0||f.to-1&&l.ranges.length>1)this.newSel=l.replaceRange(k.range(c,h));else if(e.lineWrapping&&c==h&&!(l.main.empty&&l.main.head==h)&&e.inputState.lastTouchTime>Date.now()-100){let u=e.coordsAtPos(h,-1),O=0;u&&(O=e.inputState.lastTouchY<=u.bottom?-1:1),this.newSel=k.create([k.cursor(h,O)])}else this.newSel=k.single(c,h)}}};function of(n,e,t,i){if(n.isComposite()){let r=-1,s=-1,o=-1,l=-1;for(let a=0,h=i,c=i;at)return of(f,e,t,h);if(u>=e&&r==-1&&(r=a,s=h),h>t&&f.dom.parentNode==n.dom){o=a,l=c;break}c=u,h=u+f.breakAfter}return{from:s,to:l<0?i+n.length:l,startDOM:(r?n.children[r-1].dom.nextSibling:null)||n.dom.firstChild,endDOM:o=0?n.children[o].dom:null}}else return n.isText()?{from:i,to:i+n.length,startDOM:n.dom,endDOM:n.dom.nextSibling}:null}function lf(n,e){let t,{newSel:i}=e,{state:r}=n,s=r.selection.main,o=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:l,to:a}=e.bounds,h=s.from,c=null;(o===8||A.android&&e.text.length=l&&s.to<=a&&(e.typeOver||f!=e.text)&&f.slice(0,s.from-l)==e.text.slice(0,s.from-l)&&f.slice(s.to-l)==e.text.slice(u=e.text.length-(f.length-(s.to-l)))?t={from:s.from,to:s.to,insert:U.of(e.text.slice(s.from-l,u).split(Hi))}:(O=af(f,e.text,h-l,c))&&(A.chrome&&o==13&&O.toB==O.from+2&&e.text.slice(O.from,O.toB)==Hi+Hi&&O.toB--,t={from:l+O.from,to:l+O.toA,insert:U.of(e.text.slice(O.from,O.toB).split(Hi))})}else i&&(!n.hasFocus&&r.facet(Et)||tl(i,s))&&(i=null);if(!t&&!i)return!1;if((A.mac||A.android)&&t&&t.from==t.to&&t.from==s.head-1&&/^\. ?$/.test(t.insert.toString())&&n.contentDOM.getAttribute("autocorrect")=="off"?(i&&t.insert.length==2&&(i=k.single(i.main.anchor-1,i.main.head-1)),t={from:t.from,to:t.to,insert:U.of([t.insert.toString().replace("."," ")])}):r.doc.lineAt(s.from).toDate.now()-50?t={from:s.from,to:s.to,insert:r.toText(n.inputState.insertingText)}:A.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=k.single(i.main.anchor-1,i.main.head-1)),t={from:s.from,to:s.to,insert:U.of([" "])}),t)return Al(n,t,i,o);if(i&&!tl(i,s)){let l=!1,a="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(l=!0),a=n.inputState.lastSelectionOrigin,a=="select.pointer"&&(i=sf(r.facet(ir).map(h=>h(n)),i))),n.dispatch({selection:i,scrollIntoView:l,userEvent:a}),!0}else return!1}function Al(n,e,t,i=-1){if(A.ios&&n.inputState.flushIOSKey(e))return!0;let r=n.state.selection.main;if(A.android&&(e.to==r.to&&(e.from==r.from||e.from==r.from-1&&n.state.sliceDoc(e.from,r.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&nn(n.contentDOM,"Enter",13)||(e.from==r.from-1&&e.to==r.to&&e.insert.length==0||i==8&&e.insert.lengthr.head)&&nn(n.contentDOM,"Backspace",8)||e.from==r.from&&e.to==r.to+1&&e.insert.length==0&&nn(n.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Hp(n,e,t));return n.state.facet(Dc).some(a=>a(n,e.from,e.to,s,l))||n.dispatch(l()),!0}function Hp(n,e,t){let i,r=n.state,s=r.selection.main,o=-1;if(e.from==e.to&&e.froms.to){let a=e.fromf(n)),h,a);e.from==c&&(o=c)}if(o>-1)i={changes:e,selection:k.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let a=s.frome.to?r.sliceDoc(e.to,s.to):"";i=r.replaceSelection(n.state.toText(a+e.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=r.changes(e),h=t&&t.main.to<=a.newLength?t.main:void 0;if(r.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let c=n.state.sliceDoc(e.from,e.to),f,u=t&&rf(n,t.main.head);if(u){let p=e.insert.length-(e.to-e.from);f={from:u.from,to:u.to-p}}else f=n.state.doc.lineAt(s.head);let O=s.to-e.to;i=r.changeByRange(p=>{if(p.from==s.from&&p.to==s.to)return{changes:a,range:h||p.map(a)};let g=p.to-O,Q=g-c.length;if(n.state.sliceDoc(Q,g)!=c||g>=f.from&&Q<=f.to)return{range:p};let x=r.changes({from:Q,to:g,insert:e.insert}),P=p.to-s.to;return{changes:x,range:h?k.range(Math.max(0,h.anchor+P),Math.max(0,h.head+P)):p.map(x)}})}else i={changes:a,selection:h&&r.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),r.update(i,{userEvent:l,scrollIntoView:!0})}function af(n,e,t,i){let r=Math.min(n.length,e.length),s=0;for(;s0&&l>0&&n.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,s-Math.min(o,l));t-=o+a-s}if(o=o?s-t:0;s-=a,l=s+(l-o),o=s}else if(l=l?s-t:0;s-=a,o=s+(o-l),l=s}return{from:s,toA:o,toB:l}}function Kp(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:r,focusOffset:s}=n.observer.selectionRange;return t&&(e.push(new ls(t,i)),(r!=t||s!=i)&&e.push(new ls(r,s))),e}function Jp(n,e){if(n.length==0)return null;let t=n[0].pos,i=n.length==2?n[1].pos:t;return t<0||i<0?null:t==i?k.create([k.cursor(i+e,-1)]):k.single(t+e,i+e)}function tl(n,e){return e.head==n.main.head&&e.anchor==n.main.anchor}var il=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,A.safari&&e.contentDOM.addEventListener("input",()=>null),A.gecko&&Om(e.contentDOM.ownerDocument)}handleEvent(e){!lm(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let i=this.handlers[e];if(i){for(let r of i.observers)r(this.view,t);for(let r of i.handlers){if(t.defaultPrevented)break;if(r(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=tm(e),i=this.handlers,r=this.view.contentDOM;for(let s in t)if(s!="scroll"){let o=!t[s].handlers.length,l=i[s];l&&o!=!l.handlers.length&&(r.removeEventListener(s,this.handleEvent),l=null),l||r.addEventListener(s,this.handleEvent,{passive:o})}for(let s in i)s!="scroll"&&!t[s]&&r.removeEventListener(s,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&cf.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),A.android&&A.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;if(A.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&(hf.some(t=>t.keyCode==e.keyCode)&&!e.ctrlKey||im.indexOf(e.key)>-1&&e.ctrlKey)){let t={ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey,shiftKey:e.shiftKey};t.shiftKey&&A.ios&&!/^(off|none)$/.test(this.view.contentDOM.autocapitalize)&&em(this.view.win)&&(t.shiftKey=!1);let i=this.pendingIOSKey={key:e.key,keyCode:e.keyCode,mods:t};return setTimeout(()=>{this.pendingIOSKey==i&&this.flushIOSKey()},50),!0}return e.keyCode!=229&&this.view.observer.forceFlush(),!1}flushIOSKey(e){let t=this.pendingIOSKey;return!t||this.view.observer.pendingRecords().length||t.key=="Enter"&&e&&e.from0?!0:A.safari&&!A.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}};function em(n){return n.visualViewport?n.visualViewport.height*n.visualViewport.scale/n.document.documentElement.clientHeight<.85:!1}function sc(n,e){return(t,i)=>{try{return e.call(n,i,t)}catch(r){nt(t.state,r)}}}function tm(n){let e=Object.create(null);function t(i){return e[i]||(e[i]={observers:[],handlers:[]})}for(let i of n){let r=i.spec,s=r&&r.plugin.domEventHandlers,o=r&&r.plugin.domEventObservers;if(s)for(let l in s){let a=s[l];a&&t(l).handlers.push(sc(i.value,a))}if(o)for(let l in o){let a=o[l];a&&t(l).observers.push(sc(i.value,a))}}for(let i in ft)t(i).handlers.push(ft[i]);for(let i in Me)t(i).observers.push(Me[i]);return e}var hf=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],im="dthko",cf=[16,17,18,20,91,92,224,225],Ir=6;function Ur(n){return Math.max(0,n)*.7+8}function nm(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}var nl=class{constructor(e,t,i,r){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=r,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=Cc(e.contentDOM),this.atoms=e.state.facet(ir).map(o=>o(e));let s=e.contentDOM.ownerDocument;s.addEventListener("mousemove",this.move=this.move.bind(this)),s.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(ue.allowMultipleSelections)&&rm(e,t),this.dragging=om(e,t)&&df(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&nm(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,i=0,r=0,s=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:s,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=tf(this.view);e.clientX-a.left<=r+Ir?t=-Ur(r-e.clientX):e.clientX+a.right>=o-Ir&&(t=Ur(e.clientX-o)),e.clientY-a.top<=s+Ir?i=-Ur(s-e.clientY):e.clientY+a.bottom>=l-Ir&&(i=Ur(e.clientY-l)),this.setScrollSpeed(t,i)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,i=sf(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!i.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}};function rm(n,e){let t=n.state.facet(_c);return t.length?t[0](e):A.mac?e.metaKey:e.ctrlKey}function sm(n,e){let t=n.state.facet(zc);return t.length?t[0](e):A.mac?!e.altKey:!e.ctrlKey}function om(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let i=Jn(n.root);if(!i||i.rangeCount==0)return!0;let r=i.getRangeAt(0).getClientRects();for(let s=0;s=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function lm(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=de.get(t))&&i.isWidget()&&!i.isHidden&&i.widget.ignoreEvent(e))return!1;return!0}var ft=Object.create(null),Me=Object.create(null),ff=A.ie&&A.ie_version<15||A.ios&&A.webkit_version<604;function am(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),uf(n,t.value)},50)}function ms(n,e,t){for(let i of n.facet(e))t=i(t,n);return t}function uf(n,e){e=ms(n.state,Cl,e);let{state:t}=n,i,r=1,s=t.toText(e),o=s.lines==t.selection.ranges.length;if(rl!=null&&t.selection.ranges.every(a=>a.empty)&&rl==s.toString()){let a=-1;i=t.changeByRange(h=>{let c=t.doc.lineAt(h.from);if(c.from==a)return{range:h};a=c.from;let f=t.toText((o?s.line(r++).text:e)+t.lineBreak);return{changes:{from:c.from,insert:f},range:k.cursor(h.from+f.length,-1)}})}else o?i=t.changeByRange(a=>{let h=s.line(r++);return{changes:{from:a.from,to:a.to,insert:h.text},range:k.cursor(a.from+h.length,-1)}}):i=t.replaceSelection(s);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}Me.scroll=n=>{let e=n.inputState;e.lastScrollTop=n.scrollDOM.scrollTop,e.lastScrollLeft=n.scrollDOM.scrollLeft,A.ios&&!e.touchActive&&(e.lastIOSMomentumScroll=Date.now())};Me.wheel=Me.mousewheel=n=>{n.inputState.lastWheelEvent=Date.now()};ft.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);Me.touchstart=(n,e)=>{let t=n.inputState,i=e.targetTouches[0];t.touchActive=!0,t.lastTouchTime=Date.now(),i&&(t.lastTouchX=i.clientX,t.lastTouchY=i.clientY),t.setSelectionOrigin("select.pointer")};Me.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Me.touchend=(n,e)=>{n.inputState.touchActive=!1};ft.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let i of n.state.facet(Wc))if(t=i(n,e),t)break;if(!t&&e.button==0&&(t=cm(n,e)),t){let i=!n.hasFocus;n.inputState.startMouseSelection(new nl(n,e,t,i)),i&&n.observer.ignore(()=>{Zc(n.contentDOM);let s=n.root.activeElement;s&&!s.contains(n.contentDOM)&&s.blur()});let r=n.inputState.mouseSelection;if(r)return r.start(e),r.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function oc(n,e,t,i){if(i==1)return k.cursor(e,t);if(i==2)return Dp(n.state,e,t);{let r=n.docView.lineAt(e,t),s=n.state.doc.lineAt(r?r.posAtEnd:e),o=r?r.posAtStart:s.from,l=r?r.posAtEnd:s.to;return lDate.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(ac+1)%3:1}function cm(n,e){let t=n.posAndSideAtCoords({x:e.clientX,y:e.clientY},!1),i=df(e),r=n.state.selection;return{update(s){s.docChanged&&(t.pos=s.changes.mapPos(t.pos),r=r.map(s.changes))},get(s,o,l){let a=n.posAndSideAtCoords({x:s.clientX,y:s.clientY},!1),h,c=oc(n,a.pos,a.assoc,i);if(t.pos!=a.pos&&!o){let f=oc(n,t.pos,t.assoc,i),u=Math.min(f.from,c.from),O=Math.max(f.to,c.to);c=u1&&(h=fm(r,a.pos))?h:l?r.addRange(c):k.create([c])}}}function fm(n,e){for(let t=0;t=e)return k.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}ft.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let r=n.docView.tile.nearest(e.target);if(r&&r.isWidget()){let s=r.posAtStart,o=s+r.length;(s>=t.to||o<=t.from)&&(t=k.undirectionalRange(s,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",ms(n.state,Tl,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};ft.dragend=n=>(n.inputState.draggedContent=null,!1);function cc(n,e,t,i){if(t=ms(n.state,Cl,t),!t)return;let r=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:s}=n.inputState,o=i&&s&&sm(n,e)?{from:s.from,to:s.to}:null,l={from:r,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(r,-1),head:a.mapPos(r,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}ft.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let i=Array(t.length),r=0,s=()=>{++r==t.length&&cc(n,e,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),s()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return cc(n,e,i,!0),!0}return!1};ft.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=ff?null:e.clipboardData;return t?(uf(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(am(n),!1)};function um(n,e){let t=n.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function dm(n){let e=[],t=[],i=!1;for(let r of n.selection.ranges)r.empty||(e.push(n.sliceDoc(r.from,r.to)),t.push(r));if(!e.length){let r=-1;for(let{from:s}of n.selection.ranges){let o=n.doc.lineAt(s);o.number>r&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),r=o.number}i=!0}return{text:ms(n,Tl,e.join(n.lineBreak)),ranges:t,linewise:i}}var rl=null;ft.copy=ft.cut=(n,e)=>{if(!Wn(n.contentDOM,n.observer.selectionRange))return!1;let{text:t,ranges:i,linewise:r}=dm(n.state);if(!t&&!r)return!1;rl=r?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let s=ff?null:e.clipboardData;return s?(s.clearData(),s.setData("text/plain",t),!0):(um(n,t),!1)};var Of=Le.define();function pf(n,e){let t=[];for(let i of n.facet(Bc)){let r=i(n,e);r&&t.push(r)}return t.length?n.update({effects:t,annotations:Of.of(!0)}):null}function mf(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=pf(n.state,e);t?n.dispatch(t):n.update([])}},10)}Me.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),mf(n)};Me.blur=n=>{n.observer.clearSelectionRange(),mf(n)};Me.compositionstart=Me.compositionupdate=(n,e)=>{if(!n.observer.editContext&&(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0)){let{main:t}=n.state.selection;!t.empty&&n.lineBlockAt(t.from).from!=n.lineBlockAt(t.to).from&&!n.state.readOnly&&n.dispatch({changes:n.state.selection.ranges.filter(i=>!i.empty).map(i=>({from:i.from,to:i.to})),userEvent:"input"}),n.inputState.composing=0}};Me.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,A.chrome&&A.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};Me.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};ft.beforeinput=(n,e)=>{var t,i;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let s=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(s&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return Al(n,{from:a,to:h,insert:n.state.toText(s)},null),!0}}let r;if(A.chrome&&A.android&&(r=hf.find(s=>s.inputType==e.inputType))&&(n.observer.delayAndroidKey(r.key,r.keyCode),r.key=="Backspace"||r.key=="Delete")){let s=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>s+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return A.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),A.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>Me.compositionend(n,e),20),!1};var fc=new Set;function Om(n){fc.has(n)||(fc.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}var uc=["pre-wrap","normal","pre-line","break-spaces"],cn=!1;function dc(){cn=!1}var sl=class{constructor(e){this.lineWrapping=e,this.doc=U.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return uc.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i-1,a=Math.abs(t-this.lineHeight)>.3||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=i,this.textHeight=r,this.lineLength=s,a){this.heightSamples={};for(let h=0;h0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>Kr&&(cn=!0),this.height=e)}replace(e,t,i){return n.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,r){let s=this,o=i.doc;for(let l=r.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:c,toB:f}=r[l],u=s.lineAt(a,ce.ByPosNoHeight,i.setDoc(t),0,0),O=u.to>=h?u:s.lineAt(h,ce.ByPosNoHeight,i,0,0);for(f+=O.to-h,h=O.to;l>0&&u.from<=r[l-1].toA;)a=r[l-1].fromA,c=r[l-1].fromB,l--,as*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,r-=l.size}else if(s>r*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,s-=l.size}else break;else if(r=s&&o(this.lineAt(0,ce.ByPos,i,r,s))}setMeasuredHeight(e){let t=e.heights[e.index++];t<0?(this.spaceAbove=-t,t=e.heights[e.index++]):this.spaceAbove=0,this.setHeight(t)}updateHeight(e,t=0,i=!1,r){return r&&r.from<=t&&r.more&&this.setMeasuredHeight(r),this.outdated=!1,this}toString(){return`block(${this.length})`}},et=class n extends hs{constructor(e,t,i){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0,this.spaceAbove=i}mainBlock(e,t){return new ht(t,this.length,e+this.spaceAbove,this.height-this.spaceAbove,this.breaks)}replace(e,t,i){let r=i[0];return i.length==1&&(r instanceof n||r instanceof Kt&&r.flags&4)&&Math.abs(this.length-r.length)<10?(r instanceof Kt?r=new n(r.length,this.height,this.spaceAbove):r.height=this.height,this.outdated||(r.outdated=!1),r):Ie.of(i)}updateHeight(e,t=0,i=!1,r){return r&&r.from<=t&&r.more?this.setMeasuredHeight(r):(i||this.outdated)&&(this.spaceAbove=0,this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight)),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}},Kt=class n extends Ie{constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,r=e.doc.lineAt(t+this.length).number,s=r-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*s);o=a/s,this.length>s+1&&(l=(this.height-a)/(this.length-s-1))}else o=this.height/s;return{firstLine:i,lastLine:r,perLine:o,perChar:l}}blockAt(e,t,i,r){let{firstLine:s,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,r);if(t.lineWrapping){let h=r+(e0){let s=i[i.length-1];s instanceof n?i[i.length-1]=new n(s.length+r):i.push(null,new n(r-1))}if(e>0){let s=i[0];s instanceof n?i[0]=new n(e+s.length):i.unshift(new n(e-1),null)}return Ie.of(i)}decomposeLeft(e,t){t.push(new n(e-1),null)}decomposeRight(e,t){t.push(null,new n(this.length-e-1))}updateHeight(e,t=0,i=!1,r){let s=t+this.length;if(r&&r.from<=t+this.length&&r.more){let o=[],l=Math.max(t,r.from),a=-1;for(r.from>t&&o.push(new n(r.from-t-1).updateHeight(e,t));l<=s&&r.more;){let c=e.doc.lineAt(l).length;o.length&&o.push(null);let f=r.heights[r.index++],u=0;f<0&&(u=-f,f=r.heights[r.index++]),a==-1?a=f:Math.abs(f-a)>=Kr&&(a=-2);let O=new et(c,f,u);O.outdated=!1,o.push(O),l+=c+1}l<=s&&o.push(null,new n(s-l).updateHeight(e,l));let h=Ie.of(o);return(a<0||Math.abs(h.height-this.height)>=Kr||Math.abs(a-this.heightMetrics(e,t).perLine)>=Kr)&&(cn=!0),as(this,h)}else(i||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}},ll=class extends Ie{constructor(e,t,i){super(e.length+(t?1:0)+i.length,e.height+i.height,(t?1:0)|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,r){let s=i+this.left.height;return el))return h;let c=t==ce.ByPosNoHeight?ce.ByPosNoHeight:ce.ByPos;return a?h.join(this.right.lineAt(l,c,i,o,l)):this.left.lineAt(l,c,i,r,s).join(h)}forEachLine(e,t,i,r,s,o){let l=r+this.left.height,a=s+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,ce.ByPos,i,r,s);e=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(Math.max(e,h.to+1),t,i,l,a,o)}}replace(e,t,i){let r=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-r,t-r,i));let s=[];e>0&&this.decomposeLeft(e,s);let o=s.length;for(let l of i)s.push(l);if(e>0&&Oc(s,o-1),t=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,r=i+this.break;if(e>=r)return this.right.decomposeRight(e-r,t);e2*t.size||t.size>2*e.size?Ie.of(this.break?[e,null,t]:[e,t]):(this.left=as(this.left,e),this.right=as(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,r){let{left:s,right:o}=this,l=t+s.length+this.break,a=null;return r&&r.from<=t+s.length&&r.more?a=s=s.updateHeight(e,t,i,r):s.updateHeight(e,t,i),r&&r.from<=l+o.length&&r.more?a=o=o.updateHeight(e,l,i,r):o.updateHeight(e,l,i),a?this.balanced(s,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}};function Oc(n,e){let t,i;n[e]==null&&(t=n[e-1])instanceof Kt&&(i=n[e+1])instanceof Kt&&n.splice(e-1,3,new Kt(t.length+1+i.length))}var mm=5,al=class n{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),r=this.nodes[this.nodes.length-1];r instanceof et?r.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new et(i-this.pos,-1,0)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e=mm)&&this.addLineDeco(r,s,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new et(this.pos-e,-1,0)),this.writtenTo=this.pos}blankContent(e,t){let i=new Kt(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof et)return e;let t=new et(0,-1,0);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,i){let r=this.ensureLine();r.length+=i,r.collapsed+=i,r.widgetHeight=Math.max(r.widgetHeight,e),r.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof et)&&!this.isCovered?this.nodes.push(new et(0,-1,0)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&c.overflow!="visible"){let f=h.getBoundingClientRect();s=Math.max(s,f.left),o=Math.min(o,f.right),l=Math.max(l,f.top),a=Math.min(h==n.parentNode?r.innerHeight:a,f.bottom)}h=c.position=="absolute"||c.position=="fixed"?h.offsetParent:h.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:s-t.left,right:Math.max(s,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function Sm(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left0&&e.top0}function ym(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}var Gn=class{constructor(e,t,i,r){this.from=e,this.to=t,this.size=i,this.displaySize=r}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;itypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new sl(i),this.stateDeco=pc(t),this.heightMap=Ie.empty().applyChanges(this.stateDeco,U.empty,this.heightOracle.setDoc(t.doc),[new ct(0,0,0,t.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=K.set(this.lineGaps.map(r=>r.draw(this,!1))),this.scrollParent=e.scrollDOM,this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let r=i?t.head:t.anchor;if(!e.some(({from:s,to:o})=>r>=s&&r<=o)){let{from:s,to:o}=this.lineBlockAt(r);e.push(new Ji(s,o))}}return this.viewports=e.sort((i,r)=>i.from-r.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?fl:ul.get(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(zn(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=pc(this.state);let r=e.changedRanges,s=ct.extendWithRanges(r,gm(i,this.stateDeco,e?e.changes:Ae.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollOffset);dc(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),s),(this.heightMap.height!=o||cn)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=s.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&(e.selectionSet||e.focusChanged)&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(Uc)&&(this.mustEnforceCursorAssoc=!0)}measure(){let{view:e}=this,t=e.contentDOM,i=window.getComputedStyle(t),r=this.heightOracle,s=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?ae.RTL:ae.LTR;let o=this.heightOracle.mustRefreshForWrapping(s)||this.mustMeasureContent==="refresh",l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,c=0;if(l.width&&l.height){let{scaleX:$,scaleY:Z}=Pc(t,l);($>.005&&Math.abs(this.scaleX-$)>.005||Z>.005&&Math.abs(this.scaleY-Z)>.005)&&(this.scaleX=$,this.scaleY=Z,h|=16,o=a=!0)}let f=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=f||this.paddingBottom!=u)&&(this.paddingTop=f,this.paddingBottom=u,h|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(r.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=16);let O=Cc(this.view.contentDOM,!1).y;O!=this.scrollParent&&(this.scrollParent=O,this.scrollAnchorHeight=-1,this.scrollOffset=0);let p=this.getScrollOffset();this.scrollOffset!=p&&(this.scrollAnchorHeight=-1,this.scrollOffset=p),this.scrolledToBottom=Ac(this.scrollParent||e.win);let g=(this.printing?ym:bm)(t,this.paddingTop),Q=g.top-this.pixelViewport.top,x=g.bottom-this.pixelViewport.bottom;this.pixelViewport=g;let P=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(P!=this.inView&&(this.inView=P,P&&(a=!0)),!this.inView&&!this.scrollTarget&&!Sm(e.dom))return 0;let v=l.width;if((this.contentDOMWidth!=v||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=16),a){let $=e.docView.measureVisibleLineHeights(this.viewport);if(r.mustRefreshForHeights($)&&(o=!0),o||r.lineWrapping&&Math.abs(v-this.contentDOMWidth)>r.charWidth){let{lineHeight:Z,charWidth:y,textHeight:C}=e.docView.measureTextSize();o=Z>0&&r.refresh(s,Z,y,C,Math.max(5,v/y),$),o&&(e.docView.minWidth=0,h|=16)}Q>0&&x>0?c=Math.max(Q,x):Q<0&&x<0&&(c=Math.min(Q,x)),dc();for(let Z of this.viewports){let y=Z.from==this.viewport.from?$:e.docView.measureVisibleLineHeights(Z);this.heightMap=(o?Ie.empty().applyChanges(this.stateDeco,U.empty,this.heightOracle,[new ct(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(r,0,o,new ol(Z.from,y))}cn&&(h|=2)}let W=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return W&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(c,this.scrollTarget),h|=this.updateForViewport()),(h&2||W)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),r=this.heightMap,s=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new Ji(r.lineAt(o-i*1e3,ce.ByHeight,s,0,0).from,r.lineAt(l+(1-i)*1e3,ce.ByHeight,s,0,0).to);if(t){let{head:h}=t.range;if(ha.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),f=r.lineAt(h,ce.ByPos,s,0,0),u;t.y=="center"?u=(f.top+f.bottom)/2-c/2:t.y=="start"||t.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&r>o-2*1e3&&s>1,o=r<<1;if(this.defaultTextDirection!=ae.LTR&&!i)return[];let l=[],a=(c,f,u,O)=>{if(f-cc&&xx.from>=u.from&&x.to<=u.to&&Math.abs(x.from-c)x.fromP));if(!Q){if(fv.from<=f&&v.to>=f)){let v=t.moveToLineBoundary(k.cursor(f),!1,!0).head;v>c&&(f=v)}let x=this.gapSize(u,c,f,O),P=i||x<2e6?x:2e6;Q=new Gn(c,f,x,P)}l.push(Q)},h=c=>{if(c.length2e6)for(let Z of e)Z.from>=c.from&&Z.fromc.from&&a(c.from,O,c,f),pt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let i=[];re.spans(t,this.viewport.from,this.viewport.to,{span(s,o){i.push({from:s,to:o})},point(){}},20);let r=0;if(i.length!=this.visibleRanges.length)r=12;else for(let s=0;s=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||zn(this.heightMap.lineAt(e,ce.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||zn(this.heightMap.lineAt(this.scaler.fromDOM(e),ce.ByHeight,this.heightOracle,0,0),this.scaler)}getScrollOffset(){return this.scrollParent==this.view.scrollDOM?this.scrollParent.scrollTop*this.scaleY:(this.scrollParent?this.scrollParent.getBoundingClientRect().top:0)-this.view.contentDOM.getBoundingClientRect().top}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+12-this.paddingTop);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return zn(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}},Ji=class{constructor(e,t){this.from=e,this.to=t}};function Qm(n,e,t){let i=[],r=n,s=0;return re.spans(t,n,e,{span(){},point(o,l){o>r&&(i.push({from:r,to:o}),s+=o-r),r=l}},20),r=1)return e[e.length-1].to;let i=Math.floor(n*t);for(let r=0;;r++){let{from:s,to:o}=e[r],l=o-s;if(i<=l)return s+i;i-=l}}function Gr(n,e){let t=0;for(let{from:i,to:r}of n.ranges){if(e<=r){t+=e-i;break}t+=r-i}return t/n.total}function xm(n,e){for(let t of n)if(e(t))return t}var fl={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};function pc(n){let e=n.facet(ps).filter(i=>typeof i!="function"),t=n.facet(Zl).filter(i=>typeof i!="function");return t.length&&e.push(re.join(t)),e}var ul=class n{constructor(e,t){this.scale=e,this.viewports=t}static get(e,t,i){let r=0,s=0,o=0,l=i.map(({from:h,to:c})=>{let f=t.lineAt(h,ce.ByPos,e,0,0).top,u=t.lineAt(c,ce.ByPos,e,0,0).bottom;return r+=u-f,{from:h,to:c,top:f,bottom:u,domTop:0,domBottom:0}});if(t.height-r<10)return fl;let a=(7e6-r)/(t.height-r);for(let h of l)h.domTop=o+(h.top-s)*a,o=h.domBottom=h.domTop+(h.bottom-h.top),s=h.bottom;return new n(a,l)}toDOM(e){for(let t=0,i=0,r=0;;t++){let s=tt.from==e.viewports[i].from&&t.to==e.viewports[i].to):!1}};function zn(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),i=e.toDOM(n.bottom);return new ht(n.from,n.length,t,i-t,Array.isArray(n._content)?n._content.map(r=>zn(r,e)):n._content)}var Fr=j.define({combine:n=>n.join(" ")}),dl=j.define({combine:n=>n.indexOf(!0)>-1}),Ol=Je.newName(),gf=Je.newName(),bf=Je.newName(),Sf={"&light":"."+gf,"&dark":"."+bf};function pl(n,e,t){return new Je(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,r=>{if(r=="&")return n;if(!t||!t[r])throw new RangeError(`Unsupported selector: ${r}`);return t[r]}):n+" "+i}})}var wm=pl("."+Ol,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{userSelect:"none",position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-selectionHandle":{backgroundColor:"currentColor",width:"1.5px"},".cm-selectionHandle-start::before, .cm-selectionHandle-end::before":{content:'""',backgroundColor:"inherit",borderRadius:"50%",width:"8px",height:"8px",position:"absolute",left:"-3.25px"},".cm-selectionHandle-start::before":{top:"-8px"},".cm-selectionHandle-end::before":{bottom:"-8px"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},".cm-panels-top":{top:"0"},".cm-panels-bottom":{bottom:"0"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"baseline",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{background:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 0) no-repeat",backgroundSize:".4em",backgroundPosition:"calc(min(50%, 0px)) center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},Sf),km={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},To=A.ie&&A.ie_version<=11,ml=class{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Lo,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(A.ie&&A.ie_version<=11||A.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&A.android&&e.constructor.EDIT_CONTEXT!==!1&&!(A.chrome&&A.chrome_version<126)&&(this.editContext=new gl(e),e.state.facet(Et)&&(e.contentDOM.editContext=this.editContext.editContext)),To&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(this.pendingRecords().length>0),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,r=this.selectionRange;if(i.state.facet(Et)?i.root.activeElement!=this.dom:!Wn(this.dom,r))return;let s=r.anchorNode&&i.docView.tile.nearest(r.anchorNode);if(s&&s.isWidget()&&s.widget.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(A.ie&&A.ie_version<=11||A.android&&A.chrome)&&!i.state.selection.main.empty&&r.focusNode&&Dn(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=Jn(e.root);if(!t)return!1;let i=A.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&$m(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let r=Wn(this.dom,i);return r&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let s=this.delayedAndroidKey;s&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=s.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&s.force&&nn(this.dom,s.key,s.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(r)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,i=-1,r=!1;for(let s of e){let o=this.readMutation(s);o&&(o.typeOver&&(r=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:r}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),r=this.selectionChanged&&Wn(this.dom,this.selectionRange);if(e<0&&!r)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let s=new el(this.view,e,t,i);return this.view.docView.domChanged={newSel:s.newSel?s.newSel.main:null},s}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.selectionChanged,i=this.readChange();if(!i)return this.view.requestMeasure(),!1;let r=this.view.state,s=lf(this.view,i);return this.view.state==r&&(i.domChanged||t)&&this.view.update([]),s}readMutation(e){let t=this.view.docView.tile.nearest(e.target);if(!t||t.isWidget())return null;if(t.markDirty(e.type=="attributes"),e.type=="childList"){let i=mc(t,e.previousSibling||e.target.previousSibling,-1),r=mc(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:r?t.posBefore(r):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Et)!=e.state.facet(Et)&&(e.view.contentDOM.editContext=e.state.facet(Et)?this.editContext.editContext:null))}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let r of this.scrollTargets)r.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}};function mc(n,e,t){for(;e;){let i=de.get(e);if(i&&i.parent==n)return i;let r=e.parentNode;e=r!=n.dom?r:t>0?e.nextSibling:e.previousSibling}return null}function gc(n,e){let t=e.startContainer,i=e.startOffset,r=e.endContainer,s=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor,1);return Dn(o.node,o.offset,r,s)&&([t,i,r,s]=[r,s,t,i]),{anchorNode:t,anchorOffset:i,focusNode:r,focusOffset:s}}function $m(n,e){if(e.getComposedRanges){let r=e.getComposedRanges(n.root)[0];if(r)return gc(n,r)}let t=null;function i(r){r.preventDefault(),r.stopImmediatePropagation(),t=r.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),t?gc(n,t):null}var gl=class{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=i=>{let r=e.state.selection.main,{anchor:s,head:o}=r,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&sthis.to&&(a=s);let c=af(e.state.sliceDoc(l,a),i.text,(h?r.from:r.to)-l,h?"end":null);if(!c){let u=k.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));tl(u,r)||e.dispatch({selection:u,userEvent:"select"});return}let f={from:c.from+l,to:c.toA+l,insert:U.of(i.text.slice(c.from,c.toB).split(` +`))};if((A.mac||A.android)&&f.from==o-1&&/^\. ?$/.test(i.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(f={from:l,to:a,insert:U.of([i.text.replace("."," ")])}),this.pendingContextChange=f,!e.state.readOnly){let u=this.to-this.from+(f.to-f.from+f.insert.length);Al(e,f,k.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),f.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(t.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let r=[],s=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let r=[];for(let s of i.getTextFormats()){let o=s.underlineStyle,l=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(s.rangeStart),h=this.toEditorPos(s.rangeEnd);if(a{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(e.state)}};for(let i in this.handlers)t.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{let r=Jn(i.root);r&&r.rangeCount&&this.editContext.updateSelectionBounds(r.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,i=!1,r=this.pendingContextChange;return e.changes.iterChanges((s,o,l,a,h)=>{if(i)return;let c=h.length-(o-s);if(r&&o>=r.to)if(r.from==s&&r.to==o&&r.insert.eq(h)){r=this.pendingContextChange=null,t+=c,this.to+=c;return}else r=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=c,this.to+=c;else if(sthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),h.toString()),this.to+=c}t+=c}),r&&!i&&this.revertPending(e.state),!i}update(e){let t=this.pendingContextChange,i=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(i.from,i.to)&&e.transactions.some(r=>!r.isUserEvent("input.type")&&r.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),r=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=r)&&this.editContext.updateSelection(i,r)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let i=this.composing;return i&&i.drifted?i.editorBase+(e-i.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},E=class n{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.clearAnnouncement=-1,this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:i}=e;this.dispatchTransactions=e.dispatchTransactions||i&&(r=>r.forEach(s=>i(s,this)))||(r=>this.update(r)),this.dispatch=this.dispatch.bind(this),this._root=e.root||bp(e.parent)||document,this.viewState=new cs(this,e.state||ue.create(e)),e.scrollTo&&e.scrollTo.is(Br)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Ki).map(r=>new In(r));for(let r of this.plugins)r.update(this);this.observer=new ml(this),this.inputState=new il(this),this.inputState.ensureHandlers(this.plugins),this.docView=new os(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>{this.viewState.mustMeasureContent="refresh",this.requestMeasure()})}dispatch(...e){let t=e.length==1&&e[0]instanceof ge?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,r,s=this.state;for(let u of e){if(u.startState!=s)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");s=u.state}if(this.destroyed){this.viewState.state=s;return}let o=this.hasFocus,l=0,a=null;e.some(u=>u.annotation(Of))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=pf(s,o),a||(l=1));let h=this.observer.delayedAndroidKey,c=null;if(h?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(s.doc)||!this.state.selection.eq(s.selection))&&(c=null)):this.observer.clear(),s.facet(ue.phrases)!=this.state.facet(ue.phrases))return this.setState(s);r=rs.create(this,s,e),r.flags|=l;let f=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(f&&(f=f.map(u.changes)),u.scrollIntoView){let{main:O}=u.state.selection,{x:p,y:g}=this.state.facet(n.cursorScrollMargin);f=new Bn(O.empty?O:k.cursor(O.head,O.head>O.anchor?-1:1),"nearest","nearest",g,p)}for(let O of u.effects)O.is(Br)&&(f=O.value.clip(this.state))}this.viewState.update(r,f),this.bidiCache=fs.update(this.bidiCache,r.changes),r.empty||(this.updatePlugins(r),this.inputState.update(r)),t=this.docView.update(r),this.state.facet(_n)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(r.startState.facet(Fr)!=r.state.facet(Fr)&&(this.viewState.mustMeasureContent=!0),(t||i||f||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!r.empty)for(let u of this.state.facet(zo))try{u(r)}catch(O){nt(this.state,O,"update listener")}(a||c)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!lf(this,c)&&h.force&&nn(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new cs(this,e),this.plugins=e.facet(Ki).map(i=>new In(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new os(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Ki),i=e.state.facet(Ki);if(t!=i){let r=[];for(let s of i){let o=t.indexOf(s);if(o<0)r.push(new In(s));else{let l=this.plugins[o];l.mustUpdate=e,r.push(l)}}for(let s of this.plugins)s.mustUpdate!=e&&s.destroy(this);this.plugins=r,this.pluginMap.clear()}else for(let r of this.plugins)r.mustUpdate=e;for(let r=0;r-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,i=this.viewState.scrollParent,r=this.viewState.getScrollOffset(),{scrollAnchorPos:s,scrollAnchorHeight:o,scaleY:l}=this.viewState;Math.abs(r-this.viewState.scrollOffset)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let a=0;;a++){if(o<0){if(Ac(i||this.win))s=-1,o=this.viewState.heightMap.height/this.viewState.scaleY;else{let p=this.viewState.scrollAnchorAt(r);s=p.from,o=p.top}l=this.viewState.scaleY}this.updateState=1;let h=this.viewState.measure();if(!h&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(a>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let c=[];h&4||([this.measureRequests,c]=[c,this.measureRequests]);let f=c.map(p=>{try{return p.read(this)}catch(g){return nt(this.state,g),bc}}),u=rs.create(this,this.state,[]),O=!1;u.flags|=h,t?t.flags|=h:t=u,this.updateState=2,u.empty||(this.updatePlugins(u),this.inputState.update(u),this.updateAttrs(),O=this.docView.update(u),O&&this.docViewUpdate());for(let p=0;p1||g<-1)&&!(A.ios&&this.inputState.lastIOSMomentumScroll>Date.now()-100)&&(i==this.scrollDOM||this.hasFocus||Math.max(this.inputState.lastWheelEvent,this.inputState.lastTouchTime)>Date.now()-100)){r=r+g,i?s<0?i.scrollTop=i.scrollHeight:i.scrollTop+=g:this.win.scrollBy(0,g),o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let a of this.state.facet(zo))a(t)}get themeClasses(){return Ol+" "+(this.state.facet(dl)?bf:gf)+" "+this.state.facet(Fr)}updateAttrs(){let e=Sc(this,Fc,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Et)?"true":"false",class:"cm-content",style:`${A.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),Sc(this,Xl,t);let i=this.observer.ignore(()=>{let r=Kh(this.contentDOM,this.contentAttrs,t),s=Kh(this.dom,this.editorAttrs,e);return r||s});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let r of i.effects)if(r.is(n.announce)){t&&(this.announceDOM.textContent="",this.win.clearTimeout(this.clearAnnouncement),this.clearAnnouncement=this.win.setTimeout(()=>{this.announceDOM.textContent="\xA0"},200),t=!1);let s=this.announceDOM.appendChild(document.createElement("div"));s.textContent=r.value}}mountStyles(){this.styleModules=this.state.facet(_n);let e=this.state.facet(n.cspNonce);Je.mount(this.root,this.styleModules.concat(wm).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;ti.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return Co(this,e,rc(this,e,t,i))}moveByGroup(e,t){return Co(this,e,rc(this,e,t,i=>Up(this,e.head,i)))}visualLineSide(e,t){return t?k.cursor(e.to,1):k.cursor(e.from,-1)}moveToLineBoundary(e,t,i=!0){return Ip(this,e,t,i)}moveVertically(e,t,i){return Co(this,e,Np(this,e,t,i))}domAtPos(e,t=1){return this.docView.domAtPos(e,t)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){this.readMeasured();let i=Ho(this,e,t);return i&&i.pos}posAndSideAtCoords(e,t=!0){return this.readMeasured(),Ho(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.state.doc.lineAt(e),r=this.bidiSpans(i),s=r[it.find(r,e-i.from,-1,t)];return i.length&&(e==i.from&&t<0||e==i.to&&t>0)&&s.dir!=this.textDirectionAt(i.from)&&(e==i.to?(e=i.from+s.from,t=1):(e=i.from+s.to,t=-1)),this.docView.coordsAt(e,t,s.dir==ae.RTL)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(Ic)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>vm)return Yc(e.length);let t=this.textDirectionAt(e.from),i;for(let s of this.bidiCache)if(s.from==e.from&&s.dir==t&&(s.fresh||Lc(s.isolates,i=tc(this,e))))return s.order;i||(i=tc(this,e));let r=vp(e.text,t,i);return this.bidiCache.push(new fs(e.from,e.to,t,i,!0,r)),r}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||A.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Zc(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.win.clearTimeout(this.clearAnnouncement),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){var i,r,s,o;return Br.of(new Bn(typeof e=="number"?k.cursor(e):e,(i=t.y)!==null&&i!==void 0?i:"nearest",(r=t.x)!==null&&r!==void 0?r:"nearest",(s=t.yMargin)!==null&&s!==void 0?s:5,(o=t.xMargin)!==null&&o!==void 0?o:5))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return Br.of(new Bn(k.cursor(i.from),"start","start",i.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return rt.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return rt.define(()=>({}),{eventObservers:e})}static theme(e,t){let i=Je.newName(),r=[Fr.of(i),_n.of(pl(`.${i}`,e))];return t&&t.dark&&r.push(dl.of(!0)),r}static baseTheme(e){return Ft.lowest(_n.of(pl("."+Ol,e,Sf)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),r=i&&de.get(i)||de.get(e);return((t=r?.root)===null||t===void 0?void 0:t.view)||null}};E.styleModule=_n;E.inputHandler=Dc;E.clipboardInputFilter=Cl;E.clipboardOutputFilter=Tl;E.scrollHandler=Nc;E.focusChangeEffect=Bc;E.perLineTextDirection=Ic;E.exceptionSink=Vc;E.updateListener=zo;E.editable=Et;E.mouseSelectionStyle=Wc;E.dragMovesSelection=zc;E.clickAddsSelectionRange=_c;E.decorations=ps;E.blockWrappers=Hc;E.outerDecorations=Zl;E.atomicRanges=ir;E.bidiIsolatedRanges=Kc;E.cursorScrollMargin=j.define({combine:n=>{let e=5,t=5;for(let i of n)typeof i=="number"?e=t=i:{x:e,y:t}=i;return{x:e,y:t}}});E.scrollMargins=ef;E.darkTheme=dl;E.cspNonce=j.define({combine:n=>n.length?n[0]:""});E.contentAttributes=Xl;E.editorAttributes=Fc;E.lineWrapping=E.contentAttributes.of({class:"cm-lineWrapping"});E.announce=le.define();var vm=4096,bc={},fs=class n{constructor(e,t,i,r,s,o){this.from=e,this.to=t,this.dir=i,this.isolates=r,this.fresh=s,this.order=o}static update(e,t){if(t.empty&&!e.some(s=>s.fresh))return e;let i=[],r=e.length?e[e.length-1].dir:ae.LTR;for(let s=Math.max(0,e.length-10);s=0;r--){let s=i[r],o=typeof s=="function"?s(n):s;o&&$l(o,t)}return t}var Pm=A.mac?"mac":A.windows?"win":A.linux?"linux":"key";function Cm(n,e){let t=n.split(/-(?!$)/),i=t[t.length-1];i=="Space"&&(i=" ");let r,s,o,l;for(let a=0;ai.concat(r),[]))),t}var Ht=null,Zm=4e3;function Am(n,e=Pm){let t=Object.create(null),i=Object.create(null),r=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},s=(o,l,a,h,c)=>{var f,u;let O=t[o]||(t[o]=Object.create(null)),p=l.split(/ (?!$)/).map(x=>Cm(x,e));for(let x=1;x{let W=Ht={view:v,prefix:P,scope:o};return setTimeout(()=>{Ht==W&&(Ht=null)},Zm),!0}]})}let g=p.join(" ");r(g,!1);let Q=O[g]||(O[g]={preventDefault:!1,stopPropagation:!1,run:((u=(f=O._any)===null||f===void 0?void 0:f.run)===null||u===void 0?void 0:u.slice())||[]});a&&Q.run.push(a),h&&(Q.preventDefault=!0),c&&(Q.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let c=t[h]||(t[h]=Object.create(null));c._any||(c._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:f}=o;for(let u in c)c[u].run.push(O=>f(O,bl))}let a=o[e]||o.key;if(a)for(let h of l)s(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&s(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return t}var bl=null;function Rm(n,e,t,i){bl=e;let r=Nh(e),s=bo(r,0),o=So(s)==r.length&&r!=" ",l="",a=!1,h=!1,c=!1;Ht&&Ht.view==t&&Ht.scope==i&&(l=Ht.prefix+" ",cf.indexOf(e.keyCode)<0&&(h=!0,Ht=null));let f=new Set,u=Q=>{if(Q){for(let x of Q.run)if(!f.has(x)&&(f.add(x),x(t)))return Q.stopPropagation&&(c=!0),!0;Q.preventDefault&&(Q.stopPropagation&&(c=!0),h=!0)}return!1},O=n[i],p,g;return O&&(u(O[l+Hr(r,e,!o)])?a=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(A.windows&&e.ctrlKey&&e.altKey)&&!(A.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=jt[e.keyCode])&&p!=r?(u(O[l+Hr(p,e,!0)])||e.shiftKey&&(g=Fi[e.keyCode])!=r&&g!=p&&u(O[l+Hr(g,e,!1)]))&&(a=!0):o&&e.shiftKey&&u(O[l+Hr(r,e,!0)])&&(a=!0),!a&&u(O._any)&&(a=!0)),h&&(a=!0),a&&c&&e.stopPropagation(),bl=null,a}var $i=class n{constructor(e,t,i,r,s){this.className=e,this.left=t,this.top=i,this.width=r,this.height=s}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,i){if(i.empty){let r=e.coordsAtPos(i.head,i.assoc||1);if(!r)return[];let s=yf(e);return[new n(t,r.left-s.left,r.top-s.top,null,r.bottom-r.top)]}else return Mm(e,t,i)}};function yf(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==ae.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function Qc(n,e,t,i){let r=n.coordsAtPos(e,t*2);if(!r)return i;let s=n.dom.getBoundingClientRect(),o=(r.top+r.bottom)/2,l=n.posAtCoords({x:s.left+1,y:o}),a=n.posAtCoords({x:s.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Mm(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let i=Math.max(t.from,n.viewport.from),r=Math.min(t.to,n.viewport.to),s=n.textDirection==ae.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=yf(n),h=o.querySelector(".cm-line"),c=h&&window.getComputedStyle(h),f=l.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),u=l.right-(c?parseInt(c.paddingRight):0),O=Fo(n,i,1),p=Fo(n,r,-1),g=O.type==Pe.Text?O:null,Q=p.type==Pe.Text?p:null;if(g&&(n.lineWrapping||O.widgetLineBreaks)&&(g=Qc(n,i,1,g)),Q&&(n.lineWrapping||p.widgetLineBreaks)&&(Q=Qc(n,r,-1,Q)),g&&Q&&g.from==Q.from&&g.to==Q.to)return P(v(t.from,t.to,g));{let $=g?v(t.from,null,g):W(O,!1),Z=Q?v(null,t.to,Q):W(p,!0),y=[];return(g||O).to<(Q||p).from-(g&&Q?1:0)||O.widgetLineBreaks>1&&$.bottom+n.defaultLineHeight/2z&&I.from=ye)break;_>ee&&B(Math.max(ne,ee),$==null&&ne<=z,Math.min(_,ye),Z==null&&_>=G,Ze.dir)}if(ee=Oe.to+1,ee>=ye)break}return J.length==0&&B(z,$==null,G,Z==null,n.textDirection),{top:C,bottom:S,horizontal:J}}function W($,Z){let y=l.top+(Z?$.top:$.bottom);return{top:y,bottom:y,horizontal:[]}}}function jm(n,e){return n.constructor==e.constructor&&n.eq(e)}var Sl=class{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(Jr)!=e.state.facet(Jr)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,i=e.facet(Jr);for(;t!jm(t,this.drawn[i]))){let t=this.dom.firstChild,i=0;for(let r of e)r.update&&t&&r.constructor&&this.drawn[i].constructor&&r.update(t,this.drawn[i])?(t=t.nextSibling,i++):this.dom.insertBefore(r.draw(),t);for(;t;){let r=t.nextSibling;t.remove(),t=r}this.drawn=e,A.webkit&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}},Jr=j.define();function Qf(n){return[rt.define(e=>new Sl(e,n)),Jr.of(n)]}var yl=!A.ios,fn=j.define({combine(n){return Qi(n,{cursorBlinkRate:1200,drawRangeCursor:!0,iosSelectionHandles:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function xf(n={}){return[fn.of(n),Em,Lm,qm,Uc.of(!0)]}function wf(n){return n.startState.facet(fn)!=n.state.facet(fn)}var Em=Qf({above:!0,markers(n){let{state:e}=n,t=e.facet(fn),i=[];for(let r of e.selection.ranges){let s=r==e.selection.main;if(r.empty||t.drawRangeCursor&&!(s&&A.ios&&t.iosSelectionHandles)){let o=s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=r.empty?r:k.cursor(r.head,r.assoc);for(let a of $i.forRange(n,o,l))i.push(a)}}return i},update(n,e){n.transactions.some(i=>i.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=wf(n);return t&&xc(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){xc(e.state,n)},class:"cm-cursorLayer"});function xc(n,e){e.style.animationDuration=n.facet(fn).cursorBlinkRate+"ms"}var Lm=Qf({above:!1,markers(n){let e=[],{main:t,ranges:i}=n.state.selection;for(let r of i)if(!r.empty&&(yl||r!=t))for(let s of $i.forRange(n,"cm-selectionBackground",r))e.push(s);if(A.ios&&!t.empty&&n.state.facet(fn).iosSelectionHandles){for(let r of $i.forRange(n,"cm-selectionHandle cm-selectionHandle-start",k.cursor(t.from,1)))e.push(r);for(let r of $i.forRange(n,"cm-selectionHandle cm-selectionHandle-end",k.cursor(t.to,1)))e.push(r)}return e},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||wf(n)},class:"cm-selectionLayer"}),Ym=A.gecko&&A.gecko_version==153?"#ffffff01":"transparent",qm=Ft.highest(E.theme({".cm-line":{...yl?{"& ::selection, &::selection":{backgroundColor:`${Ym} !important`}}:{},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important",...yl?{"&::selection, & ::selection":{backgroundColor:"Highlight !important"}}:{}}}}));var qy=/x/.unicode!=null?"gu":"g";function kf(){return zm}var _m=K.line({class:"cm-activeLine"}),zm=rt.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let i of n.state.selection.ranges){let r=n.lineBlockAt(i.head);r.from>e&&(t.push(_m.range(r.from)),e=r.from)}return K.set(t)}},{decorations:n=>n.decorations}),Ql=class extends yt{constructor(e){super(),this.content=e}toDOM(e){let t=document.createElement("span");return t.className="cm-placeholder",t.style.pointerEvents="none",t.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),t.setAttribute("aria-hidden","true"),t}coordsAt(e){let t=e.firstChild?Vn(e.firstChild):[];if(!t.length)return null;let i=window.getComputedStyle(e.parentNode),r=er(t[0],i.direction!="rtl"),s=parseInt(i.lineHeight);return r.bottom-r.top>s*1.5?{left:r.left,right:r.right,top:r.top,bottom:r.top+s}:r}ignoreEvent(){return!1}};function $f(n){let e=rt.fromClass(class{constructor(t){this.view=t,this.placeholder=n?K.set([K.widget({widget:new Ql(n),side:1}).range(0)]):K.none}get decorations(){return this.view.state.doc.length?K.none:this.placeholder}},{decorations:t=>t.decorations});return typeof n=="string"?[e,E.contentAttributes.of({"aria-placeholder":n})]:e}var Qt=class extends Ke{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}};Qt.prototype.elementClass="";Qt.prototype.toDOM=void 0;Qt.prototype.mapMode=ve.TrackBefore;Qt.prototype.startSide=Qt.prototype.endSide=-1;Qt.prototype.point=!0;var Xo=j.define(),Wm=j.define();var es=j.define();var xl=j.define({combine:n=>n.some(e=>e)});function Vm(n){let e=[Dm];return n&&n.fixed===!1&&e.push(xl.of(!0)),e}var Dm=rt.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(es).map(e=>new us(n,e)),this.fixed=!n.state.facet(xl);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,i=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(i<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(xl)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=re.iter(this.view.state.facet(Xo),this.view.viewport.from),i=[],r=this.gutters.map(s=>new kl(s,this.view.viewport,-this.view.documentPadding.top));for(let s of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(s.type)){let o=!0;for(let l of s.type)if(l.type==Pe.Text&&o){wl(t,i,l.from);for(let a of r)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of r)a.widget(this.view,l)}else if(s.type==Pe.Text){wl(t,i,s.from);for(let o of r)o.line(this.view,s,i)}else if(s.widget)for(let o of r)o.widget(this.view,s);for(let s of r)s.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(es),t=n.state.facet(es),i=n.docChanged||n.heightChanged||n.viewportChanged||!re.eq(n.startState.facet(Xo),n.state.facet(Xo),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let r of this.gutters)r.update(n)&&(i=!0);else{i=!0;let r=[];for(let s of t){let o=e.indexOf(s);o<0?r.push(new us(this.view,s)):(this.gutters[o].update(n),r.push(this.gutters[o]))}for(let s of this.gutters)s.dom.remove(),r.indexOf(s)<0&&s.destroy();for(let s of r)s.config.side=="after"?this.getDOMAfter().appendChild(s.dom):this.dom.appendChild(s.dom);this.gutters=r}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>E.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let i=t.dom.offsetWidth*e.scaleX,r=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==ae.LTR?{left:i,right:r}:{right:i,left:r}})});function wc(n){return Array.isArray(n)?n:[n]}function wl(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}var kl=class{constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=re.iter(e.markers,t.from)}addElement(e,t,i){let{gutter:r}=this,s=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==r.elements.length){let l=new ds(e,o,s,i);r.elements.push(l),r.dom.appendChild(l.dom)}else r.elements[this.i].update(e,o,s,i);this.height=t.bottom,this.i++}line(e,t,i){let r=[];wl(this.cursor,r,t.from),i.length&&(r=r.concat(i));let s=this.gutter.config.lineMarker(e,t,r);s&&r.unshift(s);let o=this.gutter;r.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,r)}widget(e,t){let i=this.gutter.config.widgetMarker(e,t.widget,t),r=i?[i]:null;for(let s of e.state.facet(Wm)){let o=s(e,t.widget,t);o&&(r||(r=[])).push(o)}r&&this.addElement(e,t,r)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}},us=class{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in t.domEventHandlers)this.dom.addEventListener(i,r=>{let s=r.target,o;if(s!=this.dom&&this.dom.contains(s)){for(;s.parentNode!=this.dom;)s=s.parentNode;let a=s.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=r.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[i](e,l,r)&&r.preventDefault()});this.markers=wc(t.markers(e)),t.initialSpacer&&(this.spacer=new ds(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=wc(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let r=this.config.updateSpacer(this.spacer.markers[0],e);r!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[r])}let i=e.view.viewport;return!re.eq(this.markers,t,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}},ds=class{constructor(e,t,i,r){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,r)}update(e,t,i,r){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),Bm(this.markers,r)||this.setMarkers(e,r)}setMarkers(e,t){let i="cm-gutterElement",r=this.dom.firstChild;for(let s=0,o=0;;){let l=o,a=ss(l,a,h)||o(l,a,h):o}return i}})}}),Fn=class extends Qt{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}};function Zo(n,e){return n.state.facet(en).formatNumber(e,n.state)}var Nm=es.compute([en],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Im)},lineMarker(e,t,i){return i.some(r=>r.toDOM)?null:new Fn(Zo(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,i)=>{for(let r of e.state.facet(Um)){let s=r(e,t,i);if(s)return s}return null},lineMarkerChange:e=>e.startState.facet(en)!=e.state.facet(en),initialSpacer(e){return new Fn(Zo(e,kc(e.state.doc.lines)))},updateSpacer(e,t){let i=Zo(t.view,kc(t.view.state.doc.lines));return i==e.number?e:new Fn(i)},domEventHandlers:n.facet(en).domEventHandlers,side:"before"}));function vf(n={}){return[en.of(n),Vm(),Nm]}function kc(n){let e=9;for(;e{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=we.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}};D.closedBy=new D({deserialize:n=>n.split(" ")});D.openedBy=new D({deserialize:n=>n.split(" ")});D.group=new D({deserialize:n=>n.split(" ")});D.isolate=new D({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});D.contextHash=new D({perNode:!0});D.lookAhead=new D({perNode:!0});D.mounted=new D({perNode:!0});var ti=class{constructor(e,t,i,r=!1){this.tree=e,this.overlay=t,this.parser=i,this.bracketed=r}static get(e){return e&&e.props&&e.props[D.mounted.id]}},Fm=Object.create(null),we=class n{constructor(e,t,i,r=0){this.name=e,this.props=t,this.id=i,this.flags=r}static define(e){let t=e.props&&e.props.length?Object.create(null):Fm,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),r=new n(e.name||"",t,e.id,i);if(e.props){for(let s of e.props)if(Array.isArray(s)||(s=s(r)),s){if(s[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[s[0].id]=s[1]}}return r}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(D.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let r of i.split(" "))t[r]=e[i];return i=>{for(let r=i.prop(D.group),s=-1;s<(r?r.length:0);s++){let o=t[s<0?i.name:r[s]];if(o)return o}}}};we.none=new we("",Object.create(null),0,8);var un=class n{constructor(e){this.types=e;for(let t=0;t0;for(let a=this.cursor(o|N.IncludeAnonymous);;){let h=!1;if(a.from<=s&&a.to>=r&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Wl(we.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,r)=>new n(this.type,t,i,r,this.propValues),e.makeTree||((t,i,r)=>new n(we.none,t,i,r)))}static build(e){return Km(e)}};te.empty=new te(we.none,[],[],0);var Rl=class n{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new n(this.buffer,this.index)}},ii=class n{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return we.none}toString(){let e=[];for(let t=0;t0));a=o[a+3]);return l}slice(e,t,i){let r=this.buffer,s=new Uint16Array(t-e),o=0;for(let l=e,a=0;l=e&&te;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}function rr(n,e,t,i){for(var r;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to0?l.length:-1;e!=h;e+=t){let c=l[e],f=a[e]+o.from,u;if(!(!(s&N.EnterBracketed&&c instanceof te&&(u=ti.get(c))&&!u.overlay&&u.bracketed&&i>=f&&i<=f+c.length)&&!jf(r,i,f,f+c.length))){if(c instanceof ii){if(s&N.ExcludeBuffers)continue;let O=c.findChild(0,c.buffer.length,t,i-f,r);if(O>-1)return new Ci(new jl(o,c,e,f),null,O)}else if(s&N.IncludeAnonymous||!c.type.isAnonymous||zl(c)){let O;if(!(s&N.IgnoreMounts)&&(O=ti.get(c))&&!O.overlay)return new n(O.tree,f,e,o);let p=new n(c,f,e,o);return s&N.IncludeAnonymous||!p.type.isAnonymous?p:p.nextChild(t<0?c.children.length-1:0,t,i,r,s)}}}if(s&N.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,t,i=0){let r;if(!(i&N.IgnoreOverlays)&&(r=ti.get(this._tree))&&r.overlay){let s=e-this.from,o=i&N.EnterBracketed&&r.bracketed;for(let{from:l,to:a}of r.overlay)if((t>0||o?l<=s:l=s:a>s))return new n(r.tree,r.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}};function Cf(n,e,t,i){let r=n.cursor(),s=[];if(!r.firstChild())return s;if(t!=null){for(let o=!1;!o;)if(o=r.type.is(t),!r.nextSibling())return s}for(;;){if(i!=null&&r.type.is(i))return s;if(r.type.is(e)&&s.push(r.node),!r.nextSibling())return i==null?s:[]}}function Ml(n,e,t=e.length-1){for(let i=n;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}var jl=class{constructor(e,t,i,r){this.parent=e,this.buffer=t,this.index=i,this.start=r}},Ci=class n extends Ss{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.context.start,i);return s<0?null:new n(this.context,this,s)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,t,i=0){if(i&N.ExcludeBuffers)return null;let{buffer:r}=this.context,s=r.findChild(this.index+4,r.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return s<0?null:new n(this.context,this,s)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new n(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new n(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,r=this.index+4,s=i.buffer[this.index+3];if(s>r){let o=i.buffer[this.index+1];e.push(i.slice(r,s,o)),t.push(0)}return new te(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}};function Ef(n){if(!n.length)return null;let e=0,t=n[0];for(let s=1;st.from||o.to=e){let l=new _e(o.tree,o.overlay[0].from+s.from,-1,s);(r||(r=[i])).push(rr(l,e,t,!1))}}return r?Ef(r):i}var dn=class{get name(){return this.type.name}constructor(e,t=0){if(this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,this.mode=t&~N.EnterBracketed,e instanceof _e)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:r}=this.buffer;return this.type=t||r.set.types[r.buffer[e]],this.from=i+r.buffer[e+1],this.to=i+r.buffer[e+2],!0}yield(e){return e?e instanceof _e?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:r}=this.buffer,s=r.findChild(this.index+4,r.buffer[this.index+3],e,t-this.buffer.start,i);return s<0?!1:(this.stack.push(this.index),this.yieldBuf(s))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&N.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&N.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&N.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let r=i<0?0:this.stack[i]+4;if(this.index!=r)return this.yieldBuf(t.findChild(r,this.index,-1,0,4))}else{let r=t.buffer[this.index+3];if(r<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(r)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:r}=this;if(r){if(e>0){if(this.index-1)for(let s=t+e,o=e<0?-1:i._tree.children.length;s!=o;s+=e){let l=i._tree.children[s];if(this.mode&N.IncludeAnonymous||l instanceof ii||!l.type.isAnonymous||zl(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==r){if(r==this.index)return o;t=o,i=s+1;break e}r=this.stack[--s]}for(let r=i;r=0;s--){if(s<0)return Ml(this._tree,e,r);let o=i[t.buffer[this.stack[s]]];if(!o.isAnonymous){if(e[r]&&e[r]!=o.name)return!1;r--}}return!0}};function zl(n){return n.children.some(e=>e instanceof ii||!e.type.isAnonymous||zl(e))}function Km(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:r=1024,reused:s=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new Rl(t,t.length):t,a=i.types,h=0,c=0;function f($,Z,y,C,S,J){let{id:B,start:z,end:G,size:I}=l,ee=c,ye=h;if(I<0)if(l.next(),I==-1){let q=s[B];y.push(q),C.push(z-$);return}else if(I==-3){h=B;return}else if(I==-4){c=B;return}else throw new RangeError(`Unrecognized record size: ${I}`);let Oe=a[B],Ze,ne,_=z-$;if(G-z<=r&&(ne=Q(l.pos-Z,S))){let q=new Uint16Array(ne.size-ne.skip),V=l.pos-ne.size,ie=q.length;for(;l.pos>V;)ie=x(ne.start,q,ie);Ze=new ii(q,G-ne.start,i),_=ne.start-$}else{let q=l.pos-I;l.next();let V=[],ie=[],Ge=B>=o?B:-1,F=0,me=G,Zt=ee;for(;l.pos>q;)Ge>=0&&l.id==Ge&&l.size>=0?(l.end<=me-r&&(p(V,ie,z,F,l.end,me,Ge,Zt,ye),F=V.length,me=l.end,Zt=c),l.next()):J>2500?u(z,q,V,ie):(Ge>=0&&l.size==-1&&s[l.id].type==i.types[Ge]&&(F=0&&F>0&&F-1&&F>0){let Zn=O(Oe,ye);Ze=Wl(Oe,V,ie,0,V.length,0,G-z,Zn,Zn)}else Ze=g(Oe,V,ie,G-z,ee-G,ye)}y.push(Ze),C.push(_)}function u($,Z,y,C){let S=[],J=0,B=-1;for(;l.pos>Z;){let{id:z,start:G,end:I,size:ee}=l;if(ee>4)l.next();else{if(B>-1&&G=0;I-=3)z[ee++]=S[I],z[ee++]=S[I+1]-G,z[ee++]=S[I+2]-G,z[ee++]=ee;y.push(new ii(z,S[2]-G,i)),C.push(G-$)}}function O($,Z){return(y,C,S)=>{let J=0,B=y.length-1,z,G;if(B>=0&&(z=y[B])instanceof te){if(!B&&z.type==$&&z.length==S)return z;(G=z.prop(D.lookAhead))&&(J=C[B]+z.length+G-S)}return g($,y,C,S,J,Z)}}function p($,Z,y,C,S,J,B,z,G){let I=[],ee=[];for(;$.length>C;)I.push($.pop()),ee.push(Z.pop()+y-S);$.push(g(i.types[B],I,ee,J-S,z-J,G)),Z.push(S-y)}function g($,Z,y,C,S,J,B){if(J){let z=[D.contextHash,J];B=B?[z].concat(B):[z]}if(S>25){let z=[D.lookAhead,S];B=B?[z].concat(B):[z]}return new te($,Z,y,C,B)}function Q($,Z){let y=l.fork(),C=0,S=0,J=0,B=y.end-r,z={size:0,start:0,skip:0};e:for(let G=y.pos-$;y.pos>G;){let I=y.size;if(y.id==Z&&I>=0){z.size=C,z.start=S,z.skip=J,J+=4,C+=4,y.next();continue}let ee=y.pos-I;if(I<0||ee=o?4:0,Oe=y.start;for(y.next();y.pos>ee;){if(y.size<0)if(y.size==-3||y.size==-4)ye+=4;else break e;else y.id>=o&&(ye+=4);y.next()}S=Oe,C+=I,J+=ye}return(Z<0||C==$)&&(z.size=C,z.start=S,z.skip=J),z.size>4?z:void 0}function x($,Z,y){let{id:C,start:S,end:J,size:B}=l;if(l.next(),B>=0&&C4){let G=l.pos-(B-4);for(;l.pos>G;)y=x($,Z,y)}Z[--y]=z,Z[--y]=J-$,Z[--y]=S-$,Z[--y]=C}else B==-3?h=C:B==-4&&(c=C);return y}let P=[],v=[];for(;l.pos>0;)f(n.start||0,n.bufferStart||0,P,v,-1,0);let W=(e=n.length)!==null&&e!==void 0?e:P.length?v[0]+P[0].length:0;return new te(a[n.topID],P.reverse(),v.reverse(),W)}var Tf=new WeakMap;function bs(n,e){if(!n.isAnonymous||e instanceof ii||e.type!=n)return 1;let t=Tf.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof te)){t=1;break}t+=bs(n,i)}Tf.set(e,t)}return t}function Wl(n,e,t,i,r,s,o,l,a){let h=0;for(let p=i;p=c)break;Z+=y}if(v==W+1){if(Z>c){let y=p[W];O(y.children,y.positions,0,y.children.length,g[W]+P);continue}f.push(p[W])}else{let y=g[v-1]+p[v-1].length-$;f.push(Wl(n,p,g,W,v,$,y,null,a))}u.push($+P-s)}}return O(e,t,i,r,0),(l||a)(f,u,o)}var On=class{constructor(){this.map=new WeakMap}setBuffer(e,t,i){let r=this.map.get(e);r||this.map.set(e,r=new Map),r.set(t,i)}getBuffer(e,t){let i=this.map.get(e);return i&&i.get(t)}set(e,t){e instanceof Ci?this.setBuffer(e.context.buffer,e.index,t):e instanceof _e&&this.map.set(e.tree,t)}get(e){return e instanceof Ci?this.getBuffer(e.context.buffer,e.index):e instanceof _e?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},qt=class n{constructor(e,t,i,r,s=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=r,this.open=(s?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let r=[new n(0,e.length,e,0,!1,i)];for(let s of t)s.to>e.length&&r.push(s);return r}static applyChanges(e,t,i=128){if(!t.length)return e;let r=[],s=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let c=l=i)for(;o&&o.from=u.from||f<=u.to||h){let O=Math.max(u.from,a)-h,p=Math.min(u.to,f)-h;u=O>=p?null:new n(O,p,u.tree,u.offset+h,l>0,!!c)}if(u&&r.push(u),o.to>f)break;o=snew qe(r.from,r.to)):[new qe(0,0)]:[new qe(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let r=this.startParse(e,t,i);for(;;){let s=r.advance();if(s)return s}}},Ll=class{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}};function Lf(n){return(e,t,i,r)=>new ql(e,n,t,i,r)}var ys=class{constructor(e,t,i,r,s,o){this.parser=e,this.parse=t,this.overlay=i,this.bracketed=r,this.target=s,this.from=o}};function Xf(n){if(!n.length||n.some(e=>e.from>=e.to))throw new RangeError("Invalid inner parse ranges given: "+JSON.stringify(n))}var Yl=class{constructor(e,t,i,r,s,o,l,a){this.parser=e,this.predicate=t,this.mounts=i,this.index=r,this.start=s,this.bracketed=o,this.target=l,this.prev=a,this.depth=0,this.ranges=[]}},Yf=new D({perNode:!0}),ql=class{constructor(e,t,i,r,s){this.nest=t,this.input=i,this.fragments=r,this.ranges=s,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){let i=this.baseParse.advance();if(!i)return null;if(this.baseParse=null,this.baseTree=i,this.startInner(),this.stoppedAt!=null)for(let r of this.inner)r.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let i=this.baseTree;return this.stoppedAt!=null&&(i=new te(i.type,i.children,i.positions,i.length,i.propValues.concat([[Yf,this.stoppedAt]]))),i}let e=this.inner[this.innerDone],t=e.parse.advance();if(t){this.innerDone++;let i=Object.assign(Object.create(null),e.target.props);i[D.mounted.id]=new ti(t,e.overlay,e.parser,e.bracketed),e.target.props=i}return null}get parsedPos(){if(this.baseParse)return 0;let e=this.input.length;for(let t=this.innerDone;t=this.stoppedAt)l=!1;else if(e.hasNode(r)){if(t){let h=t.mounts.find(c=>c.frag.from<=r.from&&c.frag.to>=r.to&&c.mount.overlay);if(h)for(let c of h.mount.overlay){let f=c.from+h.pos,u=c.to+h.pos;f>=r.from&&u<=r.to&&!t.ranges.some(O=>O.fromf)&&t.ranges.push({from:f,to:u})}}l=!1}else if(i&&(o=Jm(i.ranges,r.from,r.to)))l=o!=2;else if(!r.type.isAnonymous&&(s=this.nest(r,this.input))&&(r.fromnew qe(f.from-r.from,f.to-r.from)):null,!!s.bracketed,r.tree,c.length?c[0].from:r.from)),s.overlay?c.length&&(i={ranges:c,depth:0,prev:i}):l=!1}}else if(t&&(a=t.predicate(r))&&(a===!0&&(a=new qe(r.from,r.to)),a.from=0&&t.ranges[h].to==a.from?t.ranges[h]={from:t.ranges[h].from,to:a.to}:t.ranges.push(a)}if(l&&r.firstChild())t&&t.depth++,i&&i.depth++;else for(;!r.nextSibling();){if(!r.parent())break e;if(t&&!--t.depth){let h=Rf(this.ranges,t.ranges);h.length&&(Xf(h),this.inner.splice(t.index,0,new ys(t.parser,t.parser.startParse(this.input,Mf(t.mounts,h),h),t.ranges.map(c=>new qe(c.from-t.start,c.to-t.start)),t.bracketed,t.target,h[0].from))),t=t.prev}i&&!--i.depth&&(i=i.prev)}}}};function Jm(n,e,t){for(let i of n){if(i.from>=t)break;if(i.to>e)return i.from<=e&&i.to>=t?2:1}return 0}function Zf(n,e,t,i,r,s){if(e=i&&t.enter(i,1,N.IncludeAnonymous|N.IgnoreMounts|N.IgnoreOverlays|N.ExcludeBuffers)))if(t.to<=i)t.next(!1)||(this.done=!0);else break}hasNode(e){if(this.moveTo(e.from),!this.done&&this.cursor.from+this.offset==e.from&&this.cursor.tree)for(let t=this.cursor.tree;;){if(t==e.tree)return!0;if(t.children.length&&t.positions[0]==0&&t.children[0]instanceof te)t=t.children[0];else break}return!1}};function Af(n){let e=n.tree.prop(Yf);return e==null?n.to:Math.min(n.to,e-n.offset)}var _l=class{constructor(e){if(this.fragments=e,this.curTo=0,this.fragI=0,e.length){let t=this.curFrag=e[0];this.curTo=Af(t),this.inner=new Qs(t.tree,-t.offset)}else this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){if(this.fragI++,this.fragI==this.fragments.length)this.curFrag=this.inner=null;else{let e=this.curFrag=this.fragments[this.fragI];this.curTo=Af(e),this.inner=new Qs(e.tree,-e.offset)}}findMounts(e,t){var i;let r=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let s=this.inner.cursor.node;s;s=s.parent){let o=(i=s.tree)===null||i===void 0?void 0:i.prop(D.mounted);if(o&&o.parser==t)for(let l=this.fragI;l=s.to)break;a.tree==this.curFrag.tree&&r.push({frag:a,pos:s.from-a.offset,mount:o})}}}return r}};function Rf(n,e){let t=null,i=e;for(let r=1,s=0;r=l)break;a.to<=o||(t||(i=t=e.slice()),a.froml&&t.splice(s+1,0,new qe(l,a.to))):a.to>l?t[s--]=new qe(l,a.to):t.splice(s--,1))}}return i}function tg(n,e,t,i){let r=0,s=0,o=!1,l=!1,a=-1e9,h=[];for(;;){let c=r==n.length?1e9:o?n[r].to:n[r].from,f=s==e.length?1e9:l?e[s].to:e[s].from;if(o!=l){let u=Math.max(a,t),O=Math.min(c,f,i);unew qe(u.from+i,u.to+i)),f=tg(e,c,a,h);for(let u=0,O=a;;u++){let p=u==f.length,g=p?h:f[u].from;if(g>O&&t.push(new qt(O,g,r.tree,-o,s.from>=O||s.openStart,s.to<=g||s.openEnd)),p)break;O=f[u].to}}else t.push(new qt(a,h,r.tree,-o,s.from>=o||s.openStart,s.to<=l||s.openEnd))}return t}var ig=0,ut=class n{constructor(e,t,i,r){this.name=e,this.set=t,this.base=i,this.modified=r,this.id=ig++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let i=typeof e=="string"?e:"?";if(e instanceof n&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let r=new n(i,[],null,[]);if(r.set.push(r),t)for(let s of t.set)r.set.push(s);return r}static defineModifier(e){let t=new $s(e);return i=>i.modified.indexOf(t)>-1?i:$s.get(i.base||i,i.modified.concat(t).sort((r,s)=>r.id-s.id))}},ng=0,$s=class n{constructor(e){this.name=e,this.instances=[],this.id=ng++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&rg(t,l.modified));if(i)return i;let r=[],s=new ut(e.name,r,e,t);for(let l of t)l.instances.push(s);let o=sg(t);for(let l of e.set)if(!l.modified.length)for(let a of o)r.push(n.get(l,a));return s}};function rg(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}function sg(n){let e=[[]];for(let t=0;ti.length-t.length)}function $t(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let r of t.split(" "))if(r){let s=[],o=2,l=r;for(let f=0;;){if(l=="..."&&f>0&&f+3==r.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+r);if(s.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),f+=u[0].length,f==r.length)break;let O=r[f++];if(f==r.length&&O=="!"){o=0;break}if(O!="/")throw new RangeError("Invalid path: "+r);l=r.slice(f)}let a=s.length-1,h=s[a];if(!h)throw new RangeError("Invalid path: "+r);let c=new Zi(i,o,a>0?s.slice(0,a):null);e[h]=c.sort(e[h])}}return zf.add(e)}var zf=new D({combine(n,e){let t,i,r;for(;n||e;){if(!n||e&&n.depth>=e.depth?(r=e,e=e.next):(r=n,n=n.next),t&&t.mode==r.mode&&!r.context&&!t.context)continue;let s=new Zi(r.tags,r.mode,r.context);t?t.next=s:i=s,t=s}return i}}),Zi=class{constructor(e,t,i,r){this.tags=e,this.mode=t,this.context=i,this.next=r}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=r;for(let l of s)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function og(n,e){let t=null;for(let i of n){let r=i.style(e);r&&(t=t?t+" "+r:r)}return t}function Wf(n,e,t,i=0,r=n.length){let s=new Dl(i,Array.isArray(e)?e:[e],t);s.highlightRange(n.cursor(),i,r,"",s.highlighters),s.flush(r)}var Dl=class{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,r,s){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(s=this.highlighters.filter(O=>!O.scope||O.scope(o)));let h=r,c=lg(e)||Zi.empty,f=og(s,c.tags);if(f&&(h&&(h+=" "),h+=f,c.mode==1&&(r+=(r?" ":"")+f)),this.startSpan(Math.max(t,l),h),c.opaque)return;let u=e.tree&&e.tree.prop(D.mounted);if(u&&u.overlay){let O=e.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(Q=>!Q.scope||Q.scope(u.tree.type)),g=e.firstChild();for(let Q=0,x=l;;Q++){let P=Q=v||!e.nextSibling())););if(!P||v>i)break;x=P.to+l,x>t&&(this.highlightRange(O.cursor(),Math.max(t,P.from+l),Math.min(i,x),"",p),this.startSpan(Math.min(i,x),h))}g&&e.parent()}else if(e.firstChild()){u&&(r="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,r,s),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}};function lg(n){let e=n.type.prop(zf);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}var T=ut.define,xs=T(),ni=T(),qf=T(ni),_f=T(ni),ri=T(),ws=T(ri),Vl=T(ri),kt=T(),Xi=T(kt),xt=T(),wt=T(),Bl=T(),sr=T(Bl),ks=T(),b={comment:xs,lineComment:T(xs),blockComment:T(xs),docComment:T(xs),name:ni,variableName:T(ni),typeName:qf,tagName:T(qf),propertyName:_f,attributeName:T(_f),className:T(ni),labelName:T(ni),namespace:T(ni),macroName:T(ni),literal:ri,string:ws,docString:T(ws),character:T(ws),attributeValue:T(ws),number:Vl,integer:T(Vl),float:T(Vl),bool:T(ri),regexp:T(ri),escape:T(ri),color:T(ri),url:T(ri),keyword:xt,self:T(xt),null:T(xt),atom:T(xt),unit:T(xt),modifier:T(xt),operatorKeyword:T(xt),controlKeyword:T(xt),definitionKeyword:T(xt),moduleKeyword:T(xt),operator:wt,derefOperator:T(wt),arithmeticOperator:T(wt),logicOperator:T(wt),bitwiseOperator:T(wt),compareOperator:T(wt),updateOperator:T(wt),definitionOperator:T(wt),typeOperator:T(wt),controlOperator:T(wt),punctuation:Bl,separator:T(Bl),bracket:sr,angleBracket:T(sr),squareBracket:T(sr),paren:T(sr),brace:T(sr),content:kt,heading:Xi,heading1:T(Xi),heading2:T(Xi),heading3:T(Xi),heading4:T(Xi),heading5:T(Xi),heading6:T(Xi),contentSeparator:T(kt),list:T(kt),quote:T(kt),emphasis:T(kt),strong:T(kt),link:T(kt),monospace:T(kt),strikethrough:T(kt),inserted:T(),deleted:T(),changed:T(),invalid:T(),meta:ks,documentMeta:T(ks),annotation:T(ks),processingInstruction:T(ks),definition:ut.defineModifier("definition"),constant:ut.defineModifier("constant"),function:ut.defineModifier("function"),standard:ut.defineModifier("standard"),local:ut.defineModifier("local"),special:ut.defineModifier("special")};for(let n in b){let e=b[n];e instanceof ut&&(e.name=n)}var Uy=Il([{tag:b.link,class:"tok-link"},{tag:b.heading,class:"tok-heading"},{tag:b.emphasis,class:"tok-emphasis"},{tag:b.strong,class:"tok-strong"},{tag:b.keyword,class:"tok-keyword"},{tag:b.atom,class:"tok-atom"},{tag:b.bool,class:"tok-bool"},{tag:b.url,class:"tok-url"},{tag:b.labelName,class:"tok-labelName"},{tag:b.inserted,class:"tok-inserted"},{tag:b.deleted,class:"tok-deleted"},{tag:b.literal,class:"tok-literal"},{tag:b.string,class:"tok-string"},{tag:b.number,class:"tok-number"},{tag:[b.regexp,b.escape,b.special(b.string)],class:"tok-string2"},{tag:b.variableName,class:"tok-variableName"},{tag:b.local(b.variableName),class:"tok-variableName tok-local"},{tag:b.definition(b.variableName),class:"tok-variableName tok-definition"},{tag:b.special(b.variableName),class:"tok-variableName2"},{tag:b.definition(b.propertyName),class:"tok-propertyName tok-definition"},{tag:b.typeName,class:"tok-typeName"},{tag:b.namespace,class:"tok-namespace"},{tag:b.className,class:"tok-className"},{tag:b.macroName,class:"tok-macroName"},{tag:b.propertyName,class:"tok-propertyName"},{tag:b.operator,class:"tok-operator"},{tag:b.comment,class:"tok-comment"},{tag:b.meta,class:"tok-meta"},{tag:b.invalid,class:"tok-invalid"},{tag:b.punctuation,class:"tok-punctuation"}]);var Ul,Ai=new D;function Ts(n){return j.define({combine:n?e=>e.concat(n):void 0})}var Xs=new D,ze=class{constructor(e,t,i=[],r=""){this.data=e,this.name=r,ue.prototype.hasOwnProperty("tree")||Object.defineProperty(ue.prototype,"tree",{get(){return pe(this)}}),this.parser=t,this.extension=[pn.of(this),ue.languageData.of((s,o,l)=>{let a=Vf(s,o,l),h=a.type.prop(Ai);if(!h)return[];let c=s.facet(h),f=a.type.prop(Xs);if(f){let u=a.resolve(o-a.from,l);for(let O of f)if(O.test(u,s)){let p=s.facet(O.facet);return O.type=="replace"?p:p.concat(c)}}return c})].concat(i)}isActiveAt(e,t,i=-1){return Vf(e,t,i).type.prop(Ai)==this.data}findRegions(e){let t=e.facet(pn);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],r=(s,o)=>{if(s.prop(Ai)==this.data){i.push({from:o,to:o+s.length});return}let l=s.prop(D.mounted);if(l){if(l.tree.prop(Ai)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+s.length});return}else if(l.overlay){let a=i.length;if(r(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;ai.isTop?t:void 0)]}),e.name)}configure(e,t){return new n(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}};function pe(n){let e=n.field(ze.state,!1);return e?e.tree:te.empty}var Hl=class{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let i=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}},or=null,lr=class n{constructor(e,t,i=[],r,s,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=r,this.treeLen=s,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new n(e,t,[],te.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Hl(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=te.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let r=Date.now()+e;e=()=>Date.now()>r}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(qt.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=or;or=this;try{return e()}finally{or=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=Df(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:r,treeLen:s,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,c,f,u)=>a.push({fromA:h,toA:c,fromB:f,toB:u})),i=qt.applyChanges(i,a),r=te.empty,s=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let c=e.mapPos(h.from,1),f=e.mapPos(h.to,-1);ce.from&&(this.fragments=Df(this.fragments,r,s),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Ti{createParse(t,i,r){let s=r[0].from,o=r[r.length-1].to;return{parsedPos:s,advance(){let a=or;if(a){for(let h of r)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new te(we.none,[],[],o-s)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return or}};function Df(n,e,t){return qt.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}var ar=class n{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new n(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=lr.create(e.facet(pn).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new n(i)}};ze.state=Be.define({create:ar.init,update(n,e){for(let t of e.effects)if(t.is(ze.setState))return t.value;return e.startState.facet(pn)!=e.state.facet(pn)?ar.init(e.state):n.apply(e)}});var Gf=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Gf=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});var Nl=typeof navigator<"u"&&(!((Ul=navigator.scheduling)===null||Ul===void 0)&&Ul.isInputPending)?()=>navigator.scheduling.isInputPending():null,ag=rt.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(ze.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(ze.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Gf(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEndr+1e3,a=s.context.work(()=>Nl&&Nl()||Date.now()>o,r+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(s.context.takeTree(),this.view.dispatch({effects:ze.setState.of(new ar(s.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(s.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>nt(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),pn=j.define({combine(n){return n.length?n[0]:null},enables:n=>[ze.state,ag,E.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]}),Pt=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}};var hg=j.define(),gn=j.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function si(n){let e=n.facet(gn);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function cr(n,e){let t="",i=n.tabSize,r=n.facet(gn)[0];if(r==" "){for(;e>=i;)t+=" ",e-=i;r=" "}for(let s=0;s=e?cg(n,t,e):null}var Ri=class{constructor(e,t={}){this.state=e,this.options=t,this.unit=si(e)}lineAt(e,t=1){let i=this.state.doc.lineAt(e),{simulateBreak:r,simulateDoubleBreak:s}=this.options;return r!=null&&r>=i.from&&r<=i.to?s&&r==e?{text:"",from:e}:(t<0?r-1&&(s+=o-this.countColumn(i,i.search(/\S|$/))),s}countColumn(e,t=e.length){return xi(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:r}=this.lineAt(e,t),s=this.options.overrideIndentation;if(s){let o=s(r);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}},Ct=new D;function cg(n,e,t){let i=e.resolveStack(t),r=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(r!=i.node){let s=[];for(let o=r;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)s.push(o);for(let o=s.length-1;o>=0;o--)i={node:s[o],next:i}}return Ff(i,n,t)}function Ff(n,e,t){for(let i=n;i;i=i.next){let r=ug(i.node);if(r)return r(Kl.create(e,t,i))}return 0}function fg(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function ug(n){let e=n.type.prop(Ct);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(D.closedBy))){let r=n.lastChild,s=r&&i.indexOf(r.name)>-1;return o=>Kf(o,!0,1,void 0,s&&!fg(o)?r.from:void 0)}return n.parent==null?dg:null}function dg(){return 0}var Kl=class n extends Ri{constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.context=i}get node(){return this.context.node}static create(e,t,i){return new n(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let i=e.resolve(t.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(Og(i,e))break;t=this.state.doc.lineAt(i.from)}return this.lineIndent(t.from)}continue(){return Ff(this.context.next,this.base,this.pos)}};function Og(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function pg(n){let e=n.node,t=e.childAfter(e.from),i=e.lastChild;if(!t)return null;let r=n.options.simulateBreak,s=n.state.doc.lineAt(t.from),o=r==null||r<=s.from?s.to:Math.min(s.to,r);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(s.text.slice(t.to-s.from))[0].length;return{from:t.from,to:t.to+h}}l=a.to}}function Hf({closing:n,align:e=!0,units:t=1}){return i=>Kf(i,e,t,n)}function Kf(n,e,t,i,r){let s=n.textAfter,o=s.match(/^\s*/)[0].length,l=i&&s.slice(o,o+i.length)==i||r==n.pos+o,a=e?pg(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*t)}var Jf=n=>n.baseIndent;function _t({except:n,units:e=1}={}){return t=>{let i=n&&n.test(t.textAfter);return t.baseIndent+(i?0:e*t.unit)}}var oi=new D;function bn(n){let e=n.firstChild,t=n.lastChild;return e&&e.tol.prop(Ai)==o.data:o?l=>l==o:void 0,this.style=Il(e.map(l=>({tag:l.tag,class:l.class||r(Object.assign({},l,{tag:null}))})),{all:s}).style,this.module=i?new Je(i):null,this.themeType=t.themeType}static define(e,t){return new n(e,t||{})}},Jl=j.define(),eu=j.define({combine(n){return n.length?[n[0]]:null}});function Gl(n){let e=n.facet(Jl);return e.length?e:n.facet(eu)}function tu(n,e){let t=[mg],i;return n instanceof mn&&(n.module&&t.push(E.styleModule.of(n.module)),i=n.themeType),e?.fallback?t.push(eu.of(n)):i?t.push(Jl.computeN([E.darkTheme],r=>r.facet(E.darkTheme)==(i=="dark")?[n]:[])):t.push(Jl.of(n)),t}var ea=class{constructor(e){this.markCache=Object.create(null),this.tree=pe(e.state),this.decorations=this.buildDeco(e,Gl(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=pe(e.state),i=Gl(e.state),r=i!=Gl(e.startState),{viewport:s}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=s.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||r)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=s.to)}buildDeco(e,t){if(!t||!this.tree.length)return K.none;let i=new Nt;for(let{from:r,to:s}of e.visibleRanges)Wf(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=K.mark({class:a})))},r,s);return i.finish()}},mg=Ft.high(rt.fromClass(ea,{decorations:n=>n.decorations})),i1=mn.define([{tag:b.meta,color:"#404740"},{tag:b.link,textDecoration:"underline"},{tag:b.heading,textDecoration:"underline",fontWeight:"bold"},{tag:b.emphasis,fontStyle:"italic"},{tag:b.strong,fontWeight:"bold"},{tag:b.strikethrough,textDecoration:"line-through"},{tag:b.keyword,color:"#708"},{tag:[b.atom,b.bool,b.url,b.contentSeparator,b.labelName],color:"#219"},{tag:[b.literal,b.inserted],color:"#164"},{tag:[b.string,b.deleted],color:"#a11"},{tag:[b.regexp,b.escape,b.special(b.string)],color:"#e40"},{tag:b.definition(b.variableName),color:"#00f"},{tag:b.local(b.variableName),color:"#30a"},{tag:[b.typeName,b.namespace],color:"#085"},{tag:b.className,color:"#167"},{tag:[b.special(b.variableName),b.macroName],color:"#256"},{tag:b.definition(b.propertyName),color:"#00c"},{tag:b.comment,color:"#940"},{tag:b.invalid,color:"#f00"}]);var gg=1e4,bg="()[]{}";var sa=new D;function ta(n,e,t){let i=n.prop(e<0?D.openedBy:D.closedBy);if(i)return i;if(n.name.length==1){let r=t.indexOf(n.name);if(r>-1&&r%2==(e<0?1:0))return[t[r+e]]}return null}function ia(n){let e=n.type.prop(sa);return e?e(n.node):n}function Mi(n,e,t,i={}){let r=i.maxScanDistance||gg,s=i.brackets||bg,o=pe(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=ta(a.type,t,s);if(h&&a.from0?e>=c.from&&ec.from&&e<=c.to))return Sg(n,e,t,a,c,h,s)}}return yg(n,e,t,o,l.type,r,s)}function Sg(n,e,t,i,r,s,o){let l=i.parent,a={from:r.from,to:r.to},h=0,c=l?.cursor();if(c&&(t<0?c.childBefore(i.from):c.childAfter(i.to)))do if(t<0?c.to<=i.from:c.from>=i.to){if(h==0&&s.indexOf(c.type.name)>-1&&c.from0)return null;let h={from:t<0?e-1:e,to:t>0?e+1:e},c=n.doc.iterRange(e,t>0?n.doc.length:0),f=0;for(let u=0;!c.next().done&&u<=s;){let O=c.value;t<0&&(u+=O.length);let p=e+u*t;for(let g=t>0?0:O.length-1,Q=t>0?O.length:-1;g!=Q;g+=t){let x=o.indexOf(O[g]);if(!(x<0||i.resolveInner(p+g,1).type!=r))if(x%2==0==t>0)f++;else{if(f==1)return{start:h,end:{from:p+g,to:p+g+1},matched:x>>1==a>>1};f--}}t>0&&(u+=O.length)}return c.done?{start:h,matched:!1}:null}function Bf(n,e,t,i=0,r=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let s=r;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosi?o.toLowerCase():o,s=this.string.substr(this.pos,e.length);return r(s)==r(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let r=this.string.slice(this.pos).match(e);return r&&r.index>0?null:(r&&t!==!1&&(this.pos+=r[0].length),r)}}current(){return this.string.slice(this.start,this.pos)}};function Qg(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||xg,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||la,mergeTokens:n.mergeTokens!==!1}}function xg(n){if(typeof n!="object")return n;let e={};for(let t in n){let i=n[t];e[t]=i instanceof Array?i.slice():i}return e}var If=new WeakMap,Ps=class n extends ze{constructor(e){let t=Ts(e.languageData),i=Qg(e),r,s=new class extends Ti{createParse(o,l,a){return new na(r,o,l,a)}};super(t,s,[],e.name),this.topNode=vg(t,this),r=this,this.streamParser=i,this.stateAfter=new D({perNode:!0}),this.tokenTable=e.tokenTable?new Cs(i.tokenTable):$g}static define(e){return new n(e)}getIndent(e){let t,{overrideIndentation:i}=e.options;i&&(t=If.get(e.state),t!=null&&t1e4)return null;for(;s=i&&t+e.length<=r&&e.prop(n.stateAfter);if(s)return{state:n.streamParser.copyState(s),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let l=e.children[o],a=t+e.positions[o],h=l instanceof te&&a=e.length)return e;!r&&t==0&&e.type==n.topNode&&(r=!0);for(let s=e.children.length-1;s>=0;s--){let o=e.positions[s],l=e.children[s],a;if(ot&&oa(n,s.tree,0-s.offset,t,l),h;if(a&&a.pos<=i&&(h=iu(n,s.tree,t+s.offset,a.pos+s.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(r?si(r):4),tree:te.empty}}var na=class{constructor(e,t,i,r){this.lang=e,this.input=t,this.fragments=i,this.ranges=r,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=r[r.length-1].to;let s=lr.get(),o=r[0].from,{state:l,tree:a}=wg(e,i,o,this.to,s?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=s.viewport.from&&h.to>=s.viewport.from)&&(this.state=this.lang.streamParser.startState(si(s.state)),s.skipUntilInView(this.parsedPos,s.viewport.from),this.parsedPos=s.viewport.from),this.moveRangeIndex()}advance(){let e=lr.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(t,this.chunkStart+512);for(e&&(i=Math.min(i,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` +`&&(t="");else{let i=t.indexOf(` +`);i>-1&&(t=t.slice(0,i))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),i=e+t.length;for(let r=this.rangeIndex;;){let s=this.ranges[r].to;if(s>=i||(t=t.slice(0,s-(i-t.length)),r++,r==this.ranges.length))break;let o=this.ranges[r].from,l=this.lineAfter(o);t+=l,i=o+l.length}return{line:t,end:i}}skipGapsTo(e,t,i){for(;;){let r=this.ranges[this.rangeIndex].to,s=e+t;if(i>0?r>s:r>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-r}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){r=this.skipGapsTo(t,r,1),t+=r;let l=this.chunk.length;r=this.skipGapsTo(i,r,-1),i+=r,s+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=i:this.chunk.push(e,t,i,s),r}parseLine(e){let{line:t,end:i}=this.nextLine(),r=0,{streamParser:s}=this.lang,o=new vs(t,e?e.state.tabSize:4,e?si(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=nu(s.token,o,this.state);if(l&&(r=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,r)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPose.start)return r}throw new Error("Stream parser failed to advance stream.")}var la=Object.create(null),hr=[we.none],kg=new un(hr),Uf=[],Nf=Object.create(null),ru=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])ru[n]=su(la,e);var Cs=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),ru)}resolve(e){return e?this.table[e]||(this.table[e]=su(this.extra,e)):0}},$g=new Cs(la);function Fl(n,e){Uf.indexOf(n)>-1||(Uf.push(n),console.warn(e))}function su(n,e){let t=[];for(let l of e.split(" ")){let a=[];for(let h of l.split(".")){let c=n[h]||b[h];c?typeof c=="function"?a.length?a=a.map(c):Fl(h,`Modifier ${h} used at start of tag`):a.length?Fl(h,`Tag ${h} used as modifier`):a=Array.isArray(c)?c:[c]:Fl(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),r=i+" "+t.map(l=>l.id),s=Nf[r];if(s)return s.id;let o=Nf[r]=we.define({id:hr.length,name:i,props:[$t({[i]:t})]});return hr.push(o),o.id}function vg(n,e){let t=we.define({id:hr.length,name:"Document",props:[Ai.add(()=>n),Ct.add(()=>i=>e.getIndent(i))],top:!0});return hr.push(t),t}var n1={rtl:K.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:ae.RTL}),ltr:K.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:ae.LTR}),auto:K.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};function aa(n,e){return n.skipToEnd(),e.cur=Zs,"error"}function Pg(n,e){return n.match(/^HTTP\/\d\.\d/)?(e.cur=Cg,"keyword"):n.match(/^[A-Z]+/)&&/[ \t]/.test(n.peek())?(e.cur=Xg,"keyword"):aa(n,e)}function Cg(n,e){var t=n.match(/^\d+/);if(!t)return aa(n,e);e.cur=Tg;var i=Number(t[0]);return i>=100&&i<400?"atom":"error"}function Tg(n,e){return n.skipToEnd(),e.cur=Zs,null}function Xg(n,e){return n.eatWhile(/\S/),e.cur=Zg,"string.special"}function Zg(n,e){return n.match(/^HTTP\/\d\.\d$/)?(e.cur=Zs,"keyword"):aa(n,e)}function Zs(n){return n.sol()&&!n.eat(/[ \t]/)?n.match(/^.*?:/)?"atom":(n.skipToEnd(),"error"):(n.skipToEnd(),"string")}function ou(n){return n.skipToEnd(),null}var fr={name:"http",token:function(n,e){var t=e.cur;return t!=Zs&&t!=ou&&n.eatSpace()?null:t(n,e)},blankLine:function(n){n.cur=ou},startState:function(){return{cur:Pg}}};function As(n){var e=n.statementIndent,t=n.jsonld,i=n.json||t,r=n.typescript,s=n.wordCharacters||/[\w$\xa1-\uffff]/,o=(function(){function d(Ve){return{type:Ve,style:"keyword"}}var m=d("keyword a"),w=d("keyword b"),X=d("keyword c"),M=d("keyword d"),H=d("operator"),oe={type:"atom",style:"atom"};return{if:d("if"),while:m,with:m,else:w,do:w,try:w,finally:w,return:M,break:M,continue:M,new:d("new"),delete:X,void:X,throw:X,debugger:d("debugger"),var:d("var"),const:d("var"),let:d("var"),function:d("function"),catch:d("catch"),for:d("for"),switch:d("switch"),case:d("case"),default:d("default"),in:H,typeof:H,instanceof:H,true:oe,false:oe,null:oe,undefined:oe,NaN:oe,Infinity:oe,this:d("this"),class:d("class"),super:d("atom"),yield:X,export:d("export"),import:d("import"),extends:X,await:X}})(),l=/[+\-*&%=<>!?|~^@]/,a=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function h(d){for(var m=!1,w,X=!1;(w=d.next())!=null;){if(!m){if(w=="/"&&!X)return;w=="["?X=!0:X&&w=="]"&&(X=!1)}m=!m&&w=="\\"}}var c,f;function u(d,m,w){return c=d,f=w,m}function O(d,m){var w=d.next();if(w=='"'||w=="'")return m.tokenize=p(w),m.tokenize(d,m);if(w=="."&&d.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return u("number","number");if(w=="."&&d.match(".."))return u("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(w))return u(w);if(w=="="&&d.eat(">"))return u("=>","operator");if(w=="0"&&d.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return u("number","number");if(/\d/.test(w))return d.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),u("number","number");if(w=="/")return d.eat("*")?(m.tokenize=g,g(d,m)):d.eat("/")?(d.skipToEnd(),u("comment","comment")):GO(d,m,1)?(h(d),d.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),u("regexp","string.special")):(d.eat("="),u("operator","operator",d.current()));if(w=="`")return m.tokenize=Q,Q(d,m);if(w=="#"&&d.peek()=="!")return d.skipToEnd(),u("meta","meta");if(w=="#"&&d.eatWhile(s))return u("variable","property");if(w=="<"&&d.match("!--")||w=="-"&&d.match("->")&&!/\S/.test(d.string.slice(0,d.start)))return d.skipToEnd(),u("comment","comment");if(l.test(w))return(w!=">"||!m.lexical||m.lexical.type!=">")&&(d.eat("=")?(w=="!"||w=="=")&&d.eat("="):/[<>*+\-|&?]/.test(w)&&(d.eat(w),w==">"&&d.eat(w))),w=="?"&&d.eat(".")?u("."):u("operator","operator",d.current());if(s.test(w)){d.eatWhile(s);var X=d.current();if(m.lastType!="."){if(o.propertyIsEnumerable(X)){var M=o[X];return u(M.type,M.style,X)}if(X=="async"&&d.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return u("async","keyword",X)}return u("variable","variable",X)}}function p(d){return function(m,w){var X=!1,M;if(t&&m.peek()=="@"&&m.match(a))return w.tokenize=O,u("jsonld-keyword","meta");for(;(M=m.next())!=null&&!(M==d&&!X);)X=!X&&M=="\\";return X||(w.tokenize=O),u("string","string")}}function g(d,m){for(var w=!1,X;X=d.next();){if(X=="/"&&w){m.tokenize=O;break}w=X=="*"}return u("comment","comment")}function Q(d,m){for(var w=!1,X;(X=d.next())!=null;){if(!w&&(X=="`"||X=="$"&&d.eat("{"))){m.tokenize=O;break}w=!w&&X=="\\"}return u("quasi","string.special",d.current())}var x="([{}])";function P(d,m){m.fatArrowAt&&(m.fatArrowAt=null);var w=d.string.indexOf("=>",d.start);if(!(w<0)){if(r){var X=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(d.string.slice(d.start,w));X&&(w=X.index)}for(var M=0,H=!1,oe=w-1;oe>=0;--oe){var Ve=d.string.charAt(oe),Fe=x.indexOf(Ve);if(Fe>=0&&Fe<3){if(!M){++oe;break}if(--M==0){Ve=="("&&(H=!0);break}}else if(Fe>=3&&Fe<6)++M;else if(s.test(Ve))H=!0;else if(/["'\/`]/.test(Ve))for(;;--oe){if(oe==0)return;var Mn=d.string.charAt(oe-1);if(Mn==Ve&&d.string.charAt(oe-2)!="\\"){oe--;break}}else if(H&&!M){++oe;break}}H&&!M&&(m.fatArrowAt=oe)}}var v={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function W(d,m,w,X,M,H){this.indented=d,this.column=m,this.type=w,this.prev=M,this.info=H,X!=null&&(this.align=X)}function $(d,m){for(var w=d.localVars;w;w=w.next)if(w.name==m)return!0;for(var X=d.context;X;X=X.prev)for(var w=X.vars;w;w=w.next)if(w.name==m)return!0}function Z(d,m,w,X,M){var H=d.cc;for(y.state=d,y.stream=M,y.marked=null,y.cc=H,y.style=m,d.lexical.hasOwnProperty("align")||(d.lexical.align=!0);;){var oe=H.length?H.pop():i?F:ie;if(oe(w,X)){for(;H.length&&H[H.length-1].lex;)H.pop()();return y.marked?y.marked:w=="variable"&&$(d,X)?"variableName.local":m}}}var y={state:null,column:null,marked:null,cc:null};function C(){for(var d=arguments.length-1;d>=0;d--)y.cc.push(arguments[d])}function S(){return C.apply(null,arguments),!0}function J(d,m){for(var w=m;w;w=w.next)if(w.name==d)return!0;return!1}function B(d){var m=y.state;if(y.marked="def",m.context){if(m.lexical.info=="var"&&m.context&&m.context.block){var w=z(d,m.context);if(w!=null){m.context=w;return}}else if(!J(d,m.localVars)){m.localVars=new ee(d,m.localVars);return}}n.globalVars&&!J(d,m.globalVars)&&(m.globalVars=new ee(d,m.globalVars))}function z(d,m){if(m)if(m.block){var w=z(d,m.prev);return w?w==m.prev?m:new I(w,m.vars,!0):null}else return J(d,m.vars)?m:new I(m.prev,new ee(d,m.vars),!1);else return null}function G(d){return d=="public"||d=="private"||d=="protected"||d=="abstract"||d=="readonly"}function I(d,m,w){this.prev=d,this.vars=m,this.block=w}function ee(d,m){this.name=d,this.next=m}var ye=new ee("this",new ee("arguments",null));function Oe(){y.state.context=new I(y.state.context,y.state.localVars,!1),y.state.localVars=ye}function Ze(){y.state.context=new I(y.state.context,y.state.localVars,!0),y.state.localVars=null}Oe.lex=Ze.lex=!0;function ne(){y.state.localVars=y.state.context.vars,y.state.context=y.state.context.prev}ne.lex=!0;function _(d,m){var w=function(){var X=y.state,M=X.indented;if(X.lexical.type=="stat")M=X.lexical.indented;else for(var H=X.lexical;H&&H.type==")"&&H.align;H=H.prev)M=H.indented;X.lexical=new W(M,y.stream.column(),d,null,X.lexical,m)};return w.lex=!0,w}function q(){var d=y.state;d.lexical.prev&&(d.lexical.type==")"&&(d.indented=d.lexical.indented),d.lexical=d.lexical.prev)}q.lex=!0;function V(d){function m(w){return w==d?S():d==";"||w=="}"||w==")"||w=="]"?C():S(m)}return m}function ie(d,m){return d=="var"?S(_("vardef",m),Js,V(";"),q):d=="keyword a"?S(_("form"),Zt,ie,q):d=="keyword b"?S(_("form"),ie,q):d=="keyword d"?y.stream.match(/^\s*$/,!1)?S():S(_("stat"),_i,V(";"),q):d=="debugger"?S(V(";")):d=="{"?S(_("}"),Ze,Tr,q,ne):d==";"?S():d=="if"?(y.state.lexical.info=="else"&&y.state.cc[y.state.cc.length-1]==q&&y.state.cc.pop()(),S(_("form"),Zt,ie,q,Oh)):d=="function"?S(It):d=="for"?S(_("form"),Ze,ph,ie,ne,q):d=="class"||r&&m=="interface"?(y.marked="keyword",S(_("form",d=="class"?d:m),gh,q)):d=="variable"?r&&m=="declare"?(y.marked="keyword",S(ie)):r&&(m=="module"||m=="enum"||m=="type")&&y.stream.match(/^\s*\w/,!1)?(y.marked="keyword",m=="enum"?S(yh):m=="type"?S(mh,V("operator"),se,V(";")):S(_("form"),at,V("{"),_("}"),Tr,q,q)):r&&m=="namespace"?(y.marked="keyword",S(_("form"),F,ie,q)):r&&m=="abstract"?(y.marked="keyword",S(ie)):S(_("stat"),XO):d=="switch"?S(_("form"),Zt,V("{"),_("}","switch"),Ze,Tr,q,q,ne):d=="case"?S(F,V(":")):d=="default"?S(V(":")):d=="catch"?S(_("form"),Oe,Ge,ie,q,ne):d=="export"?S(_("stat"),VO,q):d=="import"?S(_("stat"),DO,q):d=="async"?S(ie):m=="@"?S(F,ie):C(_("stat"),F,V(";"),q)}function Ge(d){if(d=="(")return S(pi,V(")"))}function F(d,m){return Zn(d,m,!1)}function me(d,m){return Zn(d,m,!0)}function Zt(d){return d!="("?C():S(_(")"),_i,V(")"),q)}function Zn(d,m,w){if(y.state.fatArrowAt==y.stream.start){var X=w?fh:ch;if(d=="(")return S(Oe,_(")"),$e(pi,")"),q,V("=>"),X,ne);if(d=="variable")return C(Oe,at,V("=>"),X,ne)}var M=w?zi:di;return v.hasOwnProperty(d)?S(M):d=="function"?S(It,M):d=="class"||r&&m=="interface"?(y.marked="keyword",S(_("form"),WO,q)):d=="keyword c"||d=="async"?S(w?me:F):d=="("?S(_(")"),_i,V(")"),q,M):d=="operator"||d=="spread"?S(w?me:F):d=="["?S(_("]"),IO,q,M):d=="{"?An(Cr,"}",null,M):d=="quasi"?C(Pr,M):d=="new"?S(PO(w)):S()}function _i(d){return d.match(/[;\}\)\],]/)?C():C(F)}function di(d,m){return d==","?S(_i):zi(d,m,!1)}function zi(d,m,w){var X=w==!1?di:zi,M=w==!1?F:me;if(d=="=>")return S(Oe,w?fh:ch,ne);if(d=="operator")return/\+\+|--/.test(m)||r&&m=="!"?S(X):r&&m=="<"&&y.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?S(_(">"),$e(se,">"),q,X):m=="?"?S(F,V(":"),M):S(M);if(d=="quasi")return C(Pr,X);if(d!=";"){if(d=="(")return An(me,")","call",X);if(d==".")return S(ZO,X);if(d=="[")return S(_("]"),_i,V("]"),q,X);if(r&&m=="as")return y.marked="keyword",S(se,X);if(d=="regexp")return y.state.lastType=y.marked="operator",y.stream.backUp(y.stream.pos-y.stream.start-1),S(M)}}function Pr(d,m){return d!="quasi"?C():m.slice(m.length-2)!="${"?S(Pr):S(_i,vO)}function vO(d){if(d=="}")return y.marked="string.special",y.state.tokenize=Q,S(Pr)}function ch(d){return P(y.stream,y.state),C(d=="{"?ie:F)}function fh(d){return P(y.stream,y.state),C(d=="{"?ie:me)}function PO(d){return function(m){return m=="."?S(d?TO:CO):m=="variable"&&r?S(LO,d?zi:di):C(d?me:F)}}function CO(d,m){if(m=="target")return y.marked="keyword",S(di)}function TO(d,m){if(m=="target")return y.marked="keyword",S(zi)}function XO(d){return d==":"?S(q,ie):C(di,V(";"),q)}function ZO(d){if(d=="variable")return y.marked="property",S()}function Cr(d,m){if(d=="async")return y.marked="property",S(Cr);if(d=="variable"||y.style=="keyword"){if(y.marked="property",m=="get"||m=="set")return S(AO);var w;return r&&y.state.fatArrowAt==y.stream.start&&(w=y.stream.match(/^\s*:\s*/,!1))&&(y.state.fatArrowAt=y.stream.pos+w[0].length),S(Oi)}else{if(d=="number"||d=="string")return y.marked=t?"property":y.style+" property",S(Oi);if(d=="jsonld-keyword")return S(Oi);if(r&&G(m))return y.marked="keyword",S(Cr);if(d=="[")return S(F,Wi,V("]"),Oi);if(d=="spread")return S(me,Oi);if(m=="*")return y.marked="keyword",S(Cr);if(d==":")return C(Oi)}}function AO(d){return d!="variable"?C(Oi):(y.marked="property",S(It))}function Oi(d){if(d==":")return S(me);if(d=="(")return C(It)}function $e(d,m,w){function X(M,H){if(w?w.indexOf(M)>-1:M==","){var oe=y.state.lexical;return oe.info=="call"&&(oe.pos=(oe.pos||0)+1),S(function(Ve,Fe){return Ve==m||Fe==m?C():C(d)},X)}return M==m||H==m?S():w&&w.indexOf(";")>-1?C(d):S(V(m))}return function(M,H){return M==m||H==m?S():C(d,X)}}function An(d,m,w){for(var X=3;X"),se);if(d=="quasi")return C(Hs,At)}function jO(d){if(d=="=>")return S(se)}function Fs(d){return d.match(/[\}\)\]]/)?S():d==","||d==";"?S(Fs):C(Rn,Fs)}function Rn(d,m){if(d=="variable"||y.style=="keyword")return y.marked="property",S(Rn);if(m=="?"||d=="number"||d=="string")return S(Rn);if(d==":")return S(se);if(d=="[")return S(V("variable"),RO,V("]"),Rn);if(d=="(")return C(Di,Rn);if(!d.match(/[;\}\)\],]/))return S()}function Hs(d,m){return d!="quasi"?C():m.slice(m.length-2)!="${"?S(Hs):S(se,EO)}function EO(d){if(d=="}")return y.marked="string.special",y.state.tokenize=Q,S(Hs)}function Ks(d,m){return d=="variable"&&y.stream.match(/^\s*[?:]/,!1)||m=="?"?S(Ks):d==":"?S(se):d=="spread"?S(Ks):C(se)}function At(d,m){if(m=="<")return S(_(">"),$e(se,">"),q,At);if(m=="|"||d=="."||m=="&")return S(se);if(d=="[")return S(se,V("]"),At);if(m=="extends"||m=="implements")return y.marked="keyword",S(se);if(m=="?")return S(se,V(":"),se)}function LO(d,m){if(m=="<")return S(_(">"),$e(se,">"),q,At)}function Xr(){return C(se,YO)}function YO(d,m){if(m=="=")return S(se)}function Js(d,m){return m=="enum"?(y.marked="keyword",S(yh)):C(at,Wi,Bt,_O)}function at(d,m){if(r&&G(m))return y.marked="keyword",S(at);if(d=="variable")return B(m),S();if(d=="spread")return S(at);if(d=="[")return An(qO,"]");if(d=="{")return An(dh,"}")}function dh(d,m){return d=="variable"&&!y.stream.match(/^\s*:/,!1)?(B(m),S(Bt)):(d=="variable"&&(y.marked="property"),d=="spread"?S(at):d=="}"?C():d=="["?S(F,V("]"),V(":"),dh):S(V(":"),at,Bt))}function qO(){return C(at,Bt)}function Bt(d,m){if(m=="=")return S(me)}function _O(d){if(d==",")return S(Js)}function Oh(d,m){if(d=="keyword b"&&m=="else")return S(_("form","else"),ie,q)}function ph(d,m){if(m=="await")return S(ph);if(d=="(")return S(_(")"),zO,q)}function zO(d){return d=="var"?S(Js,Vi):d=="variable"?S(Vi):C(Vi)}function Vi(d,m){return d==")"?S():d==";"?S(Vi):m=="in"||m=="of"?(y.marked="keyword",S(F,Vi)):C(F,Vi)}function It(d,m){if(m=="*")return y.marked="keyword",S(It);if(d=="variable")return B(m),S(It);if(d=="(")return S(Oe,_(")"),$e(pi,")"),q,uh,ie,ne);if(r&&m=="<")return S(_(">"),$e(Xr,">"),q,It)}function Di(d,m){if(m=="*")return y.marked="keyword",S(Di);if(d=="variable")return B(m),S(Di);if(d=="(")return S(Oe,_(")"),$e(pi,")"),q,uh,ne);if(r&&m=="<")return S(_(">"),$e(Xr,">"),q,Di)}function mh(d,m){if(d=="keyword"||d=="variable")return y.marked="type",S(mh);if(m=="<")return S(_(">"),$e(Xr,">"),q)}function pi(d,m){return m=="@"&&S(F,pi),d=="spread"?S(pi):r&&G(m)?(y.marked="keyword",S(pi)):r&&d=="this"?S(Wi,Bt):C(at,Wi,Bt)}function WO(d,m){return d=="variable"?gh(d,m):Zr(d,m)}function gh(d,m){if(d=="variable")return B(m),S(Zr)}function Zr(d,m){if(m=="<")return S(_(">"),$e(Xr,">"),q,Zr);if(m=="extends"||m=="implements"||r&&d==",")return m=="implements"&&(y.marked="keyword"),S(r?se:F,Zr);if(d=="{")return S(_("}"),Rt,q)}function Rt(d,m){if(d=="async"||d=="variable"&&(m=="static"||m=="get"||m=="set"||r&&G(m))&&y.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return y.marked="keyword",S(Rt);if(d=="variable"||y.style=="keyword")return y.marked="property",S(Ar,Rt);if(d=="number"||d=="string")return S(Ar,Rt);if(d=="[")return S(F,Wi,V("]"),Ar,Rt);if(m=="*")return y.marked="keyword",S(Rt);if(r&&d=="(")return C(Di,Rt);if(d==";"||d==",")return S(Rt);if(d=="}")return S();if(m=="@")return S(F,Rt)}function Ar(d,m){if(m=="!"||m=="?")return S(Ar);if(d==":")return S(se,Bt);if(m=="=")return S(me);var w=y.state.lexical.prev,X=w&&w.info=="interface";return C(X?Di:It)}function VO(d,m){return m=="*"?(y.marked="keyword",S(eo,V(";"))):m=="default"?(y.marked="keyword",S(F,V(";"))):d=="{"?S($e(bh,"}"),eo,V(";")):C(ie)}function bh(d,m){if(m=="as")return y.marked="keyword",S(V("variable"));if(d=="variable")return C(me,bh)}function DO(d){return d=="string"?S():d=="("?C(F):d=="."?C(di):C(Rr,Sh,eo)}function Rr(d,m){return d=="{"?An(Rr,"}"):(d=="variable"&&B(m),m=="*"&&(y.marked="keyword"),S(BO))}function Sh(d){if(d==",")return S(Rr,Sh)}function BO(d,m){if(m=="as")return y.marked="keyword",S(Rr)}function eo(d,m){if(m=="from")return y.marked="keyword",S(F)}function IO(d){return d=="]"?S():C($e(me,"]"))}function yh(){return C(_("form"),at,V("{"),_("}"),$e(UO,"}"),q,q)}function UO(){return C(at,Bt)}function NO(d,m){return d.lastType=="operator"||d.lastType==","||l.test(m.charAt(0))||/[,.]/.test(m.charAt(0))}function GO(d,m,w){return m.tokenize==O&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(m.lastType)||m.lastType=="quasi"&&/\{\s*$/.test(d.string.slice(0,d.pos-(w||0)))}return{name:n.name,startState:function(d){var m={tokenize:O,lastType:"sof",cc:[],lexical:new W(-d,0,"block",!1),localVars:n.localVars,context:n.localVars&&new I(null,null,!1),indented:0};return n.globalVars&&typeof n.globalVars=="object"&&(m.globalVars=n.globalVars),m},token:function(d,m){if(d.sol()&&(m.lexical.hasOwnProperty("align")||(m.lexical.align=!1),m.indented=d.indentation(),P(d,m)),m.tokenize!=g&&d.eatSpace())return null;var w=m.tokenize(d,m);return c=="comment"?w:(m.lastType=c=="operator"&&(f=="++"||f=="--")?"incdec":c,Z(m,w,c,f,d))},indent:function(d,m,w){if(d.tokenize==g||d.tokenize==Q)return null;if(d.tokenize!=O)return 0;var X=m&&m.charAt(0),M=d.lexical,H;if(!/^\s*else\b/.test(m))for(var oe=d.cc.length-1;oe>=0;--oe){var Ve=d.cc[oe];if(Ve==q)M=M.prev;else if(Ve!=Oh&&Ve!=ne)break}for(;(M.type=="stat"||M.type=="form")&&(X=="}"||(H=d.cc[d.cc.length-1])&&(H==di||H==zi)&&!/^[,\.=+\-*:?[\(]/.test(m));)M=M.prev;e&&M.type==")"&&M.prev.type=="stat"&&(M=M.prev);var Fe=M.type,Mn=X==Fe;return Fe=="vardef"?M.indented+(d.lastType=="operator"||d.lastType==","?M.info.length+1:0):Fe=="form"&&X=="{"?M.indented:Fe=="form"?M.indented+w.unit:Fe=="stat"?M.indented+(NO(d,m)?e||w.unit:0):M.info=="switch"&&!Mn&&n.doubleIndentSwitch!=!1?M.indented+(/^(?:case|default)\b/.test(m)?w.unit:2*w.unit):M.align?M.column+(Mn?0:1):M.indented+(Mn?0:w.unit)},languageData:{indentOnInput:/^\s*(?:case .*?:|default:|\{|\})$/,commentTokens:i?void 0:{line:"//",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]},wordChars:"$"}}}var a1=As({name:"javascript"}),Rs=As({name:"json",json:!0}),h1=As({name:"json",jsonld:!0}),c1=As({name:"typescript",typescript:!0});var fa=class n{constructor(e,t,i,r,s,o,l,a,h,c=0,f){this.p=e,this.stack=t,this.state=i,this.reducePos=r,this.pos=s,this.score=o,this.buffer=l,this.bufferBase=a,this.curContext=h,this.lookAhead=c,this.parent=f}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,i=0){let r=e.parser.context;return new n(e,[],t,i,i,0,[],0,r?new Ms(r,r.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let i=e>>19,r=e&65535,{parser:s}=this.p,o=this.reducePos=2e3&&!(!((t=this.p.parser.nodeSet.types[r])===null||t===void 0)&&t.isAnonymous)&&(h==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=c):this.p.lastBigReductionSizea;)this.stack.pop();this.reduceContext(r,h)}storeNode(e,t,i,r=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&this.buffer[o-4]==0&&this.buffer[o-1]>-1){if(t==i)return;if(this.buffer[o-2]>=t){this.buffer[o-2]=i;return}}}if(!s||this.pos==i)this.buffer.push(e,t,i,r);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let l=!1;for(let a=o;a>0&&this.buffer[a-2]>i;a-=4)if(this.buffer[a-1]>=0){l=!0;break}if(l)for(;o>0&&this.buffer[o-2]>i;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,r>4&&(r-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=i,this.buffer[o+3]=r}}shift(e,t,i,r){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=r;let l=o.stateFlag(s,1);!l&&(r>i||t<=o.maxNode)&&(this.reducePos=r),this.pushState(s,l?i:Math.min(i,this.reducePos)),this.shiftContext(t,i),t<=o.maxNode&&this.buffer.push(t,i,r,4)}else this.pos=r,this.shiftContext(t,i),t<=this.p.parser.maxNode&&this.buffer.push(t,i,r,4)}apply(e,t,i,r){e&65536?this.reduce(e):this.shift(e,t,i,r)}useNode(e,t,i){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.reducePos=this.pos=i+e.length;this.pushState(t,i),this.buffer.push(r,i,s,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(t&&e.buffer[t-4]==0&&(t-=4);t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let i=e.buffer.slice(t),r=e.bufferBase+t;for(;e&&r==e.bufferBase;)e=e.parent;return new n(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,r,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let i=e<=this.p.parser.maxNode;i&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,i?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new ua(this);;){let i=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(i==0)return!1;if((i&65536)==0)return!0;t.reduce(i)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>8||this.stack.length>=120){let r=[];for(let s=0,o;sa&1&&l==o)||r.push(t[s],o)}t=r}let i=[];for(let r=0;r>19,r=t&65535,s=this.stack.length-i*3;if(s<0||e.getGoto(this.stack[s],r,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;t=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],i=(r,s)=>{if(!t.includes(r))return t.push(r),e.allActions(r,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-s;if(l>1){let a=o&65535,h=this.stack.length-l*3;if(h>=0&&e.getGoto(this.stack[h],a,!1)>=0)return l<<19|65536|a}}else{let l=i(o,s+1);if(l!=null)return l}})};return i(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;t0&&this.emitLookAhead()}},Ms=class{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}},ua=class{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,i=e>>19;i==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(i-1)*3;let r=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=r}},da=class n{constructor(e,t,i){this.stack=e,this.pos=t,this.index=i,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new n(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new n(this.stack,this.pos,this.index)}};function ur(n,e=Uint16Array){if(typeof n!="string")return n;let t=null;for(let i=0,r=0;i=92&&o--,o>=34&&o--;let a=o-32;if(a>=46&&(a-=46,l=!0),s+=a,l)break;s*=46}t?t[r++]=s:t=new e(s)}return t}var Sn=class{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}},lu=new Sn,Oa=class{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=lu,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let i=this.range,r=this.rangeIndex,s=this.pos+e;for(;si.to:s>=i.to;){if(r==this.ranges.length-1)return null;let o=this.ranges[++r];s+=o.from-i.to,i=o}return s}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,i,r;if(t>=0&&t=this.chunk2Pos&&il.to&&(this.chunk2=this.chunk2.slice(0,l.to-i)),r=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),r}acceptToken(e,t=0){let i=t?this.resolveOffset(t,-1):this.pos;if(i==null||i=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=lu,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let i="";for(let r of this.ranges){if(r.from>=t)break;r.to>e&&(i+=this.input.read(Math.max(r.from,e),Math.min(r.to,t)))}return i}},li=class{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:i}=t.p;uu(this.data,e,t,this.id,i.data,i.tokenPrecTable)}};li.prototype.contextual=li.prototype.fallback=li.prototype.extend=!1;var ai=class{constructor(e,t,i){this.precTable=t,this.elseToken=i,this.data=typeof e=="string"?ur(e):e}token(e,t){let i=e.pos,r=0;for(;;){let s=e.next<0,o=e.resolveOffset(1,1);if(uu(this.data,e,t,0,this.data,this.precTable),e.token.value>-1)break;if(this.elseToken==null)return;if(s||r++,o==null)break;e.reset(o,e.token)}r&&(e.reset(i,e.token),e.acceptToken(this.elseToken,r))}};ai.prototype.contextual=li.prototype.fallback=li.prototype.extend=!1;var ke=class{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}};function uu(n,e,t,i,r,s){let o=0,l=1<0){let p=n[O];if(a.allows(p)&&(e.token.value==-1||e.token.value==p||Rg(p,e.token.value,r,s))){e.acceptToken(p);break}}let c=e.next,f=0,u=n[o+2];if(e.next<0&&u>f&&n[h+u*3-3]==65535){o=n[h+u*3-1];continue e}for(;f>1,p=h+O+(O<<1),g=n[p],Q=n[p+1]||65536;if(c=Q)f=O+1;else{o=n[p+2],e.advance();continue e}}break}}function au(n,e,t){for(let i=e,r;(r=n[i])!=65535;i++)if(r==t)return i-e;return-1}function Rg(n,e,t,i){let r=au(t,i,e);return r<0||au(t,i,n)e)&&!i.type.isError)return t<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(n.length,Math.max(i.from+1,e+25));if(t<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return t<0?0:n.length}}var pa=class{constructor(e,t){this.fragments=e,this.minRepeat=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.lastRepeat=null,this.lastRepeatPos=-1,this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?hu(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?hu(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=o,null;if(s instanceof te){let l=o>this.lastRepeatPos&&s.type.id>=this.minRepeat;if(o==e||l){let a=o+s.length,h;if(o>=this.safeFrom&&a<=this.safeTo&&(!(h=s.prop(D.lookAhead))||a+h=Math.max(this.safeFrom,e)&&(this.trees.push(s),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+s.length}}},ma=class{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(i=>new Sn)}getActions(e){let t=0,i=null,{parser:r}=e.p,{tokenizers:s}=r,o=r.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let h=0;hf.end+25&&(a=Math.max(f.lookAhead,a)),f.value!=0)){let u=t;if(f.extended>-1&&(t=this.addActions(e,f.extended,f.end,t)),t=this.addActions(e,f.value,f.end,t),!c.extend&&(i=f,t>u))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),!i&&e.pos==this.stream.end&&(i=new Sn,i.value=e.p.parser.eofTerm,i.start=i.end=e.pos,t=this.addActions(e,i.value,i.end,t)),this.mainToken=i,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new Sn,{pos:i,p:r}=e;return t.start=i,t.end=Math.min(i+1,r.stream.end),t.value=i==r.stream.end?r.parser.eofTerm:0,t}updateCachedToken(e,t,i){let r=this.stream.clipPos(i.pos);if(t.token(this.stream.reset(r,e),i),e.value>-1){let{parser:s}=i.p;for(let o=0;o=0&&i.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(r+1)}putAction(e,t,i,r){for(let s=0;se.bufferLength*4?new pa(i,e.minRepeatTerm):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,i=this.stacks=[],r,s;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;ot)i.push(l);else{if(this.advanceStack(l,i,e))continue;{r||(r=[],s=[]),r.push(l);let a=this.tokens.getMainToken(l);s.push(a.value,a.end)}}break}}if(!i.length){let o=r&&Mg(r);if(o)return Ue&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Ue&&r&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&r){let o=this.stoppedAt!=null&&r[0].pos>this.stoppedAt?r[0]:this.runRecovery(r,s,i);if(o)return Ue&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(i.length>o)for(i.sort((l,a)=>a.score-l.score);i.length>o;)i.pop();i.some(l=>l.reducePos>t)&&this.recovering--}else if(i.length>1){e:for(let o=0;o500&&h.buffer.length>500)if((l.score-h.score||l.buffer.length-h.buffer.length)>0)i.splice(a--,1);else{i.splice(o--,1);continue e}}}i.length>12&&(i.sort((o,l)=>l.score-o.score),i.splice(12,i.length-12))}this.minStackPos=i[0].pos;for(let o=1;o-1&&i.length&&(!s||(i.prop(D.contextHash)||0)==o))return e.useNode(i,l,t),i;if(i.children.length==0||i.positions[0]>0)break;let a=i.children[0];if(a instanceof te&&(!r||a.type.id>=this.parser.minRepeatTerm))i=a;else break}return null}advanceStack(e,t,i){let r=e.pos,{parser:s}=this,o=Ue?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&r>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let h=e.reducePos0)return e.reduce(l),Ue&&console.log(o+this.stackID(e)+` (via always-reduce ${s.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let h=0;hr?t.push(p):i.push(p)}return!1}advanceFully(e,t){let i=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>i)return cu(e,t),!0}}runRecovery(e,t,i){let r=null,s=!1;for(let o=0;o ":"";if(l.deadEnd&&(s||(s=!0,l.restart(),Ue&&console.log(c+this.stackID(l)+" (restarted)"),this.advanceFully(l,i))))continue;let f=l.split(),u=c;for(let O=0;O<10&&f.forceReduce()&&(Ue&&console.log(u+this.stackID(f)+" (via force-reduce)"),!this.advanceFully(f,i));O++)Ue&&(u=this.stackID(f)+" -> ");for(let O of l.recoverByInsert(a))Ue&&console.log(c+this.stackID(O)+" (via recover-insert)"),this.advanceFully(O,i);this.stream.end>l.pos?(h==l.pos&&(h++,a=0),l.recoverByDelete(a,h),Ue&&console.log(c+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),cu(l,i)):(!r||r.scoren,yn=class{constructor(e){this.start=e.start,this.shift=e.shift||ca,this.reduce=e.reduce||ca,this.reuse=e.reuse||ca,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}},Tt=class n extends Ti{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let l=0;le.topRules[l][1]),r=[];for(let l=0;l=0)s(c,a,l[h++]);else{let f=l[h+-c];for(let u=-c;u>0;u--)s(l[h++],a,f);h++}}}this.nodeSet=new un(t.map((l,a)=>we.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:r[a],top:i.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=1024;let o=ur(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new li(o,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,i){let r=new ga(this,e,t,i);for(let s of this.wrappers)r=s(r,e,t,i);return r}getGoto(e,t,i=!1){let r=this.goto;if(t>=r[0])return-1;for(let s=r[t+1];;){let o=r[s++],l=o&1,a=r[s++];if(l&&i)return a;for(let h=s+(o>>1);s0}validAction(e,t){return!!this.allActions(e,i=>i==t?!0:null)}allActions(e,t){let i=this.stateSlot(e,4),r=i?t(i):void 0;for(let s=this.stateSlot(e,1);r==null;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=zt(this.data,s+2);else break;r=t(zt(this.data,s+1))}return r}nextStates(e){let t=[];for(let i=this.stateSlot(e,1);;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=zt(this.data,i+2);else break;if((this.data[i+2]&1)==0){let r=this.data[i+1];t.some((s,o)=>o&1&&s==r)||t.push(this.data[i],r)}}return t}configure(e){let t=Object.assign(Object.create(n.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let i=this.topRules[e.top];if(!i)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=i}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(i=>{let r=e.tokenizers.find(s=>s.from==i);return r?r.to:i})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((i,r)=>{let s=e.specializers.find(l=>l.from==i.external);if(!s)return i;let o=Object.assign(Object.assign({},i),{external:s.to});return t.specializers[r]=fu(o),o})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),i=t.map(()=>!1);if(e)for(let s of e.split(" ")){let o=t.indexOf(s);o>=0&&(i[o]=!0)}let r=null;for(let s=0;si)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.scoren.external(t,i)<<1|e}return n.get}var jg=$t({String:b.string,Number:b.number,"True False":b.bool,PropertyName:b.propertyName,Null:b.null,", :":b.separator,"[ ]":b.squareBracket,"{ }":b.brace}),du=Tt.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"\u26A0 JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[jg],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0});var Eg=vt.define({name:"json",parser:du.configure({props:[Ct.add({Object:_t({except:/^\s*\}/}),Array:_t({except:/^\s*\]/})}),oi.add({"Object Array":bn})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function Ou(){return new Pt(Eg)}var Lg=55,Yg=1,qg=56,_g=2,zg=57,Wg=3,pu=4,Vg=5,wa=6,wu=7,ku=8,$u=9,vu=10,Dg=11,Bg=12,Ig=13,Sa=58,Ug=14,Ng=15,mu=59,Pu=21,Gg=23,Cu=24,Fg=25,Qa=27,Tu=28,Hg=29,Kg=32,Jg=35,e0=37,t0=38,i0=0,n0=1,r0={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},s0={dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},gu={dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}};function o0(n){return n==45||n==46||n==58||n>=65&&n<=90||n==95||n>=97&&n<=122||n>=161}var bu=null,Su=null,yu=0;function xa(n,e){let t=n.pos+e;if(yu==t&&Su==n)return bu;let i=n.peek(e),r="";for(;o0(i);)r+=String.fromCharCode(i),i=n.peek(++e);return Su=n,yu=t,bu=r?r.toLowerCase():i==l0||i==a0?void 0:null}var Xu=60,js=62,ka=47,l0=63,a0=33,h0=45;function Qu(n,e){this.name=n,this.parent=e}var c0=[wa,vu,wu,ku,$u],f0=new yn({start:null,shift(n,e,t,i){return c0.indexOf(e)>-1?new Qu(xa(i,1)||"",n):n},reduce(n,e){return e==Pu&&n?n.parent:n},reuse(n,e,t,i){let r=e.type.id;return r==wa||r==e0?new Qu(xa(i,1)||"",n):n},strict:!1}),u0=new ke((n,e)=>{if(n.next!=Xu){n.next<0&&e.context&&n.acceptToken(Sa);return}n.advance();let t=n.next==ka;t&&n.advance();let i=xa(n,0);if(i===void 0)return;if(!i)return n.acceptToken(t?Ng:Ug);let r=e.context?e.context.name:null;if(t){if(i==r)return n.acceptToken(Dg);if(r&&s0[r])return n.acceptToken(Sa,-2);if(e.dialectEnabled(i0))return n.acceptToken(Bg);for(let s=e.context;s;s=s.parent)if(s.name==i)return;n.acceptToken(Ig)}else{if(i=="script")return n.acceptToken(wu);if(i=="style")return n.acceptToken(ku);if(i=="textarea")return n.acceptToken($u);if(r0.hasOwnProperty(i))return n.acceptToken(vu);r&&gu[r]&&gu[r][i]?n.acceptToken(Sa,-1):n.acceptToken(wa)}},{contextual:!0}),d0=new ke(n=>{for(let e=0,t=0;;t++){if(n.next<0){t&&n.acceptToken(mu);break}if(n.next==h0)e++;else if(n.next==js&&e>=2){t>=3&&n.acceptToken(mu,-2);break}else e=0;n.advance()}});function O0(n){for(;n;n=n.parent)if(n.name=="svg"||n.name=="math")return!0;return!1}var p0=new ke((n,e)=>{if(n.next==ka&&n.peek(1)==js){let t=e.dialectEnabled(n0)||O0(e.context);n.acceptToken(t?Vg:pu,2)}else n.next==js&&n.acceptToken(pu,1)});function $a(n,e,t){let i=2+n.length;return new ke(r=>{for(let s=0,o=0,l=0;;l++){if(r.next<0){l&&r.acceptToken(e);break}if(s==0&&r.next==Xu||s==1&&r.next==ka||s>=2&&so?r.acceptToken(e,-o):r.acceptToken(t,-(o-2));break}else if((r.next==10||r.next==13)&&l){r.acceptToken(e,1);break}else s=o=0;r.advance()}})}var m0=$a("script",Lg,Yg),g0=$a("style",qg,_g),b0=$a("textarea",zg,Wg),S0=$t({"Text RawText IncompleteTag IncompleteCloseTag":b.content,"StartTag StartCloseTag SelfClosingEndTag EndTag":b.angleBracket,TagName:b.tagName,"MismatchedCloseTag/TagName":[b.tagName,b.invalid],AttributeName:b.attributeName,"AttributeValue UnquotedAttributeValue":b.attributeValue,Is:b.definitionOperator,"EntityReference CharacterReference":b.character,Comment:b.blockComment,ProcessingInst:b.processingInstruction,DoctypeDecl:b.documentMeta}),Zu=Tt.deserialize({version:14,states:",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[",stateData:",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~",goto:"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp",nodeNames:"\u26A0 StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl",maxTerm:68,context:f0,nodeProps:[["closedBy",-10,1,2,3,7,8,9,10,11,12,13,"EndTag",6,"EndTag SelfClosingEndTag",-4,22,31,34,37,"CloseTag"],["openedBy",4,"StartTag StartCloseTag",5,"StartTag",-4,30,33,36,38,"OpenTag"],["group",-10,14,15,18,19,20,21,40,41,42,43,"Entity",17,"Entity TextContent",-3,29,32,35,"TextContent Entity"],["isolate",-11,22,30,31,33,34,36,37,38,39,42,43,"ltr",-3,27,28,40,""]],propSources:[S0],skippedNodes:[0],repeatNodeCount:9,tokenData:"!]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VP<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!{let h=l.type.id;if(h==Hg)return ya(l,a,t);if(h==Kg)return ya(l,a,i);if(h==Jg)return ya(l,a,r);if(h==Pu&&s.length){let c=l.node,f=c.firstChild,u=f&&xu(f,a),O;if(u){for(let p of s)if(p.tag==u&&(!p.attrs||p.attrs(O||(O=Au(f,a))))){let g=c.lastChild,Q=g.type.id==t0?g.from:c.to;if(Q>f.to)return{parser:p.parser,overlay:[{from:f.to,to:Q}]}}}}if(o&&h==Cu){let c=l.node,f;if(f=c.firstChild){let u=o[a.read(f.from,f.to)];if(u)for(let O of u){if(O.tagName&&O.tagName!=xu(c.parent,a))continue;let p=c.lastChild;if(p.type.id==Qa){let g=p.from+1,Q=p.lastChild,x=p.to-(Q&&Q.isError?0:1);if(x>g)return{parser:O.parser,overlay:[{from:g,to:x}],bracketed:!0}}else if(p.type.id==Tu)return{parser:O.parser,overlay:[{from:p.from,to:p.to}]}}}}return null})}var y0=148,Ru=1,Q0=149,x0=150,Eu=2,w0=151,k0=3,$0=4,v0=152,Lu=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],P0=58,C0=40,Yu=95,T0=91,Es=45,X0=46,Z0=35,A0=37,R0=38,M0=92,j0=10,E0=42;function dr(n){return n>=65&&n<=90||n>=97&&n<=122||n>=161}function Pa(n){return n>=48&&n<=57}function Mu(n){return Pa(n)||n>=97&&n<=102||n>=65&&n<=70}var qu=(n,e,t)=>(i,r)=>{for(let s=!1,o=0,l=0;;l++){let{next:a}=i;if(dr(a)||a==Es||a==Yu||s&&Pa(a))!s&&(a!=Es||l>0)&&(s=!0),o===l&&a==Es&&o++,i.advance();else if(a==M0&&i.peek(1)!=j0){if(i.advance(),Mu(i.next)){do i.advance();while(Mu(i.next));i.next==32&&i.advance()}else i.next>-1&&i.advance();s=!0}else{s&&i.acceptToken(o>=2&&r.canShift(Eu)?e:a==C0?t:n);break}}},L0=new ke(qu(Q0,Eu,x0),{contextual:!0}),Y0=new ke(qu(w0,k0,$0),{contextual:!0}),q0=new ke(n=>{if(Lu.includes(n.peek(-1))){let{next:e}=n;(dr(e)||e==Yu||e==Z0||e==X0||e==E0||e==T0||e==P0&&dr(n.peek(1))||e==Es||e==R0)&&n.acceptToken(y0)}}),_0=new ke(n=>{if(!Lu.includes(n.peek(-1))){let{next:e}=n;if(e==A0&&(n.advance(),n.acceptToken(Ru)),dr(e)){do n.advance();while(dr(n.next)||Pa(n.next));n.acceptToken(Ru)}}});function ju(n){let e=n.length;return(e==4||e==5||e==7||e==9)&&/^#[a-f\d]+$/i.test(n)?v0:-1}var z0=$t({"AtKeyword import charset namespace keyframes media supports font-feature-values":b.definitionKeyword,"from to selector scope MatchFlag":b.keyword,NamespaceName:b.namespace,KeyframeName:b.labelName,KeyframeRangeName:b.operatorKeyword,TagName:b.tagName,ClassName:b.className,PseudoClassName:b.constant(b.className),IdName:b.labelName,"FeatureName PropertyName":b.propertyName,AttributeName:b.attributeName,NumberLiteral:b.number,KeywordQuery:b.keyword,UnaryQueryOp:b.operatorKeyword,"CallTag ValueName FontName":b.atom,VariableName:b.variableName,Callee:b.operatorKeyword,Unit:b.unit,"UniversalSelector NestingSelector":b.definitionOperator,"MatchOp CompareOp":b.compareOperator,"ChildOp SiblingOp, LogicOp":b.logicOperator,BinOp:b.arithmeticOperator,Important:b.modifier,Comment:b.blockComment,ColorLiteral:b.color,"ParenthesizedContent StringLiteral":b.string,":":b.punctuation,PseudoOp:b.derefOperator,"; , |":b.separator,"( )":b.paren,"[ ]":b.squareBracket,"{ }":b.brace}),W0={__proto__:null,lang:44,"nth-child":44,"nth-last-child":44,"nth-of-type":44,"nth-last-of-type":44,dir:44,"host-context":44,if:88,url:158,"url-prefix":158,domain:158,regexp:158},V0={__proto__:null,or:102,and:102,not:112,only:112,layer:212},D0={__proto__:null,selector:118,style:124,layer:208},B0={__proto__:null,"@import":204,"@media":216,"@charset":220,"@namespace":224,"@keyframes":230,"@supports":242,"@scope":246,"@font-feature-values":252},I0={__proto__:null,to:249},_u=Tt.deserialize({version:14,states:"MrQYQdOOO$TQdOOP$[O`OOO%XQaO'#CfOOQP'#Ce'#CeO%`QdO'#CgO%eQ`O'#CgO%jQaO'#FrO&eQdO'#CkO'XQaO'#CcO'cQdO'#CnOOQP'#ES'#ESOOQP'#ER'#ERO'nQdO'#ETO'yQdO'#E[O'yQdO'#E_OOQP'#Fr'#FrO)`QhO'#FQOOQS'#Fq'#FqOOQS'#FT'#FTQYQdOOO)gQdO'#EeO*vQhO'#EkO)gQdO'#EmO*}QdO'#EoO+YQdO'#ErO*[QhO'#ExO+bQdO'#EzO+mQdO'#E}O+rQaO'#CfO+yQ`O'#EbO,OQ`O'#GPO,ZQdO'#GPQOQ`OOP,eO&jO'#CaPOOO)CAa)CAaOOQP'#Ci'#CiOOQP,59R,59RO%`QdO,59ROOQP'#Cm'#CmOOQP,59V,59VO&eQdO,59VO,pQdO,59YOOQP,5:m,5:mO'nQdO,5:oO'yQdO,5:vO'yQdO,5:xO'yQdO,5:yO'yQdO'#F[O,{Q`O,58}O-TQdO'#EaOOQS,58},58}OOQP'#Cq'#CqOOQO'#EP'#EPOOQP,59Y,59YO-[Q`O,59YO-aQ`O,59YO-fQpO'#EUO-qQdO'#EVO-vQ`O'#EVO-{QpO,5:oO.iQaO,5:vO/PQaO,5:yOOQW'#D]'#D]O0OQhO'#DgO0cQhO,5;lO*[QhO'#DeO0pQ`O'#DnO0uQhO'#D{OOQW'#Fx'#FxOOQS,5;l,5;lO0zQ`O'#DhO1PQ`O'#DkOOQS-E9R-E9ROOQ['#Cv'#CvO1UQdO'#CwO1iQdO'#C|O1|QdO'#DPOOQ['#DQ'#DQO2aQ!pO'#DRO4jQ!jO,5;POOQO'#DW'#DWO-aQ`O'#DVO4zQ!nO'#FuO6}Q`O'#DXO7SQ`O'#D|OOQ['#Fu'#FuO7XQhO'#GSO7gQ`O,5;VO7lQ!bO,5;XOOQS'#Eq'#EqO7tQ`O,5;ZO7yQdO,5;ZOOQO'#Et'#EtO8RQ`O,5;^O8WQhO,5;dO'yQdO'#DjOOQS,5;f,5;fO0zQ`O,5;fO8`QdO,5;fOOQS'#Fc'#FcO8hQdO'#FPO7gQ`O,5;iO8pQdO,5:|O9QQdO'#F^O9_Q`O,5mQhO'#DoOOQW,5:Y,5:YOOQW,5:g,5:gOOQW,5:S,5:SO>wQhO,5:VO?cQ!fO'#FvOOQS'#Fv'#FvOOQS'#FV'#FVO@pQdO,59cOOQ[,59c,59cOATQdO,59hOOQ[,59h,59hOAhQdO,59kOOQ[,59k,59kOOQ[,59m,59mO)gQdO,59oOA{QhO'#EgOOQW'#Eg'#EgOBjQ`O1G0kO4sQhO1G0kOOQ[,59q,59qO*[QhO'#DZOOQ[,59s,59sOBoQ#tO,5:hOBzQhO'#F`OCXQ`O,5wQhO'#DmOISQhO'#DsOI[QhO'#DuOIaQ!jO'#F{OOQO'#F{'#F{OIlQ`O'#DxOItQ!bO'#DzOOQO'#Fz'#FzOIyQ`O1G/qOOQS-E9T-E9TOOQ[1G.}1G.}OOQ[1G/S1G/SOOQ[1G/V1G/VOOQ[1G/Z1G/ZOJOQdO,5;ROOQS7+&V7+&VOJTQ`O7+&VOJYQhO'#D[OJbQ`O,59uO*[QhO,59uOOQ[1G0S1G0SOJjQ`O1G0SOJoQhO,5;zOOQO-E9^-E9^OOQS7+&a7+&aOJ}QbO'#DROOQO'#Ew'#EwOK]Q`O'#EvOOQO'#Ev'#EvOKhQ`O'#FaOKpQdO,5;aOOQS,5;a,5;aOOQ[1G/p1G/pOOQS7+&l7+&lO7gQ`O7+&lOK{Q!fO'#F]O)gQdO'#F]OMSQdO7+&SOOQO7+&S7+&SOOQO,5;O,5;OOOQO1G1d1G1dOMgQ!bO<wQhO'#DtOOQO,5:_,5:_O! hQhO,5:aO! pQhO,5:fO)gQdO,5:dOOQW7+%]7+%]OOQO'#Ei'#EiO! wQ`O1G0mOOQS<{AN>{O!$RQ`OAN>{O!$WQaO,5;uOOQO-E9X-E9XO!$bQdO,5;tOOQO-E9W-E9WOOQW<wQhO'#DwOOQO1G/{1G/{O!&UQ!bO1G0QO!&^QdO1G0OOJOQdO'#F_O!&eQ`O7+&XOOQW7+&X7+&XO!&mQ!bO1G/bOOQ[7+${7+${O!&xQhO7+${P!'PQ`O'#FWOOQO,5;|,5;|OOQO-E9`-E9`OOQS1G1g1G1gOOQPG24gG24gO!'UQ`OAN>YO)gQdO1G1_O!'ZQ`O7+'nOOQO1G/z1G/zO!'cQ`O,5:cO!'hQhO7+%lOOQO,5;y,5;yOOQO-E9]-E9]OOQW<^!a!b%Z!b!c?_!c!k%Z!k!lAl!l!u%Z!u!vAl!v!}%Z!}#OA}#O#P%Z#P#QB`#Q#R/w#R#]%Z#]#^Bq#^#g%Z#g#hAl#h#o%Z#o#pGU#p#qGg#q#rHO#r#sHa#s#y%Z#y#z&R#z$f%Z$f$g&R$g#BY%Z#BY#BZ&R#BZ$IS%Z$IS$I_&R$I_$I|%Z$I|$JO&R$JO$JT%Z$JT$JU&R$JU$KV%Z$KV$KW&R$KW&FU%Z&FU&FV&R&FV;'S%Z;'S;=`Hx<%lO%Z`%^SOy%jz;'S%j;'S;=`%{<%lO%j`%oS!r`Oy%jz;'S%j;'S;=`%{<%lO%j`&OP;=`<%l%j~&Wh$`~OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%j~'yh$`~!r`OX%jX^'r^p%jpq'rqy%jz#y%j#y#z'r#z$f%j$f$g'r$g#BY%j#BY#BZ'r#BZ$IS%j$IS$I_'r$I_$I|%j$I|$JO'r$JO$JT%j$JT$JU'r$JU$KV%j$KV$KW'r$KW&FU%j&FU&FV'r&FV;'S%j;'S;=`%{<%lO%jj)jS$uYOy%jz;'S%j;'S;=`%{<%lO%j~)yWOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d<%lO)v~*hOv~~*kRO;'S)v;'S;=`*t;=`O)v~*wXOY)vZr)vrs*cs#O)v#O#P*h#P;'S)v;'S;=`+d;=`<%l)v<%lO)v~+gP;=`<%l)vj+maOy%jz}%j}!O,r!O!Q%j!Q![,r![!c%j!c!},r!}#O%j#O#P.O#P#R%j#R#S,r#S#T%j#T#o,r#o$g%j$g;'S,r;'S;=`/q<%lO,rj,ya$rY!r`Oy%jz}%j}!O,r!O!Q%j!Q![,r![!c%j!c!},r!}#O%j#O#P.O#P#R%j#R#S,r#S#T%j#T#o,r#o$g%j$g;'S,r;'S;=`/q<%lO,rj.TV!r`OY,rYZ%jZy,ryz.jz;'S,r;'S;=`/q<%lO,rY.oX$rY}!O.j!Q![.j!c!}.j#O#P/[#R#S.j#T#o.j$g;'S.j;'S;=`/k<%lO.jY/_SOY.jZ;'S.j;'S;=`/k<%lO.jY/nP;=`<%l.jj/tP;=`<%l,rd/zUOy%jz!_%j!_!`0^!`;'S%j;'S;=`%{<%lO%jd0eS!|S!r`Oy%jz;'S%j;'S;=`%{<%lO%jb0vS^QOy%jz;'S%j;'S;=`%{<%lO%j~1VWOY1SZw1Swx*cx#O1S#O#P1o#P;'S1S;'S;=`2k<%lO1S~1rRO;'S1S;'S;=`1{;=`O1S~2OXOY1SZw1Swx*cx#O1S#O#P1o#P;'S1S;'S;=`2k;=`<%l1S<%lO1S~2nP;=`<%l1Sj2vShYOy%jz;'S%j;'S;=`%{<%lO%j~3XOg~n3`UWQxWOy%jz!_%j!_!`0^!`;'S%j;'S;=`%{<%lO%jj3yWxW#SQOy%jz!O%j!O!P4c!P!Q%j!Q![7h![;'S%j;'S;=`%{<%lO%jj4hU!r`Oy%jz!Q%j!Q![4z![;'S%j;'S;=`%{<%lO%jj5RY!r`$kYOy%jz!Q%j!Q![4z![!g%j!g!h5q!h#X%j#X#Y5q#Y;'S%j;'S;=`%{<%lO%jj5vY!r`Oy%jz{%j{|6f|}%j}!O6f!O!Q%j!Q![6}![;'S%j;'S;=`%{<%lO%jj6kU!r`Oy%jz!Q%j!Q![6}![;'S%j;'S;=`%{<%lO%jj7UU!r`$kYOy%jz!Q%j!Q![6}![;'S%j;'S;=`%{<%lO%jj7o[!r`$kYOy%jz!O%j!O!P4z!P!Q%j!Q![7h![!g%j!g!h5q!h#X%j#X#Y5q#Y;'S%j;'S;=`%{<%lO%jj8jS!eYOy%jz;'S%j;'S;=`%{<%lO%jj8{WxWOy%jz!O%j!O!P4c!P!Q%j!Q![7h![;'S%j;'S;=`%{<%lO%jj9jU`YOy%jz!Q%j!Q![4z![;'S%j;'S;=`%{<%lO%j~:RTxWOy%jz{:b{;'S%j;'S;=`%{<%lO%j~:iS!r`$a~Oy%jz;'S%j;'S;=`%{<%lO%jj:z[$kYOy%jz!O%j!O!P4z!P!Q%j!Q![7h![!g%j!g!h5q!h#X%j#X#Y5q#Y;'S%j;'S;=`%{<%lO%jj;uUcYOy%jz![%j![!]QS!WW!|SOy%jz;'S%j;'S;=`%{<%lO%jj>eV#PQ!WWOy%jz!_%j!_!`=f!`!a>z!a;'S%j;'S;=`%{<%lO%jb?RS#PQ!r`Oy%jz;'S%j;'S;=`%{<%lO%jj?bYOy%jz}%j}!O@Q!O!c%j!c!}@o!}#T%j#T#o@o#o;'S%j;'S;=`%{<%lO%jj@VW!r`Oy%jz!c%j!c!}@o!}#T%j#T#o@o#o;'S%j;'S;=`%{<%lO%jj@v[lY!r`Oy%jz}%j}!O@o!O!Q%j!Q![@o![!c%j!c!}@o!}#T%j#T#o@o#o;'S%j;'S;=`%{<%lO%jhAqS!}WOy%jz;'S%j;'S;=`%{<%lO%jjBSSoYOy%jz;'S%j;'S;=`%{<%lO%jnBeSn^Oy%jz;'S%j;'S;=`%{<%lO%jjBvU!}WOy%jz#a%j#a#bCY#b;'S%j;'S;=`%{<%lO%jbC_U!r`Oy%jz#d%j#d#eCq#e;'S%j;'S;=`%{<%lO%jbCvU!r`Oy%jz#c%j#c#dDY#d;'S%j;'S;=`%{<%lO%jbD_U!r`Oy%jz#f%j#f#gDq#g;'S%j;'S;=`%{<%lO%jbDvU!r`Oy%jz#h%j#h#iEY#i;'S%j;'S;=`%{<%lO%jbE_U!r`Oy%jz#T%j#T#UEq#U;'S%j;'S;=`%{<%lO%jbEvU!r`Oy%jz#b%j#b#cFY#c;'S%j;'S;=`%{<%lO%jbF_U!r`Oy%jz#h%j#h#iFq#i;'S%j;'S;=`%{<%lO%jbFxS$tQ!r`Oy%jz;'S%j;'S;=`%{<%lO%jjGZSrYOy%jz;'S%j;'S;=`%{<%lO%jfGlU$gUOy%jz!_%j!_!`0^!`;'S%j;'S;=`%{<%lO%jjHTSqYOy%jz;'S%j;'S;=`%{<%lO%jfHfU#SQOy%jz!_%j!_!`0^!`;'S%j;'S;=`%{<%lO%j`H{P;=`<%l%Z",tokenizers:[q0,_0,L0,Y0,1,2,3,4,new ai("m~RRYZ[z{a~~g~aO$c~~dP!P!Qg~lO$d~~",28,156)],topRules:{StyleSheet:[0,6],Styles:[1,129]},dynamicPrecedences:{97:1},specialized:[{term:172,get:(n,e)=>ju(n)<<1,external:ju},{term:150,get:n=>W0[n]||-1},{term:151,get:n=>V0[n]||-1},{term:4,get:n=>D0[n]||-1},{term:28,get:n=>B0[n]||-1},{term:149,get:n=>I0[n]||-1}],tokenPrec:2433});var Ca=null;function Ta(){if(!Ca&&typeof document=="object"&&document.body){let{style:n}=document.body,e=[],t=new Set;for(let i in n)i!="cssText"&&i!="cssFloat"&&typeof n[i]=="string"&&(/[A-Z]/.test(i)&&(i=i.replace(/[A-Z]/g,r=>"-"+r.toLowerCase())),t.has(i)||(e.push(i),t.add(i)));Ca=e.sort().map(i=>({type:"property",label:i,apply:i+": "}))}return Ca||[]}var zu=["active","after","any-link","autofill","backdrop","before","checked","cue","default","defined","disabled","empty","enabled","file-selector-button","first","first-child","first-letter","first-line","first-of-type","focus","focus-visible","focus-within","fullscreen","has","host","host-context","hover","in-range","indeterminate","invalid","is","lang","last-child","last-of-type","left","link","marker","modal","not","nth-child","nth-last-child","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","part","placeholder","placeholder-shown","read-only","read-write","required","right","root","scope","selection","slotted","target","target-text","valid","visited","where"].map(n=>({type:"class",label:n})),Wu=["above","absolute","activeborder","additive","activecaption","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","antialiased","appworkspace","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic-abegede-gez","ethiopic-halehame-aa-er","ethiopic-halehame-gez","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","graytext","grid","groove","hand","hard-light","help","hidden","hide","higher","highlight","highlighttext","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","justify","keep-all","landscape","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-hexadecimal","lower-latin","lower-norwegian","lowercase","ltr","luminosity","manipulation","match","matrix","matrix3d","medium","menu","menutext","message-box","middle","min-intrinsic","mix","monospace","move","multiple","multiple_mask_images","multiply","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","opacity","open-quote","optimizeLegibility","optimizeSpeed","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","text","text-bottom","text-top","textarea","textfield","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","to","top","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-latin","uppercase","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"].map(n=>({type:"keyword",label:n})).concat(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"].map(n=>({type:"constant",label:n}))),U0=["a","abbr","address","article","aside","b","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","dd","del","details","dfn","dialog","div","dl","dt","em","figcaption","figure","footer","form","header","hgroup","h1","h2","h3","h4","h5","h6","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","main","meter","nav","ol","output","p","pre","ruby","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","tr","u","ul"].map(n=>({type:"type",label:n})),N0=["@charset","@color-profile","@container","@counter-style","@font-face","@font-feature-values","@font-palette-values","@import","@keyframes","@layer","@media","@namespace","@page","@position-try","@property","@scope","@starting-style","@supports","@view-transition"].map(n=>({type:"keyword",label:n})),Wt=/^(\w[\w-]*|-\w[\w-]*|)$/,G0=/^-(-[\w-]*)?$/;function F0(n,e){var t;if((n.name=="("||n.type.isError)&&(n=n.parent||n),n.name!="ArgList")return!1;let i=(t=n.parent)===null||t===void 0?void 0:t.firstChild;return i?.name!="Callee"?!1:e.sliceString(i.from,i.to)=="var"}var Vu=new On,H0=["Declaration"];function K0(n){for(let e=n;;){if(e.type.isTop)return e;if(!(e=e.parent))return n}}function Du(n,e,t){if(e.to-e.from>4096){let i=Vu.get(e);if(i)return i;let r=[],s=new Set,o=e.cursor(N.IncludeAnonymous);if(o.firstChild())do for(let l of Du(n,o.node,t))s.has(l.label)||(s.add(l.label),r.push(l));while(o.nextSibling());return Vu.set(e,r),r}else{let i=[],r=new Set;return e.cursor().iterate(s=>{var o;if(t(s)&&s.matchContext(H0)&&((o=s.node.nextSibling)===null||o===void 0?void 0:o.name)==":"){let l=n.sliceString(s.from,s.to);r.has(l)||(r.add(l),i.push({label:l,type:"variable"}))}}),i}}var J0=n=>e=>{let{state:t,pos:i}=e,r=pe(t).resolveInner(i,-1),s=r.type.isError&&r.from==r.to-1&&t.doc.sliceString(r.from,r.to)=="-";if(r.name=="PropertyName"||(s||r.name=="TagName")&&/^(Block|Styles)$/.test(r.resolve(r.to).name))return{from:r.from,options:Ta(),validFor:Wt};if(r.name=="ValueName")return{from:r.from,options:Wu,validFor:Wt};if(r.name=="PseudoClassName")return{from:r.from,options:zu,validFor:Wt};if(n(r)||(e.explicit||s)&&F0(r,t.doc))return{from:n(r)||s?r.from:i,options:Du(t.doc,K0(r),n),validFor:G0};if(r.name=="TagName"){for(let{parent:a}=r;a;a=a.parent)if(a.name=="Block")return{from:r.from,options:Ta(),validFor:Wt};return{from:r.from,options:U0,validFor:Wt}}if(r.name=="AtKeyword")return{from:r.from,options:N0,validFor:Wt};if(!e.explicit)return null;let o=r.resolve(i),l=o.childBefore(i);return l&&l.name==":"&&o.name=="PseudoClassSelector"?{from:i,options:zu,validFor:Wt}:l&&l.name==":"&&o.name=="Declaration"||o.name=="ArgList"?{from:i,options:Wu,validFor:Wt}:o.name=="Block"||o.name=="Styles"?{from:i,options:Ta(),validFor:Wt}:null},eb=J0(n=>n.name=="VariableName"),Or=vt.define({name:"css",parser:_u.configure({props:[Ct.add({Declaration:_t()}),oi.add({"Block KeyframeList":bn})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"}},indentOnInput:/^\s*\}$/,wordChars:"-"}});function Bu(){return new Pt(Or,Or.data.of({autocomplete:eb}))}var tb=317,ib=318,Iu=1,nb=2,rb=3,sb=4,ob=319,lb=321,ab=322,hb=5,cb=6,fb=0,Za=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],Uu=125,ub=59,Aa=47,db=42,Ob=43,pb=45,mb=60,gb=44,bb=63,Sb=46,yb=91,Qb=new yn({start:!1,shift(n,e){return e==hb||e==cb||e==lb?n:e==ab},strict:!1}),xb=new ke((n,e)=>{let{next:t}=n;(t==Uu||t==-1||e.context)&&n.acceptToken(ob)},{contextual:!0,fallback:!0}),wb=new ke((n,e)=>{let{next:t}=n,i;Za.indexOf(t)>-1||t==Aa&&((i=n.peek(1))==Aa||i==db)||t!=Uu&&t!=ub&&t!=-1&&!e.context&&n.acceptToken(tb)},{contextual:!0}),kb=new ke((n,e)=>{n.next==yb&&!e.context&&n.acceptToken(ib)},{contextual:!0}),$b=new ke((n,e)=>{let{next:t}=n;if(t==Ob||t==pb){if(n.advance(),t==n.next){n.advance();let i=!e.context&&e.canShift(Iu);n.acceptToken(i?Iu:nb)}}else t==bb&&n.peek(1)==Sb&&(n.advance(),n.advance(),(n.next<48||n.next>57)&&n.acceptToken(rb))},{contextual:!0});function Xa(n,e){return n>=65&&n<=90||n>=97&&n<=122||n==95||n>=192||!e&&n>=48&&n<=57}var vb=new ke((n,e)=>{if(n.next!=mb||!e.dialectEnabled(fb)||(n.advance(),n.next==Aa))return;let t=0;for(;Za.indexOf(n.next)>-1;)n.advance(),t++;if(Xa(n.next,!0)){for(n.advance(),t++;Xa(n.next,!1);)n.advance(),t++;for(;Za.indexOf(n.next)>-1;)n.advance(),t++;if(n.next==gb)return;for(let i=0;;i++){if(i==7){if(!Xa(n.next,!0))return;break}if(n.next!="extends".charCodeAt(i))break;n.advance(),t++}}n.acceptToken(sb,-t)}),Pb=$t({"get set async static":b.modifier,"for while do if else switch try catch finally return throw break continue default case defer":b.controlKeyword,"in of await yield void typeof delete instanceof as satisfies":b.operatorKeyword,"let var const using function class extends":b.definitionKeyword,"import export from":b.moduleKeyword,"with debugger new":b.keyword,TemplateString:b.special(b.string),super:b.atom,BooleanLiteral:b.bool,this:b.self,null:b.null,Star:b.modifier,VariableName:b.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":b.function(b.variableName),VariableDefinition:b.definition(b.variableName),Label:b.labelName,PropertyName:b.propertyName,PrivatePropertyName:b.special(b.propertyName),"CallExpression/MemberExpression/PropertyName":b.function(b.propertyName),"FunctionDeclaration/VariableDefinition":b.function(b.definition(b.variableName)),"ClassDeclaration/VariableDefinition":b.definition(b.className),"NewExpression/VariableName":b.className,PropertyDefinition:b.definition(b.propertyName),PrivatePropertyDefinition:b.definition(b.special(b.propertyName)),UpdateOp:b.updateOperator,"LineComment Hashbang":b.lineComment,BlockComment:b.blockComment,Number:b.number,String:b.string,Escape:b.escape,ArithOp:b.arithmeticOperator,LogicOp:b.logicOperator,BitOp:b.bitwiseOperator,CompareOp:b.compareOperator,RegExp:b.regexp,Equals:b.definitionOperator,Arrow:b.function(b.punctuation),": Spread":b.punctuation,"( )":b.paren,"[ ]":b.squareBracket,"{ }":b.brace,"InterpolationStart InterpolationEnd":b.special(b.brace),".":b.derefOperator,", ;":b.separator,"@":b.meta,TypeName:b.typeName,TypeDefinition:b.definition(b.typeName),"type enum interface implements namespace module declare":b.definitionKeyword,"abstract global Privacy readonly override":b.modifier,"is keyof unique infer asserts":b.operatorKeyword,JSXAttributeValue:b.attributeValue,JSXText:b.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":b.angleBracket,"JSXIdentifier JSXNameSpacedName":b.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":b.attributeName,"JSXBuiltin/JSXIdentifier":b.standard(b.tagName)}),Cb={__proto__:null,export:20,as:25,from:33,default:36,async:41,function:42,in:52,out:55,const:56,extends:60,this:64,true:72,false:72,null:84,void:88,typeof:92,super:108,new:142,delete:154,yield:163,await:167,class:172,public:237,private:237,protected:237,readonly:239,instanceof:258,satisfies:261,import:294,keyof:351,unique:355,infer:361,asserts:397,is:399,abstract:419,implements:421,type:423,let:426,var:428,using:431,interface:437,enum:441,namespace:447,module:449,declare:453,global:457,defer:473,for:478,of:487,while:490,with:494,do:498,if:502,else:504,switch:508,case:514,try:520,catch:524,finally:528,return:532,throw:536,break:540,continue:544,debugger:548},Tb={__proto__:null,async:129,get:131,set:133,declare:195,public:197,private:197,protected:197,static:199,abstract:201,override:203,readonly:209,accessor:211,new:403},Xb={__proto__:null,"<":193},Nu=Tt.deserialize({version:14,states:"$GSQ%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Im'#ImO1XQ`O'#GtO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JsO6[Q!0MxO'#JtO6uQ`O'#F^O6zQ,UO'#FuOOQ!0Lf'#Fg'#FgO7VO7dO'#FgO9XQMhO'#F}O9`Q`O'#F|OOQ!0Lf'#Jt'#JtOOQ!0Lb'#Js'#JsO9eQ`O'#GxOOQ['#K`'#K`O9pQ`O'#IZO9uQ!0LrO'#I[OOQ['#Ja'#JaOOQ['#I`'#I`Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GtO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EzO;hQMhO'#FfO;xQ`O'#GtOOQO'#Ka'#KaO;}Q`O'#KaO<]Q`O'#G|O<]Q`O'#G}O<]Q`O'#HPO9kQ`O'#HSO=SQ`O'#HVO>kQ`O'#CeO>{Q`O'#HdO?TQ`O'#HjO?TQ`O'#HlO`QlO'#HnO?TQ`O'#HpO?TQ`O'#HsO?YQ`O'#HyO?_Q!0LsO'#IPO%[QlO'#IRO?jQ!0LsO'#ITO?uQ!0LsO'#IVO9uQ!0LrO'#IXO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FfOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jw'#JwO%[QlO'#JwOOQO'#Jz'#JzOOQO'#Ii'#IiOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#KO'#KOOC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jy'#JyODlQpO'#JzOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CEO)CEOOOOO'#Ia'#IaOFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ib'#IbOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Id'#IdOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IeOGyQ`O'#JuOIxQ!fO'#JuO+}QlO'#JuOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KUOKPQ`O'#KTOKPQ`O'#KTOKXQ`O,5;^OK^Q`O'#KSOOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KRONtQ`O'#KQO9eQ`O'#KQO! YQ`O'#KQO! bQ`O,5;]O! gQ`O'#KQO!#lQ!fO'#JtOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#J{'#J{OOQO-EuOOQ['#Ji'#JiOOQ[,5>v,5>vOOQ[-E<^-E<^O!OO!LOQ`O,5>OO`QlO,5>UO`QlO,5>WO!LTQ`O,5>YO`QlO,5>[O!LYQ`O,5>_O!L_QlO,5>eOOQ[,5>k,5>kO%[QlO,5>kO9uQ!0LrO,5>mOOQ[,5>o,5>oO#!iQ`O,5>oOOQ[,5>q,5>qO#!iQ`O,5>qOOQ[,5>s,5>sO##VQpO'#D_O%[QlO'#JwO##aQpO'#JwO##{QpO'#DmO#$^QpO'#DmO#&oQlO'#DmO#&vQ`O'#JvO#'OQ`O,5:WO#'TQ`O'#EtO#'`Q`O'#EtO#'eQ`O'#KVO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CZQpO,5;YO!CcQMhO,5;YO:dQMhO,5;YO#(`Q`O,5@cO#(eQ07dO,5:sOOQO-EQO$6lQ`O,5>QOOQ[1G3j1G3jO`QlO1G3jOOQ[1G3p1G3pOOQ[1G3r1G3rO?TQ`O1G3tO$6qQlO1G3vO$:uQlO'#HuOOQ[1G3y1G3yO$;SQ`O'#H{O?YQ`O'#H}OOQ[1G4P1G4PO$;[QlO1G4PO9uQ!0LrO1G4VOOQ[1G4X1G4XOOQ!0Lb'#G`'#G`O9uQ!0LrO1G4ZO9uQ!0LrO1G4]O$?cQ`O,5@cO9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CZQpO,5:XO$?hQ?MtO,5:XOOQO,5;`,5;`O$?rQpO'#IfO$@YQ`O,5@bOOQ!0Lf1G/r1G/rO!)[QlO,5;`O$@bQpO'#IlO$@lQ`O,5@qOOQ!0Lb1G0y1G0yO#$^QpO,5:XOOQO'#Ih'#IhO$@tQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CZQpO1G0tO!CcQMhO1G0tOOQ!0Lb1G5}1G5}O!COQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@{Q!0LrO1G0mO$AWQ!0LrO1G0mO!CZQpO1G0^ODWQpO1G0^O$AfQ!0LrO1G0mOOQO1G0^1G0^O$AzQ!0MxO1G0mPOOO-E<]-E<]POOO1G.h1G.hOOOO1G/i1G/iO$BUQ!bO,5WQ`O,5AOO%>`QpO,5AOOOQ!0Lb1G3d1G3dOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>kQ`O7+$VO%[QlO1G6mO%[QlO1G6nO%>pQ!0LrO1G6mO%>zQlO1G3lO%?RQ`O1G3lO%?WQlO1G3lOOQ[7+)U7+)UO9uQ!0LrO7+)`O`QlO7+)bOOQ['#Ki'#KiOOQ['#JT'#JTO%?_QlO,5>aOOQ[,5>a,5>aO%[QlO'#HvO%?lQ`O'#HxOOQ[,5>g,5>gO9eQ`O,5>gOOQ[,5>i,5>iOOQ[7+)k7+)kOOQ[7+)q7+)qOOQ[7+)u7+)uOOQ[7+)w7+)wO%?qQpO1G5}O%@]Q`O1G0zOOQO1G/s1G/sO%@hQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?Q,5?QOOQO-EXQ`O1G6jO9uQ!0LrO<aQ`O7+,XO&>fQ`O7+,YO%[QlO7+,XO%[QlO7+,YOOQ[7+)W7+)WO&>kQ`O7+)WO&>pQlO7+)WO&>wQ`O7+)WOOQ[<|Q`O,5>bOOQ[,5>d,5>dO&?RQ`O1G4RO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&?WQ?MtO1G6[O?YQ`O7+%_OOQ!0Lf<WO!l$xO#k<{O$X%`O$uSOe!iOpkOrQO(U)^O(WTO(ZUO(bVO(p[O~O!]$_Oa$ra'{$ra'x$ra!k$ra!Y$ra!_$ra%j$ra!g$ra~Ol)eO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#k%cO$X%`O$u%^O$w%_O$z%aO(U(wO(WTO(ZUO(b$uO(z$}O({%PO~Og(qP~P!,TO!Q)jO!g)iO!_$_X$[$_X$^$_X$`$_X$g$_X~O!g)iO!_(|X$[(|X$^(|X$`(|X$g(|X~O!Q)jO~P!.^O!Q)jO!_(|X$[(|X$^(|X$`(|X$g(|X~O!_)lO$[)pO$^)kO$`)kO$g)qO~O![)tO~P!)[O$^$hO$`$gO$g)xO~On${X!Q${X#S${X'z${X(z${X({${X~OgmXg${XnmX!]mX#`mX~P!0SOx)zO(c){O(d)}O~On*WO!Q*PO'z*QO(z$}O({%PO~Og*OO~P!1WOg*XO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!OWO!l$xO#k<{O$X%`O$uWO!l$xO#k<{O$X%`O$uSOe!iOpkOrQO(WTO(ZUO(bVO(p[O~O(U=RO~P#$oO!]-^O!^(jX~O!^-`O~O#`-aO!]#hX!^#hX~O!g-WO~O!]-bO!^(yX~O!^-dO~O!c-eO!d-eO(V!lO~P#$^O!^-hO~P'_On-kO!_'aO~O!Y-pO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(V!{a(W!{a(Z!{a(f!{a(p!{a~P!#vO!p-uO#`-sO~PChO!c-wO!d-wO(V!lO~PDWOa%nO#`-sO'{%nO~Oa%nO!g#vO#`-sO'{%nO~Oa%nO!g#vO!p-uO#`-sO'{%nO(s'qO~O(Q'yO(R'yO(S-|O~Ov-}O~O!Y'Xa!]'Xa~P!:tO![.RO!Y'XX!]'XX~P%[O!](WO!Y(ia~O!Y(ia~PHRO!](_O!Y(wa~O!S%hO![.VO!_%iO(U%gO!Y'_X!]'_X~O#`.XO!](ua!k(uaa(ua'{(ua~O!g#vO~P#,wO!](kO!k(ta~O!S%hO!_%iO#k.]O(U%gO~Op.bO!S%hO![._O!_%iO!|]O#j.aO#k._O(U%gO!]'bX!k'bX~OR.fO!l#xO~Oh%VOn.iO!_'aO%j.hO~Oa#ci!]#ci'{#ci'x#ci!Y#ci!k#civ#ci!_#ci%j#ci!g#ci~P!:tOn>^O!Q*PO'z*QO(z$}O({%PO~O#l#_aa#_a#`#_a'{#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#l(aXP(aXR(aX[(aXa(aXj(aXr(aX!S(aX!l(aX!p(aX#R(aX#o(aX#p(aX#q(aX#r(aX#s(aX#t(aX#u(aX#v(aX#w(aX#y(aX#{(aX#|(aX'{(aX(b(aX(s(aX!k(aX!Y(aX'x(aXv(aX!_(aX%j(aX!g(aX~P!6kO!].vO!k(lX~P!:tO!k.yO~O!Y.{O~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(bVO[#nia#nij#nir#ni!]#ni#R#ni#p#ni#q#ni#r#ni#s#ni#t#ni#u#ni#v#ni#w#ni#y#ni#{#ni#|#ni'{#ni(s#ni(z#ni({#ni'x#ni!Y#ni!k#niv#ni!_#ni%j#ni!g#ni~O#o#ni~P#3cO#o$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#o$OO#p$PO#q$PO#r$PO(bVO[#nia#nij#ni!]#ni#R#ni#t#ni#u#ni#v#ni#w#ni#y#ni#{#ni#|#ni'{#ni(s#ni(z#ni({#ni'x#ni!Y#ni!k#niv#ni!_#ni%j#ni!g#ni~O#s#ni~P#6QO#s$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#o$OO#p$PO#q$PO#r$PO#s$QO#t$RO#u$RO#v$bO(bVOa#ni!]#ni#y#ni#{#ni#|#ni'{#ni(s#ni(z#ni({#ni'x#ni!Y#ni!k#niv#ni!_#ni%j#ni!g#ni~O#w#ni~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#o$OO#p$PO#q$PO#r$PO#s$QO#t$RO#u$RO#v$bO#w$SO(bVO({#}Oa#ni!]#ni#{#ni#|#ni'{#ni(s#ni(z#ni'x#ni!Y#ni!k#niv#ni!_#ni%j#ni!g#ni~O#y$UO~P#;VO#y#ni~P#;VO#w$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#o$OO#p$PO#q$PO#r$PO#s$QO#t$RO#u$RO#v$bO#w$SO#y$UO(bVO(z#|O({#}Oa#ni!]#ni#|#ni'{#ni(s#ni'x#ni!Y#ni!k#niv#ni!_#ni%j#ni!g#ni~O#{#ni~P#={O#{$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#lfX#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#w]X#y]X#{]X#|]X$R]X(b]X(s]X(z]X({]X!]]X!^]X~O$P]X~P#@jOP$[OR#zO[^O!Q*PO'z*QO(z$}O({%POP#niR#ni!S#ni!l#ni!p#ni#o#ni#p#ni#q#ni#r#ni(b#ni~P#EyO!]/ROg(qX~P!1WOg/TO~Oa$Qi!]$Qi'{$Qi'x$Qi!Y$Qi!k$Qiv$Qi!_$Qi%j$Qi!g$Qi~P!:tO$^/UO$`/UO~O$^/VO$`/VO~O!g)iO#`/WO!_$dX$[$dX$^$dX$`$dX$g$dX~O![/XO~O!_)lO$[/ZO$^)kO$`)kO$g/[O~O!]WO!l$xO#k<{O$X%`O$u_O!Q*PO'z*QO(z$}O({%POP#niR#ni!S#ni!l#ni!p#ni#o#ni#p#ni#q#ni#r#ni(b#ni~P&,`O#S$dOP(aXR(aX[(aXj(aXn(aXr(aX!Q(aX!S(aX!l(aX!p(aX#R(aX#o(aX#p(aX#q(aX#r(aX#s(aX#t(aX#u(aX#v(aX#w(aX#y(aX#{(aX#|(aX$P(aX'z(aX(b(aX(s(aX(z(aX({(aX!](aX!^(aX~O$P$Qi!]$Qi!^$Qi~P#BwO$P!ri!^!ri~P$+}Og'^a!]'^a~P!1WO!^7pO~O!]'ea!^'ea~P#BwO!Y7qO~P#/sO!g#vO(s'qO!]'fa!k'fa~O!]/rO!k)Pi~O!]/rO!g#vO!k)Pi~Og$}q!]$}q#`$}q$P$}q~P!1WO!Y'ha!]'ha~P#/sO!g7xO~O!]/{O!Y)Qi~P#/sO!]/{O!Y)Qi~O!Y7{O~Oh%VOr8QO!l%eO(s'qO~Oj8SO!g#vO~Or8VO!g#vO(s'qO~O!Q*PO'z*QO({%POn'ka(z'ka!]'ka#`'ka~Og'ka$P'ka~P&5aO!Q*PO'z*QOn'ma(z'ma({'ma!]'ma#`'ma~Og'ma$P'ma~P&6SOg(`q!](`q~P!1WO#`8XOg(`q!](`q~P!1WO!Y8YO~Og%Pq!]%Pq#`%Pq$P%Pq~P!1WOa$py!]$py'{$py'x$py!Y$py!k$pyv$py!_$py%j$py!g$py~P!:tO!g6tO~O!]5^O!_)Ra~O!_'aOP$UaR$Ua[$Uaj$Uar$Ua!Q$Ua!S$Ua!]$Ua!l$Ua!p$Ua#R$Ua#o$Ua#p$Ua#q$Ua#r$Ua#s$Ua#t$Ua#u$Ua#v$Ua#w$Ua#y$Ua#{$Ua#|$Ua(b$Ua(s$Ua(z$Ua({$Ua~O%j7YO~P&8tO%_8^Oa%]i!_%]i'{%]i!]%]i~Oa#cy!]#cy'{#cy'x#cy!Y#cy!k#cyv#cy!_#cy%j#cy!g#cy~P!:tO[8`O~Ob8bO(U+sO(WTO(ZUO~O!]1VO!^)Yi~O`8fO~O(f(}O!]'qX!^'qX~O!]5wO!^)Va~O!^8pO~P%;sO(p!sO~P$&YO#[8qO~O!_1qO~O!_1qO%j8sO~On8vO!_1qO%j8sO~O[8{O!]'ta!^'ta~O!]1|O!^)Wi~O!k9PO~O!k9QO~O!k9TO~O!k9TO~P%[Oa9VO~O!g9WO~O!k9XO~O!](xi!^(xi~P#BwOa%nO#`9aO'{%nO~O!](uy!k(uya(uy'{(uy~P!:tO!](kO!k(ty~O%j9dO~P&8tO!_'aO%j9dO~O#l$}qP$}qR$}q[$}qa$}qj$}qr$}q!S$}q!]$}q!l$}q!p$}q#R$}q#o$}q#p$}q#q$}q#r$}q#s$}q#t$}q#u$}q#v$}q#w$}q#y$}q#{$}q#|$}q'{$}q(b$}q(s$}q!k$}q!Y$}q'x$}q#`$}qv$}q!_$}q%j$}q!g$}q~P#/sO#l'kaP'kaR'ka['kaa'kaj'kar'ka!S'ka!l'ka!p'ka#R'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#w'ka#y'ka#{'ka#|'ka'{'ka(b'ka(s'ka!k'ka!Y'ka'x'kav'ka!_'ka%j'ka!g'ka~P&5aO#l'maP'maR'ma['maa'maj'mar'ma!S'ma!l'ma!p'ma#R'ma#o'ma#p'ma#q'ma#r'ma#s'ma#t'ma#u'ma#v'ma#w'ma#y'ma#{'ma#|'ma'{'ma(b'ma(s'ma!k'ma!Y'ma'x'mav'ma!_'ma%j'ma!g'ma~P&6SO#l%PqP%PqR%Pq[%Pqa%Pqj%Pqr%Pq!S%Pq!]%Pq!l%Pq!p%Pq#R%Pq#o%Pq#p%Pq#q%Pq#r%Pq#s%Pq#t%Pq#u%Pq#v%Pq#w%Pq#y%Pq#{%Pq#|%Pq'{%Pq(b%Pq(s%Pq!k%Pq!Y%Pq'x%Pq#`%Pqv%Pq!_%Pq%j%Pq!g%Pq~P#/sO!]'Zi!k'Zi~P!:tO$P#cq!]#cq!^#cq~P#BwO(z$}OP%baR%ba[%baj%bar%ba!S%ba!l%ba!p%ba#R%ba#o%ba#p%ba#q%ba#r%ba#s%ba#t%ba#u%ba#v%ba#w%ba#y%ba#{%ba#|%ba$P%ba(b%ba(s%ba!]%ba!^%ba~On%ba!Q%ba'z%ba({%ba~P&JXO({%POP%daR%da[%daj%dar%da!S%da!l%da!p%da#R%da#o%da#p%da#q%da#r%da#s%da#t%da#u%da#v%da#w%da#y%da#{%da#|%da$P%da(b%da(s%da!]%da!^%da~On%da!Q%da'z%da(z%da~P&L`On>_O!Q*PO'z*QO({%PO~P&JXOn>_O!Q*PO'z*QO(z$}O~P&L`OR0mO!Q0mO!S0nO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#w}a#y}a#{}a#|}a$P}a'z}a(b}a(s}a(z}a({}a!]}a!^}a~O!Q*PO'z*QOP$taR$ta[$taj$tan$tar$ta!S$ta!l$ta!p$ta#R$ta#o$ta#p$ta#q$ta#r$ta#s$ta#t$ta#u$ta#v$ta#w$ta#y$ta#{$ta#|$ta$P$ta(b$ta(s$ta(z$ta({$ta!]$ta!^$ta~O!Q*PO'z*QOP$vaR$va[$vaj$van$var$va!S$va!l$va!p$va#R$va#o$va#p$va#q$va#r$va#s$va#t$va#u$va#v$va#w$va#y$va#{$va#|$va$P$va(b$va(s$va(z$va({$va!]$va!^$va~On>_O!Q*PO'z*QO(z$}O({%PO~OP%UaR%Ua[%Uaj%Uar%Ua!S%Ua!l%Ua!p%Ua#R%Ua#o%Ua#p%Ua#q%Ua#r%Ua#s%Ua#t%Ua#u%Ua#v%Ua#w%Ua#y%Ua#{%Ua#|%Ua$P%Ua(b%Ua(s%Ua!]%Ua!^%Ua~P''eO$P$nq!]$nq!^$nq~P#BwO$P$pq!]$pq!^$pq~P#BwO!^9qO~O$P9rO~P!1WO!g#vO!]'fi!k'fi~O!g#vO(s'qO!]'fi!k'fi~O!]/rO!k)Pq~O!Y'hi!]'hi~P#/sO!]/{O!Y)Qq~Or9yO!g#vO(s'qO~O[9{O!Y9zO~P#/sO!Y9zO~Oj:RO!g#vO~Og(`y!](`y~P!1WO!]'oa!_'oa~P#/sOa%]q!_%]q'{%]q!]%]q~P#/sO[:WO~O!]1VO!^)Yq~O`:[O~O#`:]O!]'qa!^'qa~O!]5wO!^)Vi~P#BwO!S:_O~O!_1qO%j:bO~O(WTO(ZUO(f:gO~O!]1|O!^)Wq~O!k:jO~O!k:kO~O!k:lO~O!k:lO~P%[O#`:oO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%j:tO~P&8tO!_'aO%j:tO~O$P#}y!]#}y!^#}y~P#BwOP$}iR$}i[$}ij$}ir$}i!S$}i!l$}i!p$}i#R$}i#o$}i#p$}i#q$}i#r$}i#s$}i#t$}i#u$}i#v$}i#w$}i#y$}i#{$}i#|$}i$P$}i(b$}i(s$}i!]$}i!^$}i~P''eO!Q*PO'z*QO({%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#w'ja#y'ja#{'ja#|'ja$P'ja(b'ja(s'ja(z'ja!]'ja!^'ja~O!Q*PO'z*QOP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#w'la#y'la#{'la#|'la$P'la(b'la(s'la(z'la({'la!]'la!^'la~O(z$}OP%biR%bi[%bij%bin%bir%bi!Q%bi!S%bi!l%bi!p%bi#R%bi#o%bi#p%bi#q%bi#r%bi#s%bi#t%bi#u%bi#v%bi#w%bi#y%bi#{%bi#|%bi$P%bi'z%bi(b%bi(s%bi({%bi!]%bi!^%bi~O({%POP%diR%di[%dij%din%dir%di!Q%di!S%di!l%di!p%di#R%di#o%di#p%di#q%di#r%di#s%di#t%di#u%di#v%di#w%di#y%di#{%di#|%di$P%di'z%di(b%di(s%di(z%di!]%di!^%di~O$P$py!]$py!^$py~P#BwO$P#cy!]#cy!^#cy~P#BwO!g#vO!]'fq!k'fq~O!]/rO!k)Py~O!Y'hq!]'hq~P#/sOr;OO!g#vO(s'qO~O[;SO!Y;RO~P#/sO!Y;RO~Og(`!R!](`!R~P!1WOa%]y!_%]y'{%]y!]%]y~P#/sO!]1VO!^)Yy~O!]5wO!^)Vq~O(U;ZO~O!_1qO%j;^O~O!k;aO~O%j;fO~P&8tOP$}qR$}q[$}qj$}qr$}q!S$}q!l$}q!p$}q#R$}q#o$}q#p$}q#q$}q#r$}q#s$}q#t$}q#u$}q#v$}q#w$}q#y$}q#{$}q#|$}q$P$}q(b$}q(s$}q!]$}q!^$}q~P''eO!Q*PO'z*QO({%POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#w'ka#y'ka#{'ka#|'ka$P'ka(b'ka(s'ka(z'ka!]'ka!^'ka~O!Q*PO'z*QOP'maR'ma['maj'man'mar'ma!S'ma!l'ma!p'ma#R'ma#o'ma#p'ma#q'ma#r'ma#s'ma#t'ma#u'ma#v'ma#w'ma#y'ma#{'ma#|'ma$P'ma(b'ma(s'ma(z'ma({'ma!]'ma!^'ma~OP%PqR%Pq[%Pqj%Pqr%Pq!S%Pq!l%Pq!p%Pq#R%Pq#o%Pq#p%Pq#q%Pq#r%Pq#s%Pq#t%Pq#u%Pq#v%Pq#w%Pq#y%Pq#{%Pq#|%Pq$P%Pq(b%Pq(s%Pq!]%Pq!^%Pq~P''eOg%f!Z!]%f!Z#`%f!Z$P%f!Z~P!1WO!Y;jO~P#/sOr;kO!g#vO(s'qO~O[;mO!Y;jO~P#/sO!]'qq!^'qq~P#BwO!]#h!Z!^#h!Z~P#BwO#l%f!ZP%f!ZR%f!Z[%f!Za%f!Zj%f!Zr%f!Z!S%f!Z!]%f!Z!l%f!Z!p%f!Z#R%f!Z#o%f!Z#p%f!Z#q%f!Z#r%f!Z#s%f!Z#t%f!Z#u%f!Z#v%f!Z#w%f!Z#y%f!Z#{%f!Z#|%f!Z'{%f!Z(b%f!Z(s%f!Z!k%f!Z!Y%f!Z'x%f!Z#`%f!Zv%f!Z!_%f!Z%j%f!Z!g%f!Z~P#/sOr;vO!g#vO(s'qO~O!Y;wO~P#/sOrSOe!iOpkOrQO(U)^O(WTO(ZUO(bVO(p[O~O!]XO!l$xO#k<|O$X%`O$uf!>nPPP!>tIZPPPPPPPPP!BTP!CbPPIZ!DsPIZPIZIZIZIZIZPIZ!FVP!IaP!LgP!Lk!Lu!Ly!LyP!I^P!L}!L}P#!TP#!XIZPIZ#!_#%dCiA]PA]PA]A]P#&qA]A]#)TA]#+{A]#.XA]A]#.w#1]#1]#1b#1k#1]#1vPP#1]PA]#2`A]#6_A]A]6lPPP#:dPPP#:}#:}P#:}P#;e#:}PP#;kP#;bP#;b#O#>U#>[#>b#>p#>v#?Q#?W#?b#?h#?x#@O#@p#AS#AY#A`#An#BT#Cx#DW#D_#Ey#FX#Gy#HX#H_#He#Hk#Hu#H{#IR#I]#Io#IuPPPPPPPPPPP#I{PPPPPPP#Jp#M}$ g$ n$ vPPP$'bP$'k$*d$0}$1Q$1T$2S$2V$2^$2fP$2l$2oP$3]$3a$4X$5g$5l$6SPP$6X$6_$6c$6f$6j$6n$7j$8R$8j$8n$8q$8t$9O$9R$9V$9ZR!|RoqOXst!Z#d%m&r&t&u&w,u,z2^2aY!vQ'a-g1q5}Q%tvQ%|yQ&T|Q&j!VS'W!e-^Q'g!iS'm!r!yU*l$|*[*pQ+q%}S,O&V&WQ,f&dQ-e'`Q-o'hQ-w'nQ0^*rQ1d,QQ1{,gR<}<[%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'c's(U(W(^(e(y({)P*O*j+Y+_,r,u,z-k-s.R.X.v.}/p0_0n0t1U1t2U2V2X2Z2^2a2c3S3Y3n4|6V6g6h6k7O8v9V9aS#q]TU+Q%]T!S!nQ!r!v!y!z$|'W'`'a'm'n'o*l*p*r*s-^-e-g-w0^0a1q5}6P%[$ti#v$b$c$d$x${%O%Q%^%_%c)z*S*U*W*Z*b*h*x*y+h+k,U,X.h/R/f/o/z/{/}0b0d0k0l0q1h1k1s3e4`4a4l4q5S5^5a6U7Y7x8S8X8^8s9d9r9{:R:b:t;S;^;f;mQ>Y>Z>^>_Q&X|S'U!e*[S']%i-bQ+v&PQ,R&WQ,h&gQ0p+TQ1[+wQ1a+}Q2S,lQ2T,mQ5h1VQ5q1cQ6^1|Q6a2OQ6b2RQ8b5iQ8e5nQ9O6dQ:Z8fQ:h8{R;X:[rnOXst!V!Z#d%m&i&r&t&u&w,u,z2^2aR,j&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'c's(W(^(e(y({)P)t*O*j+Y+_+i,r,u,z-Y-a-k-s.R.X.i.v.}/X/p0_0n0t1U1t2U2V2X2Z2^2a2c2q3S3Y3f3n4V4|5y6V6g6h6k6u7O7^8v9V9a:]:oS>T[#]WZ#W#Z'X(U!b%jm#h#i#l$x%e%h(_(i(j(k*Z*_*c+[+^+`,q-W.V.].^._.a/o/r2f3^3_4c6t7VQ%wxQ%{yW&Q|&V&W,QQ&_!TQ'd!hQ'f!iQ(r#sS+p%|%}Q+t&PQ,a&bQ,e&dS-n'g'hQ.k(sQ1T+qQ1Z+wQ1]+xQ1`+|Q1v,bS1z,f,gQ3O-oQ5g1VQ5k1YQ5p1bQ6]1{Q8a5iQ8d5mQ8h5rQ:V8`R;V:W!U$zi$d%O%Q%^%_%c*S*U*b*x*y/R/z0b0d0k0l0q4a5S8X9r>Q>Y>Z!^%yy!i!u%{%|%}'V'f'g'h'l'v*k+p+q-Z-n-o-v0T0W1T2w3O3V4t4u4x8P9}Q+j%wQ,V&[Q,Y&]Q,d&dQ.j(rQ1u,aU1y,e,f,gQ3g.kQ6W1vS6[1z1{Q8z6]#f>U#v$b$c$x${)z*W*Z*h+h+k,U,X.h/f/o/{/}1h1k1s3e4`4l4q5^5a6U7Y7x8S8^8s9d9{:R:b:t;S;^;f;m^>_o>VQS&[!Q&iQ&]!RQ&^!SU+O%[%d=tR,T&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)z*S*U*W*Z*b*h*x*y+h+k,U,X.h/R/f/o/z/{/}0b0d0k0l0q1h1k1s3e4`4a4l4q5S5^5a6U7Y7x8S8X8^8s9d9r9{:R:b:t;S;^;f;mQ>Y>Z>^>_T){$u)|V+Q%]T$i$^c#Y#e%q%s%u(T(Z(u(z)S)T)U)V)W)X)Y)Z)[)])_)a)c)h)r+f+z-[-z.P.U.W.u.x.|/O/P/Q/d0r2o2t3Q3X3m3r3s3t3u3v3w3x3y3z3{3|3}4O4R4S4Z5Z5e6w6}7S7c7d7m7n8m9Z9_9i9o9p:q;Y;bTQ'Y!eR2r-^!W!nQ!e!r!v!y!z$|'W'`'a'm'n'o*[*l*p*r*s-^-e-g-w0^0a1q5}6PR1n,]nqOXst!Z#d%m&r&t&u&w,u,z2^2aQ&y!^Q'w!xS(t#u<`Q+n%zQ,_&_Q,`&aQ-l'eQ-y'pS.t(y=QS0s+Y=[Q1R+oQ1p,^Q2e,|Q2g,}Q2n-XQ2|-mQ3P-qS5[0t=fQ5c1SS5f1U=gQ6v2pQ6z2}Q7P3UQ8_5dQ9[6xQ9]6{Q9`7QR:n9X$d$]c#Y#e%s%u(T(Z(u(z)S)T)U)V)W)X)Y)Z)[)])_)a)c)h)r+f+z-[-z.P.U.W.u.x.|/P/Q/d0r2o2t3Q3X3m3r3s3t3u3v3w3x3y3z3{3|3}4O4R4S4Z5Z5e6w6}7S7c7d7m7n8m9Z9_9i9o9p:q;Y;bTS#q]TU$fd)`,oS(q#p'jU*w%R(x4QU0o+P.p7iQ5`0zQ7X3bQ9f7[R:u9gm!tQ!r!v!y!z'a'm'n'o-g-w1q5}6PQ'u!uS(g#g2WS-u'l'xQ/u*^Q0T*kQ3W-xQ4h/vQ4t0VQ4u0WQ4z0`Q7t4bS8P4v4xS8T4{4}Q9t7uQ9x7{Q9}8QQ:S8VS:}9y9zS;i;O;RS;u;j;kS;};v;wSTR=p>S%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'c's(U(W(^(e(y({)P*O*j+Y+_+i,r,u,z-k-s.R.X.i.v.}/p0_0n0t1U1t2U2V2X2Z2^2a2c3S3Y3f3n4|6V6g6h6k7O7^8v9V9aQ%fj!^%xy!i!u%{%|%}'V'f'g'h'l'v*k+p+q-Z-n-o-v0T0W1T2w3O3V4t4u4x8P9}S&Oz!jQ+m%yQ,c&dW1x,d,e,f,gU6Z1y1z1{S8y6[6]Q:f8z!r=k$Z$n'X)t-Y-a/X2q4V5y6u:]:oTQ=u>RR=v>S%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'c's(W(^(e(y({)P*O*j+Y+_+i,r,u,z-k-s.R.X.i.v.}/p0_0n0t1U1t2U2V2X2Z2^2a2c3S3Y3f3n4|6V6g6h6k7O7^8v9V9aY#bWZ#W#Z(U!b%jm#h#i#l$x%e%h(_(i(j(k*Z*_*c+[+^+`,q-W.V.].^._.a/o/r2f3^3_4c6t7VQ,p&o!p=l$Z$n)t-Y-a/X2q4V5y6u:]:oTR=o'XU'^!e%i*[R2u-bX'[!e%i*[-b%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'c's(U(W(^(e(y({)P*O*j+Y+_,r,u,z-k-s.R.X.v.}/p0_0n0t1U1t2U2V2X2Z2^2a2c3S3Y3n4|6V6g6h6k7O8v9V9a!r)`$Z$n'X)t-Y-a/X2q4V5y6u:]:oTQ,o&oQ0z+iQ3b.iQ7[3fR9g7^!b$Tc#Y%q(T(Z(u(z)[)])a)h+z-z.P.U.W.u.x/d0r3Q3X3m3}5Z5e6}7S7c9_:qT)_)r-[/O2o2t3r4R4Z6w7d7m7n8m9Z9i9o9p;Y;b=wQ>Y>[R>Z>]'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'c's(U(W(^(e(y({)P)t*O*j+Y+_+i,r,u,z-Y-a-k-s.R.X.i.v.}/X/p0_0n0t1U1t2U2V2X2Z2^2a2c2q3S3Y3f3n4V4|5y6V6g6h6k6u7O7^8v9V9a:]:oTS$oh$pR4W/W'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'c's(U(W(^(e(y({)P)t*O*j+Y+_+i,r,u,z-Y-a-k-s.R.X.i.v.}/W/X/p0_0n0t1U1t2U2V2X2Z2^2a2c2q3S3Y3f3n4V4|5y6V6g6h6k6u7O7^8v9V9a:]:oTT$kf$qQ$ifS)k$l)oR)w$qT$jf$qT)m$l)o'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'c's(U(W(^(e(y({)P)t*O*j+Y+_+i,r,u,z-Y-a-k-s.R.X.i.v.}/W/X/p0_0n0t1U1t2U2V2X2Z2^2a2c2q3S3Y3f3n4V4|5y6V6g6h6k6u7O7^8v9V9a:]:oTT$oh$pQ$rhR)v$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'c's(U(W(^(e(y({)P*O*j+Y+_+i,r,u,z-k-s.R.X.i.v.}/p0_0n0t1U1t2U2V2X2Z2^2a2c3S3Y3f3n4|6V6g6h6k7O7^8v9V9a!s>R$Z$n'X)t-Y-a/X2q4V5y6u:]:oT#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'c)P)t*j+_+i,r,u,z-k.i/X/p0_0n1t2U2V2X2Z2^2a2c3f4V4|6V6g6h6k7^8v9V!U%Ri$d%O%Q%^%_%c*S*U*b*x*y/R/z0b0d0k0l0q4a5S8X9r>Q>Y>Z#f(x#v$b$c$x${)z*W*Z*h+h+k,U,X.h/f/o/{/}1h1k1s3e4`4l4q5^5a6U7Y7x8S8^8s9d9{:R:b:t;S;^;f;m^>_Q+U%aQ/e*Po4QQ>Y>ZQ*d$zU*m$|*[*pQ+V%bQ0Y*n#f=r#v$b$c$x${)z*W*Z*h+h+k,U,X.h/f/o/{/}1h1k1s3e4`4l4q5^5a6U7Y7x8S8^8s9d9{:R:b:t;S;^;f;m^>_n=sUQ=y>VQ=z>WR={>X!U%Ri$d%O%Q%^%_%c*S*U*b*x*y/R/z0b0d0k0l0q4a5S8X9r>Q>Y>Z#f(x#v$b$c$x${)z*W*Z*h+h+k,U,X.h/f/o/{/}1h1k1s3e4`4l4q5^5a6U7Y7x8S8^8s9d9{:R:b:t;S;^;f;m^>_o4QQ>Y>Z>^>_Q,W&]Q1j,YQ5u1iR8j5vV*o$|*[*pU*o$|*[*pT5|1q5}S0R*j/pQ4y0_T8U4|:_Q+l%xQ0X*mQ1Q+mQ1w,cQ6Y1xQ8x6ZQ:e8yR;`:f!U%Oi$d%O%Q%^%_%c*S*U*b*x*y/R/z0b0d0k0l0q4a5S8X9r>Q>Y>Zx*S$v)f*T*v+W/x0f0g4T4i5T5U5Y7r8W:T:z=q>O>PS0b*u0c#f^>_n[>]`=U4P7e7h7l9j:v:y;{S=`.n3kT=a7g9m!U%Qi$d%O%Q%^%_%c*S*U*b*x*y/R/z0b0d0k0l0q4a5S8X9r>Q>Y>Z|*U$v)f*V*u+W/i/x0f0g4T4i5O5T5U5Y7r8W:T:z=q>O>PS0d*v0e#f^>_n[>]d=W4P7f7g7l9j9k:v:w:y;{S=b.o3lT=c7h9nrnOXst!V!Z#d%m&i&r&t&u&w,u,z2^2aQ&f!UR,r&ornOXst!V!Z#d%m&i&r&t&u&w,u,z2^2aR&f!UQ,[&^R1f,TsnOXst!V!Z#d%m&i&r&t&u&w,u,z2^2aQ1r,aS6T1u1vU8r6R6S6WS:a8t8uS;[:`:cQ;o;]R;y;pQ&m!VR,k&iR6a2OR:h8{W&Q|&V&W,QR1]+xQ&r!WR,u&sR,{&xT2_,z2aR-P&yQ-O&yR2h-PQ'z!{R-{'zSsOtQ#dXT%ps#dQ#OTR'|#OQ#RUR(O#RQ)|$uR/b)|Q#UVR(R#UQ#XWU(X#X(Y.SQ(Y#YR.S(ZQ-_'YR2s-_Q.w(zS3o.w3pR3p.xQ-g'aR2x-gY!rQ'a-g1q5}R'k!rQ/S)fR4U/SU#_W%h*ZU(`#_(a.TQ(a#`R.T([Q-c'^R2v-ct`OXst!V!Z#d%m&i&k&r&t&u&w,u,z2^2aS#hZ%eU#r`#h.^R.^(kQ(l#jQ.Z(hW.c(l.Z3Z7TQ3Z.[R7T3[Q)o$lR/Y)oQ$phR)u$pQ$`cU)b$`.OO>P>[>]Q/|*fU4m/|4o7zQ4o0OR7z4nS*p$|*[R0[*px*T$v)f*u*v+W/x0f0g4T4i5T5U5Y7r8W:T:z=q>O>P!d.l(v)d*]*f.n.o.s/a/m0O0x1g3j4^4j4n5t7_7b7y7|8Z8]9v:O:U;P;T;g;l;x>[>]U/j*T.l7ea7e4P7g7h7l9j:v:y;{Q0c*uQ3k.nU5P0c3k9mR9m7g|*V$v)f*u*v+W/i/x0f0g4T4i5O5T5U5Y7r8W:T:z=q>O>P!h.m(v)d*]*f.n.o.s/a/m0O0x1g3h3j4^4j4n5t7_7`7b7y7|8Z8]9v:O:U;P;T;g;l;x>[>]U/l*V.m7fe7f4P7g7h7l9j9k:v:w:y;{Q0e*vQ3l.oU5R0e3l9nR9n7hQ*{%UR0i*{Q5_0xR8[5_Q+a%kR0w+aQ5x1lS8l5x:^R:^8mQ,^&_R1o,^Q5}1qR8o5}Q1},hS6_1}8|R8|6aQ1W+tW5j1W5l8c:XQ5l1ZQ8c5kR:X8dQ+y&QR1^+yQ2a,zR6o2aYrOXst#dQ&v!ZQ+c%mQ,t&rQ,v&tQ,w&uQ,y&wQ2[,uS2_,z2aR6n2^Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'r!uQ+b%lQ+n%zQ,S&XQ,j&mQ-R&|W-r'l't'u'xQ-y'pQ0Z*oQ1R+oQ1e,RS2Q,k,nQ2i-QQ2j-TQ2k-UQ3P-qW3R-t-u-x-zQ5c1SQ5o1aQ5s1gQ6X1wQ6c2SQ6m2]U6|3Q3T3WQ7P3UQ8_5dQ8g5qQ8i5tQ8n5|Q8w6YQ8}6bS9^6}7RQ9`7QQ:Y8eQ:d8xQ:i9OQ:p9_Q;W:ZQ;_:eQ;c:qQ;n;XR;q;`Q%zyQ'e!iQ'p!uU+o%{%|%}Q-X'VU-m'f'g'hS-q'l'vQ0S*kS1S+p+qQ2p-ZS2}-n-oQ3U-vS4r0T0WQ5d1TQ6x2wQ6{3OQ7Q3VU7}4t4u4xQ9|8PR;Q9}S$wi>QR*|%VU%Ui%V>QR0h*zQ$viS(v#v+kS)d$b$cQ)f$dQ*]$xS*f${*ZQ*u%OQ*v%QQ+R%^Q+S%_Q+W%cQ.nQQ>O>YQ>P>ZQ>[>^R>]>_Q+P%]Q.pTR#[WR'Z!el!tQ!r!v!y!z'a'm'n'o-g-w1q5}6PS'V!e-^U*k$|*[*pS-Z'W'`S0W*l*rQ0`*sQ2w-eQ4x0^R4}0aR(|#xQ!fQT-f'a-g]!qQ!r'a-g1q5}Q#p]R'j < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty VariableDefinition Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem",maxTerm:381,context:Qb,nodeProps:[["isolate",-8,5,6,14,37,39,51,53,55,""],["group",-26,9,17,19,68,208,212,216,217,219,222,225,235,238,244,246,248,250,253,259,265,267,269,271,273,275,276,"Statement",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,121,122,137,140,142,143,144,145,146,148,149,168,170,172,"Expression",-23,31,33,37,41,43,45,174,176,178,179,181,182,183,185,186,187,189,190,191,202,204,206,207,"Type",-3,88,103,109,"ClassItem"],["openedBy",23,"<",38,"InterpolationStart",56,"[",60,"{",73,"(",161,"JSXStartCloseTag"],["closedBy",-2,24,169,">",40,"InterpolationEnd",50,"]",61,"}",74,")",166,"JSXEndTag"]],propSources:[Pb],skippedNodes:[0,5,6,279],repeatNodeCount:37,tokenData:"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$j&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$j&j([!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU([!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$j&j(XpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(XpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Xp([!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$j&j(Xp([!b'}0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(Y#S$j&j(O0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$j&j(Xp([!b(O0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$j&j!p),Q(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#w(Ch$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#w(Ch$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(W':f$j&j([!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$j&j([!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$j&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$e`$j&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$e``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$e`$j&j([!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ([!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$e`([!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$j&j(Xp([!bOY%ZYZ&cZq%Zqr`#P#o`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$j&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS([!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$j&j(XpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(XpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Xp([!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l^!Q^$j&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c^!Ezl$j&j([!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ([!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse([!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX([!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$j&j([!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!^!LYP;=`<%l!KS>^!L`P;=`<%l!_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$j&j(Xp([!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$j&j(Xp([!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$j&j(Xp([!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$j&j(Xp([!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$j&j$P)Lv(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-v$?V_!^(CdvBr$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$j&j(Xp([!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$j&j(Xp([!b'}0/l$^#t(U,2j(f$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$j&j(Xp([!b(O0/l$^#t(U,2j(f$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr",tokenizers:[wb,kb,$b,vb,2,3,4,5,6,7,8,9,10,11,12,13,14,xb,new ai("$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(d~~",141,341),new ai("j~RQYZXz{^~^O(R~~aP!P!Qd~iO(S~~",25,324)],topRules:{Script:[0,7],SingleExpression:[1,277],SingleClassItem:[2,278]},dialects:{jsx:0,ts:15179},dynamicPrecedences:{80:1,82:1,94:1,170:1,200:1},specialized:[{term:328,get:n=>Cb[n]||-1},{term:344,get:n=>Tb[n]||-1},{term:95,get:n=>Xb[n]||-1}],tokenPrec:15205});function Gu(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function Zb(n){let e=Object.create(null),t=Object.create(null);for(let{label:r}of n){e[r[0]]=!0;for(let s=1;stypeof r=="string"?{label:r}:r),[t,i]=e.every(r=>/^\w+$/.test(r.label))?[/\w*$/,/\w+$/]:Zb(e);return r=>{let s=r.matchBefore(i);return s||r.explicit?{from:s?s.from:r.pos,options:e,validFor:t}:null}}function Ku(n,e){return t=>{for(let i=pe(t.state).resolveInner(t.pos,-1);i;i=i.parent){if(n.indexOf(i.name)>-1)return null;if(i.type.isTop)break}return e(t)}}var Ab=Le.define();var _1=typeof navigator=="object"&&/Win/.test(navigator.platform);var Rb=E.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center",cursor:"pointer"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}}),Ra=class{constructor(e,t,i,r){this.field=e,this.line=t,this.from=i,this.to=r}},Ma=class n{constructor(e,t,i){this.field=e,this.from=t,this.to=i}map(e){let t=e.mapPos(this.from,-1,ve.TrackDel),i=e.mapPos(this.to,1,ve.TrackDel);return t==null||i==null?null:new n(this.field,t,i)}},ja=class n{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let i=[],r=[t],s=e.doc.lineAt(t),o=/^\s*/.exec(s.text)[0];for(let a of this.lines){if(i.length){let h=o,c=/^\t*/.exec(a)[0].length;for(let f=0;fnew Ma(a.field,r[a.line]+a.from,r[a.line]+a.to));return{text:i,ranges:l}}static parse(e){let t=[],i=[],r=[],s;for(let o of e.split(/\r\n?|\n/)){for(;s=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let l=s[1]?+s[1]:null,a=s[2]||s[3]||"",h=-1;l===0&&(l=1e9);let c=a.replace(/\\[{}]/g,f=>f[1]);for(let f=0;f=h&&u.field++}for(let f of r)if(f.line==i.length&&f.from>s.index){let u=s[2]?3+(s[1]||"").length:2;f.from-=u,f.to-=u}r.push(new Ra(h,i.length,s.index,s.index+c.length)),o=o.slice(0,s.index)+a+o.slice(s.index+s[0].length)}o=o.replace(/\\([{}])/g,(l,a,h)=>{for(let c of r)c.line==i.length&&c.from>h&&(c.from--,c.to--);return a}),i.push(o)}return new n(i,r)}},Mb=K.widget({widget:new class extends yt{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),jb=K.mark({class:"cm-snippetField"}),Qn=class n{constructor(e,t){this.ranges=e,this.active=t,this.deco=K.set(e.map(i=>(i.from==i.to?Mb:jb).range(i.from,i.to)),!0)}map(e){let t=[];for(let i of this.ranges){let r=i.map(e);if(!r)return null;t.push(r)}return new n(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(i=>i.field==this.active&&i.from<=t.from&&i.to>=t.to))}},mr=le.define({map(n,e){return n&&n.map(e)}}),Eb=le.define(),pr=Be.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(mr))return t.value;if(t.is(Eb)&&n)return new Qn(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:n=>E.decorations.from(n,e=>e?e.deco:K.none)});function Ea(n,e){return k.create(n.filter(t=>t.field==e).map(t=>k.range(t.from,t.to)))}function Lb(n){let e=ja.parse(n);return(t,i,r,s)=>{let{text:o,ranges:l}=e.instantiate(t.state,r),{main:a}=t.state.selection,h={changes:{from:r,to:s==a.from?a.to:s,insert:U.of(o)},scrollIntoView:!0,annotations:i?[Ab.of(i),ge.userEvent.of("input.complete")]:void 0};if(l.length&&(h.selection=Ea(l,0)),l.some(c=>c.field>0)){let c=new Qn(l,0),f=h.effects=[mr.of(c)];t.state.field(pr,!1)===void 0&&f.push(le.appendConfig.of([pr,Wb,Vb,Rb]))}t.dispatch(t.state.update(h))}}function Ju(n){return({state:e,dispatch:t})=>{let i=e.field(pr,!1);if(!i||n<0&&i.active==0)return!1;let r=i.active+n,s=n>0&&!i.ranges.some(o=>o.field==r+n);return t(e.update({selection:Ea(i.ranges,r),effects:mr.of(s?null:new Qn(i.ranges,r)),scrollIntoView:!0})),!0}}var Yb=({state:n,dispatch:e})=>n.field(pr,!1)?(e(n.update({effects:mr.of(null)})),!0):!1,qb=Ju(1),_b=Ju(-1);var zb=[{key:"Tab",run:qb,shift:_b},{key:"Escape",run:Yb}],Fu=j.define({combine(n){return n.length?n[0]:zb}}),Wb=Ft.highest(nr.compute([Fu],n=>n.facet(Fu)));function je(n,e){return{...e,apply:Lb(n)}}var Vb=E.domEventHandlers({mousedown(n,e){let t=e.state.field(pr,!1),i;if(!t||(i=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let r=t.ranges.find(s=>s.from<=i&&s.to>=i);return!r||r.field==t.active?!1:(e.dispatch({selection:Ea(t.ranges,r.field),effects:mr.of(t.ranges.some(s=>s.field>r.field)?new Qn(t.ranges,r.field):null),scrollIntoView:!0}),!0)}});var ed=new class extends Ke{};ed.startSide=1;ed.endSide=-1;var z1=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent);var rd=[je("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),je("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),je("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),je("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),je("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),je(`try { + \${} +} catch (\${error}) { + \${} +}`,{label:"try",detail:"/ catch block",type:"keyword"}),je("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),je(`if (\${}) { + \${} +} else { + \${} +}`,{label:"if",detail:"/ else block",type:"keyword"}),je(`class \${name} { + constructor(\${params}) { + \${} + } +}`,{label:"class",detail:"definition",type:"keyword"}),je('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),je('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],Db=rd.concat([je("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),je("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),je("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),td=new On,sd=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function gr(n){return(e,t)=>{let i=e.node.getChild("VariableDefinition");return i&&t(i,n),!0}}var Bb=["FunctionDeclaration"],Ib={FunctionDeclaration:gr("function"),ClassDeclaration:gr("class"),ClassExpression:()=>!0,EnumDeclaration:gr("constant"),TypeAliasDeclaration:gr("type"),NamespaceDeclaration:gr("namespace"),VariableDefinition(n,e){n.matchContext(Bb)||e(n,"variable")},TypeDefinition(n,e){e(n,"type")},__proto__:null};function od(n,e){let t=td.get(e);if(t)return t;let i=[],r=!0;function s(o,l){let a=n.sliceString(o.from,o.to);i.push({label:a,type:l})}return e.cursor(N.IncludeAnonymous).iterate(o=>{if(r)r=!1;else if(o.name){let l=Ib[o.name];if(l&&l(o,s)||sd.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of od(n,o.node))i.push(l);return!1}}),td.set(e,i),i}var id=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,ld=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function Ub(n){let e=pe(n.state).resolveInner(n.pos,-1);if(ld.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&id.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let i=[];for(let r=e;r;r=r.parent)sd.has(r.name)&&(i=i.concat(od(n.state.doc,r)));return{options:i,from:t?e.from:n.pos,validFor:id}}var dt=vt.define({name:"javascript",parser:Nu.configure({props:[Ct.add({IfStatement:_t({except:/^\s*({|else\b)/}),TryStatement:_t({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Jf,SwitchBody:n=>{let e=n.textAfter,t=/^\s*\}/.test(e),i=/^\s*(case|default)\b/.test(e);return n.baseIndent+(t?0:i?1:2)*n.unit},Block:Hf({closing:"}"}),ArrowFunction:n=>n.baseIndent+n.unit,"TemplateString BlockComment":()=>null,"Statement Property":_t({except:/^\s*{/}),JSXElement(n){let e=/^\s*<\//.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},JSXEscape(n){let e=/\s*\}/.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},"JSXOpenTag JSXSelfClosingTag"(n){return n.column(n.node.from)+n.unit}}),oi.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":bn,BlockComment(n){return{from:n.from+2,to:n.to-2}},JSXElement(n){let e=n.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=n.lastChild;return{from:e.to,to:t.type.isError?n.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(n){var e;let t=(e=n.firstChild)===null||e===void 0?void 0:e.nextSibling,i=n.lastChild;return!t||t.type.isError?null:{from:t.to,to:i.type.isError?n.to:i.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),ad={test:n=>/^JSX/.test(n.name),facet:Ts({commentTokens:{block:{open:"{/*",close:"*/}"}}})},La=dt.configure({dialect:"ts"},"typescript"),Ya=dt.configure({dialect:"jsx",props:[Xs.add(n=>n.isTop?[ad]:void 0)]}),qa=dt.configure({dialect:"jsx ts",props:[Xs.add(n=>n.isTop?[ad]:void 0)]},"typescript"),hd=n=>({label:n,type:"keyword"}),cd="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(hd),Nb=cd.concat(["declare","implements","private","protected","public"].map(hd));function fd(n={}){let e=n.jsx?n.typescript?qa:Ya:n.typescript?La:dt,t=n.typescript?Db.concat(Nb):rd.concat(cd);return new Pt(e,[dt.data.of({autocomplete:Ku(ld,Hu(t))}),dt.data.of({autocomplete:Ub}),n.jsx?Hb:[]])}function Gb(n){for(;;){if(n.name=="JSXOpenTag"||n.name=="JSXSelfClosingTag"||n.name=="JSXFragmentTag")return n;if(n.name=="JSXEscape"||!n.parent)return null;n=n.parent}}function nd(n,e,t=n.length){for(let i=e?.firstChild;i;i=i.nextSibling)if(i.name=="JSXIdentifier"||i.name=="JSXBuiltin"||i.name=="JSXNamespacedName"||i.name=="JSXMemberExpression")return n.sliceString(i.from,Math.min(i.to,t));return""}var Fb=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Hb=E.inputHandler.of((n,e,t,i,r)=>{if((Fb?n.composing:n.compositionStarted)||n.state.readOnly||e!=t||i!=">"&&i!="/"||!dt.isActiveAt(n.state,e,-1))return!1;let s=r(),{state:o}=s,l=o.changeByRange(a=>{var h;let{head:c}=a,f=pe(o).resolveInner(c-1,-1),u;if(f.name=="JSXStartTag"&&(f=f.parent),!(o.doc.sliceString(c-1,c)!=i||f.name=="JSXAttributeValue"&&f.to>c)){if(i==">"&&f.name=="JSXFragmentTag")return{range:a,changes:{from:c,insert:""}};if(i=="/"&&f.name=="JSXStartCloseTag"){let O=f.parent,p=O.parent;if(p&&O.from==c-2&&((u=nd(o.doc,p.firstChild,c))||((h=p.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let g=`${u}>`;return{range:k.cursor(c+g.length,-1),changes:{from:c,insert:g}}}}else if(i==">"){let O=Gb(f);if(O&&O.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(c,c+2))&&(u=nd(o.doc,O,c)))return{range:a,changes:{from:c,insert:``}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var br=["_blank","_self","_top","_parent"],_a=["ascii","utf-8","utf-16","latin1","latin1"],za=["get","post","put","delete"],Wa=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],Ne=["true","false"],L={},Kb={a:{attrs:{href:null,ping:null,type:null,media:null,target:br,hreflang:null}},abbr:L,address:L,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:null,hreflang:null,type:null,shape:["default","rect","circle","poly"]}},article:L,aside:L,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["autoplay"],loop:["loop"],controls:["controls"]}},b:L,base:{attrs:{href:null,target:br}},bdi:L,bdo:L,blockquote:{attrs:{cite:null}},body:L,br:L,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["autofocus"],disabled:["autofocus"],formenctype:Wa,formmethod:za,formnovalidate:["novalidate"],formtarget:br,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:L,center:L,cite:L,code:L,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["disabled"],checked:["checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["disabled"],multiple:["multiple"]}},datalist:{attrs:{data:null}},dd:L,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["open"]}},dfn:L,div:L,dl:L,dt:L,em:L,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["disabled"],form:null,name:null}},figcaption:L,figure:L,footer:L,form:{attrs:{action:null,name:null,"accept-charset":_a,autocomplete:["on","off"],enctype:Wa,method:za,novalidate:["novalidate"],target:br}},h1:L,h2:L,h3:L,h4:L,h5:L,h6:L,head:{children:["title","base","link","style","meta","script","noscript","command"]},header:L,hgroup:L,hr:L,html:{attrs:{manifest:null}},i:L,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["autofocus"],checked:["checked"],disabled:["disabled"],formenctype:Wa,formmethod:za,formnovalidate:["novalidate"],formtarget:br,multiple:["multiple"],readonly:["readonly"],required:["required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:L,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["autofocus"],disabled:["disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:L,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:null,media:null,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:L,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:_a,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:L,noscript:L,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["typemustmatch"]}},ol:{attrs:{reversed:["reversed"],start:null,type:["1","a","A","i","I"]},children:["li","script","template","ul","ol"]},optgroup:{attrs:{disabled:["disabled"],label:null}},option:{attrs:{disabled:["disabled"],label:null,selected:["selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:L,param:{attrs:{name:null,value:null}},pre:L,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:L,rt:L,ruby:L,samp:L,script:{attrs:{type:["text/javascript"],src:null,async:["async"],defer:["defer"],charset:_a}},section:L,select:{attrs:{form:null,name:null,size:null,autofocus:["autofocus"],disabled:["disabled"],multiple:["multiple"]}},slot:{attrs:{name:null}},small:L,source:{attrs:{src:null,type:null,media:null}},span:L,strong:L,style:{attrs:{type:["text/css"],media:null,scoped:null}},sub:L,summary:L,sup:L,table:L,tbody:L,td:{attrs:{colspan:null,rowspan:null,headers:null}},template:L,textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["autofocus"],disabled:["disabled"],readonly:["readonly"],required:["required"],wrap:["soft","hard"]}},tfoot:L,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:L,time:{attrs:{datetime:null}},title:L,tr:L,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:null}},ul:{children:["li","script","template","ul","ol"]},var:L,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["autoplay"],mediagroup:["movie"],muted:["muted"],controls:["controls"]}},wbr:L},pd={accesskey:null,class:null,contenteditable:Ne,contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["ar","bn","de","en-GB","en-US","es","fr","hi","id","ja","pa","pt","ru","tr","zh"],spellcheck:Ne,autocorrect:Ne,autocapitalize:Ne,style:null,tabindex:null,title:null,translate:["yes","no"],rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"],role:"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer".split(" "),"aria-activedescendant":null,"aria-atomic":Ne,"aria-autocomplete":["inline","list","both","none"],"aria-busy":Ne,"aria-checked":["true","false","mixed","undefined"],"aria-controls":null,"aria-describedby":null,"aria-disabled":Ne,"aria-dropeffect":null,"aria-expanded":["true","false","undefined"],"aria-flowto":null,"aria-grabbed":["true","false","undefined"],"aria-haspopup":Ne,"aria-hidden":Ne,"aria-invalid":["true","false","grammar","spelling"],"aria-label":null,"aria-labelledby":null,"aria-level":null,"aria-live":["off","polite","assertive"],"aria-multiline":Ne,"aria-multiselectable":Ne,"aria-owns":null,"aria-posinset":null,"aria-pressed":["true","false","mixed","undefined"],"aria-readonly":Ne,"aria-relevant":null,"aria-required":Ne,"aria-selected":["true","false","undefined"],"aria-setsize":null,"aria-sort":["ascending","descending","none","other"],"aria-valuemax":null,"aria-valuemin":null,"aria-valuenow":null,"aria-valuetext":null},md="beforeunload copy cut dragstart dragover dragleave dragenter dragend drag paste focus blur change click load mousedown mouseenter mouseleave mouseup keydown keyup resize scroll unload".split(" ").map(n=>"on"+n);for(let n of md)pd[n]=null;var xn=class{constructor(e,t){this.tags={...Kb,...e},this.globalAttrs={...pd,...t},this.allTags=Object.keys(this.tags),this.globalAttrNames=Object.keys(this.globalAttrs)}};xn.default=new xn;function wn(n,e,t=n.length){if(!e)return"";let i=e.firstChild,r=i&&i.getChild("TagName");return r?n.sliceString(r.from,Math.min(r.to,t)):""}function kn(n,e=!1){for(;n;n=n.parent)if(n.name=="Element")if(e)e=!1;else return n;return null}function gd(n,e,t){let i=t.tags[wn(n,kn(e))];return i?.children||t.allTags}function Va(n,e){let t=[];for(let i=kn(e);i&&!i.type.isTop;i=kn(i.parent)){let r=wn(n,i);if(r&&i.lastChild.name=="CloseTag")break;r&&t.indexOf(r)<0&&(e.name=="EndTag"||e.from>=i.firstChild.to)&&t.push(r)}return t}var bd=/^[:\-\.\w\u00b7-\uffff]*$/;function ud(n,e,t,i,r){let s=/\s*>/.test(n.sliceDoc(r,r+5))?"":">",o=kn(t,t.name=="StartTag"||t.name=="TagName");return{from:i,to:r,options:gd(n.doc,o,e).map(l=>({label:l,type:"type"})).concat(Va(n.doc,t).map((l,a)=>({label:"/"+l,apply:"/"+l+s,type:"type",boost:99-a}))),validFor:/^\/?[:\-\.\w\u00b7-\uffff]*$/}}function dd(n,e,t,i){let r=/\s*>/.test(n.sliceDoc(i,i+5))?"":">";return{from:t,to:i,options:Va(n.doc,e).map((s,o)=>({label:s,apply:s+r,type:"type",boost:99-o})),validFor:bd}}function Jb(n,e,t,i){let r=[],s=0;for(let o of gd(n.doc,t,e))r.push({label:"<"+o,type:"type"});for(let o of Va(n.doc,t))r.push({label:"",type:"type",boost:99-s++});return{from:i,to:i,options:r,validFor:/^<\/?[:\-\.\w\u00b7-\uffff]*$/}}function eS(n,e,t,i,r){let s=kn(t),o=s?e.tags[wn(n.doc,s)]:null,l=o&&o.attrs?Object.keys(o.attrs):[],a=o&&o.globalAttrs===!1?l:l.length?l.concat(e.globalAttrNames):e.globalAttrNames;return{from:i,to:r,options:a.map(h=>({label:h,type:"property"})),validFor:bd}}function tS(n,e,t,i,r){var s;let o=(s=t.parent)===null||s===void 0?void 0:s.getChild("AttributeName"),l=[],a;if(o){let h=n.sliceDoc(o.from,o.to),c=e.globalAttrs[h];if(!c){let f=kn(t),u=f?e.tags[wn(n.doc,f)]:null;c=u?.attrs&&u.attrs[h]}if(c){let f=n.sliceDoc(i,r).toLowerCase(),u='"',O='"';/^['"]/.test(f)?(a=f[0]=='"'?/^[^"]*$/:/^[^']*$/,u="",O=n.sliceDoc(r,r+1)==f[0]?"":f[0],f=f.slice(1),i++):a=/^[^\s<>='"]*$/;for(let p of c)l.push({label:p,apply:u+p+O,type:"constant"})}}return{from:i,to:r,options:l,validFor:a}}function iS(n,e){let{state:t,pos:i}=e,r=pe(t).resolveInner(i,-1),s=r.resolve(i);for(let o=i,l;s==r&&(l=r.childBefore(o));){let a=l.lastChild;if(!a||!a.type.isError||a.fromiS(i,r)}var rS=dt.parser.configure({top:"SingleExpression"}),Sd=[{tag:"script",attrs:n=>n.type=="text/typescript"||n.lang=="ts",parser:La.parser},{tag:"script",attrs:n=>n.type=="text/babel"||n.type=="text/jsx",parser:Ya.parser},{tag:"script",attrs:n=>n.type=="text/typescript-jsx",parser:qa.parser},{tag:"script",attrs(n){return/^(importmap|speculationrules|application\/(.+\+)?json)$/i.test(n.type)},parser:rS},{tag:"script",attrs(n){return!n.type||/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(n.type)},parser:dt.parser},{tag:"style",attrs(n){return(!n.lang||n.lang=="css")&&(!n.type||/^(text\/)?(x-)?(stylesheet|css)$/i.test(n.type))},parser:Or.parser}],yd=[{name:"style",parser:Or.parser.configure({top:"Styles"})}].concat(md.map(n=>({name:n,parser:dt.parser}))),Qd=vt.define({name:"html",parser:Zu.configure({props:[Ct.add({Element(n){let e=/^(\s*)(<\/)?/.exec(n.textAfter);return n.node.to<=n.pos+e[0].length?n.continue():n.lineIndent(n.node.from)+(e[2]?0:n.unit)},"OpenTag CloseTag SelfClosingTag"(n){return n.column(n.node.from)+n.unit},Document(n){if(n.pos+/\s*/.exec(n.textAfter)[0].lengthn.getChild("TagName")})]}),languageData:{commentTokens:{block:{open:""}},indentOnInput:/^\s*<\/\w+\W$/,wordChars:"-_"}}),Ls=Qd.configure({wrap:va(Sd,yd)});function xd(n={}){let e="",t;n.matchClosingTags===!1&&(e="noMatch"),n.selfClosingTags===!0&&(e=(e?e+" ":"")+"selfClosing"),(n.nestedLanguages&&n.nestedLanguages.length||n.nestedAttributes&&n.nestedAttributes.length)&&(t=va((n.nestedLanguages||[]).concat(Sd),(n.nestedAttributes||[]).concat(yd)));let i=t?Qd.configure({wrap:t,dialect:e}):e?Ls.configure({dialect:e}):Ls;return new Pt(i,[Ls.data.of({autocomplete:nS(n)}),n.autoCloseTags!==!1?sS:[],fd().support,Bu().support])}var Od=new Set("area base br col command embed frame hr img input keygen link meta param source track wbr menuitem".split(" ")),sS=E.inputHandler.of((n,e,t,i,r)=>{if(n.composing||n.state.readOnly||e!=t||i!=">"&&i!="/"||!Ls.isActiveAt(n.state,e,-1))return!1;let s=r(),{state:o}=s,l=o.changeByRange(a=>{var h,c,f;let u=o.doc.sliceString(a.from-1,a.to)==i,{head:O}=a,p=pe(o).resolveInner(O,-1),g;if(u&&i==">"&&p.name=="EndTag"){let Q=p.parent;if(((c=(h=Q.parent)===null||h===void 0?void 0:h.lastChild)===null||c===void 0?void 0:c.name)!="CloseTag"&&(g=wn(o.doc,Q.parent,O))&&!Od.has(g)){let x=O+(o.doc.sliceString(O,O+1)===">"?1:0),P=``;return{range:a,changes:{from:O,to:x,insert:P}}}}else if(u&&i=="/"&&p.name=="IncompleteCloseTag"){let Q=p.parent;if(p.from==O-2&&((f=Q.lastChild)===null||f===void 0?void 0:f.name)!="CloseTag"&&(g=wn(o.doc,Q,O))&&!Od.has(g)){let x=O+(o.doc.sliceString(O,O+1)===">"?1:0),P=`${g}>`;return{range:k.cursor(O+P.length,-1),changes:{from:O,to:x,insert:P}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([s,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)});var oS=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),i=Fa(n.state,t.from);return i.line?lS(n):i.block?hS(n):!1};function Ga(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let r=n(e,t);return r?(i(t.update(r)),!0):!1}}var lS=Ga(uS,0);var aS=Ga(Zd,0);var hS=Ga((n,e)=>Zd(n,e,fS(e)),0);function Fa(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var Sr=50;function cS(n,{open:e,close:t},i,r){let s=n.sliceDoc(i-Sr,i),o=n.sliceDoc(r,r+Sr),l=/\s*$/.exec(s)[0].length,a=/^\s*/.exec(o)[0].length,h=s.length-l;if(s.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:r+a,margin:a&&1}};let c,f;r-i<=2*Sr?c=f=n.sliceDoc(i,r):(c=n.sliceDoc(i,i+Sr),f=n.sliceDoc(r-Sr,r));let u=/^\s*/.exec(c)[0].length,O=/\s*$/.exec(f)[0].length,p=f.length-O-t.length;return c.slice(u,u+e.length)==e&&f.slice(p,p+t.length)==t?{open:{pos:i+u+e.length,margin:/\s/.test(c.charAt(u+e.length))?1:0},close:{pos:r-O-t.length,margin:/\s/.test(f.charAt(p-1))?1:0}}:null}function fS(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),r=t.to<=i.to?i:n.doc.lineAt(t.to);r.from>i.from&&r.from==t.to&&(r=t.to==i.to+1?i:n.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>i.from?e[s].to=r.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:r.to})}return e}function Zd(n,e,t=e.selection.ranges){let i=t.map(s=>Fa(e,s.from).block);if(!i.every(s=>s))return null;let r=t.map((s,o)=>cS(e,i[o],s.from,s.to));if(n!=2&&!r.every(s=>s))return{changes:e.changes(t.map((s,o)=>r[o]?[]:[{from:s.from,insert:i[o].open+" "},{from:s.to,insert:" "+i[o].close}]))};if(n!=1&&r.some(s=>s)){let s=[];for(let o=0,l;or&&(s==o||o>f.from)){r=f.from;let u=/^\s*/.exec(f.text)[0].length,O=u==f.length,p=f.text.slice(u,u+h.length)==h?u:-1;us.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:l,token:a,indent:h,empty:c,single:f}of i)(f||!c)&&s.push({from:l.from+h,insert:a+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,c=h+a.length;o.text[c-o.from]==" "&&c++,s.push({from:h,to:c})}return{changes:s}}return null}var Ba=Le.define(),dS=Le.define(),OS=j.define(),Ad=j.define({combine(n){return Qi(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(i,r)=>e(i,r)||t(i,r)})}}),Rd=Be.define({create(){return ji.empty},update(n,e){let t=e.state.facet(Ad),i=e.annotation(Ba);if(i){let a=Ot.fromTransaction(e,i.selection),h=i.side,c=h==0?n.undone:n.done;return a?c=qs(c,c.length,t.minDepth,a):c=Ld(c,e.startState.selection),new ji(h==0?i.rest:c,h==0?c:i.rest)}let r=e.annotation(dS);if((r=="full"||r=="before")&&(n=n.isolate()),e.annotation(ge.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let s=Ot.fromTransaction(e),o=e.annotation(ge.time),l=e.annotation(ge.userEvent);return s?n=n.addChanges(s,o,l,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(r=="full"||r=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new ji(n.done.map(Ot.fromJSON),n.undone.map(Ot.fromJSON))}});function Md(n={}){return[Rd,Ad.of(n),E.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?jd:e.inputType=="historyRedo"?Ia:null;return i?(e.preventDefault(),i(t)):!1}})]}function _s(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let r=t.field(Rd,!1);if(!r)return!1;let s=r.pop(n,t,e);return s?(i(s),!0):!1}}var jd=_s(0,!1),Ia=_s(1,!1),pS=_s(0,!0),mS=_s(1,!0);var Ot=class n{constructor(e,t,i,r,s){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=r,this.selectionsAfter=s}setSelAfter(e){return new n(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(r=>r.toJSON())}}static fromJSON(e){return new n(e.changes&&Ae.fromJSON(e.changes),[],e.mapped&&Mt.fromJSON(e.mapped),e.startSelection&&k.fromJSON(e.startSelection),e.selectionsAfter.map(k.fromJSON))}static fromTransaction(e,t){let i=st;for(let r of e.startState.facet(OS)){let s=r(e);s.length&&(i=i.concat(s))}return!i.length&&e.changes.empty?null:new n(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,st)}static selection(e){return new n(void 0,st,void 0,void 0,e)}};function qs(n,e,t,i){let r=e+1>t+20?e-t-1:0,s=n.slice(r,e);return s.push(i),s}function gS(n,e){let t=[],i=!1;return n.iterChangedRanges((r,s)=>t.push(r,s)),e.iterChangedRanges((r,s,o,l)=>{for(let a=0;a=h&&o<=c&&(i=!0)}}),i}function bS(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,i)=>t.empty!=e.ranges[i].empty).length===0}function Ed(n,e){return n.length?e.length?n.concat(e):n:e}var st=[],SS=200;function Ld(n,e){if(n.length){let t=n[n.length-1],i=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-SS));return i.length&&i[i.length-1].eq(e)?n:(i.push(e),qs(n,n.length-1,1e9,t.setSelAfter(i)))}else return[Ot.selection([e])]}function yS(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function Da(n,e){if(!n.length)return n;let t=n.length,i=st;for(;t;){let r=QS(n[t-1],e,i);if(r.changes&&!r.changes.empty||r.effects.length){let s=n.slice(0,t);return s[t-1]=r,s}else e=r.mapped,t--,i=r.selectionsAfter}return i.length?[Ot.selection(i)]:st}function QS(n,e,t){let i=Ed(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):st,t);if(!n.changes)return Ot.selection(i);let r=n.changes.map(e),s=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(s):s;return new Ot(r,le.mapEffects(n.effects,e),o,n.startSelection.map(s),i)}var xS=/^(input\.type|delete)($|\.)/,ji=class n{constructor(e,t,i=0,r=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=r}isolate(){return this.prevTime?new n(this.done,this.undone):this}addChanges(e,t,i,r,s){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||xS.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?n.moveByChar(t,e):zs(t,e))}function Te(n){return n.textDirectionAt(n.state.selection.main.head)==ae.LTR}var _d=n=>qd(n,!Te(n)),zd=n=>qd(n,Te(n));function Wd(n,e){return mt(n,t=>t.empty?n.moveByGroup(t,e):zs(t,e))}var wS=n=>Wd(n,!Te(n)),kS=n=>Wd(n,Te(n));var hQ=typeof Intl<"u"&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:"word"}):null;function $S(n,e,t){if(e.type.prop(t))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function Ws(n,e,t){let i=pe(n).resolveInner(e.head),r=t?D.closedBy:D.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;$S(n,h,r)?i=h:a=t?h.to:h.from}let s=i.type.prop(r),o,l;return s&&(o=t?Mi(n,i.from,1):Mi(n,i.to,-1))&&o.matched?l=t?o.end.to:o.end.from:l=t?i.to:i.from,k.cursor(l,t?-1:1)}var vS=n=>mt(n,e=>Ws(n.state,e,!Te(n))),PS=n=>mt(n,e=>Ws(n.state,e,Te(n)));function Vd(n,e){return mt(n,t=>{if(!t.empty)return zs(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}var Dd=n=>Vd(n,!1),Bd=n=>Vd(n,!0);function Id(n){let e=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,e,t.height):zs(o,e));if(r.eq(i.selection))return!1;let s;if(t.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+t.marginTop,h=l.bottom-t.marginBottom;o&&o.top>a&&o.bottomUd(n,!1),Ua=n=>Ud(n,!0);function hi(n,e,t){let i=n.lineBlockAt(e.head),r=n.moveToLineBoundary(e,t);if(r.head==e.head&&r.head!=(t?i.to:i.from)&&(r=n.moveToLineBoundary(e,t,!1)),!t&&r.head==i.from&&i.length){let s=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;s&&e.head!=i.from+s&&(r=k.cursor(i.from+s))}return r}var CS=n=>mt(n,e=>hi(n,e,!0)),TS=n=>mt(n,e=>hi(n,e,!1)),XS=n=>mt(n,e=>hi(n,e,!Te(n))),ZS=n=>mt(n,e=>hi(n,e,Te(n))),AS=n=>mt(n,e=>k.cursor(n.lineBlockAt(e.head).from,1)),RS=n=>mt(n,e=>k.cursor(n.lineBlockAt(e.head).to,-1));function MS(n,e,t){let i=!1,r=$n(n.selection,s=>{let o=Mi(n,s.head,-1)||Mi(n,s.head,1)||s.head>0&&Mi(n,s.head-1,1)||s.headMS(n,e,!1);function ot(n,e){let t=$n(n.state.selection,i=>{let r=e(i);return k.range(i.anchor,r.head,r.goalColumn,r.bidiLevel||void 0)});return t.eq(n.state.selection)?!1:(n.dispatch(pt(n.state,t)),!0)}function Nd(n,e){return ot(n,t=>n.moveByChar(t,e))}var Gd=n=>Nd(n,!Te(n)),Fd=n=>Nd(n,Te(n));function Hd(n,e){return ot(n,t=>n.moveByGroup(t,e))}var ES=n=>Hd(n,!Te(n)),LS=n=>Hd(n,Te(n));var YS=n=>ot(n,e=>Ws(n.state,e,!Te(n))),qS=n=>ot(n,e=>Ws(n.state,e,Te(n)));function Kd(n,e){return ot(n,t=>n.moveVertically(t,e))}var Jd=n=>Kd(n,!1),eO=n=>Kd(n,!0);function tO(n,e){return ot(n,t=>n.moveVertically(t,e,Id(n).height))}var kd=n=>tO(n,!1),$d=n=>tO(n,!0),_S=n=>ot(n,e=>hi(n,e,!0)),zS=n=>ot(n,e=>hi(n,e,!1)),WS=n=>ot(n,e=>hi(n,e,!Te(n))),VS=n=>ot(n,e=>hi(n,e,Te(n))),DS=n=>ot(n,e=>k.cursor(n.lineBlockAt(e.head).from)),BS=n=>ot(n,e=>k.cursor(n.lineBlockAt(e.head).to)),vd=({state:n,dispatch:e})=>(e(pt(n,{anchor:0})),!0),Pd=({state:n,dispatch:e})=>(e(pt(n,{anchor:n.doc.length})),!0),Cd=({state:n,dispatch:e})=>(e(pt(n,{anchor:n.selection.main.anchor,head:0})),!0),Td=({state:n,dispatch:e})=>(e(pt(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),IS=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),US=({state:n,dispatch:e})=>{let t=Vs(n).map(({from:i,to:r})=>k.range(i,Math.min(r+1,n.doc.length)));return e(n.update({selection:k.create(t),userEvent:"select"})),!0},NS=({state:n,dispatch:e})=>{let t=$n(n.selection,i=>{let r=pe(n),s=r.resolveStack(i.from,1);if(i.empty){let o=r.resolveStack(i.from,-1);o.node.from>=s.node.from&&o.node.to<=s.node.to&&(s=o)}for(let o=s;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return k.range(l.to,l.from)}return i});return t.eq(n.selection)?!1:(e(pt(n,t)),!0)};function iO(n,e){let{state:t}=n,i=t.selection,r=t.selection.ranges.slice();for(let s of t.selection.ranges){let o=t.doc.lineAt(s.head);if(e?o.to0)for(let l=s;;){let a=n.moveVertically(l,e);if(a.heado.to){r.some(h=>h.head==a.head)||r.push(a);break}else{if(a.head==l.head)break;l=a}}}return r.length==i.ranges.length?!1:(n.dispatch(pt(t,k.create(r,r.length-1))),!0)}var GS=n=>iO(n,!1),FS=n=>iO(n,!0),HS=({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=k.create([t.main]):t.main.empty||(i=k.create([k.cursor(t.main.head)])),i?(e(pt(n,i)),!0):!1};function yr(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,r=i.changeByRange(s=>{let{from:o,to:l}=s;if(o==l){let a=e(s);ao&&(t="delete.forward",a=Ys(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Ys(n,o,!1),l=Ys(n,l,!0);return o==l?{range:s}:{changes:{from:o,to:l},range:k.cursor(o,or(n)))i.between(e,e,(r,s)=>{re&&(e=t?s:r)});return e}var nO=(n,e,t)=>yr(n,i=>{let r=i.from,{state:s}=n,o=s.doc.lineAt(r),l,a;if(t&&!e&&r>o.from&&rnO(n,!1,!0);var rO=n=>nO(n,!0,!1),sO=(n,e)=>yr(n,t=>{let i=t.head,{state:r}=n,s=r.doc.lineAt(i),o=r.charCategorizer(i);for(let l=null;;){if(i==(e?s.to:s.from)){i==t.head&&s.number!=(e?r.doc.lines:1)&&(i+=e?1:-1);break}let a=Qe(s.text,i-s.from,e)+s.from,h=s.text.slice(Math.min(i,a)-s.from,Math.max(i,a)-s.from),c=o(h);if(l!=null&&c!=l)break;(h!=" "||i!=t.head)&&(l=c),i=a}return i}),oO=n=>sO(n,!1),KS=n=>sO(n,!0);var JS=n=>yr(n,e=>{let t=n.lineBlockAt(e.head).to;return e.headyr(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),ty=n=>yr(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head{if(n.readOnly)return!1;let t=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:U.of(["",""])},range:k.cursor(i.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},ny=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let r=i.from,s=n.doc.lineAt(r),o=r==s.from?r-1:Qe(s.text,r-s.from,!1)+s.from,l=r==s.to?r+1:Qe(s.text,r-s.from,!0)+s.from;return{changes:{from:o,to:l,insert:n.doc.slice(r,l).append(n.doc.slice(o,r))},range:k.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function Vs(n){let e=[],t=-1;for(let i of n.selection.ranges){let r=n.doc.lineAt(i.from),s=n.doc.lineAt(i.to);if(!i.empty&&i.to==s.from&&(s=n.doc.lineAt(i.to-1)),t>=r.number){let o=e[e.length-1];o.to=s.to,o.ranges.push(i)}else e.push({from:r.from,to:s.to,ranges:[i]});t=s.number+1}return e}function lO(n,e,t){if(n.readOnly)return!1;let i=[],r=[];for(let s of Vs(n)){if(t?s.to==n.doc.length:s.from==0)continue;let o=n.doc.lineAt(t?s.to+1:s.from-1),l=o.length+1;if(t){i.push({from:s.to,to:o.to},{from:s.from,insert:o.text+n.lineBreak});for(let a of s.ranges)r.push(k.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:s.from},{from:s.to,insert:n.lineBreak+o.text});for(let a of s.ranges)r.push(k.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:k.create(r,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}var ry=({state:n,dispatch:e})=>lO(n,e,!1),sy=({state:n,dispatch:e})=>lO(n,e,!0);function aO(n,e,t){if(n.readOnly)return!1;let i=[];for(let s of Vs(n))t?i.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):i.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});let r=n.changes(i);return e(n.update({changes:r,selection:n.selection.map(r,t?1:-1),scrollIntoView:!0,userEvent:"input.copyline"})),!0}var oy=({state:n,dispatch:e})=>aO(n,e,!1),ly=({state:n,dispatch:e})=>aO(n,e,!0),ay=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes(Vs(e).map(({from:r,to:s})=>(r>0?r--:s{let s;if(n.lineWrapping){let o=n.lineBlockAt(r.head),l=n.coordsAtPos(r.head,r.assoc||1);l&&(s=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(r,!0,s)}).map(t);return n.dispatch({changes:t,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function hy(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=pe(n).resolveInner(e),i=t.childBefore(e),r=t.childAfter(e),s;return i&&r&&i.to<=e&&r.from>=e&&(s=i.type.prop(D.closedBy))&&s.indexOf(r.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(r.from).from&&!/\S/.test(n.sliceDoc(i.to,r.from))?{from:i.to,to:r.from}:null}var Xd=hO(!1),cy=hO(!0);function hO(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(r=>{let{from:s,to:o}=r,l=e.doc.lineAt(s),a=!n&&s==o&&hy(e,s);n&&(s=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new Ri(e,{simulateBreak:s,simulateDoubleBreak:!!a}),c=ra(h,s);for(c==null&&(c=xi(/^\s*/.exec(e.doc.lineAt(s).text)[0],e.tabSize));ol.from&&s{let r=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>t&&(i.empty||i.to>l.from)&&(e(l,r,i),t=l.number),o=l.to+1}let s=n.changes(r);return{changes:r,range:k.range(s.mapPos(i.anchor,1),s.mapPos(i.head,1))}})}var fy=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new Ri(n,{overrideIndentation:s=>{let o=t[s];return o??-1}}),r=Ha(n,(s,o,l)=>{let a=ra(i,s.from);if(a==null)return;/\S/.test(s.text)||(a=0);let h=/^\s*/.exec(s.text)[0],c=cr(n,a);(h!=c||l.fromn.readOnly?!1:(e(n.update(Ha(n,(t,i)=>{i.push({from:t.from,insert:n.facet(gn)})}),{userEvent:"input.indent"})),!0),dy=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(Ha(n,(t,i)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let s=xi(r,n.tabSize),o=0,l=cr(n,Math.max(0,s-si(n)));for(;o(n.setTabFocusMode(),!0);var py=[{key:"Ctrl-b",run:_d,shift:Gd,preventDefault:!0},{key:"Ctrl-f",run:zd,shift:Fd},{key:"Ctrl-p",run:Dd,shift:Jd},{key:"Ctrl-n",run:Bd,shift:eO},{key:"Ctrl-a",run:AS,shift:DS},{key:"Ctrl-e",run:RS,shift:BS},{key:"Ctrl-d",run:rO},{key:"Ctrl-h",run:Na},{key:"Ctrl-k",run:JS},{key:"Ctrl-Alt-h",run:oO},{key:"Ctrl-o",run:iy},{key:"Ctrl-t",run:ny},{key:"Ctrl-v",run:Ua}],my=[{key:"ArrowLeft",run:_d,shift:Gd,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:wS,shift:ES,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:XS,shift:WS,preventDefault:!0},{key:"ArrowRight",run:zd,shift:Fd,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:kS,shift:LS,preventDefault:!0},{mac:"Cmd-ArrowRight",run:ZS,shift:VS,preventDefault:!0},{key:"ArrowUp",run:Dd,shift:Jd,preventDefault:!0},{mac:"Cmd-ArrowUp",run:vd,shift:Cd},{mac:"Ctrl-ArrowUp",run:wd,shift:kd},{key:"ArrowDown",run:Bd,shift:eO,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Pd,shift:Td},{mac:"Ctrl-ArrowDown",run:Ua,shift:$d},{key:"PageUp",run:wd,shift:kd},{key:"PageDown",run:Ua,shift:$d},{key:"Home",run:TS,shift:zS,preventDefault:!0},{key:"Mod-Home",run:vd,shift:Cd},{key:"End",run:CS,shift:_S,preventDefault:!0},{key:"Mod-End",run:Pd,shift:Td},{key:"Enter",run:Xd,shift:Xd},{key:"Mod-a",run:IS},{key:"Backspace",run:Na,shift:Na,preventDefault:!0},{key:"Delete",run:rO,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:oO,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:KS,preventDefault:!0},{mac:"Mod-Backspace",run:ey,preventDefault:!0},{mac:"Mod-Delete",run:ty,preventDefault:!0}].concat(py.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),cO=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:vS,shift:YS},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:PS,shift:qS},{key:"Alt-ArrowUp",run:ry},{key:"Shift-Alt-ArrowUp",run:oy},{key:"Alt-ArrowDown",run:sy},{key:"Shift-Alt-ArrowDown",run:ly},{key:"Mod-Alt-ArrowUp",run:GS},{key:"Mod-Alt-ArrowDown",run:FS},{key:"Escape",run:HS},{key:"Mod-Enter",run:cy},{key:"Alt-l",mac:"Ctrl-l",run:US},{key:"Mod-i",run:NS,preventDefault:!0},{key:"Mod-[",run:dy},{key:"Mod-]",run:uy},{key:"Mod-Alt-\\",run:fy},{key:"Shift-Mod-k",run:ay},{key:"Shift-Mod-\\",run:jS},{key:"Mod-/",run:oS},{key:"Alt-A",run:aS},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Oy}].concat(my);var Ka={previewLimit:"Preview limit",expandHeader:"Expand or collapse header value",source:"Request",response:"Response",select:"Requests",parse:"Read requests",send:"Send",cancel:"Cancel",ready:"Ready",empty:"No requests found. Check the request line.",working:"Working\u2026",cancelling:"Cancelling\u2026",cancelled:"Cancelled",truncated:"Preview truncated. Saving exports only this preview.",binary:"Binary response \u2014 body preview and saving unavailable.",bridge:"Open this plugin in Lithe to send requests.",failed:"Request failed. Try again.",body:"Body",headers:"Headers",pretty:"Format JSON",memory:"Session history \xB7 saves only on request",hint:"Send a request to inspect its response.",stale:"Request changed. Send will read it again.","httpClient.invalidInput":"Invalid or oversized input (maximum 128 KiB).","httpClient.fileIncludeUnsupported":"Local file includes are not supported. Paste the body instead.","httpClient.handlerUnsupported":"Response scripts and file redirects are not supported. Remove them before sending.","httpClient.prepareFailed":"Check request syntax and inline variables. Environment files are not loaded.","httpClient.invalidScheme":"Only HTTP and HTTPS are supported.","httpClient.timeout":"The request exceeded 30 seconds.","httpClient.transportFailed":"Connection failed. Check the URL, network and certificate.","httpClient.responseTooLarge":"Response metadata exceeds the plugin limit.",history:"History",emptyHistory:"No history",clearHistory:"Clear session history",openFile:"Open .http",fileLoaded:"File loaded. Select a request and send.",saved:"Response saved.",save:"Save response",saveBody:"Body only",saveAll:"Headers + body",saveMode:"Save content",preview:"Preview",previewHelp:"Save HTML inside this workspace and open it in the editor preview",previewSaved:"HTML saved and opened in the editor preview.",previewTitle:"Save HTML inside this workspace to preview",wrap:"Wrap lines / horizontal scrolling",resize:"Resize request and response panes","httpClient.fileReadFailed":"Cannot read this file. Choose a UTF-8 .http or .rest file up to 128 KiB.","httpClient.fileWriteFailed":"Cannot save this file. Choose a writable location outside the application or plugin package.","httpClient.previewUnavailable":"HTML preview requires a current Lithe host and a local workspace.","httpClient.previewOutsideWorkspace":"Choose an .html file inside this workspace for the editor preview.","httpClient.previewDirty":"This HTML file is already open in the editor. Choose another file so the preview shows the new response.","httpClient.previewFailed":"HTML was saved, but the editor preview could not open. Open the saved file in the editor.","httpClient.inputTooLarge":"Request exceeds 128 KiB. Shorten it before sending.",oldBridge:"Update Lithe to enable native file dialogs.",chooseHistory:"Choose history",requestSession:"Session draft",sessionOnly:"Session only",responseEmpty:"Your response starts here",responseEmptyHint:"Write a request or open a .http file, then send it to inspect the response.",responseWaiting:"Waiting for the current operation to finish\u2026",responseFailed:"Unable to complete the request",requestCount:"{count} requests",sendShortcut:"Send request ({shortcut})",expandLeadingBlanks:"Show {count} leading blank lines",collapseLeadingBlanks:"Collapse {count} leading blank lines",leadingBlanksHelp:"Only the HTML display is compacted. Saving and previewing preserve the original response."};var fO={previewLimit:"\u9884\u89C8\u4E0A\u9650",expandHeader:"\u5C55\u5F00\u6216\u6536\u8D77\u54CD\u5E94\u5934\u503C",source:"\u8BF7\u6C42",response:"\u54CD\u5E94",select:"\u8BF7\u6C42\u5217\u8868",parse:"\u8BFB\u53D6\u8BF7\u6C42",send:"\u53D1\u9001",cancel:"\u53D6\u6D88",ready:"\u5C31\u7EEA",empty:"\u672A\u627E\u5230\u8BF7\u6C42\uFF0C\u8BF7\u68C0\u67E5\u8BF7\u6C42\u884C\u3002",working:"\u5904\u7406\u4E2D\u2026",cancelling:"\u6B63\u5728\u53D6\u6D88\u2026",cancelled:"\u5DF2\u53D6\u6D88",truncated:"\u9884\u89C8\u5DF2\u622A\u65AD\uFF0C\u4FDD\u5B58\u4EC5\u5BFC\u51FA\u5F53\u524D\u9884\u89C8\u5185\u5BB9\u3002",binary:"\u4E8C\u8FDB\u5236\u54CD\u5E94\uFF0C\u65E0\u6CD5\u9884\u89C8\u6216\u4FDD\u5B58\u6B63\u6587\u3002",bridge:"\u8BF7\u5728 Lithe \u4E2D\u6253\u5F00\u6B64\u63D2\u4EF6\u4EE5\u53D1\u9001\u8BF7\u6C42\u3002",failed:"\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002",body:"\u6B63\u6587",headers:"\u54CD\u5E94\u5934",pretty:"\u683C\u5F0F\u5316 JSON",memory:"\u5386\u53F2\u4EC5\u4FDD\u7559\u5728\u672C\u6B21\u4F1A\u8BDD \xB7 \u6309\u9700\u4FDD\u5B58",hint:"\u53D1\u9001\u8BF7\u6C42\u540E\u5728\u6B64\u67E5\u770B\u54CD\u5E94\u3002",stale:"\u8BF7\u6C42\u5DF2\u4FEE\u6539\uFF0C\u53D1\u9001\u65F6\u4F1A\u91CD\u65B0\u8BFB\u53D6\u3002","httpClient.invalidInput":"\u8F93\u5165\u65E0\u6548\u6216\u8D85\u8FC7 128 KiB\u3002","httpClient.fileIncludeUnsupported":"\u6682\u4E0D\u652F\u6301\u672C\u5730\u6587\u4EF6\u5F15\u7528\uFF0C\u8BF7\u76F4\u63A5\u7C98\u8D34\u6B63\u6587\u3002","httpClient.handlerUnsupported":"\u6682\u4E0D\u652F\u6301\u54CD\u5E94\u811A\u672C\u548C\u6587\u4EF6\u91CD\u5B9A\u5411\uFF0C\u8BF7\u79FB\u9664\u540E\u518D\u53D1\u9001\u3002","httpClient.prepareFailed":"\u8BF7\u68C0\u67E5\u8BF7\u6C42\u8BED\u6CD5\u4E0E\u5185\u8054\u53D8\u91CF\uFF1B\u4E0D\u4F1A\u52A0\u8F7D\u73AF\u5883\u6587\u4EF6\u3002","httpClient.invalidScheme":"\u4EC5\u652F\u6301 HTTP \u548C HTTPS\u3002","httpClient.timeout":"\u8BF7\u6C42\u8D85\u8FC7 30 \u79D2\u3002","httpClient.transportFailed":"\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5730\u5740\u3001\u7F51\u7EDC\u4E0E\u8BC1\u4E66\u3002","httpClient.responseTooLarge":"\u54CD\u5E94\u5143\u6570\u636E\u8D85\u8FC7\u63D2\u4EF6\u9650\u5236\u3002",history:"\u5386\u53F2\u8BB0\u5F55",emptyHistory:"\u6682\u65E0\u5386\u53F2",clearHistory:"\u6E05\u7A7A\u672C\u6B21\u4F1A\u8BDD\u7684\u5386\u53F2\u8BB0\u5F55",openFile:"\u6253\u5F00 .http",fileLoaded:"\u6587\u4EF6\u5DF2\u8BFB\u53D6\uFF0C\u9009\u62E9\u8BF7\u6C42\u540E\u5373\u53EF\u53D1\u9001\u3002",saved:"\u54CD\u5E94\u5DF2\u4FDD\u5B58\u3002",save:"\u4FDD\u5B58\u54CD\u5E94",saveBody:"\u4EC5\u6B63\u6587",saveAll:"\u54CD\u5E94\u5934 + \u6B63\u6587",saveMode:"\u4FDD\u5B58\u5185\u5BB9",preview:"\u9884\u89C8",previewHelp:"\u5C06 HTML \u4FDD\u5B58\u5230\u5F53\u524D\u5DE5\u4F5C\u533A\uFF0C\u5E76\u5728\u7F16\u8F91\u533A\u6253\u5F00 HTML \u9884\u89C8",previewSaved:"HTML \u5DF2\u4FDD\u5B58\u5E76\u5728\u7F16\u8F91\u533A\u6253\u5F00\u9884\u89C8\u3002",previewTitle:"\u5C06 HTML \u4FDD\u5B58\u5230\u5F53\u524D\u5DE5\u4F5C\u533A\u4EE5\u9884\u89C8",wrap:"\u81EA\u52A8\u6362\u884C / \u6A2A\u5411\u6EDA\u52A8",resize:"\u8C03\u6574\u8BF7\u6C42\u4E0E\u54CD\u5E94\u9762\u677F\u5927\u5C0F","httpClient.fileReadFailed":"\u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6\uFF0C\u8BF7\u9009\u62E9\u4E0D\u8D85\u8FC7 128 KiB \u7684 UTF-8 .http \u6216 .rest \u6587\u4EF6\u3002","httpClient.fileWriteFailed":"\u65E0\u6CD5\u4FDD\u5B58\u6587\u4EF6\uFF0C\u8BF7\u9009\u62E9\u5E94\u7528\u548C\u63D2\u4EF6\u5B89\u88C5\u76EE\u5F55\u4E4B\u5916\u7684\u53EF\u5199\u4F4D\u7F6E\u3002","httpClient.previewUnavailable":"HTML \u9884\u89C8\u9700\u8981\u65B0\u7248 Lithe \u548C\u672C\u5730\u5DE5\u4F5C\u533A\u3002","httpClient.previewOutsideWorkspace":"\u8BF7\u9009\u62E9\u5F53\u524D\u5DE5\u4F5C\u533A\u5185\u7684 .html \u6587\u4EF6\uFF0C\u4EE5\u4FBF\u5728\u7F16\u8F91\u533A\u9884\u89C8\u3002","httpClient.previewDirty":"\u6B64 HTML \u6587\u4EF6\u5DF2\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\uFF0C\u8BF7\u53E6\u9009\u6587\u4EF6\uFF0C\u4EE5\u786E\u4FDD\u9884\u89C8\u663E\u793A\u672C\u6B21\u54CD\u5E94\u3002","httpClient.previewFailed":"HTML \u5DF2\u4FDD\u5B58\uFF0C\u4F46\u672A\u80FD\u6253\u5F00\u9884\u89C8\uFF0C\u8BF7\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u4FDD\u5B58\u7684\u6587\u4EF6\u3002","httpClient.inputTooLarge":"\u8BF7\u6C42\u8D85\u8FC7 128 KiB\uFF0C\u8BF7\u7F29\u77ED\u540E\u518D\u53D1\u9001\u3002",oldBridge:"\u8BF7\u66F4\u65B0 Lithe\uFF0C\u4EE5\u4F7F\u7528\u539F\u751F\u6587\u4EF6\u5BF9\u8BDD\u6846\u3002",chooseHistory:"\u9009\u62E9\u5386\u53F2\u8BF7\u6C42",requestSession:"\u4F1A\u8BDD\u8349\u7A3F",sessionOnly:"\u4EC5\u672C\u6B21\u4F1A\u8BDD",responseEmpty:"\u54CD\u5E94\u5C06\u5728\u8FD9\u91CC\u5448\u73B0",responseEmptyHint:"\u7F16\u5199\u8BF7\u6C42\u6216\u6253\u5F00 .http \u6587\u4EF6\uFF0C\u53D1\u9001\u540E\u5373\u53EF\u67E5\u770B\u54CD\u5E94\u3002",responseWaiting:"\u6B63\u5728\u7B49\u5F85\u5F53\u524D\u64CD\u4F5C\u5B8C\u6210\u2026",responseFailed:"\u672A\u80FD\u5B8C\u6210\u8BF7\u6C42",requestCount:"{count} \u4E2A\u8BF7\u6C42",sendShortcut:"\u53D1\u9001\u8BF7\u6C42\uFF08{shortcut}\uFF09",expandLeadingBlanks:"\u5C55\u5F00\u539F\u6587\uFF08\u5F00\u5934 {count} \u884C\u7A7A\u767D\uFF09",collapseLeadingBlanks:"\u6536\u8D77\u5F00\u5934 {count} \u884C\u7A7A\u767D",leadingBlanksHelp:"\u4EC5\u6536\u8D77 HTML \u67E5\u770B\u5668\u4E2D\u7684\u524D\u5BFC\u7A7A\u884C\uFF0C\u4FDD\u5B58\u548C\u9884\u89C8\u4ECD\u4F7F\u7528\u539F\u59CB\u54CD\u5E94\u3002"};var OO=String(window.lithe?.context?.locale||navigator.language).startsWith("zh"),fe=(n,e={})=>((OO?fO:Ka)[n]||Ka.failed).replace(/\{(\w+)\}/g,(t,i)=>e[i]??t),R=n=>document.getElementById(n),Xt=window.lithe,Ds=Xt?.version>=2,Is=128*1024,Sy=20,yy=1024*1024,Us=n=>new TextEncoder().encode(n).length;document.documentElement.lang=OO?"zh-CN":"en";document.querySelectorAll("[data-i18n]").forEach(n=>{n.textContent=fe(n.dataset.i18n)});document.querySelectorAll("[data-label]").forEach(n=>{n.setAttribute("aria-label",fe(n.dataset.label))});document.querySelectorAll("[data-title]").forEach(n=>{n.title=fe(n.dataset.title),n.setAttribute("aria-label",fe(n.dataset.title))});var pO=Xt?.context?.platform==="macos"||/Mac/.test(navigator.platform)?"\u2318 \u21B5":"Ctrl \u21B5";document.querySelectorAll(".shortcut, #empty-shortcut").forEach(n=>{n.textContent=pO});R("send").title=fe("sendShortcut",{shortcut:pO});var Qy=Ps.define({startState:()=>({http:fr.startState(),json:Rs.startState(2),body:!1}),copyState:n=>({http:{...n.http},json:{...n.json,cc:n.json.cc.slice()},body:n.body}),blankLine(n){n.body=!0},token(n,e){if(n.sol()){if(n.match(/^\s*###.*$/))return e.http=fr.startState(),e.json=Rs.startState(2),e.body=!1,"heading";if(n.match(/^\s*(?:#|\/\/).*$/))return"comment";if(n.match(/^\s*@[^=\s]+\s*=/))return"variableName";/^\s*[A-Z]+\s+\S/.test(n.string)&&(e.http=fr.startState(),e.body=!1)}return e.body?Rs.token(n,e.json):fr.token(n,e.http)}}),mO=tu(mn.define([{tag:[b.keyword,b.heading,b.bool,b.null],color:"var(--syntax-keyword)"},{tag:[b.string,b.special(b.string)],color:"var(--syntax-string)"},{tag:[b.atom,b.propertyName,b.variableName,b.tagName],color:"var(--syntax-property)"},{tag:[b.comment,b.meta],color:"var(--muted)"},{tag:b.number,color:"var(--syntax-property)"}])),gO=new Gt,bO=new Gt,SO=new Gt,Yi=null,Se=!1,fi=!1,Pn=null,gt=[],Y=null,Vt="body",Ee=[],kr="",nh=!1,Ja=!0,Qr=!0,eh=null,ci=0,rh="ready",sh=!1,uO=null,th=0,ih=0,Ei=!1,Xe=R("requests"),Dt=new E({parent:R("source"),extensions:[vf(),kf(),mO,Qy,Md(),xf(),$f("GET http://localhost:8080/health"),gO.of(E.editable.of(!0)),E.contentAttributes.of({"aria-label":fe("source"),spellcheck:"false",autocapitalize:"off",autocomplete:"off"}),nr.of([...cO,...Yd,{key:"Tab",run(n){return n.dispatch(n.state.replaceSelection(" ")),!0}}]),E.updateListener.of(n=>{!n.docChanged||nh||(Pn=null,gt=[],Xe.replaceChildren(),kr="",QO(),ci=Us(n.state.doc.toString()),Cn(),We(ci>Is?"httpClient.inputTooLarge":"stale"),ui())})]}),xr=new E({parent:R("response"),extensions:[ue.readOnly.of(!0),mO,bO.of(E.lineWrapping),SO.of([]),E.contentAttributes.of({"aria-label":fe("response"),spellcheck:"false"})]});function wr(){return Dt.state.doc.toString()}function yO(n,e=""){nh=!0;try{Dt.dispatch({changes:{from:0,to:Dt.state.doc.length,insert:n},selection:{anchor:0}})}finally{nh=!1}Pn=null,gt=[],Xe.replaceChildren(),kr=e,QO(),ci=Us(n),Cn()}function QO(){R("file-name").textContent=kr||fe("openFile"),R("open-file").title=kr||fe("openFile")}function We(n,e=!1){rh=n,sh=e,R("status").textContent=fe(n),document.querySelector("footer").dataset.error=String(e),xO()}function xO(){let n=R("response-empty");if(n.hidden=!!Y,Y)return;let e=Se?"busy":sh?"error":"idle";n.dataset.mode=e,R("empty-title").textContent=fe(e==="busy"?"working":e==="error"?"responseFailed":"responseEmpty"),R("empty-detail").textContent=fe(e==="busy"?"responseWaiting":sh?rh:rh==="cancelled"?"cancelled":"responseEmptyHint"),R("empty-shortcut").hidden=e!=="idle"}function Cn(){!gt.length&&!Xe.options.length&&Xe.add(new Option(fe("select"),""));let n=gt.find(t=>t.index===Number(Xe.value));R("method").hidden=!n,R("method").textContent=n?.method||"",R("method").dataset.method=n?.method||"",Xe.title=n?`${n.method} ${n.url}`:fe("select");let e=ci>=1024?`${(ci/1024).toFixed(1)} KiB`:`${ci} B`;R("request-info").textContent=Pn!=null?`${fe("requestCount",{count:gt.length})} \xB7 ${e}`:e}function xy(n){let e=fi||n?.code==="requestCancelled";We(e?"cancelled":n?.pluginErrorCode||"failed",!e)}function ui(){let n=Dt.state.doc.length>0;R("parse").disabled=Se||!Xt||!n||ci>Is,R("send").disabled=Se||!Xt||!n||ci>Is||!R("preview-limit").validity.valid,R("cancel").disabled=!Yi||fi,R("cancel").hidden=!Se,document.body.dataset.busy=String(Se),R("response-empty").setAttribute("aria-busy",String(Se)),R("preview-limit").disabled=Se,R("open-file").disabled=Se||!Ds,Ds||(R("open-file").title=fe("oldBridge")),Xe.disabled=Se||!gt.length,R("history").disabled=Se||!Ee.length,R("clear-history").disabled=Se||!Ee.length,R("pretty").disabled=Se||Vt!=="body"||!Y||Y.truncated||Y.body==null,R("preview").disabled=Se||!Ds||!Y||Y.truncated,R("save").disabled=Se||!Ds||!Y||Y.body==null,R("save-mode").disabled=R("save").disabled,Ja!==!Se&&(Ja=!Se,Dt.dispatch({effects:gO.reconfigure(E.editable.of(Ja))})),xO()}function Bs(){let n=Y?.headers.find(([e])=>e.toLowerCase()==="content-type")?.[1].split(";")[0].trim().toLowerCase();return Y?.body!=null&&(n==="text/html"||n==="application/xhtml+xml"||/^\s*(?:=400?"error":"success",R("code").title=Y?`${Y.status} ${Y.statusText}`:"",R("header-count").hidden=!Y,R("header-count").textContent=Y?String(Y.headers.length):"";let n=Y?.headers.find(([i])=>i.toLowerCase()==="content-type")?.[1].split(";")[0].trim()||"";if(R("content-type").hidden=!n,R("content-type").textContent=n,R("content-type").title=n,R("metrics").textContent=Y?`${Math.round(Y.totalMs)} ms \xB7 ${Y.size>=1024?(Y.size/1024).toFixed(1)+" KiB":Y.size+" B"}`:"",R("response").hidden=!Y||Vt==="headers",R("response-headers").hidden=!Y||Vt!=="headers",document.querySelector(".pretty-label").hidden=Vt!=="body",R("preview").hidden=Vt!=="body"||!Bs(),R("notice").textContent=Y?.truncated?fe("truncated"):Y&&Y.body==null?fe("binary"):"",R("notice").title=R("notice").textContent,uO!==Y){uO=Y;let i=Bs()&&Y.body.match(/^(?:[\t ]*\r?\n)+/)?.[0]||"";th=i.length,ih=i.split(` +`).length-1,Ei=!1}let e=R("leading-whitespace");e.hidden=Vt!=="body"||!ih,e.setAttribute("aria-pressed",String(Ei)),e.textContent=fe(Ei?"collapseLeadingBlanks":"expandLeadingBlanks",{count:ih}),e.title=fe("leadingBlanksHelp");let t=[Y,R("pretty").checked,Ei];if(!eh||t.some((i,r)=>eh[r]!==i)){eh=t;let i=Y?.body??"";!Ei&&th&&(i=i.slice(th));let r=Bs()?xd():[];if(Y?.body!=null&&!Y.truncated)try{let s=JSON.parse(i);if(r=Ou(),R("pretty").checked){let o=JSON.stringify(s,null,2);o.length<=2*1024*1024&&(i=o)}}catch{}xr.dispatch({changes:{from:0,to:xr.state.doc.length,insert:i},selection:{anchor:0},scrollIntoView:!0,effects:SO.reconfigure(r)})}wy(),ui(),xr.requestMeasure()}var dO=null;function wy(){if(dO===Y)return;dO=Y;let n=R("response-headers");if(n.replaceChildren(),!Y)return;let e=document.createElement("p");e.className="response-protocol",e.textContent=`${Y.version} ${Y.status} ${Y.statusText}`,n.append(e);for(let[t,i]of Y.headers){let r=document.createElement("details"),s=document.createElement("summary");s.title=fe("expandHeader");let o=document.createElement("span");o.className="header-key",o.textContent=t,o.title=t;let l=document.createElement("span");l.className="header-preview",l.textContent=i;let a=document.createElement("div");a.className="header-value",a.textContent=i,s.append(o,l),r.append(s,a),n.append(r)}}async function $r(n,e){Yi=crypto.randomUUID(),ui();try{let t=await Xt.request("functions.invoke",{function:n,params:e,call:Yi});return fi?null:t.value}finally{Yi=null,ui()}}async function wO(n=null){let e=wr();if(Pn=null,Xe.replaceChildren(),Us(e)>Is)return We("httpClient.inputTooLarge",!0),!1;let t=await $r("requests.parse",{text:e});if(!t)return!1;gt=t.requests;for(let i of gt)Xe.add(new Option(i.name||i.url,String(i.index)));return Pn=e,Xe.options.length?(n!=null&>.some(i=>i.index===n)&&(Xe.value=String(n)),Cn(),kO(),!0):(Cn(),We("empty"),!1)}function ah(){let n=R("history");n.replaceChildren(new Option(fe("emptyHistory"),"")),n.options[0].textContent=Ee.length?fe("chooseHistory"):fe("emptyHistory"),Ee.forEach((e,t)=>n.add(new Option(e.label,String(t)))),R("history-count").hidden=!Ee.length,R("history-count").textContent=String(Ee.length)}function ky(){let n=gt.find(i=>i.index===Number(Xe.value)),e={text:wr(),index:Number(Xe.value),fileName:kr,label:`${n.method} ${n.name||n.url}`};Ee=Ee.filter(i=>i.text!==e.text||i.index!==e.index),Ee.unshift(e),Ee=Ee.slice(0,Sy);let t=0;Ee=Ee.filter(i=>(t+=Us(i.text))<=yy),ah()}async function hh(n){if(!(Se||!Xt)){Se=!0,fi=!1,ui(),We("working");try{await n()}catch(e){xy(e)}finally{fi&&We("cancelled"),Se=!1,Tn()}}}async function Ns(n,e=null){wr().trim()&&await hh(async()=>{n&&(Y=null,Tn()),!((!n||Pn!==wr())&&!await wO(e))&&(fi||(n&&(Y=await $r("requests.execute",{text:wr(),index:Number(Xe.value),previewLimitKiB:Number(R("preview-limit").value)}),Y&&ky()),We("ready")))})}function kO(){Cn();let n=gt.find(t=>t.index===Number(Xe.value));if(!n)return;let e=Dt.state.doc.line(Math.min(Dt.state.doc.lines,n.line+1));Dt.dispatch({selection:{anchor:e.from},scrollIntoView:!0})}Xe.addEventListener("change",kO);R("parse").addEventListener("click",()=>Ns(!1));R("send").addEventListener("click",()=>Ns(!0));R("cancel").addEventListener("click",async()=>{if(!Yi||fi)return;let n=Yi;fi=!0,ui(),We("cancelling");try{await Xt.request("functions.cancel",{call:n})}catch{Yi===n&&We("failed",!0)}});R("open-file").addEventListener("click",()=>hh(async()=>{let{path:n}=await Xt.request("dialog.openFile",{title:fe("openFile"),extensions:["http","rest"]});if(!n){We("ready");return}let e=await $r("requests.openFile",{path:n});e&&(yO(e.text,e.name),await wO()&&We("fileLoaded"))}));R("history").addEventListener("change",async()=>{if(R("history").value===""||Se)return;let n=Ee[Number(R("history").value)];yO(n.text,n.fileName),await Ns(!1,n.index)});R("clear-history").addEventListener("click",()=>{Ee=[],ah(),ui()});for(let n of["body","headers"])R(n+"-tab").addEventListener("click",()=>{Vt=n,Tn()});R("pretty").addEventListener("change",Tn);R("leading-whitespace").addEventListener("click",()=>{Ei=!Ei,Tn()});R("preview-limit").addEventListener("input",ui);R("wrap").addEventListener("click",()=>{Qr=!Qr,R("wrap").setAttribute("aria-pressed",String(Qr)),xr.dispatch({effects:bO.reconfigure(Qr?E.lineWrapping:[])}),R("response-headers").classList.toggle("no-wrap",!Qr)});function $y(n){let e=Y.body;return n?`${Y.version} ${Y.status} ${Y.statusText}\r +${Y.headers.map(([t,i])=>`${t}: ${i}`).join(`\r +`)}\r +\r +${e}`:e}function vy(){if(Bs())return"html";let n=Y.headers.find(([e])=>e.toLowerCase()==="content-type")?.[1]||"";return/json/i.test(n)?"json":/xml/i.test(n)?"xml":"txt"}async function $O(n){!Y||Y.body==null||await hh(async()=>{if(n&&!await $r("response.previewInfo",{}))return;let e=!n&&R("save-mode").value==="all",t=e?"txt":vy(),{path:i}=await Xt.request("dialog.saveFile",{title:fe(n?"previewTitle":"save"),suggestedName:`response.${t}`,extensions:[t]});if(!i){We("ready");return}await $r("response.save",{path:i,text:$y(e),preview:n})&&We(n?"previewSaved":"saved")})}R("save").addEventListener("click",()=>$O(!1));R("preview").addEventListener("click",()=>$O(!0));document.addEventListener("keydown",n=>{(n.metaKey||n.ctrlKey)&&n.key==="Enter"&&(n.preventDefault(),Ns(!0))});var oh=document.querySelector("main"),lt=R("splitter"),qi=.5,Li=null,vn=null,lh=qi,vr=()=>matchMedia("(max-width: 720px)").matches;function Xn(n){let e=oh.getBoundingClientRect(),t=vr()?e.height:e.width,i=Math.min(.4,180/Math.max(t,1));qi=Math.min(1-i,Math.max(i,n)),oh.style.setProperty("--request-width",`calc((100% - 5px) * ${qi})`),lt.setAttribute("aria-valuenow",String(Math.round(qi*100))),lt.setAttribute("aria-valuemin",String(Math.round(i*100))),lt.setAttribute("aria-valuemax",String(Math.round((1-i)*100))),lt.setAttribute("aria-orientation",vr()?"horizontal":"vertical")}function Gs(n){if(!Li||n?.pointerId!=null&&n.pointerId!==Li.id)return;vn!=null&&(cancelAnimationFrame(vn),vn=null,Xn(lh));let e=Li.id;Li=null,document.body.classList.remove("resizing"),lt.hasPointerCapture(e)&<.releasePointerCapture(e)}lt.addEventListener("pointerdown",n=>{n.button===0&&(n.preventDefault(),Li={id:n.pointerId},lt.setPointerCapture(n.pointerId),document.body.classList.add("resizing"))});lt.addEventListener("pointermove",n=>{if(!Li||Li.id!==n.pointerId)return;let e=oh.getBoundingClientRect();lh=vr()?(n.clientY-e.top)/e.height:(n.clientX-e.left)/e.width,vn==null&&(vn=requestAnimationFrame(()=>{vn=null,Xn(lh)}))});for(let n of["pointerup","pointercancel","lostpointercapture"])lt.addEventListener(n,Gs);window.addEventListener("blur",()=>Gs());lt.addEventListener("dblclick",()=>Xn(.5));lt.addEventListener("keydown",n=>{let e=vr()?"ArrowUp":"ArrowLeft",t=vr()?"ArrowDown":"ArrowRight";[e,t,"Home","End"].includes(n.key)&&(n.preventDefault(),Xn(n.key==="Home"?0:n.key==="End"?1:qi+(n.key===e?-.02:.02)))});window.addEventListener("resize",()=>{Gs(),Xn(qi)});window.addEventListener("pagehide",()=>{Gs(),Dt.destroy(),xr.destroy()});ah();Cn();Xn(qi);We(Xt?"ready":"bridge");Tn();})(); diff --git a/ui/src/main.js b/ui/src/main.js new file mode 100644 index 0000000..abc9dc5 --- /dev/null +++ b/ui/src/main.js @@ -0,0 +1,378 @@ +import { EditorState, Compartment } from '@codemirror/state'; +import { EditorView, lineNumbers, highlightActiveLine, keymap, placeholder, drawSelection } from '@codemirror/view'; +import { StreamLanguage, syntaxHighlighting, HighlightStyle } from '@codemirror/language'; +import { http } from '@codemirror/legacy-modes/mode/http'; +import { json as jsonBody } from '@codemirror/legacy-modes/mode/javascript'; +import { json } from '@codemirror/lang-json'; +import { html } from '@codemirror/lang-html'; +import { tags } from '@lezer/highlight'; +import { history as undoHistory, historyKeymap, defaultKeymap } from '@codemirror/commands'; +import en from '../../shared/i18n/en-US.json'; +import zh from '../../shared/i18n/zh-CN.json'; + +const chinese = String(window.lithe?.context?.locale || navigator.language).startsWith('zh'); +const t = (key, params = {}) => ((chinese ? zh : en)[key] || en.failed).replace(/\{(\w+)\}/g, (match, name) => params[name] ?? match); +const $ = id => document.getElementById(id); +const bridge = window.lithe; +const nativeFiles = bridge?.version >= 2; +const INPUT_LIMIT = 128 * 1024; +const HISTORY_LIMIT = 20, HISTORY_BYTES = 1024 * 1024; +const bytes = text => new TextEncoder().encode(text).length; +document.documentElement.lang = chinese ? 'zh-CN' : 'en'; +document.querySelectorAll('[data-i18n]').forEach(el => { el.textContent = t(el.dataset.i18n); }); +document.querySelectorAll('[data-label]').forEach(el => { el.setAttribute('aria-label', t(el.dataset.label)); }); +document.querySelectorAll('[data-title]').forEach(el => { + el.title = t(el.dataset.title); el.setAttribute('aria-label', t(el.dataset.title)); +}); +const sendShortcut = bridge?.context?.platform === 'macos' || /Mac/.test(navigator.platform) ? '⌘ ↵' : 'Ctrl ↵'; +document.querySelectorAll('.shortcut, #empty-shortcut').forEach(el => { el.textContent = sendShortcut; }); +$('send').title = t('sendShortcut', { shortcut: sendShortcut }); + +// Reuse CodeMirror's HTTP and JSON tokenizers; this wrapper only recognizes +// .http block separators and inline variables. Parsing/execution stays upstream. +const requestLanguage = StreamLanguage.define({ + startState: () => ({ http: http.startState(), json: jsonBody.startState(2), body: false }), + copyState: state => ({ http: { ...state.http }, json: { ...state.json, cc: state.json.cc.slice() }, body: state.body }), + blankLine(state) { state.body = true; }, + token(stream, state) { + if (stream.sol()) { + if (stream.match(/^\s*###.*$/)) { state.http = http.startState(); state.json = jsonBody.startState(2); state.body = false; return 'heading'; } + if (stream.match(/^\s*(?:#|\/\/).*$/)) return 'comment'; + if (stream.match(/^\s*@[^=\s]+\s*=/)) return 'variableName'; + if (/^\s*[A-Z]+\s+\S/.test(stream.string)) { state.http = http.startState(); state.body = false; } + } + return state.body ? jsonBody.token(stream, state.json) : http.token(stream, state.http); + }, +}); +const colors = syntaxHighlighting(HighlightStyle.define([ + { tag: [tags.keyword, tags.heading, tags.bool, tags.null], color: 'var(--syntax-keyword)' }, + { tag: [tags.string, tags.special(tags.string)], color: 'var(--syntax-string)' }, + { tag: [tags.atom, tags.propertyName, tags.variableName, tags.tagName], color: 'var(--syntax-property)' }, + { tag: [tags.comment, tags.meta], color: 'var(--muted)' }, + { tag: tags.number, color: 'var(--syntax-property)' }, +])); +const editable = new Compartment(), wrapping = new Compartment(), responseLanguage = new Compartment(); +let active = null, busy = false, cancelled = false, parsedText = null, parsedRequests = [], result = null, tab = 'body'; +let history = [], fileName = '', changingSource = false, editEnabled = true, wrap = true, renderedResponse = null; +let inputSize = 0; +let statusKey = 'ready', statusError = false; +let whitespaceResult = null, leadingBlankLength = 0, leadingBlankCount = 0, showLeadingBlanks = false; +const requests = $('requests'); +const source = new EditorView({ + parent: $('source'), + extensions: [lineNumbers(), highlightActiveLine(), colors, requestLanguage, undoHistory(), drawSelection(), + placeholder('GET http://localhost:8080/health'), + editable.of(EditorView.editable.of(true)), + EditorView.contentAttributes.of({ 'aria-label': t('source'), spellcheck: 'false', autocapitalize: 'off', autocomplete: 'off' }), + keymap.of([...defaultKeymap, ...historyKeymap, { key: 'Tab', run(view) { view.dispatch(view.state.replaceSelection(' ')); return true; } }]), + EditorView.updateListener.of(update => { + if (!update.docChanged || changingSource) return; + parsedText = null; parsedRequests = []; requests.replaceChildren(); + fileName = ''; updateFileName(); + inputSize = bytes(update.state.doc.toString()); + updateRequestChrome(); + status(inputSize > INPUT_LIMIT ? 'httpClient.inputTooLarge' : 'stale'); controls(); + }), + ], +}); +const response = new EditorView({ + parent: $('response'), + extensions: [EditorState.readOnly.of(true), colors, wrapping.of(EditorView.lineWrapping), responseLanguage.of([]), + EditorView.contentAttributes.of({ 'aria-label': t('response'), spellcheck: 'false' })], +}); +function sourceText() { return source.state.doc.toString(); } +function setSource(text, name = '') { + changingSource = true; + try { source.dispatch({ changes: { from: 0, to: source.state.doc.length, insert: text }, selection: { anchor: 0 } }); } + finally { changingSource = false; } + parsedText = null; parsedRequests = []; requests.replaceChildren(); fileName = name; updateFileName(); + inputSize = bytes(text); + updateRequestChrome(); +} +function updateFileName() { $('file-name').textContent = fileName || t('openFile'); $('open-file').title = fileName || t('openFile'); } +function status(key, error = false) { + statusKey = key; statusError = error; + $('status').textContent = t(key); document.querySelector('footer').dataset.error = String(error); + renderEmpty(); +} +function renderEmpty() { + const empty = $('response-empty'); + empty.hidden = Boolean(result); + if (result) return; + const mode = busy ? 'busy' : statusError ? 'error' : 'idle'; + empty.dataset.mode = mode; + $('empty-title').textContent = t(mode === 'busy' ? 'working' : mode === 'error' ? 'responseFailed' : 'responseEmpty'); + $('empty-detail').textContent = t(mode === 'busy' ? 'responseWaiting' : statusError ? statusKey : statusKey === 'cancelled' ? 'cancelled' : 'responseEmptyHint'); + $('empty-shortcut').hidden = mode !== 'idle'; +} +function updateRequestChrome() { + if (!parsedRequests.length && !requests.options.length) requests.add(new Option(t('select'), '')); + const item = parsedRequests.find(item => item.index === Number(requests.value)); + $('method').hidden = !item; + $('method').textContent = item?.method || ''; + $('method').dataset.method = item?.method || ''; + requests.title = item ? `${item.method} ${item.url}` : t('select'); + const size = inputSize >= 1024 ? `${(inputSize / 1024).toFixed(1)} KiB` : `${inputSize} B`; + $('request-info').textContent = parsedText != null ? `${t('requestCount', { count: parsedRequests.length })} · ${size}` : size; +} +function failed(error) { + const wasCancelled = cancelled || error?.code === 'requestCancelled'; + status(wasCancelled ? 'cancelled' : error?.pluginErrorCode || 'failed', !wasCancelled); +} +function controls() { + const hasSource = source.state.doc.length > 0; + $('parse').disabled = busy || !bridge || !hasSource || inputSize > INPUT_LIMIT; + $('send').disabled = busy || !bridge || !hasSource || inputSize > INPUT_LIMIT || !$('preview-limit').validity.valid; + $('cancel').disabled = !active || cancelled; + $('cancel').hidden = !busy; + document.body.dataset.busy = String(busy); + $('response-empty').setAttribute('aria-busy', String(busy)); + $('preview-limit').disabled = busy; + $('open-file').disabled = busy || !nativeFiles; + if (!nativeFiles) $('open-file').title = t('oldBridge'); + requests.disabled = busy || !parsedRequests.length; + $('history').disabled = busy || !history.length; + $('clear-history').disabled = busy || !history.length; + $('pretty').disabled = busy || tab !== 'body' || !result || result.truncated || result.body == null; + $('preview').disabled = busy || !nativeFiles || !result || result.truncated; + $('save').disabled = busy || !nativeFiles || !result || result.body == null; + $('save-mode').disabled = $('save').disabled; + if (editEnabled !== !busy) { editEnabled = !busy; source.dispatch({ effects: editable.reconfigure(EditorView.editable.of(editEnabled)) }); } + renderEmpty(); +} +function isHTML() { + const type = result?.headers.find(([name]) => name.toLowerCase() === 'content-type')?.[1].split(';')[0].trim().toLowerCase(); + return result?.body != null && (type === 'text/html' || type === 'application/xhtml+xml' || /^\s*(?:= 400 ? 'error' : 'success'; + $('code').title = result ? `${result.status} ${result.statusText}` : ''; + $('header-count').hidden = !result; + $('header-count').textContent = result ? String(result.headers.length) : ''; + const type = result?.headers.find(([name]) => name.toLowerCase() === 'content-type')?.[1].split(';')[0].trim() || ''; + $('content-type').hidden = !type; + $('content-type').textContent = type; + $('content-type').title = type; + $('metrics').textContent = result ? `${Math.round(result.totalMs)} ms · ${result.size >= 1024 ? (result.size / 1024).toFixed(1) + ' KiB' : result.size + ' B'}` : ''; + $('response').hidden = !result || tab === 'headers'; $('response-headers').hidden = !result || tab !== 'headers'; + document.querySelector('.pretty-label').hidden = tab !== 'body'; + $('preview').hidden = tab !== 'body' || !isHTML(); + $('notice').textContent = result?.truncated ? t('truncated') : result && result.body == null ? t('binary') : ''; + $('notice').title = $('notice').textContent; + if (whitespaceResult !== result) { + whitespaceResult = result; + // HTML pages often start with template whitespace. Compact only complete + // blank lines in the displayed document; result.body remains the raw export. + const prefix = isHTML() ? result.body.match(/^(?:[\t ]*\r?\n)+/)?.[0] || '' : ''; + leadingBlankLength = prefix.length; + leadingBlankCount = prefix.split('\n').length - 1; + showLeadingBlanks = false; + } + const whitespaceToggle = $('leading-whitespace'); + whitespaceToggle.hidden = tab !== 'body' || !leadingBlankCount; + whitespaceToggle.setAttribute('aria-pressed', String(showLeadingBlanks)); + whitespaceToggle.textContent = t(showLeadingBlanks ? 'collapseLeadingBlanks' : 'expandLeadingBlanks', { count: leadingBlankCount }); + whitespaceToggle.title = t('leadingBlanksHelp'); + // Tab, hover and resize changes never reformat or replace the response document. + const identity = [result, $('pretty').checked, showLeadingBlanks]; + if (!renderedResponse || identity.some((value, index) => renderedResponse[index] !== value)) { + renderedResponse = identity; + let text = result?.body ?? ''; + if (!showLeadingBlanks && leadingBlankLength) text = text.slice(leadingBlankLength); + let language = isHTML() ? html() : []; + if (result?.body != null && !result.truncated) { + try { + const value = JSON.parse(text); language = json(); + if ($('pretty').checked) { const pretty = JSON.stringify(value, null, 2); if (pretty.length <= 2 * 1024 * 1024) text = pretty; } + } catch { /* Preserve non-JSON text exactly. */ } + } + response.dispatch({ changes: { from: 0, to: response.state.doc.length, insert: text }, + selection: { anchor: 0 }, scrollIntoView: true, effects: responseLanguage.reconfigure(language) }); + } + renderHeaders(); controls(); response.requestMeasure(); +} +let renderedHeaders = null; +function renderHeaders() { + if (renderedHeaders === result) return; + renderedHeaders = result; + const container = $('response-headers'); container.replaceChildren(); + if (!result) return; + const protocol = document.createElement('p'); protocol.className = 'response-protocol'; + protocol.textContent = `${result.version} ${result.status} ${result.statusText}`; container.append(protocol); + for (const [key, value] of result.headers) { + const detail = document.createElement('details'), summary = document.createElement('summary'); summary.title = t('expandHeader'); + const name = document.createElement('span'); name.className = 'header-key'; name.textContent = key; name.title = key; + const preview = document.createElement('span'); preview.className = 'header-preview'; preview.textContent = value; + const full = document.createElement('div'); full.className = 'header-value'; full.textContent = value; + summary.append(name, preview); detail.append(summary, full); container.append(detail); + } +} +async function invoke(name, params) { + active = crypto.randomUUID(); controls(); + try { + const reply = await bridge.request('functions.invoke', { function: name, params, call: active }); + return cancelled ? null : reply.value; + } finally { active = null; controls(); } +} +async function parse(index = null) { + const text = sourceText(); parsedText = null; requests.replaceChildren(); + if (bytes(text) > INPUT_LIMIT) { status('httpClient.inputTooLarge', true); return false; } + const value = await invoke('requests.parse', { text }); + if (!value) return false; + parsedRequests = value.requests; + for (const item of parsedRequests) requests.add(new Option(item.name || item.url, String(item.index))); + parsedText = text; + if (!requests.options.length) { updateRequestChrome(); status('empty'); return false; } + if (index != null && parsedRequests.some(item => item.index === index)) requests.value = String(index); + updateRequestChrome(); + revealSelectedRequest(); + return true; +} +function renderHistory() { + const select = $('history'); select.replaceChildren(new Option(t('emptyHistory'), '')); + select.options[0].textContent = history.length ? t('chooseHistory') : t('emptyHistory'); + history.forEach((entry, index) => select.add(new Option(entry.label, String(index)))); + $('history-count').hidden = !history.length; + $('history-count').textContent = String(history.length); +} +function remember() { + const item = parsedRequests.find(item => item.index === Number(requests.value)); + const entry = { text: sourceText(), index: Number(requests.value), fileName, label: `${item.method} ${item.name || item.url}` }; + history = history.filter(old => old.text !== entry.text || old.index !== entry.index); + history.unshift(entry); history = history.slice(0, HISTORY_LIMIT); + let total = 0; history = history.filter(item => (total += bytes(item.text)) <= HISTORY_BYTES); + renderHistory(); +} +async function operation(action) { + if (busy || !bridge) return; + busy = true; cancelled = false; controls(); status('working'); + try { await action(); } catch (error) { failed(error); } + finally { if (cancelled) status('cancelled'); busy = false; render(); } +} +async function run(execute, index = null) { + if (!sourceText().trim()) return; + await operation(async () => { + if (execute) { result = null; render(); } + if (!execute || parsedText !== sourceText()) { if (!await parse(index)) return; } + if (cancelled) return; + if (execute) { + result = await invoke('requests.execute', { text: sourceText(), index: Number(requests.value), previewLimitKiB: Number($('preview-limit').value) }); + if (result) remember(); + } + status('ready'); + }); +} +function revealSelectedRequest() { + updateRequestChrome(); + const item = parsedRequests.find(item => item.index === Number(requests.value)); + if (!item) return; + const line = source.state.doc.line(Math.min(source.state.doc.lines, item.line + 1)); + source.dispatch({ selection: { anchor: line.from }, scrollIntoView: true }); +} +requests.addEventListener('change', revealSelectedRequest); +$('parse').addEventListener('click', () => run(false)); +$('send').addEventListener('click', () => run(true)); +$('cancel').addEventListener('click', async () => { + if (!active || cancelled) return; + const call = active; cancelled = true; controls(); status('cancelling'); + try { await bridge.request('functions.cancel', { call }); } + catch { if (active === call) status('failed', true); } +}); +$('open-file').addEventListener('click', () => operation(async () => { + const { path } = await bridge.request('dialog.openFile', { title: t('openFile'), extensions: ['http', 'rest'] }); + if (!path) { status('ready'); return; } + const value = await invoke('requests.openFile', { path }); + if (!value) return; + setSource(value.text, value.name); + if (await parse()) status('fileLoaded'); +})); +$('history').addEventListener('change', async () => { + if ($('history').value === '' || busy) return; + const entry = history[Number($('history').value)]; + setSource(entry.text, entry.fileName); await run(false, entry.index); +}); +$('clear-history').addEventListener('click', () => { history = []; renderHistory(); controls(); }); +for (const name of ['body', 'headers']) $(name + '-tab').addEventListener('click', () => { tab = name; render(); }); +$('pretty').addEventListener('change', render); +$('leading-whitespace').addEventListener('click', () => { showLeadingBlanks = !showLeadingBlanks; render(); }); +$('preview-limit').addEventListener('input', controls); +$('wrap').addEventListener('click', () => { + wrap = !wrap; $('wrap').setAttribute('aria-pressed', String(wrap)); + response.dispatch({ effects: wrapping.reconfigure(wrap ? EditorView.lineWrapping : []) }); + $('response-headers').classList.toggle('no-wrap', !wrap); +}); +function exportText(all) { + const body = result.body; + return all ? `${result.version} ${result.status} ${result.statusText}\r\n${result.headers.map(([k, v]) => `${k}: ${v}`).join('\r\n')}\r\n\r\n${body}` : body; +} +function extension() { + if (isHTML()) return 'html'; + const type = result.headers.find(([name]) => name.toLowerCase() === 'content-type')?.[1] || ''; + return /json/i.test(type) ? 'json' : /xml/i.test(type) ? 'xml' : 'txt'; +} +async function save(preview) { + if (!result || result.body == null) return; + await operation(async () => { + if (preview) { + if (!await invoke('response.previewInfo', {})) return; + } + const all = !preview && $('save-mode').value === 'all'; + const ext = all ? 'txt' : extension(); + const { path } = await bridge.request('dialog.saveFile', { title: t(preview ? 'previewTitle' : 'save'), suggestedName: `response.${ext}`, extensions: [ext] }); + if (!path) { status('ready'); return; } + const value = await invoke('response.save', { path, text: exportText(all), preview }); + if (value) status(preview ? 'previewSaved' : 'saved'); + }); +} +$('save').addEventListener('click', () => save(false)); +$('preview').addEventListener('click', () => save(true)); +document.addEventListener('keydown', event => { + if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') { event.preventDefault(); run(true); } +}); + +// A resize session owns capture and one animation frame; moving the divider +// updates only its grid variable. Editors keep their documents and viewport. +const main = document.querySelector('main'), splitter = $('splitter'); +let ratio = .5, drag = null, frame = null, nextRatio = ratio; +const stacked = () => matchMedia('(max-width: 720px)').matches; +function setRatio(value) { + const rect = main.getBoundingClientRect(), size = stacked() ? rect.height : rect.width; + const min = Math.min(.4, 180 / Math.max(size, 1)); + ratio = Math.min(1 - min, Math.max(min, value)); + main.style.setProperty('--request-width', `calc((100% - 5px) * ${ratio})`); + splitter.setAttribute('aria-valuenow', String(Math.round(ratio * 100))); + splitter.setAttribute('aria-valuemin', String(Math.round(min * 100))); + splitter.setAttribute('aria-valuemax', String(Math.round((1 - min) * 100))); + splitter.setAttribute('aria-orientation', stacked() ? 'horizontal' : 'vertical'); +} +function finishResize(event) { + if (!drag || (event?.pointerId != null && event.pointerId !== drag.id)) return; + if (frame != null) { cancelAnimationFrame(frame); frame = null; setRatio(nextRatio); } + const id = drag.id; drag = null; document.body.classList.remove('resizing'); + if (splitter.hasPointerCapture(id)) splitter.releasePointerCapture(id); +} +splitter.addEventListener('pointerdown', event => { + if (event.button !== 0) return; + event.preventDefault(); drag = { id: event.pointerId }; splitter.setPointerCapture(event.pointerId); document.body.classList.add('resizing'); +}); +splitter.addEventListener('pointermove', event => { + if (!drag || drag.id !== event.pointerId) return; + const rect = main.getBoundingClientRect(); + nextRatio = stacked() ? (event.clientY - rect.top) / rect.height : (event.clientX - rect.left) / rect.width; + if (frame == null) frame = requestAnimationFrame(() => { frame = null; setRatio(nextRatio); }); +}); +for (const event of ['pointerup', 'pointercancel', 'lostpointercapture']) splitter.addEventListener(event, finishResize); +window.addEventListener('blur', () => finishResize()); +splitter.addEventListener('dblclick', () => setRatio(.5)); +splitter.addEventListener('keydown', event => { + const decrease = stacked() ? 'ArrowUp' : 'ArrowLeft', increase = stacked() ? 'ArrowDown' : 'ArrowRight'; + if ([decrease, increase, 'Home', 'End'].includes(event.key)) { + event.preventDefault(); setRatio(event.key === 'Home' ? 0 : event.key === 'End' ? 1 : ratio + (event.key === decrease ? -.02 : .02)); + } +}); +window.addEventListener('resize', () => { finishResize(); setRatio(ratio); }); +window.addEventListener('pagehide', () => { finishResize(); source.destroy(); response.destroy(); }); +renderHistory(); updateRequestChrome(); setRatio(ratio); status(bridge ? 'ready' : 'bridge'); render(); diff --git a/ui/style.css b/ui/style.css index 55d9f4f..da8105b 100644 --- a/ui/style.css +++ b/ui/style.css @@ -1,28 +1,185 @@ -:root { color-scheme: light dark; --bg: var(--lithe-background, #fbfbfc); --fg: var(--lithe-foreground, #23252a); --muted: var(--lithe-secondary-foreground, #70737b); --line: var(--lithe-border, #dedfe3); --surface: var(--lithe-surface, #f3f4f6); --accent: var(--lithe-accent, #2765cc); } -:root[data-theme="dark"] { color-scheme: dark; --bg: var(--lithe-background, #202126); --fg: var(--lithe-foreground, #e3e4e8); --muted: var(--lithe-secondary-foreground, #a0a3ac); --line: var(--lithe-border, #383a42); --surface: var(--lithe-surface, #282a30); } -* { box-sizing: border-box; } body { margin: 0; height: 100vh; display: flex; flex-direction: column; color: var(--fg); background: var(--bg); font: var(--lithe-font-size, 13px) var(--lithe-font-family, system-ui); } -header, .bar, .response-tools, footer { display: flex; align-items: center; gap: 10px; padding: 8px 12px; flex-shrink: 0; } -header { border-bottom: 1px solid var(--line); background: var(--lithe-header, var(--surface)); } strong { font-size: 13px; font-weight: 600; } .spacer { flex: 1; min-width: 0; } -button, select { font: inherit; color: inherit; border: 1px solid var(--line); border-radius: 5px; background: var(--bg); min-height: 28px; padding: 3px 10px; } -button { cursor: pointer; transition: background-color .12s ease; } button:hover:not(:disabled) { background: var(--surface); } button:disabled { opacity: .45; cursor: default; } button.primary { background: var(--accent); color: white; border-color: transparent; min-width: 72px; } button.primary:hover:not(:disabled) { background: color-mix(in srgb, var(--accent), black 12%); } -:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; } -main { display: grid; grid-template-columns: 1fr 1fr; flex: 1; min-height: 0; } section { min-width: 0; min-height: 0; display: flex; flex-direction: column; } .request-pane { border-right: 1px solid var(--line); } .bar { height: 42px; font-weight: 500; } .selection, .response-tools { height: 42px; padding: 4px 12px 8px; } select { width: 100%; text-overflow: ellipsis; } textarea { flex: 1; width: 100%; min-height: 0; resize: none; border: 0; border-radius: 0; padding: 12px; margin: 0; color: var(--fg); background: var(--bg); font: var(--lithe-code-font-size, 12px)/1.7 var(--lithe-code-font-family, ui-monospace, monospace); tab-size: 2; white-space: pre; } -textarea:disabled { opacity: .75; } #response { white-space: pre-wrap; overflow-wrap: anywhere; } .response-tools button { border-color: transparent; background: transparent; color: var(--muted); padding: 3px 7px; } .response-tools button[aria-pressed="true"] { color: var(--fg); background: var(--surface); } .pretty-label { display: flex; gap: 4px; align-items: center; color: var(--muted); font-size: 11px; } input { accent-color: var(--accent); } #metrics, .shortcut, footer { color: var(--muted); font-size: 11px; } #metrics { text-align: right; font-weight: 400; } #code { font: 600 12px ui-monospace, monospace; } #code[data-kind="success"] { color: var(--lithe-success, #21824a); } #code[data-kind="error"], footer[data-error="true"] #status { color: var(--lithe-error, #cf4343); } #notice { margin: 0; padding: 7px 12px; font-size: 11px; color: var(--lithe-warning, #a07416); border-top: 1px solid var(--line); } -footer { min-height: 30px; border-top: 1px solid var(--line); } #status { overflow-wrap: anywhere; } .memory { white-space: nowrap; } -@media (max-width: 620px) { main { grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; } .request-pane { border-right: 0; border-bottom: 1px solid var(--line); } .shortcut, .memory { display: none; } .bar { height: 34px; } } -@media (prefers-reduced-motion: reduce) { button { transition: none; } } - -[hidden] { display: none !important; } -.preview-setting { display: flex; gap: 8px; align-items: center; color: var(--muted); font-size: 11px; } -.preview-setting select { width: auto; } -#response-headers { flex: 1; min-height: 0; overflow: auto; padding: 0 12px 12px; font: 12px/1.7 var(--lithe-code-font-family, ui-monospace, monospace); } -.response-protocol { margin: 8px 0; color: var(--muted); } -#response-headers details { border-bottom: 1px solid var(--line); } -#response-headers summary { display: grid; grid-template-columns: 12px minmax(110px, 32%) minmax(0, 1fr); gap: 8px; padding: 7px 0; cursor: pointer; list-style: none; } +:root { + color-scheme: light; + --bg: var(--lithe-background, #ffffff); + --fg: var(--lithe-foreground, #283244); + --muted: var(--lithe-secondary-foreground, #778296); + --line: var(--lithe-border, #e3e8ef); + --surface: var(--lithe-surface, #f5f7fa); + --accent: var(--lithe-accent, #3c72e6); + --success: var(--lithe-success, #278461); + --error: var(--lithe-error, #d04f65); + --syntax-keyword: #9b4a9d; --syntax-string: #27815d; --syntax-property: #356cb9; + --canvas: color-mix(in srgb, var(--surface) 82%, var(--bg)); + --chrome: color-mix(in srgb, var(--surface) 58%, var(--bg)); + --accent-wash: color-mix(in srgb, var(--accent) 9%, var(--bg)); + --hover: color-mix(in srgb, var(--fg) 5%, var(--bg)); + --shadow: 0 1px 3px #162b4b05; +} +:root[data-theme="dark"] { + color-scheme: dark; + --bg: var(--lithe-background, #202329); + --fg: var(--lithe-foreground, #dbe1ec); + --muted: var(--lithe-secondary-foreground, #8994a7); + --line: var(--lithe-border, #343b47); + --surface: var(--lithe-surface, #191c22); + --accent: var(--lithe-accent, #729cf4); + --success: var(--lithe-success, #79c5a0); + --error: var(--lithe-error, #ed8a99); + --syntax-keyword: #c99bdd; --syntax-string: #9dc7a4; --syntax-property: #85afe6; + --chrome: color-mix(in srgb, var(--bg) 78%, var(--surface)); + --accent-wash: color-mix(in srgb, var(--accent) 12%, var(--bg)); + --shadow: 0 1px 3px #00000014; +} +* { box-sizing: border-box; } +body { margin: 0; height: 100vh; overflow: hidden; display: flex; flex-direction: column; color: var(--fg); background: var(--canvas); font: var(--lithe-font-size, 13px)/1.4 var(--lithe-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); -webkit-font-smoothing: antialiased; } +button, select, input { font: inherit; color: inherit; } +button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex-shrink: 0; height: 28px; padding: 0 10px; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); cursor: pointer; white-space: nowrap; transition: background-color .12s, border-color .12s, box-shadow .12s; } +button:hover:not(:disabled) { background: var(--hover); border-color: color-mix(in srgb, var(--fg) 20%, var(--line)); } +button:active:not(:disabled) { background: color-mix(in srgb, var(--accent) 10%, var(--bg)); } +button:disabled, select:disabled { opacity: .38; cursor: default; } +:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } +svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; } +.spacer { flex: 1; min-width: 0; } +.section-title { font-size: 12px; font-weight: 650; letter-spacing: .01em; white-space: nowrap; } +.toolbar-divider { flex-shrink: 0; align-self: center; width: 1px; height: 15px; background: var(--line); margin: 0 2px; } +.workspace-toolbar { display: flex; align-items: center; gap: 6px; min-height: 46px; padding: 7px 12px; } +.workspace-identity { display: flex; align-items: center; gap: 8px; padding-right: 5px; } +.workspace-mark { width: 25px; height: 25px; display: grid; place-items: center; color: var(--accent); background: var(--accent-wash); border: 1px solid color-mix(in srgb, var(--accent) 12%, transparent); border-radius: 7px; } +.globe-icon { display: block; width: 20px; height: 20px; background: currentColor; -webkit-mask: url("../assets/http.svg") center / contain no-repeat; mask: url("../assets/http.svg") center / contain no-repeat; } +:root[data-theme="dark"] .workspace-mark { color: var(--fg); } +.file-extension { color: var(--muted); font: 11px var(--lithe-code-font-family, ui-monospace, monospace); } +.quiet-button { background: transparent; border-color: transparent; color: var(--muted); padding-inline: 8px; } +.quiet-button:hover:not(:disabled) { color: var(--fg); border-color: transparent; } +#open-file { max-width: min(28vw, 300px); } +#file-name { overflow: hidden; text-overflow: ellipsis; } +#parse { font-size: 12px; } +.preview-setting { display: flex; align-items: center; gap: 8px; font-size: 11px; color: var(--muted); white-space: nowrap; } +.number-field { display: inline-flex; align-items: center; height: 27px; padding-right: 7px; gap: 3px; background: var(--bg); border: 1px solid var(--line); border-radius: 6px; font-size: 10px; } +.number-field:focus-within { border-color: var(--accent); } +.preview-setting input { width: 57px; padding: 2px 0 2px 8px; border: none; outline: none; background: transparent; color: var(--fg); font-size: 11px; font-variant-numeric: tabular-nums; } +button.primary { height: 30px; padding-inline: 11px; color: #fff; background: #3269da; background: color-mix(in srgb, var(--accent) 85%, #2455bb); border-color: transparent; box-shadow: 0 1px 2px #194b991c; font-size: 12px; font-weight: 600; } +button.primary:hover:not(:disabled) { background: color-mix(in srgb, var(--accent) 70%, #204da9); border-color: transparent; box-shadow: 0 2px 5px #194b9926; } +button.primary:disabled { opacity: .48; box-shadow: none; } +.send-icon { width: 13px; height: 13px; fill: currentColor; stroke: none; } +kbd { font: 10px var(--lithe-font-family, inherit); } +.shortcut { margin-left: 5px; padding-left: 9px; border-left: 1px solid #ffffff3d; opacity: .7; } +.icon-button { width: 26px; height: 26px; padding: 0; color: var(--muted); border-color: transparent; background: transparent; } +.icon-button:hover:not(:disabled) { color: var(--fg); border-color: transparent; } +main { display: grid; grid-template-columns: minmax(0, var(--request-width, 50%)) 5px minmax(0, 1fr); flex: 1; min-height: 0; min-width: 0; margin: 0 8px; } +section { min-width: 0; min-height: 0; display: flex; flex-direction: column; overflow: hidden; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; box-shadow: var(--shadow); } +#splitter { position: relative; cursor: ew-resize; touch-action: none; } +#splitter::before { content: ""; position: absolute; inset: 0 -2px; z-index: 3; } +body.resizing, body.resizing * { cursor: ew-resize !important; user-select: none !important; } +.selection, .response-tools { display: flex; align-items: center; gap: 6px; height: 35px; min-height: 35px; flex-shrink: 0; padding: 4px 9px; border-bottom: 1px solid var(--line); background: var(--chrome); } +.select-field { display: flex; align-items: center; min-width: 0; position: relative; border-radius: 5px; } +.select-field::after { content: ""; position: absolute; right: 8px; top: calc(50% - 3px); width: 5px; height: 5px; border: solid var(--muted); border-width: 0 1.3px 1.3px 0; transform: rotate(45deg); pointer-events: none; } +.select-field select { appearance: none; border: 1px solid transparent; border-radius: 5px; height: 26px; background: transparent; padding: 0 23px 0 7px; min-width: 0; width: 100%; text-overflow: ellipsis; font-size: 11px; cursor: pointer; } +.select-field select:hover:not(:disabled) { background: var(--hover); } +.select-field:focus-within { background: var(--bg); outline: 1px solid var(--accent); } +.select-field select:focus-visible { outline: none; } +.request-select { flex: 1; } +.request-select select { font: 11px var(--lithe-code-font-family, ui-monospace, monospace); } +.history-select { width: min(34%, 190px); } +.history-select > svg { position: absolute; left: 6px; width: 13px; height: 13px; color: var(--muted); pointer-events: none; } +.history-select select { padding-left: 25px; padding-right: 35px; color: var(--muted); } +.count { display: inline-flex; align-items: center; justify-content: center; min-width: 16px; padding: 1px 4px; color: var(--muted); background: color-mix(in srgb, var(--fg) 7%, transparent); border-radius: 4px; font-size: 9px; font-weight: 500; font-variant-numeric: tabular-nums; } +.history-select .count { position: absolute; right: 19px; pointer-events: none; } +.method-badge, .status-badge { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; border-radius: 4px; font: 650 10px/1.6 var(--lithe-code-font-family, ui-monospace, monospace); letter-spacing: .02em; } +.method-badge { padding: 1px 5px; color: var(--success); background: color-mix(in srgb, var(--success) 10%, transparent); } +.method-badge[data-method="POST"] { color: #b07c18; background: #dba52614; } +.method-badge[data-method="PUT"], .method-badge[data-method="PATCH"] { color: var(--accent); background: var(--accent-wash); } +.method-badge[data-method="DELETE"] { color: var(--error); background: color-mix(in srgb, var(--error) 10%, transparent); } +.response-tools { gap: 7px; } +.response-title { padding-right: 2px; } +.response-tabs { display: inline-flex; align-items: center; gap: 2px; padding: 2px; background: color-mix(in srgb, var(--fg) 4%, transparent); border-radius: 6px; flex-shrink: 0; } +.response-tabs button { height: 23px; border: 1px solid transparent; padding: 0 8px; border-radius: 4px; background: transparent; font-size: 11px; color: var(--muted); } +.response-tabs button[aria-pressed="true"] { background: var(--bg); color: var(--fg); border-color: color-mix(in srgb, var(--line) 65%, transparent); box-shadow: 0 1px 2px #14213908; } +.response-tabs button:hover { border-color: transparent; } +.status-badge:empty, #metrics:empty { display: none; } +.status-badge { padding: 1px 6px; } +.status-badge::before { content: ""; width: 4px; height: 4px; margin-right: 4px; border-radius: 50%; background: currentColor; } +.status-badge[data-kind="success"] { color: var(--success); background: color-mix(in srgb, var(--success) 10%, transparent); } +.status-badge[data-kind="error"] { color: var(--error); background: color-mix(in srgb, var(--error) 10%, transparent); } +#metrics { font-size: 10px; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; } +.pretty-label { display: flex; align-items: center; gap: 4px; color: var(--muted); font-size: 10px; cursor: pointer; white-space: nowrap; } +input { accent-color: var(--accent); margin: 0; } +.pretty-label input { width: 11px; height: 11px; } +#wrap[aria-pressed="true"] { color: var(--accent); background: var(--accent-wash); } +.preview-button { height: 25px; padding: 0 6px; color: var(--accent); background: var(--accent-wash); border-color: transparent; font-size: 11px; } +.preview-button svg { width: 13px; height: 13px; } +.editor { flex: 1; min-height: 0; min-width: 0; overflow: hidden; } +.cm-editor { height: 100%; font: var(--lithe-code-font-size, 12px)/1.75 var(--lithe-code-font-family, ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace); } +.cm-editor.cm-focused { outline: none; } +.cm-scroller { overflow: auto; } +.cm-content { padding: 12px 0; caret-color: var(--fg); } +.cm-line { padding: 0 14px; } +.cm-editor .cm-gutters { background: var(--bg); color: color-mix(in srgb, var(--muted) 65%, var(--bg)); border: 0; font-size: 10px; } +.cm-editor .cm-lineNumbers .cm-gutterElement { padding: 0 8px 0 10px; min-width: 34px; } +.cm-editor .cm-activeLine { background: color-mix(in srgb, var(--accent) 4%, var(--bg)); } +.cm-editor .cm-activeLineGutter { color: var(--muted); background: transparent; } +.cm-selectionBackground, .cm-focused .cm-selectionBackground { background: color-mix(in srgb, var(--accent) 20%, transparent) !important; } +.cm-placeholder { color: color-mix(in srgb, var(--muted) 72%, var(--bg)); } +.cm-cursor { border-left-color: var(--accent); } +.response-content { position: relative; display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; } +.empty-state { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px; text-align: center; background: var(--bg); } +.empty-symbol { display: grid; place-items: center; width: 54px; height: 54px; margin-bottom: 17px; color: color-mix(in srgb, var(--accent) 65%, var(--muted)); background: var(--accent-wash); border: 1px solid color-mix(in srgb, var(--accent) 10%, transparent); border-radius: 16px; } +.empty-symbol .globe-icon { width: 36px; height: 36px; } +.empty-state strong { font-size: 13px; font-weight: 600; } +.empty-state p { max-width: 270px; margin: 7px 0 14px; font-size: 11px; line-height: 1.7; color: var(--muted); } +.empty-state kbd { border: 1px solid var(--line); border-radius: 5px; padding: 3px 7px; color: var(--muted); background: var(--chrome); } +.empty-state[data-mode="busy"] .empty-symbol .globe-icon { display: none; } +.empty-state[data-mode="busy"] .empty-symbol::after { content: ""; width: 21px; height: 21px; border: 2px solid color-mix(in srgb, var(--accent) 20%, transparent); border-top-color: var(--accent); border-radius: 50%; animation: spin .8s linear infinite; } +.empty-state[data-mode="error"] .empty-symbol { color: var(--error); background: color-mix(in srgb, var(--error) 8%, var(--bg)); border-color: transparent; } +.pane-footer { display: flex; align-items: center; gap: 8px; height: 30px; min-height: 30px; flex-shrink: 0; padding: 3px 10px; border-top: 1px solid color-mix(in srgb, var(--line) 75%, var(--bg)); color: var(--muted); font-size: 10px; background: var(--chrome); } +.language-tag { color: var(--muted); font: 9px var(--lithe-code-font-family, ui-monospace, monospace); letter-spacing: .03em; } +.language-tag:not(:last-child) { padding-right: 8px; border-right: 1px solid var(--line); } +#request-info { font-variant-numeric: tabular-nums; } +.export-control { display: inline-flex; align-items: center; gap: 2px; margin-right: -5px; } +.whitespace-toggle { flex-shrink: 1; min-width: 0; height: 23px; padding: 0 5px; border-color: transparent; background: transparent; color: var(--muted); font-size: 10px; overflow: hidden; text-overflow: ellipsis; } +.whitespace-toggle:hover:not(:disabled) { border-color: transparent; color: var(--accent); } +#save-mode { max-width: 160px; height: 23px; font-size: 10px; color: var(--muted); } +#notice { color: var(--lithe-warning, #aa7c24); font-size: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +footer { display: flex; align-items: center; gap: 7px; min-height: 27px; padding: 3px 12px; color: var(--muted); font-size: 10px; } +.status-indicator { width: 5px; height: 5px; flex-shrink: 0; border-radius: 50%; background: var(--success); opacity: .7; } +footer[data-error="true"] .status-indicator { background: var(--error); } +footer[data-error="true"] #status { color: var(--error); } +#status { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.memory { display: flex; align-items: center; gap: 5px; white-space: nowrap; color: color-mix(in srgb, var(--muted) 82%, var(--bg)); } +.memory svg { width: 12px; height: 12px; } +#response-headers { flex: 1; min-height: 0; overflow: auto; padding: 4px 12px 12px; font: var(--lithe-font-size, 13px)/1.5 var(--lithe-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); } +.response-protocol { display: inline-block; margin: 7px 0 9px; padding: 2px 6px; border-radius: 4px; color: var(--muted); background: var(--chrome); font-size: .85em; } +#response-headers details { border-bottom: 1px solid color-mix(in srgb, var(--line) 75%, var(--bg)); } +#response-headers summary { display: grid; grid-template-columns: 10px minmax(105px, 34%) minmax(0, 1fr); align-items: baseline; gap: 10px; padding: 6px 0; cursor: pointer; list-style: none; } +#response-headers summary:hover { background: var(--chrome); } #response-headers summary::-webkit-details-marker { display: none; } -#response-headers summary::before { content: "▸"; color: var(--muted); } -#response-headers details[open] summary::before { content: "▾"; } -.header-key { color: var(--lithe-link, var(--accent)); font-weight: 600; overflow-wrap: anywhere; } -.header-preview { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.header-value { white-space: pre-wrap; overflow-wrap: anywhere; padding: 0 0 10px 20px; user-select: text; } +#response-headers summary::before { content: ""; width: 5px; height: 5px; border: solid var(--muted); border-width: 0 1px 1px 0; transform: rotate(-45deg); align-self: center; } +#response-headers details[open] summary::before { transform: rotate(45deg); } +.header-key { color: var(--fg); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.header-preview { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: color-mix(in srgb, var(--fg) 85%, var(--muted)); } +.header-value { white-space: pre-wrap; overflow-wrap: anywhere; margin: 0 0 8px 20px; padding: 6px 9px; background: var(--chrome); border-radius: 5px; user-select: text; } #response-headers details[open] .header-preview { visibility: hidden; } +#response-headers.no-wrap .header-value { white-space: pre; overflow-wrap: normal; overflow: auto; } +body[data-busy="true"] .send-icon { width: 12px; height: 12px; fill: none; border: 1.5px solid #ffffff66; border-top-color: #fff; border-radius: 50%; animation: spin .8s linear infinite; } +body[data-busy="true"] .send-icon path { display: none; } +body[data-busy="true"] .status-indicator { background: var(--accent); } +* { scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--muted) 34%, transparent) transparent; } +::-webkit-scrollbar { width: 7px; height: 7px; } +::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 34%, transparent); border-radius: 7px; border: 2px solid transparent; background-clip: padding-box; } +::-webkit-scrollbar-corner { background: transparent; } +[hidden] { display: none !important; } +@keyframes spin { to { transform: rotate(360deg); } } +@media (max-width: 1150px) { .shortcut { display: none; } .workspace-toolbar { gap: 3px; } .response-tools { gap: 5px; flex-wrap: wrap; height: auto; } .response-title { display: none; } } +@media (max-width: 850px) { .preview-setting > span:first-child { display: none; } #parse > span { display: none; } .session-hint { display: none; } } +@media (max-width: 720px) { + .workspace-toolbar { padding: 7px 9px; flex-wrap: wrap; } + .workspace-identity { gap: 5px; } .workspace-mark { display: none; } + .workspace-toolbar > .toolbar-divider { display: none; } + .preview-setting { margin-left: auto; } + .memory { display: none; } + main { margin: 0 6px; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, var(--request-width, 50%)) 5px minmax(0, 1fr); } + #splitter, body.resizing, body.resizing * { cursor: ns-resize !important; } + #splitter::before { inset: -2px 0; } + .response-title { display: block; } .response-tools { gap: 7px; } +} +@media (max-height: 380px) { .empty-symbol { width: 36px; height: 36px; border-radius: 11px; margin-bottom: 8px; } .empty-symbol .globe-icon { width: 26px; height: 26px; } .empty-state { padding: 8px; } .empty-state p { margin: 5px 0; } .empty-state kbd { display: none; } } +@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }