diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ad175ca..13086fee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,8 @@ jobs: path: | ~/.bun/install/cache node_modules - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} + vendor/subminer-yomitan/node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock', 'vendor/subminer-yomitan/package-lock.json') }} restore-keys: | ${{ runner.os }}-bun- diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3bf81add..58f81bbc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,8 @@ jobs: path: | ~/.bun/install/cache node_modules - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }} + vendor/subminer-yomitan/node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock', 'vendor/subminer-yomitan/package-lock.json') }} restore-keys: | ${{ runner.os }}-bun- @@ -84,6 +85,11 @@ jobs: with: bun-version: 1.3.5 + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 22.12.0 + - name: Cache dependencies uses: actions/cache@v4 with: @@ -91,7 +97,8 @@ jobs: ~/.bun/install/cache node_modules vendor/texthooker-ui/node_modules - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock', 'vendor/texthooker-ui/package.json') }} + vendor/subminer-yomitan/node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock', 'vendor/texthooker-ui/package.json', 'vendor/subminer-yomitan/package-lock.json') }} restore-keys: | ${{ runner.os }}-bun- @@ -140,6 +147,11 @@ jobs: with: bun-version: 1.3.5 + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 22.12.0 + - name: Cache dependencies uses: actions/cache@v4 with: @@ -147,7 +159,8 @@ jobs: ~/.bun/install/cache node_modules vendor/texthooker-ui/node_modules - key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock', 'vendor/texthooker-ui/package.json') }} + vendor/subminer-yomitan/node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock', 'vendor/texthooker-ui/package.json', 'vendor/subminer-yomitan/package-lock.json') }} restore-keys: | ${{ runner.os }}-bun- diff --git a/.gitignore b/.gitignore index a0a16a2d..f5dedb5f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ node_modules/ out/ dist/ release/ +build/yomitan/ # Launcher build artifact (produced by make build-launcher) /subminer diff --git a/.gitmodules b/.gitmodules index 8c6a170d..22a04f39 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,3 +8,6 @@ [submodule "yomitan-jlpt-vocab"] path = vendor/yomitan-jlpt-vocab url = https://github.com/stephenmk/yomitan-jlpt-vocab +[submodule "vendor/subminer-yomitan"] + path = vendor/subminer-yomitan + url = https://github.com/ksyasuda/subminer-yomitan diff --git a/README.md b/README.md index f2c5350f..5079e6ef 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ chmod +x ~/.local/bin/subminer > [!NOTE] > The `subminer` wrapper uses a [Bun](https://bun.sh) shebang. Make sure `bun` is on your `PATH`. -**From source** or **macOS** — see the [installation guide](https://docs.subminer.moe/installation#from-source). +**From source** or **macOS** — initialize submodules first (`git submodule update --init --recursive`). Source builds now also require Node.js 22 + npm because bundled Yomitan is built from the `vendor/subminer-yomitan` submodule into `build/yomitan` during `bun run build`. Full install guide: [docs.subminer.moe/installation#from-source](https://docs.subminer.moe/installation#from-source). ### 2. Launch the app once @@ -92,7 +92,7 @@ subminer --start video.mkv # optional explicit overlay start when plugin auto_st | Required | Optional | | ------------------------------------------ | -------------------------------------------------- | -| `bun` | | +| `bun`, `node` 22, `npm` | | | `mpv` with IPC socket | `yt-dlp` | | `ffmpeg` | `guessit` (better AniSkip title/episode detection) | | `mecab` + `mecab-ipadic` | `fzf` / `rofi` | diff --git a/backlog/tasks/task-110 - Replace-vendored-Yomitan-with-submodule-built-chrome-artifact-workflow.md b/backlog/tasks/task-110 - Replace-vendored-Yomitan-with-submodule-built-chrome-artifact-workflow.md new file mode 100644 index 00000000..7d1cb3d5 --- /dev/null +++ b/backlog/tasks/task-110 - Replace-vendored-Yomitan-with-submodule-built-chrome-artifact-workflow.md @@ -0,0 +1,51 @@ +--- +id: TASK-110 +title: Replace vendored Yomitan with submodule-built Chrome artifact workflow +status: Done +assignee: [] +created_date: '2026-03-07 11:05' +updated_date: '2026-03-07 11:22' +labels: + - yomitan + - build + - release +dependencies: [] +priority: high +ordinal: 9010 +--- + +## Description + + + +Replace the checked-in `vendor/yomitan` release tree with a `subminer-yomitan` git submodule. Build Yomitan from source, extract the Chromium zip artifact into a stable local build directory, and make SubMiner dev/runtime/tests/release packaging load that extracted extension instead of the source tree or vendored files. + + + +## Acceptance Criteria + + + +- [x] #1 Repo tracks Yomitan as a git submodule instead of committed extension files under `vendor/yomitan`. +- [x] #2 SubMiner has a reproducible build/extract step that produces a local Chromium extension directory from `subminer-yomitan`. +- [x] #3 Dev/runtime/tests resolve the extracted build output as the default Yomitan extension path. +- [x] #4 Release packaging includes the extracted Chromium extension files instead of the old vendored tree. +- [x] #5 Docs and verification commands reflect the new workflow. + + + +## Final Summary + + + +Replaced the checked-in `vendor/yomitan` extension tree with a `vendor/subminer-yomitan` git submodule and added a reproducible `bun run build:yomitan` workflow that builds `yomitan-chrome.zip`, extracts it into `build/yomitan`, and reuses a source-state stamp to skip redundant rebuilds. Runtime path resolution, helper CLIs, Yomitan integration tests, packaging, CI cache keys, and README source-build notes now all target that generated artifact instead of the old vendored files. + +Verification: + +- `bun run build:yomitan` +- `bun test src/core/services/yomitan-extension-paths.test.ts src/core/services/yomitan-structured-content-generator.test.ts src/yomitan-translator-sort.test.ts` +- `bun run typecheck` +- `bun run build` +- `bun run test:core:src` + + diff --git a/package.json b/package.json index 390d69e4..e0e5b1af 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,11 @@ "typecheck": "tsc --noEmit -p tsconfig.typecheck.json", "typecheck:watch": "tsc --watch --preserveWatchOutput -p tsconfig.typecheck.json", "get-frequency": "bun run scripts/get_frequency.ts --pretty --color-top-x 10000 --yomitan-user-data ~/.config/SubMiner --colorized-line", - "get-frequency:electron": "bun build scripts/get_frequency.ts --format=cjs --target=node --outfile dist/scripts/get_frequency.js --external electron && electron dist/scripts/get_frequency.js --pretty --color-top-x 10000 --yomitan-user-data ~/.config/SubMiner --colorized-line", + "get-frequency:electron": "bun run build:yomitan && bun build scripts/get_frequency.ts --format=cjs --target=node --outfile dist/scripts/get_frequency.js --external electron && electron dist/scripts/get_frequency.js --pretty --color-top-x 10000 --yomitan-user-data ~/.config/SubMiner --colorized-line", "test-yomitan-parser": "bun run scripts/test-yomitan-parser.ts", - "test-yomitan-parser:electron": "bun build scripts/test-yomitan-parser.ts --format=cjs --target=node --outfile dist/scripts/test-yomitan-parser.js --external electron && electron dist/scripts/test-yomitan-parser.js", - "build": "tsc -p tsconfig.json && bun run build:renderer && cp src/renderer/index.html src/renderer/style.css dist/renderer/ && cp -r src/renderer/fonts dist/renderer/ && bash scripts/build-macos-helper.sh", + "test-yomitan-parser:electron": "bun run build:yomitan && bun build scripts/test-yomitan-parser.ts --format=cjs --target=node --outfile dist/scripts/test-yomitan-parser.js --external electron && electron dist/scripts/test-yomitan-parser.js", + "build:yomitan": "node scripts/build-yomitan.mjs", + "build": "bun run build:yomitan && tsc -p tsconfig.json && bun run build:renderer && cp src/renderer/index.html src/renderer/style.css dist/renderer/ && cp -r src/renderer/fonts dist/renderer/ && bash scripts/build-macos-helper.sh", "build:renderer": "esbuild src/renderer/renderer.ts --bundle --platform=browser --format=esm --target=es2022 --outfile=dist/renderer/renderer.js --sourcemap", "format": "prettier --write .", "format:check": "prettier --check .", @@ -21,8 +22,8 @@ "test:plugin:src": "lua scripts/test-plugin-start-gate.lua", "test:launcher:smoke:src": "bun test launcher/smoke.e2e.test.ts", "test:launcher:src": "bun test launcher/config.test.ts launcher/config-domain-parsers.test.ts launcher/parse-args.test.ts launcher/main.test.ts launcher/commands/command-modules.test.ts launcher/smoke.e2e.test.ts && bun run test:plugin:src", - "test:core:src": "bun test src/cli/args.test.ts src/cli/help.test.ts src/shared/setup-state.test.ts src/core/services/cli-command.test.ts src/core/services/field-grouping-overlay.test.ts src/core/services/numeric-shortcut-session.test.ts src/core/services/secondary-subtitle.test.ts src/core/services/mpv-render-metrics.test.ts src/core/services/overlay-content-measurement.test.ts src/core/services/mpv-control.test.ts src/core/services/mpv.test.ts src/core/services/runtime-options-ipc.test.ts src/core/services/runtime-config.test.ts src/core/services/config-hot-reload.test.ts src/core/services/discord-presence.test.ts src/core/services/tokenizer.test.ts src/core/services/tokenizer/annotation-stage.test.ts src/core/services/tokenizer/parser-selection-stage.test.ts src/core/services/tokenizer/parser-enrichment-stage.test.ts src/core/services/subsync.test.ts src/core/services/overlay-bridge.test.ts src/core/services/overlay-shortcut-handler.test.ts src/core/services/mining.test.ts src/core/services/anki-jimaku.test.ts src/core/services/jimaku-download-path.test.ts src/core/services/jellyfin.test.ts src/core/services/jellyfin-remote.test.ts src/core/services/immersion-tracker-service.test.ts src/core/services/overlay-runtime-init.test.ts src/core/services/app-ready.test.ts src/core/services/startup-bootstrap.test.ts src/core/services/subtitle-processing-controller.test.ts src/core/services/anilist/anilist-update-queue.test.ts src/core/utils/shortcut-config.test.ts src/main/runtime/first-run-setup-plugin.test.ts src/main/runtime/first-run-setup-service.test.ts src/main/runtime/first-run-setup-window.test.ts src/main/runtime/tray-runtime.test.ts src/main/runtime/tray-main-actions.test.ts src/main/runtime/tray-main-deps.test.ts src/main/runtime/tray-runtime-handlers.test.ts src/main/runtime/cli-command-context-main-deps.test.ts src/main/runtime/app-ready-main-deps.test.ts src/renderer/error-recovery.test.ts src/renderer/subtitle-render.test.ts src/renderer/handlers/mouse.test.ts src/renderer/handlers/keyboard.test.ts src/renderer/modals/jimaku.test.ts src/subsync/utils.test.ts src/main/anilist-url-guard.test.ts src/window-trackers/x11-tracker.test.ts launcher/config.test.ts launcher/config-domain-parsers.test.ts launcher/parse-args.test.ts launcher/main.test.ts launcher/commands/command-modules.test.ts launcher/setup-gate.test.ts", - "test:core:dist": "bun test dist/cli/args.test.js dist/cli/help.test.js dist/core/services/cli-command.test.js dist/core/services/ipc.test.js dist/core/services/anki-jimaku-ipc.test.js dist/core/services/field-grouping-overlay.test.js dist/core/services/numeric-shortcut-session.test.js dist/core/services/secondary-subtitle.test.js dist/core/services/mpv-render-metrics.test.js dist/core/services/overlay-content-measurement.test.js dist/core/services/mpv-control.test.js dist/core/services/mpv.test.js dist/core/services/runtime-options-ipc.test.js dist/core/services/runtime-config.test.js dist/core/services/config-hot-reload.test.js dist/core/services/discord-presence.test.js dist/core/services/tokenizer.test.js dist/core/services/tokenizer/annotation-stage.test.js dist/core/services/tokenizer/parser-selection-stage.test.js dist/core/services/tokenizer/parser-enrichment-stage.test.js dist/core/services/subsync.test.js dist/core/services/overlay-bridge.test.js dist/core/services/overlay-manager.test.js dist/core/services/overlay-shortcut-handler.test.js dist/core/services/mining.test.js dist/core/services/anki-jimaku.test.js dist/core/services/jimaku-download-path.test.js dist/core/services/jellyfin.test.js dist/core/services/jellyfin-remote.test.js dist/core/services/immersion-tracker-service.test.js dist/core/services/overlay-runtime-init.test.js dist/core/services/app-ready.test.js dist/core/services/startup-bootstrap.test.js dist/core/services/subtitle-processing-controller.test.js dist/core/services/anilist/anilist-token-store.test.js dist/core/services/anilist/anilist-update-queue.test.js dist/renderer/error-recovery.test.js dist/renderer/subtitle-render.test.js dist/renderer/handlers/mouse.test.js dist/renderer/handlers/keyboard.test.js dist/renderer/modals/jimaku.test.js dist/subsync/utils.test.js dist/main/anilist-url-guard.test.js dist/window-trackers/x11-tracker.test.js", + "test:core:src": "bun test src/cli/args.test.ts src/cli/help.test.ts src/shared/setup-state.test.ts src/core/services/cli-command.test.ts src/core/services/field-grouping-overlay.test.ts src/core/services/numeric-shortcut-session.test.ts src/core/services/secondary-subtitle.test.ts src/core/services/mpv-render-metrics.test.ts src/core/services/overlay-content-measurement.test.ts src/core/services/mpv-control.test.ts src/core/services/mpv.test.ts src/core/services/runtime-options-ipc.test.ts src/core/services/runtime-config.test.ts src/core/services/yomitan-extension-paths.test.ts src/core/services/config-hot-reload.test.ts src/core/services/discord-presence.test.ts src/core/services/tokenizer.test.ts src/core/services/tokenizer/annotation-stage.test.ts src/core/services/tokenizer/parser-selection-stage.test.ts src/core/services/tokenizer/parser-enrichment-stage.test.ts src/core/services/subsync.test.ts src/core/services/overlay-bridge.test.ts src/core/services/overlay-shortcut-handler.test.ts src/core/services/mining.test.ts src/core/services/anki-jimaku.test.ts src/core/services/jimaku-download-path.test.ts src/core/services/jellyfin.test.ts src/core/services/jellyfin-remote.test.ts src/core/services/immersion-tracker-service.test.ts src/core/services/overlay-runtime-init.test.ts src/core/services/app-ready.test.ts src/core/services/startup-bootstrap.test.ts src/core/services/subtitle-processing-controller.test.ts src/core/services/anilist/anilist-update-queue.test.ts src/core/utils/shortcut-config.test.ts src/main/runtime/first-run-setup-plugin.test.ts src/main/runtime/first-run-setup-service.test.ts src/main/runtime/first-run-setup-window.test.ts src/main/runtime/tray-runtime.test.ts src/main/runtime/tray-main-actions.test.ts src/main/runtime/tray-main-deps.test.ts src/main/runtime/tray-runtime-handlers.test.ts src/main/runtime/cli-command-context-main-deps.test.ts src/main/runtime/app-ready-main-deps.test.ts src/renderer/error-recovery.test.ts src/renderer/subtitle-render.test.ts src/renderer/handlers/mouse.test.ts src/renderer/handlers/keyboard.test.ts src/renderer/modals/jimaku.test.ts src/subsync/utils.test.ts src/main/anilist-url-guard.test.ts src/window-trackers/x11-tracker.test.ts launcher/config.test.ts launcher/config-domain-parsers.test.ts launcher/parse-args.test.ts launcher/main.test.ts launcher/commands/command-modules.test.ts launcher/setup-gate.test.ts", + "test:core:dist": "bun test dist/cli/args.test.js dist/cli/help.test.js dist/core/services/cli-command.test.js dist/core/services/ipc.test.js dist/core/services/anki-jimaku-ipc.test.js dist/core/services/field-grouping-overlay.test.js dist/core/services/numeric-shortcut-session.test.js dist/core/services/secondary-subtitle.test.js dist/core/services/mpv-render-metrics.test.js dist/core/services/overlay-content-measurement.test.js dist/core/services/mpv-control.test.js dist/core/services/mpv.test.js dist/core/services/runtime-options-ipc.test.js dist/core/services/runtime-config.test.js dist/core/services/yomitan-extension-paths.test.js dist/core/services/config-hot-reload.test.js dist/core/services/discord-presence.test.js dist/core/services/tokenizer.test.js dist/core/services/tokenizer/annotation-stage.test.js dist/core/services/tokenizer/parser-selection-stage.test.js dist/core/services/tokenizer/parser-enrichment-stage.test.js dist/core/services/subsync.test.js dist/core/services/overlay-bridge.test.js dist/core/services/overlay-manager.test.js dist/core/services/overlay-shortcut-handler.test.js dist/core/services/mining.test.js dist/core/services/anki-jimaku.test.js dist/core/services/jimaku-download-path.test.js dist/core/services/jellyfin.test.js dist/core/services/jellyfin-remote.test.js dist/core/services/immersion-tracker-service.test.js dist/core/services/overlay-runtime-init.test.js dist/core/services/app-ready.test.js dist/core/services/startup-bootstrap.test.js dist/core/services/subtitle-processing-controller.test.js dist/core/services/anilist/anilist-token-store.test.js dist/core/services/anilist/anilist-update-queue.test.js dist/renderer/error-recovery.test.js dist/renderer/subtitle-render.test.js dist/renderer/handlers/mouse.test.js dist/renderer/handlers/keyboard.test.js dist/renderer/modals/jimaku.test.js dist/subsync/utils.test.js dist/main/anilist-url-guard.test.js dist/window-trackers/x11-tracker.test.js", "test:core:smoke:dist": "bun test dist/cli/help.test.js dist/core/services/runtime-config.test.js dist/core/services/ipc.test.js dist/core/services/overlay-manager.test.js dist/core/services/anilist/anilist-token-store.test.js dist/core/services/startup-bootstrap.test.js dist/renderer/error-recovery.test.js dist/main/anilist-url-guard.test.js dist/window-trackers/x11-tracker.test.js", "test:smoke:dist": "bun run test:config:smoke:dist && bun run test:core:smoke:dist", "test:subtitle:src": "bun test src/core/services/subsync.test.ts src/subsync/utils.test.ts", @@ -117,7 +118,7 @@ ], "extraResources": [ { - "from": "vendor/yomitan", + "from": "build/yomitan", "to": "yomitan" }, { diff --git a/scripts/build-yomitan.mjs b/scripts/build-yomitan.mjs new file mode 100644 index 00000000..45ca556b --- /dev/null +++ b/scripts/build-yomitan.mjs @@ -0,0 +1,144 @@ +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { createHash } from 'node:crypto'; +import { execFileSync } from 'node:child_process'; +import { fileURLToPath } from 'node:url'; + +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(dirname, '..'); +const submoduleDir = path.join(repoRoot, 'vendor', 'subminer-yomitan'); +const submodulePackagePath = path.join(submoduleDir, 'package.json'); +const submodulePackageLockPath = path.join(submoduleDir, 'package-lock.json'); +const buildOutputDir = path.join(repoRoot, 'build', 'yomitan'); +const stampPath = path.join(buildOutputDir, '.subminer-build.json'); +const zipPath = path.join(submoduleDir, 'builds', 'yomitan-chrome.zip'); +const npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm'; +const dependencyStampPath = path.join(submoduleDir, 'node_modules', '.subminer-package-lock-hash'); + +function run(command, args, cwd) { + execFileSync(command, args, { cwd, stdio: 'inherit' }); +} + +function readCommand(command, args, cwd) { + return execFileSync(command, args, { cwd, encoding: 'utf8' }).trim(); +} + +function readStamp() { + try { + return JSON.parse(fs.readFileSync(stampPath, 'utf8')); + } catch { + return null; + } +} + +function hashFile(filePath) { + const hash = createHash('sha256'); + hash.update(fs.readFileSync(filePath)); + return hash.digest('hex'); +} + +function ensureSubmodulePresent() { + if (!fs.existsSync(submodulePackagePath)) { + throw new Error( + 'Missing vendor/subminer-yomitan submodule. Run `git submodule update --init --recursive`.', + ); + } +} + +function getSourceState() { + const revision = readCommand('git', ['rev-parse', 'HEAD'], submoduleDir); + const dirty = readCommand('git', ['status', '--short', '--untracked-files=no'], submoduleDir); + return { revision, dirty }; +} + +function isBuildCurrent(force) { + if (force) { + return false; + } + if (!fs.existsSync(path.join(buildOutputDir, 'manifest.json'))) { + return false; + } + + const stamp = readStamp(); + if (!stamp) { + return false; + } + + const currentState = getSourceState(); + return stamp.revision === currentState.revision && stamp.dirty === currentState.dirty; +} + +function ensureDependenciesInstalled() { + const nodeModulesDir = path.join(submoduleDir, 'node_modules'); + const currentLockHash = hashFile(submodulePackageLockPath); + let installedLockHash = ''; + try { + installedLockHash = fs.readFileSync(dependencyStampPath, 'utf8').trim(); + } catch {} + + if (!fs.existsSync(nodeModulesDir) || installedLockHash !== currentLockHash) { + run(npmCommand, ['ci'], submoduleDir); + fs.mkdirSync(nodeModulesDir, { recursive: true }); + fs.writeFileSync(dependencyStampPath, `${currentLockHash}\n`, 'utf8'); + } +} + +function installAndBuild() { + ensureDependenciesInstalled(); + run(npmCommand, ['run', 'build', '--', '--target', 'chrome'], submoduleDir); +} + +function extractBuild() { + if (!fs.existsSync(zipPath)) { + throw new Error(`Expected Yomitan build artifact at ${zipPath}`); + } + + const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'subminer-yomitan-')); + try { + run('unzip', ['-qo', zipPath, '-d', tempDir], repoRoot); + fs.rmSync(buildOutputDir, { recursive: true, force: true }); + fs.mkdirSync(path.dirname(buildOutputDir), { recursive: true }); + fs.cpSync(tempDir, buildOutputDir, { recursive: true }); + if (!fs.existsSync(path.join(buildOutputDir, 'manifest.json'))) { + throw new Error(`Extracted Yomitan build missing manifest.json in ${buildOutputDir}`); + } + } finally { + fs.rmSync(tempDir, { recursive: true, force: true }); + } +} + +function writeStamp() { + const state = getSourceState(); + fs.writeFileSync( + stampPath, + `${JSON.stringify( + { + revision: state.revision, + dirty: state.dirty, + builtAt: new Date().toISOString(), + }, + null, + 2, + )}\n`, + 'utf8', + ); +} + +function main() { + const force = process.argv.includes('--force'); + ensureSubmodulePresent(); + + if (isBuildCurrent(force)) { + process.stdout.write(`Yomitan build current: ${buildOutputDir}\n`); + return; + } + + process.stdout.write('Building Yomitan Chrome artifact...\n'); + installAndBuild(); + extractBuild(); + writeStamp(); + process.stdout.write(`Yomitan extracted to ${buildOutputDir}\n`); +} + +main(); diff --git a/scripts/get_frequency.ts b/scripts/get_frequency.ts index 193ae748..16c82cda 100644 --- a/scripts/get_frequency.ts +++ b/scripts/get_frequency.ts @@ -4,6 +4,7 @@ import process from 'node:process'; import { createTokenizerDepsRuntime, tokenizeSubtitle } from '../src/core/services/tokenizer.js'; import { createFrequencyDictionaryLookup } from '../src/core/services/frequency-dictionary.js'; +import { resolveYomitanExtensionPath as resolveBuiltYomitanExtensionPath } from '../src/core/services/yomitan-extension-paths.js'; import { MecabTokenizer } from '../src/mecab-tokenizer.js'; import type { MergedToken, FrequencyDictionaryLookup } from '../src/types.js'; @@ -94,7 +95,7 @@ function parseCliArgs(argv: string[]): CliOptions { if (!next) { throw new Error('Missing value for --yomitan-extension'); } - yomitanExtensionPath = path.resolve(next); + yomitanExtensionPath = next; continue; } @@ -103,7 +104,7 @@ function parseCliArgs(argv: string[]): CliOptions { if (!next) { throw new Error('Missing value for --yomitan-user-data'); } - yomitanUserDataPath = path.resolve(next); + yomitanUserDataPath = next; continue; } @@ -225,12 +226,12 @@ function parseCliArgs(argv: string[]): CliOptions { } if (arg.startsWith('--yomitan-extension=')) { - yomitanExtensionPath = path.resolve(arg.slice('--yomitan-extension='.length)); + yomitanExtensionPath = arg.slice('--yomitan-extension='.length); continue; } if (arg.startsWith('--yomitan-user-data=')) { - yomitanUserDataPath = path.resolve(arg.slice('--yomitan-user-data='.length)); + yomitanUserDataPath = arg.slice('--yomitan-user-data='.length); continue; } @@ -524,7 +525,10 @@ function destroyUnknownParserWindow(window: unknown): void { } } -async function createYomitanRuntimeState(userDataPath: string): Promise { +async function createYomitanRuntimeState( + userDataPath: string, + extensionPath?: string, +): Promise { const state: YomitanRuntimeState = { yomitanExt: null, parserWindow: null, @@ -547,6 +551,7 @@ async function createYomitanRuntimeState(userDataPath: string): Promise unknown; setYomitanParserWindow: (window: unknown) => void; setYomitanParserReadyPromise: (promise: Promise | null) => void; @@ -556,6 +561,7 @@ async function createYomitanRuntimeState(userDataPath: string): Promise state.parserWindow, setYomitanParserWindow: (window) => { state.parserWindow = window; @@ -589,17 +595,16 @@ async function createYomitanRuntimeStateWithSearch( userDataPath: string, extensionPath?: string, ): Promise { - const preferredPath = extensionPath ? path.resolve(extensionPath) : undefined; - const defaultVendorPath = path.resolve(process.cwd(), 'vendor', 'yomitan'); - const candidates = [...(preferredPath ? [preferredPath] : []), defaultVendorPath]; + const resolvedExtensionPath = resolveBuiltYomitanExtensionPath({ + explicitPath: extensionPath, + cwd: process.cwd(), + }); + const candidates = resolvedExtensionPath ? [resolvedExtensionPath] : []; for (const candidate of candidates) { - if (!candidate) { - continue; - } try { if (fs.existsSync(path.join(candidate, 'manifest.json'))) { - const state = await createYomitanRuntimeState(userDataPath); + const state = await createYomitanRuntimeState(userDataPath, candidate); if (state.available) { return state; } @@ -613,7 +618,7 @@ async function createYomitanRuntimeStateWithSearch( } } - return createYomitanRuntimeState(userDataPath); + return createYomitanRuntimeState(userDataPath, resolvedExtensionPath ?? undefined); } async function getFrequencyLookup(dictionaryPath: string): Promise { diff --git a/scripts/patch-yomitan.sh b/scripts/patch-yomitan.sh index 1cd39785..577cb7a8 100755 --- a/scripts/patch-yomitan.sh +++ b/scripts/patch-yomitan.sh @@ -1,287 +1,16 @@ #!/bin/bash -# -# SubMiner - All-in-one sentence mining overlay -# Copyright (C) 2024 sudacode -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# patch-yomitan.sh - Apply Electron compatibility patches to Yomitan -# -# This script applies the necessary patches to make Yomitan work in Electron -# after upgrading to a new version. Run this after extracting a fresh Yomitan release. -# -# Usage: ./patch-yomitan.sh [yomitan_dir] -# yomitan_dir: Path to the Yomitan directory (default: vendor/yomitan) -# -set -e +set -euo pipefail -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -YOMITAN_DIR="${1:-$SCRIPT_DIR/../vendor/yomitan}" -YOMITAN_MANIFEST_PATH="$YOMITAN_DIR/manifest.json" +cat <<'EOF' +patch-yomitan.sh is retired. -if [ ! -d "$YOMITAN_DIR" ]; then - echo "Error: Yomitan directory not found: $YOMITAN_DIR" - exit 1 -fi +SubMiner now uses the forked source submodule at vendor/subminer-yomitan and builds the +Chromium extension artifact into build/yomitan. -if [ ! -f "$YOMITAN_MANIFEST_PATH" ]; then - echo "Error: manifest.json not found at $YOMITAN_MANIFEST_PATH" - exit 1 -fi +Use: + git submodule update --init --recursive + bun run build:yomitan -echo "Patching manifest.json..." -if node - "$YOMITAN_MANIFEST_PATH" <<'PATCH_EOF' -const fs = require('node:fs'); -const path = process.argv[2]; -const manifest = JSON.parse(fs.readFileSync(path, 'utf8')); -const stableKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxclvOy2sunfRa2UeSV/L9xyuMR9V65z85mbKCy0XvSLUkTBXM8BnvnrDu1DHhLjpidA3cBtetVt7rzwsJSA6/CzlMmtG6L6//3MOAH5Mhng8tXXWXbuNuJobLv/7MORPqoqYKZuoL1bnUvjdrf4Pb3BBDZtHN8LcDz13gOO4dnEFQbSE4F5RQ4mIQAGMkmbmlJkwFk5I022XyX+cWm/+9VvwPuEDA1Qf7X1G+4use3hGYWVPcRb6xTp7swXsO/fP7auE51gYQD0Ht36wr32UR6lfRmsahbHOX4RLe36S8B4ee74kk5C8iCsZf2fidWmevzLk7kK0GW15pv3dpGFpPQIDAQAB'; -if (manifest.key === stableKey) { - process.exit(0); -} -manifest.key = stableKey; -fs.writeFileSync(path, `${JSON.stringify(manifest, null, 4)}\n`, 'utf8'); -process.exit(0); -PATCH_EOF -then - echo " - Set stable manifest key in manifest.json" -else - echo " - Failed to patch manifest.json" - exit 1 -fi - -echo "Patching Yomitan in: $YOMITAN_DIR" - -PERMISSIONS_UTIL="$YOMITAN_DIR/js/data/permissions-util.js" - -if [ ! -f "$PERMISSIONS_UTIL" ]; then - echo "Error: permissions-util.js not found at $PERMISSIONS_UTIL" - exit 1 -fi - -echo "Patching permissions-util.js..." - -if grep -q "Electron workaround" "$PERMISSIONS_UTIL"; then - echo " - Already patched, skipping" -else - cat > "$PERMISSIONS_UTIL.tmp" << 'PATCH_EOF' -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -import {getFieldMarkers} from './anki-util.js'; - -/** - * This function returns whether an Anki field marker might require clipboard permissions. - * This is speculative and may not guarantee that the field marker actually does require the permission, - * as the custom handlebars template is not deeply inspected. - * @param {string} marker - * @returns {boolean} - */ -function ankiFieldMarkerMayUseClipboard(marker) { - switch (marker) { - case 'clipboard-image': - case 'clipboard-text': - return true; - default: - return false; - } -} - -/** - * @param {chrome.permissions.Permissions} permissions - * @returns {Promise} - */ -export function hasPermissions(permissions) { - return new Promise((resolve, reject) => { - chrome.permissions.contains(permissions, (result) => { - const e = chrome.runtime.lastError; - if (e) { - reject(new Error(e.message)); - } else { - resolve(result); - } - }); - }); -} - -/** - * @param {chrome.permissions.Permissions} permissions - * @param {boolean} shouldHave - * @returns {Promise} - */ -export function setPermissionsGranted(permissions, shouldHave) { - return ( - shouldHave ? - new Promise((resolve, reject) => { - chrome.permissions.request(permissions, (result) => { - const e = chrome.runtime.lastError; - if (e) { - reject(new Error(e.message)); - } else { - resolve(result); - } - }); - }) : - new Promise((resolve, reject) => { - chrome.permissions.remove(permissions, (result) => { - const e = chrome.runtime.lastError; - if (e) { - reject(new Error(e.message)); - } else { - resolve(!result); - } - }); - }) - ); -} - -/** - * @returns {Promise} - */ -export function getAllPermissions() { - // Electron workaround - chrome.permissions.getAll() not available - return Promise.resolve({ - origins: [""], - permissions: ["clipboardWrite", "storage", "unlimitedStorage", "scripting", "contextMenus"] - }); -} - -/** - * @param {string} fieldValue - * @returns {string[]} - */ -export function getRequiredPermissionsForAnkiFieldValue(fieldValue) { - const markers = getFieldMarkers(fieldValue); - for (const marker of markers) { - if (ankiFieldMarkerMayUseClipboard(marker)) { - return ['clipboardRead']; - } - } - return []; -} - -/** - * @param {chrome.permissions.Permissions} permissions - * @param {import('settings').ProfileOptions} options - * @returns {boolean} - */ -export function hasRequiredPermissionsForOptions(permissions, options) { - const permissionsSet = new Set(permissions.permissions); - - if (!permissionsSet.has('nativeMessaging') && (options.parsing.enableMecabParser || options.general.enableYomitanApi)) { - return false; - } - - if (!permissionsSet.has('clipboardRead')) { - if (options.clipboard.enableBackgroundMonitor || options.clipboard.enableSearchPageMonitor) { - return false; - } - const fieldsList = options.anki.cardFormats.map((cardFormat) => cardFormat.fields); - - for (const fields of fieldsList) { - for (const {value: fieldValue} of Object.values(fields)) { - const markers = getFieldMarkers(fieldValue); - for (const marker of markers) { - if (ankiFieldMarkerMayUseClipboard(marker)) { - return false; - } - } - } - } - } - - return true; -} -PATCH_EOF - - mv "$PERMISSIONS_UTIL.tmp" "$PERMISSIONS_UTIL" - echo " - Patched successfully" -fi - -OPTIONS_SCHEMA="$YOMITAN_DIR/data/schemas/options-schema.json" - -if [ ! -f "$OPTIONS_SCHEMA" ]; then - echo "Error: options-schema.json not found at $OPTIONS_SCHEMA" - exit 1 -fi - -echo "Patching options-schema.json..." - -if grep -q '"selectText".*"default": true' "$OPTIONS_SCHEMA"; then - sed -i '/"selectText": {/,/"default":/{s/"default": true/"default": false/}' "$OPTIONS_SCHEMA" - echo " - Changed selectText default to false" -elif grep -q '"selectText".*"default": false' "$OPTIONS_SCHEMA"; then - echo " - selectText already set to false, skipping" -else - echo " - Warning: Could not find selectText setting" -fi - -if grep -q '"layoutAwareScan".*"default": true' "$OPTIONS_SCHEMA"; then - sed -i '/"layoutAwareScan": {/,/"default":/{s/"default": true/"default": false/}' "$OPTIONS_SCHEMA" - echo " - Changed layoutAwareScan default to false" -elif grep -q '"layoutAwareScan".*"default": false' "$OPTIONS_SCHEMA"; then - echo " - layoutAwareScan already set to false, skipping" -else - echo " - Warning: Could not find layoutAwareScan setting" -fi - -POPUP_JS="$YOMITAN_DIR/js/app/popup.js" - -if [ ! -f "$POPUP_JS" ]; then - echo "Error: popup.js not found at $POPUP_JS" - exit 1 -fi - -echo "Patching popup.js..." - -if grep -q "yomitan-popup-shown" "$POPUP_JS"; then - echo " - Already patched, skipping" -else - # Add the visibility event dispatch after the existing _onVisibleChange code - # We need to add it after: void this._invokeSafe('displayVisibilityChanged', {value}); - sed -i "/void this._invokeSafe('displayVisibilityChanged', {value});/a\\ -\\ - // Dispatch custom events for popup visibility (Electron integration)\\ - if (value) {\\ - window.dispatchEvent(new CustomEvent('yomitan-popup-shown'));\\ - } else {\\ - window.dispatchEvent(new CustomEvent('yomitan-popup-hidden'));\\ - }" "$POPUP_JS" - echo " - Added visibility events" -fi - -echo "" -echo "Yomitan patching complete!" -echo "" -echo "Changes applied:" -echo " 1. permissions-util.js: Hardcoded permissions (Electron workaround)" -echo " 2. options-schema.json: selectText=false, layoutAwareScan=false" -echo " 3. popup.js: Added yomitan-popup-shown/hidden events" -echo "" -echo "To verify: Run 'bun run dev' and check for 'Yomitan extension loaded successfully'" +If you need to change Electron compatibility behavior, patch the forked source repo and rebuild. +EOF diff --git a/scripts/test-yomitan-parser.ts b/scripts/test-yomitan-parser.ts index 079778a0..f8c89cee 100644 --- a/scripts/test-yomitan-parser.ts +++ b/scripts/test-yomitan-parser.ts @@ -4,6 +4,7 @@ import path from 'node:path'; import process from 'node:process'; import { createTokenizerDepsRuntime, tokenizeSubtitle } from '../src/core/services/tokenizer.js'; +import { resolveYomitanExtensionPath as resolveBuiltYomitanExtensionPath } from '../src/core/services/yomitan-extension-paths.js'; import { MecabTokenizer } from '../src/mecab-tokenizer.js'; import type { MergedToken } from '../src/types.js'; @@ -112,12 +113,12 @@ function parseCliArgs(argv: string[]): CliOptions { if (!next) { throw new Error('Missing value for --yomitan-extension'); } - yomitanExtensionPath = path.resolve(next); + yomitanExtensionPath = next; continue; } if (arg.startsWith('--yomitan-extension=')) { - yomitanExtensionPath = path.resolve(arg.slice('--yomitan-extension='.length)); + yomitanExtensionPath = arg.slice('--yomitan-extension='.length); continue; } @@ -126,12 +127,12 @@ function parseCliArgs(argv: string[]): CliOptions { if (!next) { throw new Error('Missing value for --yomitan-user-data'); } - yomitanUserDataPath = path.resolve(next); + yomitanUserDataPath = next; continue; } if (arg.startsWith('--yomitan-user-data=')) { - yomitanUserDataPath = path.resolve(arg.slice('--yomitan-user-data='.length)); + yomitanUserDataPath = arg.slice('--yomitan-user-data='.length); continue; } @@ -372,21 +373,10 @@ function findSelectedCandidateIndexes( } function resolveYomitanExtensionPath(explicitPath?: string): string | null { - const candidates = [ - explicitPath ? path.resolve(explicitPath) : null, - path.resolve(process.cwd(), 'vendor', 'yomitan'), - ]; - - for (const candidate of candidates) { - if (!candidate) { - continue; - } - if (fs.existsSync(path.join(candidate, 'manifest.json'))) { - return candidate; - } - } - - return null; + return resolveBuiltYomitanExtensionPath({ + explicitPath, + cwd: process.cwd(), + }); } async function setupYomitanRuntime(options: CliOptions): Promise { @@ -420,7 +410,7 @@ async function setupYomitanRuntime(options: CliOptions): Promise BrowserWindow | null; setYomitanParserWindow: (window: BrowserWindow | null) => void; setYomitanParserReadyPromise: (promise: Promise | null) => void; @@ -18,25 +22,17 @@ export interface YomitanExtensionLoaderDeps { export async function loadYomitanExtension( deps: YomitanExtensionLoaderDeps, ): Promise { - const searchPaths = [ - path.join(__dirname, '..', '..', 'vendor', 'yomitan'), - path.join(__dirname, '..', '..', '..', 'vendor', 'yomitan'), - path.join(process.resourcesPath, 'yomitan'), - '/usr/share/SubMiner/yomitan', - path.join(deps.userDataPath, 'yomitan'), - ]; - - let extPath: string | null = null; - for (const p of searchPaths) { - if (fs.existsSync(p)) { - extPath = p; - break; - } - } + const searchPaths = getYomitanExtensionSearchPaths({ + explicitPath: deps.extensionPath, + moduleDir: __dirname, + resourcesPath: process.resourcesPath, + userDataPath: deps.userDataPath, + }); + let extPath = resolveExistingYomitanExtensionPath(searchPaths, fs.existsSync); if (!extPath) { logger.error('Yomitan extension not found in any search path'); - logger.error('Install Yomitan to one of:', searchPaths); + logger.error('Run `bun run build:yomitan` or install Yomitan to one of:', searchPaths); return null; } diff --git a/src/core/services/yomitan-extension-paths.test.ts b/src/core/services/yomitan-extension-paths.test.ts new file mode 100644 index 00000000..f198d14f --- /dev/null +++ b/src/core/services/yomitan-extension-paths.test.ts @@ -0,0 +1,50 @@ +import assert from 'node:assert/strict'; +import path from 'node:path'; +import test from 'node:test'; + +import { + getYomitanExtensionSearchPaths, + resolveExistingYomitanExtensionPath, +} from './yomitan-extension-paths'; + +test('getYomitanExtensionSearchPaths prioritizes generated build output before packaged fallbacks', () => { + const searchPaths = getYomitanExtensionSearchPaths({ + cwd: '/repo', + moduleDir: '/repo/dist/core/services', + resourcesPath: '/opt/SubMiner/resources', + userDataPath: '/Users/kyle/.config/SubMiner', + }); + + assert.deepEqual(searchPaths, [ + path.join('/repo', 'build', 'yomitan'), + path.join('/opt/SubMiner/resources', 'yomitan'), + '/usr/share/SubMiner/yomitan', + path.join('/Users/kyle/.config/SubMiner', 'yomitan'), + ]); +}); + +test('resolveExistingYomitanExtensionPath returns first manifest-backed candidate', () => { + const existing = new Set([ + path.join('/repo', 'build', 'yomitan', 'manifest.json'), + path.join('/repo', 'vendor', 'subminer-yomitan', 'ext', 'manifest.json'), + ]); + + const resolved = resolveExistingYomitanExtensionPath( + [ + path.join('/repo', 'build', 'yomitan'), + path.join('/repo', 'vendor', 'subminer-yomitan', 'ext'), + ], + (candidate) => existing.has(candidate), + ); + + assert.equal(resolved, path.join('/repo', 'build', 'yomitan')); +}); + +test('resolveExistingYomitanExtensionPath ignores source tree without built manifest', () => { + const resolved = resolveExistingYomitanExtensionPath( + [path.join('/repo', 'vendor', 'subminer-yomitan', 'ext')], + () => false, + ); + + assert.equal(resolved, null); +}); diff --git a/src/core/services/yomitan-extension-paths.ts b/src/core/services/yomitan-extension-paths.ts new file mode 100644 index 00000000..18f9c42c --- /dev/null +++ b/src/core/services/yomitan-extension-paths.ts @@ -0,0 +1,57 @@ +import * as fs from 'node:fs'; +import * as path from 'node:path'; + +export interface YomitanExtensionPathOptions { + explicitPath?: string; + cwd?: string; + moduleDir?: string; + resourcesPath?: string; + userDataPath?: string; +} + +function pushUnique(values: string[], candidate: string | null | undefined): void { + if (!candidate || values.includes(candidate)) { + return; + } + values.push(candidate); +} + +export function getYomitanExtensionSearchPaths( + options: YomitanExtensionPathOptions = {}, +): string[] { + const searchPaths: string[] = []; + + pushUnique(searchPaths, options.explicitPath ? path.resolve(options.explicitPath) : null); + pushUnique(searchPaths, options.cwd ? path.resolve(options.cwd, 'build', 'yomitan') : null); + pushUnique( + searchPaths, + options.moduleDir + ? path.resolve(options.moduleDir, '..', '..', '..', 'build', 'yomitan') + : null, + ); + pushUnique(searchPaths, options.resourcesPath ? path.join(options.resourcesPath, 'yomitan') : null); + pushUnique(searchPaths, '/usr/share/SubMiner/yomitan'); + pushUnique(searchPaths, options.userDataPath ? path.join(options.userDataPath, 'yomitan') : null); + + return searchPaths; +} + +export function resolveExistingYomitanExtensionPath( + searchPaths: string[], + existsSync: (path: string) => boolean = fs.existsSync, +): string | null { + for (const candidate of searchPaths) { + if (existsSync(path.join(candidate, 'manifest.json'))) { + return candidate; + } + } + + return null; +} + +export function resolveYomitanExtensionPath( + options: YomitanExtensionPathOptions = {}, + existsSync: (path: string) => boolean = fs.existsSync, +): string | null { + return resolveExistingYomitanExtensionPath(getYomitanExtensionSearchPaths(options), existsSync); +} diff --git a/src/core/services/yomitan-structured-content-generator.test.ts b/src/core/services/yomitan-structured-content-generator.test.ts index d97e7bb9..24b926d2 100644 --- a/src/core/services/yomitan-structured-content-generator.test.ts +++ b/src/core/services/yomitan-structured-content-generator.test.ts @@ -2,6 +2,7 @@ import assert from 'node:assert/strict'; import path from 'node:path'; import test from 'node:test'; import { pathToFileURL } from 'node:url'; +import { resolveYomitanExtensionPath } from './yomitan-extension-paths'; class FakeStyle { private values = new Map(); @@ -155,14 +156,17 @@ function findFirstByClass(node: FakeNode, className: string): FakeNode | null { } test('StructuredContentGenerator uses direct img loading for popup glossary images', async () => { + const yomitanRoot = resolveYomitanExtensionPath({ cwd: process.cwd() }); + assert.ok(yomitanRoot, 'Run `bun run build:yomitan` before Yomitan integration tests.'); + const { DisplayContentManager } = await import( pathToFileURL( - path.join(process.cwd(), 'vendor/yomitan/js/display/display-content-manager.js'), + path.join(yomitanRoot, 'js', 'display', 'display-content-manager.js'), ).href ); const { StructuredContentGenerator } = await import( pathToFileURL( - path.join(process.cwd(), 'vendor/yomitan/js/display/structured-content-generator.js'), + path.join(yomitanRoot, 'js', 'display', 'structured-content-generator.js'), ).href ); diff --git a/src/yomitan-translator-sort.test.ts b/src/yomitan-translator-sort.test.ts index 38cae63f..7378055f 100644 --- a/src/yomitan-translator-sort.test.ts +++ b/src/yomitan-translator-sort.test.ts @@ -1,8 +1,9 @@ import assert from 'node:assert/strict'; +import path from 'node:path'; import test from 'node:test'; +import { pathToFileURL } from 'node:url'; -// @ts-expect-error Vendored Yomitan translator has no local TypeScript declarations. -import { Translator } from '../vendor/yomitan/js/language/translator.js'; +import { resolveYomitanExtensionPath } from './core/services/yomitan-extension-paths'; type SortableTermEntry = { matchPrimaryReading: boolean; @@ -28,8 +29,20 @@ type SortableDefinition = { index: number; }; -test('Translator prioritizes SubMiner term entries without changing dictionary index order', () => { - const translator = new Translator({}); +async function loadTranslator(): Promise<{ new (...args: unknown[]): { [key: string]: unknown } }> { + const yomitanRoot = resolveYomitanExtensionPath({ cwd: process.cwd() }); + assert.ok(yomitanRoot, 'Run `bun run build:yomitan` before Yomitan integration tests.'); + const module = await import( + pathToFileURL(path.join(yomitanRoot, 'js', 'language', 'translator.js')).href + ); + return module.Translator as { new (...args: unknown[]): { [key: string]: unknown } }; +} + +test('Translator prioritizes SubMiner term entries without changing dictionary index order', async () => { + const Translator = await loadTranslator(); + const translator = new Translator({}) as { + _sortTermDictionaryEntries: (entries: unknown[]) => void; + }; const entries: SortableTermEntry[] = [ { matchPrimaryReading: true, @@ -64,8 +77,11 @@ test('Translator prioritizes SubMiner term entries without changing dictionary i assert.equal(entries[0]?.dictionaryAlias, 'SubMiner Character Dictionary'); }); -test('Translator prioritizes SubMiner definitions without changing dictionary index order', () => { - const translator = new Translator({}); +test('Translator prioritizes SubMiner definitions without changing dictionary index order', async () => { + const Translator = await loadTranslator(); + const translator = new Translator({}) as { + _sortTermDictionaryEntryDefinitions: (definitions: unknown[]) => void; + }; const definitions: SortableDefinition[] = [ { dictionary: 'JMdict', diff --git a/vendor/subminer-yomitan b/vendor/subminer-yomitan new file mode 160000 index 00000000..9863d865 --- /dev/null +++ b/vendor/subminer-yomitan @@ -0,0 +1 @@ +Subproject commit 9863d865e14fc1c9df4f1a7be3a541d557873d2e diff --git a/vendor/yomitan/action-popup.html b/vendor/yomitan/action-popup.html deleted file mode 100644 index e7d69100..00000000 --- a/vendor/yomitan/action-popup.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - Yomitan Action Popup - - - - - - - - - - - - -
- Loading... -
-
- -
-
- -

Hover over text to scan

-
-
-
- - - -
-
- - diff --git a/vendor/yomitan/background.html b/vendor/yomitan/background.html deleted file mode 100644 index 99eac4c3..00000000 --- a/vendor/yomitan/background.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Yomitan Background - - - - - diff --git a/vendor/yomitan/css/action-popup.css b/vendor/yomitan/css/action-popup.css deleted file mode 100644 index da880c3b..00000000 --- a/vendor/yomitan/css/action-popup.css +++ /dev/null @@ -1,376 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Variables */ - -:root { - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - --background-color: #f8f9fa; - --text-color: #333333; -} - -:root[data-theme=dark] { - --background-color: #1e1e1e; - --text-color: #cccccc; -} - -/* Initilization */ - -body[data-loaded=true] #loading { - display: none; -} - -body:not([data-loaded=true]) #action-popup { - display: none; -} - -:root[data-mode=full] #action-popup { - display: initial; -} - -#action-popup { - display: flex; - flex-flow: column nowrap; - align-items: center; -} - -body { - padding: 5px; - margin: 0; - font-family: 'Segoe UI', Tahoma, sans-serif; - font-size: var(--font-size); - width: max-content; - height: max-content; - background-color: var(--background-color); -} - -/* Toggle */ - -body[data-loaded=true] .toggle-group { - transition: transform 0.35s; -} - -.toggle>input[type=checkbox] { - width: 0; - height: 0; - opacity: 0; - display: block; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.toggle>input[type=checkbox]:not(:checked)~.toggle-group { - transform: translateX(-50%); -} - -.toggle { - box-sizing: border-box; - width: 85px; - height: 43px; - position: relative; - overflow: hidden; - border: 1px solid #245580; - border-radius: 4px; - display: inline-block; -} - -.toggle-group { - position: absolute; - width: 200%; - left: 0; - top: 0; - bottom: 0; - user-select: none; -} - -.toggle-on, -.toggle-off, -.toggle-handle { - display: flex; - justify-content: center; - align-items: center; - padding: 6px 12px; - font-size: var(--font-size); - font-weight: bold; - line-height: var(--line-height); - text-align: center; - white-space: nowrap; - cursor: pointer; -} - -.toggle-on, -.toggle-off { - position: absolute; - top: 0; - bottom: 0; - margin: 0; - border: 0; -} - -.toggle-on { - padding-right: 24px; - left: 0; - right: 50%; - color: #ffffff; - border-color: #2e6da4; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), inset 0 3px 5px rgba(0, 0, 0, 0); - background-image: linear-gradient(225deg, #bc00ff, #00eeff); - background-repeat: repeat-x; -} -input[type=checkbox]:focus~.toggle-group>.toggle-on, -input[type=checkbox]~.toggle-group>.toggle-on:hover { - filter: grayscale(30%); -} -input[type=checkbox]:focus:not(:focus-visible)~.toggle-group>.toggle-on:not(:hover) { - background-image: linear-gradient(225deg, #bc00ff, #00eeff); -} -input[type=checkbox]:focus-visible~.toggle-group>.toggle-on { - filter: grayscale(30%); -} -input[type=checkbox]~.toggle-group>.toggle-on:active, -input[type=checkbox]~.toggle-group>.toggle-on:active:focus { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.toggle-off { - padding-left: 24px; - left: 50%; - right: 0; -} - -.toggle-handle { - position: relative; - margin: 0 auto; - padding-top: 0; - padding-bottom: 0; - height: 100%; - width: 0; - border-style: solid; - border-width: 0 1px; - border-radius: 4px; - border-color: #cccccc; -} - -.toggle-off, -.toggle-handle { - color: #333333; - text-shadow: 0 1px 0 #ffffff; - background-color: #ffffff; - background-repeat: repeat-x; -} -input[type=checkbox]:focus~.toggle-group>.toggle-off, -input[type=checkbox]~.toggle-group>.toggle-off:hover, -input[type=checkbox]~.toggle-group>.toggle-handle:hover { - background-color: #e6e6e6; -} -input[type=checkbox]:focus:not(:focus-visible)~.toggle-group>.toggle-off:not(:hover) { - background-color: #ffffff; -} -input[type=checkbox]:focus-visible~.toggle-group>.toggle-off, -input[type=checkbox]~.toggle-group>.toggle-off:hover { - background-color: #e6e6e6; -} -input[type=checkbox]~.toggle-group>.toggle-off:active, -input[type=checkbox]~.toggle-group>.toggle-handle:active, -input[type=checkbox]~.toggle-group>.toggle-off:active:focus, -input[type=checkbox]~.toggle-group>.toggle-handle:active:focus { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -/* Action Containers */ - -h2.action-title { - padding: 0; - margin: 0; - font-size: 1.125em; - line-height: 1.5; -} - -.action-icon:hover { - cursor: pointer; -} - -.action-icon { - flex: 0 0 auto; - align-self: center; -} -.action-icon>.icon { - display: block; - background-color: var(--button-default-icon-color); - width: 1.5em; - height: 1.5em; -} - -.low-emphasis { - position: relative; -} - -.action-item-left { - flex: 1 1 auto; - align-self: center; - position: relative; - display: flex; - justify-content: flex-start; -} -.action-item-center { - flex: 1 1 auto; - align-self: center; - display: flex; - flex-flow: column nowrap; - align-items: center; - justify-content: center; -} -.action-item-right { - flex: 0 1 auto; - align-self: stretch; - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} - -.action-container:not([hidden]) { - display: flex; - justify-content: space-between; - align-items: center; - padding: 5px; -} - -.action-container button { - flex: 0 0 auto; -} - -.action-container.action-buttons { - gap: 0.25em; -} - -/* Actions */ - -.action-container.action-select-profile { - position: relative; - gap: 0.5em; -} - -select.profile-select { - width: 7em; - height: 100%; - box-sizing: border-box; - border: 0; - margin: 0; - cursor: pointer; - font-size: var(--font-size); - overflow: hidden; - text-overflow: ellipsis; -} - -/* Tooltip */ - -.tooltip { - color: #808080; - padding: 0; - margin: 0; - margin-top: 0.25em; -} - -.enable-dictionary-tooltip { - color: #f0ad4e; -} - -.tooltip>a:link, a:visited { - color: #f0ad4e; -} - -/* Mobile overrides */ - -:root[data-mode=full] #action-popup { - display: initial; -} -:root[data-mode=full] body { - min-width: 95%; - width: max-content; - font-size: calc(var(--font-size) * 2); - text-align: center; -} -:root[data-mode=full] .toggle-on, :root[data-mode=full] .toggle-off { - font-size: calc(var(--font-size) * 4); -} -:root[data-mode=full] .toggle-handle { - padding-left: 65px; - padding-right: 65px; - border-radius: 10px; -} -:root[data-mode=full] .toggle { - width: 100%; - padding-top: 37.7%; -} -:root[data-mode=full] #extension-info { - max-width: 95vw; - overflow-wrap: break-word; -} -:root[data-mode=full] select.profile-select { - font-size: calc(var(--font-size) * 2); -} - -/* Fallback Mobile overrides */ - -/* Treat devices that can't hover as mobile devices */ -@media (hover: none) { - #action-popup { - display: initial; - } - body { - min-width: 95%; - width: max-content; - font-size: calc(var(--font-size) * 2); - text-align: center; - } - .toggle-on, .toggle-off { - font-size: calc(var(--font-size) * 4); - } - .toggle-handle { - padding-left: 65px; - padding-right: 65px; - border-radius: 10px; - } - .toggle { - width: 100%; - padding-top: 37.7%; - } - #extension-info { - max-width: 95vw; - overflow-wrap: break-word; - } - select.profile-select { - font-size: calc(var(--font-size) * 2); - } -} - -/* Dark mode before themes are applied - DO NOT use this for normal theming */ -@media (prefers-color-scheme: dark) { - body:not([data-loaded=true]) { - color: #cccccc; - background-color: #1e1e1e; - } -} diff --git a/vendor/yomitan/css/background.css b/vendor/yomitan/css/background.css deleted file mode 100644 index 774ad112..00000000 --- a/vendor/yomitan/css/background.css +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* stylelint-disable declaration-no-important */ -#clipboard-rich-content-paste-target * { - background-image: none !important; - list-style-image: none !important; - content: none !important; - cursor: auto !important; - border-image-source: none !important; - offset-path: none !important; - -webkit-mask-image: none !important; - mask-image: none !important; -} -/* stylelint-enable declaration-no-important */ diff --git a/vendor/yomitan/css/display-pronunciation.css b/vendor/yomitan/css/display-pronunciation.css deleted file mode 100644 index 51be4bb4..00000000 --- a/vendor/yomitan/css/display-pronunciation.css +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the entrys of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -:root { - --pronunciation-annotation-color: #000000; -} -:root[data-theme=dark] { - --pronunciation-annotation-color: #ffffff; -} - -.pronunciation-downstep-notation { - display: inline; -} - -.pronunciation-text { - display: inline; -} -.pronunciation-mora { - display: inline-block; - position: relative; -} -.pronunciation-mora-line { - border-color: var(--pronunciation-annotation-color); -} -.pronunciation-mora[data-pitch=high]>.pronunciation-mora-line { - display: block; - user-select: none; - pointer-events: none; - position: absolute; - top: 0.1em; - left: 0; - right: 0; - height: 0; - border-top-width: 0.1em; - border-top-style: solid; -} -.pronunciation-mora[data-pitch=high][data-pitch-next=low]>.pronunciation-mora-line { - right: -0.1em; - height: 0.4em; - border-right-width: 0.1em; - border-right-style: solid; -} -.pronunciation-mora[data-pitch=high][data-pitch-next=low] { - padding-right: 0.1em; - margin-right: 0.1em; -} -.pronunciation-devoice-indicator { - display: block; - position: absolute; - left: 50%; - top: 50%; - width: 1.125em; - height: 1.125em; - border: calc(1.5em / var(--font-size-no-units)) dotted var(--danger-color); - border-radius: 50%; - box-sizing: border-box; - z-index: 1; - transform: translate(-50%, -50%); -} -.pronunciation-nasal-indicator { - display: block; - position: absolute; - right: -0.125em; - top: 0.125em; - width: 0.375em; - height: 0.375em; - border: calc(1.5em / var(--font-size-no-units)) solid var(--danger-color); - border-radius: 50%; - box-sizing: border-box; - z-index: 1; -} -.pronunciation-nasal-diacritic { - position: absolute; - width: 0; - height: 0; - opacity: 0; -} -.pronunciation-character { - display: inline; -} -.pronunciation-character-group { - display: inline-block; - position: relative; -} - -.pronunciation-graph { - display: inline-block; - vertical-align: middle; - height: 1.5em; -} -.pronunciation-graph-line, -.pronunciation-graph-line-tail { - fill: none; - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} -.pronunciation-graph-line-tail { - stroke-dasharray: 5 5; -} -.pronunciation-graph-dot { - fill: var(--pronunciation-annotation-color); - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} -.pronunciation-graph-dot-downstep1 { - fill: none; - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} -.pronunciation-graph-dot-downstep2 { - fill: var(--pronunciation-annotation-color); -} -.pronunciation-graph-triangle { - fill: none; - stroke: var(--pronunciation-annotation-color); - stroke-width: 5; -} diff --git a/vendor/yomitan/css/display.css b/vendor/yomitan/css/display.css deleted file mode 100644 index f152ca17..00000000 --- a/vendor/yomitan/css/display.css +++ /dev/null @@ -1,2100 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2016-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the entrys of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Variables */ -:root { - /* Strings */ - --compact-list-separator: ' | '; - - --disambiguation-separator: ', '; - --disambiguation-reading-separator: ':'; - - --headword-separator: '\3001'; - - --inflection-separator: '\00AB'; - - /* Layout */ - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - --query-parser-font-size-no-units: 2; - --query-parser-font-size: calc(1em * var(--query-parser-font-size-no-units)); - --h2-font-size-no-units: 1.25; - --h2-font-size: calc(1em * var(--h2-font-size-no-units)); - - --headword-font-size-no-units: 2; - --headword-font-size: calc(1em * var(--headword-font-size-no-units)); - --headword-reading-font-size-no-units: 0.75; - --headword-reading-font-size: calc(var(--headword-reading-font-size-no-units) * var(--headword-font-size)); - --headword-reading-space: 0.5em; - --headword-list-end-space: 0.5em; - --headword-thin-border-size: calc(1em / (var(--headword-font-size-no-units) * var(--font-size-no-units))); - - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - - --thin-border-size: calc(1em / var(--font-size-no-units)); - - --action-button-size-no-units: 16; - --action-button-size: calc(1em * (var(--action-button-size-no-units) / var(--font-size-no-units))); - --action-button-padding: 0.3em; - - --list-margin: 0.72em; - --content-width: 100%; - --main-content-vertical-padding: 0em; - --main-content-horizontal-padding: 0em; - --entry-horizontal-padding: 0.72em; - --entry-vertical-padding: 0.72em; - --query-horizontal-padding: 0.72em; - - --sidebar-width-no-units: 40; - --sidebar-width: calc(1em * (var(--sidebar-width-no-units) / var(--font-size-no-units))); - --sidebar-button-height-no-units: 30; - --sidebar-button-height: calc(1em * (var(--sidebar-button-height-no-units) / var(--font-size-no-units))); - --sidebar-button-icon-size-no-units: 16; - --sidebar-button-icon-size: calc(1em * (var(--sidebar-button-icon-size-no-units) / var(--font-size-no-units))); - - --progress-bar-height-no-units: 4; - --progress-bar-height: calc(1em * (var(--progress-bar-height-no-units) / var(--font-size-no-units))); - --progress-bar-active-transition-duration: 0.125s; - --progress-bar-active-transition-start-delay: 0.0625s; - --progress-bar-animation-duration: 2s; - - --entry-current-indicator-width-no-units: 4; - --entry-current-indicator-width: calc(1em * var(--entry-current-indicator-width-no-units) / var(--font-size-no-units)); - --entry-current-indicator-transition-duration: 0.125s; - - --tag-height-no-units: 20; - --tag-height: calc(1em * var(--tag-height-no-units) / var(--font-size-no-units)); - --tag-font-size-no-units: 11; - --tag-font-size: calc(1em * var(--tag-font-size-no-units) / var(--font-size-no-units)); - --tag-border-size-no-units: 1; - --tag-border-size: calc(1em * (var(--tag-border-size-no-units) / var(--font-size-no-units))); - --tag-border-style: solid; - --tag-font-weight: bold; - --tag-border-radius: 0.25em; - - --list-padding1: 1.4em; - --list-padding2: var(--list-padding1); - - --entry-current-indicator-triangle-size-no-units: 6; - --entry-current-indicator-triangle-size: calc(1em * (var(--entry-current-indicator-triangle-size-no-units) / var(--font-size-no-units))); - - --overlay-panel-translate-distance: 4em; - - --disambiguation-space: 0.25em; - - --animation-duration: 0.125s; - --animation-duration2: calc(2 * var(--animation-duration)); - - --collapsible-definition-line-count: 3; - --collapsible-kanji-glyph-data-line-count: 3; - --kanji-glyph-table-header-height: calc((20em / var(--font-size-no-units)) + var(--kanji-glyph-table-cell-padding) * 3); - --collapsible-definition-test-offset: 0.2em; - --collpasible-kanji-glyph-data-test-offset: 0.2em; - - /* Colors */ - --background-color: #ffffff; - --gloss-image-background-color: #eeeeee; - --link-color: var(--accent-color); - - --text-color: #000000; - --reason-text-color: var(--text-color-light3); - - --headword-text-color: var(--text-color); - --headword-text-color-popular: var(--accent-color); - --headword-text-color-rare: var(--text-color-light4); - --headword-furigana-text-color: var(--headword-text-color); - --headword-furigana-text-color-popular: var(--headword-text-color-popular); - --headword-furigana-text-color-rare: var(--headword-text-color-rare); - --headword-reading-text-color: var(--headword-furigana-text-color); - --headword-reading-text-color-popular: var(--headword-furigana-text-color-popular); - --headword-reading-text-color-rare: var(--headword-furigana-text-color-rare); - --headword-kanji-text-color: var(--headword-text-color); - --headword-kanji-text-color-popular: var(--headword-text-color-popular); - --headword-kanji-text-color-rare: var(--headword-text-color-rare); - --headword-kanji-border-color: var(--dark-border-color); - --headword-kanji-border-color-popular: var(--headword-kanji-border-color); - --headword-kanji-border-color-rare: var(--headword-kanji-border-color); - - --kanji-glyph-table-cell-padding: 0.36em; - - --light-border-color: #eeeeee; - --medium-border-color: #dddddd; - --dark-border-color: #777777; - - --tag-text-color: #ffffff; - --tag-border-color: transparent; - --tag-default-background-color: #8a8a91; - --tag-name-background-color: #b6327a; - --tag-expression-background-color: #f0ad4e; - --tag-popular-background-color: #0275d8; - --tag-frequent-background-color: #5bc0de; - --tag-archaism-background-color: #d9534f; - --tag-dictionary-background-color: #aa66cc; - --tag-frequency-background-color: #5cb85c; - --tag-part-of-speech-background-color: #565656; - --tag-search-background-color: #8a8a91; - --tag-pronunciation-dictionary-background-color: #6640be; - - --sidebar-background-color: #f8f9fa; - - --sidebar-button-background-color: transparent; - --sidebar-button-background-color-hover: #cccccc; - --sidebar-button-background-color-active: #aaaaaa; - --sidebar-button-danger-background-color: transparent; - --sidebar-button-danger-background-color-hover: #dd2222; - --sidebar-button-danger-background-color-active: #bb2222; - --sidebar-button-icon-color: #333333; - --sidebar-button-disabled-icon-color: #888888; - --sidebar-button-danger-icon-color: #ffffff; - - --scrollbar-thumb-color: #c1c1c1; - --scrollbar-track-color: #f1f1f1; - --scrollbar-inverse-thumb-color: #444444; - --scrollbar-inverse-track-color: #2f2f2f; - - --progress-bar-track-color: #cccccc; - --progress-bar-indicator-color: var(--accent-color); - --entry-current-indicator-color: var(--accent-color); - - --notification-text-color: #2f2f2f; - --notification-background-color: #f1f1f1; - --notification-background-color-light: #e1e1e1; - --notification-background-color-lighter: #bbbbbb; - --notification-shadow-color: rgba(255, 255, 255, 0.25); - - --action-button-hover-color: #dddddd; - --action-button-active-color: #c1c1c1; -} -:root[data-theme=dark] { - /* Colors */ - --background-color: #1e1e1e; - --gloss-image-background-color: #2f2f2f; - --link-color: var(--accent-color); - - --text-color: #d4d4d4; - --reason-text-color: var(--text-color-light3); - - --headword-text-color: var(--text-color); - --headword-text-color-popular: var(--accent-color); - --headword-text-color-rare: var(--text-color-light4); - --headword-furigana-text-color: var(--headword-text-color); - --headword-furigana-text-color-popular: var(--headword-text-color-popular); - --headword-furigana-text-color-rare: var(--headword-text-color-rare); - --headword-reading-text-color: var(--headword-furigana-text-color); - --headword-reading-text-color-popular: var(--headword-furigana-text-color-popular); - --headword-reading-text-color-rare: var(--headword-furigana-text-color-rare); - --headword-kanji-border-color: var(--dark-border-color); - - --light-border-color: #2f2f2f; - --medium-border-color: #3f3f3f; - --dark-border-color: #888888; - - --tag-text-color: #f1f1f1; - --tag-border-color: transparent; - --tag-default-background-color: #69696e; - --tag-name-background-color: #992a67; - --tag-expression-background-color: #b07f39; - --tag-popular-background-color: #025caa; - --tag-frequent-background-color: #4490a7; - --tag-archaism-background-color: #b04340; - --tag-dictionary-background-color: #9057ad; - --tag-frequency-background-color: #489148; - --tag-part-of-speech-background-color: #565656; - --tag-search-background-color: #69696e; - --tag-pronunciation-dictionary-background-color: #6640be; - - --sidebar-background-color: #282828; - - --sidebar-button-background-color: transparent; - --sidebar-button-background-color-hover: #3a3a3a; - --sidebar-button-background-color-active: #5a5a5a; - --sidebar-button-danger-background-color: transparent; - --sidebar-button-danger-background-color-hover: #dd2222; - --sidebar-button-danger-background-color-active: #bb2222; - --sidebar-button-icon-color: #cccccc; - --sidebar-button-disabled-icon-color: #777777; - --sidebar-button-danger-icon-color: #ffffff; - - --scrollbar-thumb-color: #444444; - --scrollbar-track-color: #2f2f2f; - --scrollbar-inverse-thumb-color: #c1c1c1; - --scrollbar-inverse-track-color: #f1f1f1; - - --progress-bar-track-color: #3a3a3a; - --progress-bar-indicator-color: var(--accent-color); - --entry-current-indicator-color: var(--accent-color); - - --notification-text-color: #ffffff; - --notification-background-color: #333333; - --notification-background-color-light: #555555; - --notification-background-color-lighter: #666666; - --notification-shadow-color: rgba(0, 0, 0, 0.5); - - --action-button-hover-color: #282828; - --action-button-active-color: #444444; -} - - -/* Fonts */ -@font-face { - font-family: kanji-stroke-orders; - src: url('/data/fonts/kanji-stroke-orders.ttf'); -} - - -/* General */ -:root[data-page-type=popup]:not([data-theme]), -:root[data-page-type=popup]:not([data-theme]) body { - background-color: transparent; -} -body { - overflow: hidden; -} -ol, ul { - margin-top: 0; - margin-bottom: var(--list-padding); -} -h2 { - font-size: var(--h2-font-size); - font-weight: normal; - margin: 0.25em 0 0; - border-bottom: calc(1em / (var(--font-size-no-units) * var(--h2-font-size-no-units))) solid var(--light-border-color); -} -h3 { - font-size: 1em; - font-weight: bold; - margin: 0.25em 0 0.375em; - padding: 0; -} -h5 { - font-size: calc(12em / var(--font-size-no-units)); - margin: 0; - padding: 0; - font-weight: normal; -} -a { - color: var(--link-color); - text-decoration: underline; - cursor: pointer; - text-underline-offset: calc(4em / var(--font-size-no-units)); - text-decoration-thickness: calc(1em / var(--font-size-no-units)); -} -a:has(rt) { - text-decoration: none; - border-bottom: solid calc(1em / var(--font-size-no-units)) var(--link-color); -} - - -/* Selection */ -#content-scroll-focus { - opacity: 0; - margin: 0; - padding: 0; - outline: none; - background-color: transparent; - display: inline; - width: 0; - height: 0; - line-height: 0; - user-select: none; -} -#content-scroll-focus::-moz-focus-inner { - border: 0; -} - - -/* Scrollbars */ -:root:not([data-theme=light]) .scrollbar { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar { - width: auto; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-button { - height: 0; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-thumb { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track-piece { - background-color: var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-corner { - background-color: var(--scrollbar-track-color); -} -:root .scrollbar-inverse { - scrollbar-color: var(--scrollbar-inverse-humb-color) var(--scrollbar-inverse-track-color); -} -:root .scrollbar-inverse::-webkit-scrollbar { - width: auto; -} -:root .scrollbar-inverse::-webkit-scrollbar-button { - height: 0; -} -:root .scrollbar-inverse::-webkit-scrollbar-thumb { - background-color: var(--scrollbar-inverse-thumb-color); -} -:root .scrollbar-inverse::-webkit-scrollbar-track { - background-color: var(--scrollbar-inverse-thumb-color); -} -:root .scrollbar-inverse::-webkit-scrollbar-track-piece { - background-color: var(--scrollbar-inverse-track-color); -} -:root .scrollbar-inverse::-webkit-scrollbar-corner { - background-color: var(--scrollbar-inverse-track-color); -} -.scrollbar-spacer { - display: inline-block; - overflow-x: hidden; - overflow-y: scroll; - visibility: hidden; - flex: 0 1 auto; -} - - -/* Main layout */ -.content { - flex: 1 1 auto; - position: relative; -} -.content-scroll { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - display: flex; - flex-flow: column nowrap; - overflow-x: hidden; - overflow-y: scroll; - align-items: stretch; - justify-content: flex-start; -} -.content-body { - flex: 1 1 auto; - position: relative; -} -.content-body-inner { - width: var(--content-width); - max-width: 100%; - box-sizing: border-box; - margin: 0 auto; - padding: var(--main-content-vertical-padding) var(--main-content-horizontal-padding); -} -.content-footer-container1 { - display: flex; - flex-flow: row nowrap; - position: absolute; - left: 0; - right: 0; - bottom: 0; - max-height: 100%; - pointer-events: none; - z-index: 5; -} -.content-footer-container2 { - display: flex; - flex-flow: row nowrap; - justify-content: center; - flex: 1 1 auto; - max-width: 100%; -} -.content-footer { - width: var(--content-width); - max-width: 100%; -} -.contain-overscroll { - overscroll-behavior: contain; -} - - -/* Sidebar layout */ -.content-outer { - width: 100%; - height: 100%; - display: flex; - flex-flow: row nowrap; - overflow: hidden; - align-items: stretch; - align-content: stretch; - justify-content: center; -} -.content-sidebar { - flex: 0 0 auto; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - background-color: var(--sidebar-background-color); - z-index: 10; - position: relative; - display: none; -} -:root[data-has-navigation-previous=true] .content-sidebar, -:root[data-has-navigation-next=true] .content-sidebar, -:root[data-popup-action-bar-visibility=always] .content-sidebar, -:root[data-profile-panel-visible=true] .content-sidebar { - display: block; -} -.content-sidebar-inner { - display: flex; - flex-flow: column nowrap; - width: var(--sidebar-width); - height: 100%; -} -.content-sidebar-top-pre { - flex: 0 0 auto; - display: flex; - flex-flow: column nowrap; -} -.content-sidebar-top { - flex: 1 1 auto; - display: flex; - flex-flow: column nowrap; -} -.content-sidebar-bottom { - position: sticky; - bottom: 0; - background-color: var(--sidebar-background-color); - display: flex; - flex-flow: column nowrap; - align-items: center; -} -:root[data-popup-action-bar-location=top] .content-outer, -:root[data-popup-action-bar-location=bottom] .content-outer { - flex-flow: column nowrap; -} -:root[data-popup-action-bar-location=top] .content-sidebar, -:root[data-popup-action-bar-location=bottom] .content-sidebar { - height: auto; - width: 100%; -} -:root[data-popup-action-bar-location=left] .content-sidebar, -:root[data-popup-action-bar-location=top] .content-sidebar { - order: -1; -} -:root[data-popup-action-bar-location=top] .content-sidebar-inner, -:root[data-popup-action-bar-location=bottom] .content-sidebar-inner { - flex-flow: row nowrap; - width: auto; - height: var(--sidebar-button-height); -} -:root[data-popup-action-bar-location=top] .content-sidebar-top-pre, -:root[data-popup-action-bar-location=bottom] .content-sidebar-top-pre { - flex-flow: row nowrap; - order: 1; -} -:root[data-popup-action-bar-location=top] .content-sidebar-top, -:root[data-popup-action-bar-location=bottom] .content-sidebar-top { - flex-flow: row nowrap; -} -:root[data-popup-action-bar-location=top] .content-sidebar-bottom, -:root[data-popup-action-bar-location=bottom] .content-sidebar-bottom { - flex-flow: row nowrap; -} - -:root[data-popup-action-bar-location=right] #profile-name, -:root[data-popup-action-bar-location=left] #profile-name { - writing-mode: vertical-rl; - text-orientation: vertical; - letter-spacing: 2px; -} - - -/* Sidebar buttons */ -button.sidebar-button { - --button-content-color: var(--sidebar-button-icon-color); - --button-border-color: transparent; - --button-background-color: var(--sidebar-button-background-color); - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: var(--sidebar-button-background-color-hover); - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: var(--sidebar-button-background-color-active); - --button-active-shadow: none; - - --button-disabled-content-color: var(--sidebar-button-disabled-icon-color); - --button-disabled-border-color: transparent; - --button-disabled-background-color: var(--sidebar-button-background-color); - --button-disabled-shadow: none; - - width: 100%; - height: var(--sidebar-button-height); - margin: 0; - padding: 0; - border-style: none; - border-width: 0; - cursor: pointer; - display: block; - transition: background-color 0.125s ease-in-out; - outline: none; - font-size: inherit; - border-radius: 0; -} -:root[data-popup-action-bar-location=top] button.sidebar-button, -:root[data-popup-action-bar-location=bottom] button.sidebar-button { - width: var(--sidebar-width); - height: 100%; -} -button.sidebar-button.danger { - --button-content-color: var(--sidebar-button-icon-color); - --button-border-color: transparent; - --button-background-color: var(--sidebar-button-danger-background-color); - --button-shadow: none; - - --button-hover-content-color: var(--sidebar-button-danger-icon-color); - --button-hover-border-color: transparent; - --button-hover-background-color: var(--sidebar-button-danger-background-color-hover); - --button-hover-shadow: none; - - --button-active-content-color: var(--sidebar-button-danger-icon-color); - --button-active-border-color: transparent; - --button-active-background-color: var(--sidebar-button-danger-background-color-active); - --button-active-shadow: none; -} -.sidebar-button-icon { - --icon-size: var(--sidebar-button-icon-size) var(--sidebar-button-icon-size); - - display: block; - width: 100%; - height: 100%; - background-color: var(--button-current-content-color); - transition: background-color 0.125s ease-in-out; -} -button.sidebar-button.sidebar-button-highlight { - --button-content-color: var(--accent-color); - --button-hover-content-color: var(--accent-color); - --button-active-content-color: var(--accent-color); -} - - -/* Search page */ -.search-header-wrapper { - background-color: var(--background-color); - width: 100%; - display: flex; - justify-content: center; -} -.sticky-header { - position: sticky; - top: 0px; - z-index: 1000; -} -#sticky-search-header { - padding-top: 10px; -} -.sticky-header #query-parser-content { - max-height: calc(var(--query-parser-font-size) * 2); -} -.search-header { - width: var(--content-width); - display: flex; - flex-flow: column nowrap; - max-height: 100vh; - padding: var(--main-content-vertical-padding) var(--main-content-horizontal-padding); -} -#query-parser-container { - overflow-y: auto; - padding-left: var(--query-horizontal-padding); - padding-right: var(--query-horizontal-padding); - padding-bottom: 0.25em; - border-bottom: var(--headword-thin-border-size) solid var(--light-border-color); -} -#query-parser-content { - margin-top: 0.5em; - font-size: var(--query-parser-font-size); - white-space: pre-wrap; -} -#query-parser-content[data-term-spacing=true] .query-parser-term { - margin-right: 0.2em; -} - - -/* Action buttons */ -.actions { - display: flex; - flex-flow: row nowrap; - float: right; - margin: -0.25em; - position: relative; - z-index: 1; -} -.actions::after { - clear: both; - content: ''; - display: block; -} -.note-actions-container { - display: flex; - flex-flow: row nowrap; - align-items: start; -} -.action-button-container { - display: flex; - flex-direction: column; - position: relative; -} - -.note-actions-container .action-button-container::after { - content: ''; - position: absolute; - left: calc(50% - 0.5px); - top: calc((var(--action-button-size) + var(--action-button-padding) * 2) * 0.5); - bottom: calc((var(--action-button-size) + var(--action-button-padding) * 2) * 0.5); - width: 1px; - background: var(--accent-color); - pointer-events: none; - opacity: 0.25; - z-index: -1; -} - -.note-actions-container .action-button-container:first-child { - flex-direction: row-reverse; -} -.note-actions-container .action-button-container:first-child::after { - top: calc(50% - 0.5px); - left: calc((var(--action-button-size) + var(--action-button-padding) * 2) * 0.5); - right: calc((var(--action-button-size) + var(--action-button-padding) * 2) * 0.5); - bottom: auto; - height: 1px; - width: auto; -} - -.note-actions-container .action-button-container:only-child::after { - display: none; -} - -button.action-button { - cursor: pointer; - display: block; - opacity: 1; - border: 0; - margin: 0; - padding: var(--action-button-padding); - background: transparent; - font-size: inherit; - box-shadow: none; - position: relative; - z-index: 1; - transition: - opacity var(--animation-duration) linear, - visibility 0s linear 0s, - filter var(--animation-duration) linear, - -webkit-filter var(--animation-duration) linear, - background-color var(--animation-duration) linear; -} -button.action-button[hidden] { - display: block; - visibility: hidden; - opacity: 0; - transition: - opacity var(--animation-duration) linear, - visibility 0s linear var(--animation-duration), - filter var(--animation-duration) linear, - -webkit-filter var(--animation-duration) linear, - background-color var(--animation-duration) linear; -} -button.action-button-collapsible[hidden] { - display: none; -} -button.action-button:disabled { - pointer-events: auto; - cursor: default; - -webkit-filter: grayscale(100%); - filter: grayscale(100%); - background-color: transparent; -} -button.action-button:disabled:not([hidden]) { - opacity: 0.25; -} -button.action-button:hover, -button.action-button:focus { - background-color: transparent; - box-shadow: none; -} -button.action-button:focus-visible { - background-color: var(--action-button-hover-color); - box-shadow: none; -} -button.action-button:active:not(:disabled) { - background-color: var(--action-button-active-color); - box-shadow: none; -} - -.icon[data-icon=view-note] { background-image: url('/images/view-note.svg'); } -.icon[data-icon=view-note-learning] { background-image: url('/images/view-note-learning.svg'); } -.icon[data-icon=view-note-review] { background-image: url('/images/view-note-review.svg'); } -.icon[data-icon=view-note-suspended] { background-image: url('/images/view-note-suspended.svg'); } -.icon[data-icon=view-note-buried] { background-image: url('/images/view-note-buried.svg'); } -.icon[data-icon=big-circle] { background-image: url('/images/big-circle.svg'); } -.icon[data-icon=small-circle] { background-image: url('/images/small-circle.svg'); } -.icon[data-icon=big-square] { background-image: url('/images/big-square.svg'); } -.icon[data-icon=big-diamond] { background-image: url('/images/big-diamond.svg'); } -.icon[data-icon=overwrite-big-circle] { background-image: url('/images/overwrite-big-circle.svg'); } -.icon[data-icon=overwrite-small-circle] { background-image: url('/images/overwrite-small-circle.svg'); } -.icon[data-icon=overwrite-big-square] { background-image: url('/images/overwrite-big-square.svg'); } -.icon[data-icon=overwrite-big-diamond] { background-image: url('/images/overwrite-big-diamond.svg'); } -.icon[data-icon=add-duplicate-big-circle] { background-image: url('/images/add-duplicate-big-circle.svg'); } -.icon[data-icon=add-duplicate-small-circle] { background-image: url('/images/add-duplicate-small-circle.svg'); } -.icon[data-icon=add-duplicate-big-square] { background-image: url('/images/add-duplicate-big-square.svg'); } -.icon[data-icon=add-duplicate-big-diamond] { background-image: url('/images/add-duplicate-big-diamond.svg'); } -.icon[data-icon=play-audio] { background-image: url('/images/play-audio.svg'); } -.icon[data-icon=source-term] { background-image: url('/images/source-term.svg'); } -.icon[data-icon=entry-current] { background-image: url('/images/entry-current.svg'); } -.action-icon { - display: block; - width: var(--action-button-size); - height: var(--action-button-size); -} -.action-icon:not(.color-icon) { - background-color: var(--text-color); -} -:root[data-result-output-mode=merge] .entry[data-type=term] .actions>button.action-button[data-action=play-audio] { - display: none; -} -.action-button-badge { - pointer-events: none; - position: absolute; - display: block; - right: 0; - top: 0; - width: calc(8em / var(--font-size-no-units)); - height: calc(8em / var(--font-size-no-units)); -} -.action-button-badge[data-icon=cross] { - background-color: var(--danger-color); -} -.action-button-badge[data-icon=plus-thick] { - background-color: var(--success-color); -} - - -/* Tags */ -.tag { - --tag-color: var(--tag-default-background-color); - - display: inline-flex; - flex-flow: row nowrap; - align-items: stretch; - border: none; - border-right: none; - font-size: 1em; - min-height: var(--tag-height); - margin: calc(1em / var(--font-size-no-units)) 0.375em calc(1em / var(--font-size-no-units)) 0; -} -.tag-label { - display: flex; - flex-flow: row nowrap; - align-items: center; - background-color: var(--tag-color); - border-radius: var(--tag-border-radius); - padding: calc(2.5em / var(--font-size-no-units)) 0.375em calc(2.5em / var(--font-size-no-units)) 0.375em; - color: var(--tag-text-color); - cursor: pointer; -} -.tag-label-content { - display: block; - font-size: var(--tag-font-size); - font-weight: var(--tag-font-weight); -} -.tag-body { - display: flex; - flex-flow: row nowrap; - align-items: center; - position: relative; - padding: 0 0.375em 0 0.375em; - border-radius: var(--tag-border-radius); - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.tag-body::before { - content: ''; - display: block; - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - border-radius: var(--tag-border-radius); - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border: var(--tag-border-size) var(--tag-border-style) var(--tag-color); - border-left: none; - pointer-events: none; -} -.tag-body-content { - display: block; - position: relative; -} -.tag:not(.tag-has-body)>.tag-body { - display: none; -} -.tag.tag-has-body>.tag-label { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.tag[data-category=name] { - --tag-color: var(--tag-name-background-color); -} -.tag[data-category=expression] { - --tag-color: var(--tag-expression-background-color); -} -.tag[data-category=popular] { - --tag-color: var(--tag-popular-background-color); -} -.tag[data-category=frequent] { - --tag-color: var(--tag-frequent-background-color); -} -.tag[data-category=archaism] { - --tag-color: var(--tag-archaism-background-color); -} -.tag[data-category=dictionary] { - --tag-color: var(--tag-dictionary-background-color); -} -.tag[data-category=frequency] { - --tag-color: var(--tag-frequency-background-color); -} -.tag[data-category=partOfSpeech] { - --tag-color: var(--tag-part-of-speech-background-color); -} -.tag[data-category=search] { - --tag-color: var(--tag-search-background-color); -} -.tag[data-category=pronunciation-dictionary] { - --tag-color: var(--tag-pronunciation-dictionary-background-color); -} - - -/* Entries */ -.entry { - padding: var(--entry-vertical-padding) var(--entry-horizontal-padding); - position: relative; - content-visibility: auto; - contain-intrinsic-height: auto 500px; -} -.entry+.entry { - border-top: var(--thin-border-size) solid var(--light-border-color); -} -.entry-body { - clear: both; -} -.entry[data-definition-count='0'] .entry-body-section[data-section-type=definitions], -.entry[data-frequency-count='0'] .entry-body-section[data-section-type=frequencies], -.entry[data-pronunciation-count='0'] .entry-body-section[data-section-type=pronunciations] { - display: none; -} - - -/* Inflections */ -.inflection-rule-chains { - padding-inline-start: 0; - list-style-type: none; -} -.inflection-rule-chain { - color: var(--reason-text-color); -} -.inflection-rule-chain:empty { - display: none; -} -.inflection-rule-chain>.inflection+.inflection-separator+.inflection::before { - content: var(--inflection-separator); - padding: 0 0.25em; -} -.inflection-source-icon { - display: inline-block; - white-space: nowrap; - text-align: center; - width: 1.4em; - margin-right: 0.2em; -} -.inflection-source-icon[data-inflection-source='dictionary']::after { - content: '📖'; -} -.inflection-source-icon[data-inflection-source='algorithm']::after { - content: '🧩'; -} -.inflection-source-icon[data-inflection-source='both'] { - width: 2.8em; -} -.inflection-source-icon[data-inflection-source='both']::after { - content: '🧩📖'; -} -.inflection[title] { - cursor: pointer; -} - - -/* Headwords */ -.headword-list { - display: inline; - margin-right: var(--headword-list-end-space); -} -.headword { - --headword-current-text-color: var(--headword-text-color); - --headword-current-reading-text-color: var(--headword-reading-text-color); - --headword-current-furigana-text-color: var(--headword-furigana-text-color); - --headword-current-kanji-text-color: var(--headword-kanji-text-color); - --headword-current-kanji-border-color: var(--headword-kanji-border-color); - - display: inline-block; -} -:root[data-result-output-mode=merge] .headword[data-frequency=popular] { - --headword-current-text-color: var(--headword-text-color-popular); - --headword-current-reading-text-color: var(--headword-reading-text-color-popular); - --headword-current-furigana-text-color: var(--headword-furigana-text-color-popular); - --headword-current-kanji-text-color: var(--headword-kanji-text-color-popular); - --headword-current-kanji-border-color: var(--headword-kanji-border-color-popular); -} -:root[data-result-output-mode=merge] .headword[data-frequency=rare] { - --headword-current-text-color: var(--headword-text-color-rare); - --headword-current-reading-text-color: var(--headword-reading-text-color-rare); - --headword-current-furigana-text-color: var(--headword-furigana-text-color-rare); - --headword-current-kanji-text-color: var(--headword-kanji-text-color-rare); - --headword-current-kanji-border-color: var(--headword-kanji-border-color-rare); -} -.headword-details { - display: inline; -} -.headword-list-details { - display: inline; -} -.headword-list-tag-list { - display: inline; -} -.headword-text-container { - display: inline-block; - margin-left: calc(-1 * var(--headword-reading-space)); -} -.headword-term-outer { - display: inline-block; - position: relative; - margin-left: var(--headword-reading-space); -} -.headword-reading-outer { - display: none; - position: relative; - margin-left: var(--headword-reading-space); -} -.headword-term { - color: var(--headword-current-text-color); - font-size: var(--headword-font-size); -} -.headword-reading { - color: var(--headword-current-reading-text-color); - font-size: var(--headword-reading-font-size); -} -.headword-list>.headword:not(:last-of-type)>.headword-text-container>.headword-term-outer::after { - content: var(--headword-separator); - font-size: var(--headword-font-size); -} -.headword-list>.headword:not(:last-of-type)>.headword-text-container>.headword-reading-outer::after { - content: var(--headword-separator); - font-size: var(--headword-reading-font-size); -} -.headword-term>ruby>rt { - color: var(--headword-current-furigana-text-color); -} -.headword-kanji-link { - text-decoration: underline dashed var(--headword-current-kanji-border-color) var(--headword-thin-border-size); - text-underline-offset: calc(var(--headword-font-size) / 15); - color: var(--headword-current-kanji-text-color); - cursor: pointer; -} -:root[data-result-output-mode=merge] .headword-list-details { - display: block; -} -:root[data-term-display-mode=ruby-and-reading] .headword-term-outer::after, -:root[data-term-display-mode=term-and-reading] .headword-term-outer::after { - display: none; -} -:root:not([data-language=ja]) { - --headword-separator: ', '; -} -:root[data-term-display-mode=ruby-and-reading] .headword-reading-outer, -:root[data-term-display-mode=term-and-reading] .headword-reading-outer { - display: inline-block; -} -:root[data-term-display-mode=ruby-and-reading] .headword[data-reading-is-same=true] .headword-term-outer::after, -:root[data-term-display-mode=term-and-reading] .headword[data-reading-is-same=true] .headword-term-outer::after { - display: inline-block; -} -:root[data-term-display-mode=ruby-and-reading] .headword[data-reading-is-same=true] .headword-reading-outer, -:root[data-term-display-mode=term-and-reading] .headword[data-reading-is-same=true] .headword-reading-outer { - display: none; -} -:root[data-term-display-mode=term-and-reading] .headword-term>ruby>rt, -:root[data-term-display-mode=term-only] .headword-term>ruby>rt { - display: none; -} - - -/* Entry indicator */ -.entry-current-indicator { - display: block; - position: absolute; - left: calc(-1 * var(--main-content-horizontal-padding)); - top: 0; - bottom: 0; - width: 0; - background-color: var(--entry-current-indicator-color); - visibility: hidden; - transition: - width var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear var(--entry-current-indicator-transition-duration); -} -.entry.entry-current .entry-current-indicator { - width: var(--entry-current-indicator-width); - visibility: visible; - transition: - width var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear 0s; -} -:root[data-popup-current-indicator-mode=bar-right] .entry-current-indicator, -:root[data-popup-current-indicator-mode=dot-right] .entry-current-indicator { - left: auto; - right: 0; -} -.entry-current-indicator-inner { - display: none; - pointer-events: auto; - width: 100%; - height: 0; - top: 0; - background-color: var(--entry-current-indicator-color); - transition: none; -} -.entry.entry-current .entry-current-indicator-inner { - height: var(--entry-current-indicator-width); - transition: height var(--entry-current-indicator-transition-duration) linear; -} -:root[data-popup-current-indicator-mode=dot-left] .entry-current-indicator, -:root[data-popup-current-indicator-mode=dot-right] .entry-current-indicator { - background-color: transparent; -} -:root[data-popup-current-indicator-mode=dot-left] .entry-current-indicator-inner, -:root[data-popup-current-indicator-mode=dot-right] .entry-current-indicator-inner { - display: block; - position: sticky; - transition: height var(--entry-current-indicator-transition-duration) linear; -} -:root[data-popup-current-indicator-mode=none] .entry-current-indicator, -:root[data-popup-current-indicator-mode=asterisk] .entry-current-indicator, -:root[data-popup-current-indicator-mode=triangle] .entry-current-indicator { - display: none; - transition: none; -} - - -/* Triangle entry indicator */ -.headword-current-indicator { - pointer-events: none; - position: absolute; - left: calc(-1 * var(--main-content-horizontal-padding)); - top: 0; - bottom: 0; - opacity: 0; - visibility: hidden; - transition: - opacity var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear var(--entry-current-indicator-transition-duration); -} -.headword-term .headword-current-indicator { - font-size: calc(1em / var(--headword-font-size-no-units)); -} -.entry.entry-current .headword-current-indicator { - opacity: 1; - visibility: visible; - transition: - opacity var(--entry-current-indicator-transition-duration) linear, - visibility 0s linear 0s; -} -.headword-current-indicator::after { - content: ''; - display: block; - position: absolute; - width: var(--entry-current-indicator-triangle-size); - height: calc(2 * var(--entry-current-indicator-triangle-size)); - left: calc(-1 * var(--entry-horizontal-padding)); - top: calc(50% - var(--entry-current-indicator-triangle-size)); - background-color: var(--entry-current-indicator-color); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: contain; - mask-image: url(/images/material-right-arrow.svg); - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: contain; - -webkit-mask-image: url(/images/material-right-arrow.svg); -} -.headword-list>.headword:not(:first-of-type) .headword-current-indicator, -:root:not([data-popup-current-indicator-mode=triangle]) .headword-current-indicator { - display: none; - transition: none; -} - - -/* Old entry indicator */ -.entry-current-indicator-icon { - display: block; - padding: var(--action-button-padding); -} -.entry-current-indicator-icon[hidden], -.entry:not(.entry-current) .entry-current-indicator-icon, -:root:not([data-popup-current-indicator-mode=asterisk]) .entry-current-indicator-icon { - display: none; -} -.entry-current-indicator-icon>.icon { - width: var(--action-button-size); - height: var(--action-button-size); - display: block; - background-image: url('/images/entry-current.svg'); -} - - -/* Merged term styles */ -:root[data-result-output-mode=merge] .headword-list .headword-details { - display: inline-block; - position: relative; - width: 0; - height: 0; - visibility: hidden; - z-index: 1; -} -:root[data-result-output-mode=merge] .headword-list>.headword:not(:last-of-type) .headword-details { - left: calc(-1 * var(--headword-font-size)); -} -:root[data-result-output-mode=merge] .headword:hover .headword-details { - visibility: visible; -} -:root[data-result-output-mode=merge] .headword-list .headword-details>.action-button[data-action=play-audio] { - position: absolute; - left: 0; - bottom: 0.5em; -} -:root:not([data-result-output-mode=merge]) .headword-list .headword-details>.action-button[data-action=play-audio] { - display: none; -} - - -/* Definitions */ -.definition-list { - margin: 0; - padding: 0 0 0 var(--list-padding1); - list-style-type: decimal; -} -.definition-list[data-count='0'], -.definition-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.gloss-list { - margin: 0; - padding: 0 0 0 var(--list-padding2); - list-style-type: circle; -} -.gloss-list[data-count='0'], -.gloss-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.definition-item::marker, -.gloss-item::marker { - color: var(--text-color-light3); -} -.gloss-content { - display: block; - white-space: pre-line; -} -.definition-disambiguation-list { - color: var(--text-color-light3); - padding-right: var(--disambiguation-space); -} -.definition-disambiguation-list[data-count='0'] { - display: none; -} -.definition-disambiguation+.definition-disambiguation::before { - content: var(--disambiguation-separator); -} -.gloss-separator, -.inflection-separator { - display: inline; - font-size: 0; - opacity: 0; - white-space: pre-wrap; -} -.gloss-separator { - display: none; -} -.definition-item { - display: list-item; - position: relative; -} -.definition-item-inner { - display: flex; - flex-flow: row nowrap; -} -.definition-item-content { - width: 100%; - flex: 1 1 auto; - background-color: transparent; - transition: background-color var(--animation-duration) ease-in-out; -} - -/* Collapse & Expand */ -button.expansion-button { - --button-content-color: var(--text-color-light4); - --button-border-color: transparent; - --button-background-color: transparent; - - --button-hover-content-color: var(--text-color-light1); - --button-hover-border-color: var(--accent-color-lighter); - --button-hover-background-color: var(--accent-color-lighter); - - --button-active-content-color: var(--text-color); - --button-active-border-color: var(--accent-color-light); - --button-active-background-color: var(--accent-color-light); - - --button-padding-vertical: 0; - --button-padding-horizontal: 0.125em; - - flex: 0 0 auto; - order: 1; - border-radius: 0; - border: 0; -} - -button.expansion-button:hover+.definition-item-content, -button.expansion-button:active+.definition-item-content, -button.expansion-button:focus+.definition-item-content, -button.expansion-button:hover+.kanji-glyph-table, -button.expansion-button:active+.kanji-glyph-table, -button.expansion-button:focus+.kanji-glyph-table { - background-color: var(--accent-color-transparent25); -} -button.expansion-button:focus:not(:focus-visible)+.definition-item-content, -button.expansion-button:focus:not(:focus-visible)+.kanji-glyph-table { - background-color: transparent; -} -button.expansion-button:focus:hover+.definition-item-content, -button.expansion-button:focus:active+.definition-item-content, -button.expansion-button:focus:focus-visible+.definition-item-content, -button.expansion-button:focus:hover+.kanji-glyph-table, -button.expansion-button:focus:active+.kanji-glyph-table, -button.expansion-button:focus:focus-visible+.kanji-glyph-table { - background-color: var(--accent-color-transparent25); -} -.definition-item-inner.collapsible.collapsed { - max-height: calc(1em * var(--collapsible-definition-line-count) * var(--line-height)); - overflow: hidden; -} -.definition-item-inner.collapse-test { - max-height: calc(1em * var(--collapsible-definition-line-count) * var(--line-height) + var(--collapsible-definition-test-offset)); - overflow: hidden; -} -.kanji-glyph-data.collapsible.collapsed { - max-height: calc(1em * var(--collapsible-kanji-glyph-data-line-count) * var(--line-height) + var(--kanji-glyph-table-header-height)); - overflow: hidden; -} -.kanji-glyph-data.collapse-test { - max-height: calc(1em * var(--collapsible-kanji-glyph-data-line-count) * var(--line-height) + var(--kanji-glyph-table-header-height) + var(--collpasible-kanji-glyph-data-test-offset)); - overflow: hidden; -} -:not(.collapsible)>button.expansion-button { - display: none; -} -.expansion-button-icon { - transform: rotate(0deg); - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - background-color: var(--button-current-content-color); - transition: background-color var(--animation-duration) ease-in-out; -} -.collapsible:not(.collapsed)>button.expansion-button>.expansion-button-icon { - transform: rotate(180deg); -} - -/* Frequencies */ -.frequency-group-item { - display: inline; -} -.frequency-item { - display: inline; -} -.frequency-disambiguation { - color: var(--text-color-light3); - padding-right: var(--disambiguation-space); -} -.frequency-disambiguation-separator::before { - content: var(--disambiguation-reading-separator); -} -.frequency-disambiguation-reading { - display: inline; - font-size: 1em; -} -.frequency-body::after { - white-space: pre-wrap; - display: inline; - color: var(--text-color-light3); -} -.entry[data-unique-term-count='1'] .frequency-item[data-has-reading=false] .frequency-disambiguation, -.entry[data-unique-reading-count='1'][data-unique-term-count='1'] .frequency-disambiguation, -.frequency-item[data-reading-is-same=true] .frequency-disambiguation-separator, -.frequency-item[data-reading-is-same=true] .frequency-disambiguation-reading, -.frequency-item[data-has-reading=false] .frequency-disambiguation-separator, -.frequency-item[data-has-reading=false] .frequency-disambiguation-reading, -.entry[data-unique-term-count='1'] .frequency-disambiguation-separator, -.entry[data-unique-term-count='1'] .frequency-disambiguation-term, -.entry[data-unique-reading-count='1'] .frequency-disambiguation-separator, -.entry[data-unique-reading-count='1'] .frequency-disambiguation-reading { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag { - margin: 0; - display: inline; - min-height: auto; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag>.tag-label, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag>.tag-label { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag>.tag-body, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag>.tag-body { - display: inline; - padding: 0; -} -:root[data-frequency-display-mode=tags] .frequency-group-tag>.tag-body::before, -:root[data-frequency-display-mode=split-tags] .frequency-group-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-list, -:root[data-frequency-display-mode=split-tags] .frequency-list { - display: inline; -} -:root[data-frequency-display-mode=list] .frequency-tag, -:root[data-frequency-display-mode=inline-list] .frequency-tag, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag { - margin: 0; - display: inline; - min-height: auto; -} -:root[data-frequency-display-mode=list] .frequency-tag>.tag-label, -:root[data-frequency-display-mode=inline-list] .frequency-tag>.tag-label, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag>.tag-label, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag>.tag-label { - display: none; -} -:root[data-frequency-display-mode=list] .frequency-tag>.tag-body, -:root[data-frequency-display-mode=inline-list] .frequency-tag>.tag-body, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag>.tag-body, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag>.tag-body { - display: inline; - padding: 0; -} -:root[data-frequency-display-mode=list] .frequency-tag>.tag-body::before, -:root[data-frequency-display-mode=inline-list] .frequency-tag>.tag-body::before, -:root[data-frequency-display-mode=tags-grouped] .frequency-tag>.tag-body::before, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=list] .frequency-body, -:root[data-frequency-display-mode=inline-list] .frequency-body, -:root[data-frequency-display-mode=tags-grouped] .frequency-body, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-body { - display: inline-block; -} -:root[data-frequency-display-mode=inline-list] .frequency-item:not(:last-child)>.frequency-tag>.tag-body>.frequency-body::after, -:root[data-frequency-display-mode=tags-grouped] .frequency-item:not(:last-child)>.frequency-tag>.tag-body>.frequency-body::after, -:root[data-frequency-display-mode=split-tags-grouped] .frequency-item:not(:last-child)>.frequency-tag>.tag-body>.frequency-body::after { - content: var(--compact-list-separator); -} -:root[data-frequency-display-mode=list] .frequency-group-tag>.tag-body::before, -:root[data-frequency-display-mode=inline-list] .frequency-group-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=list] .frequency-group-tag.tag.tag-has-body>.tag-label, -:root[data-frequency-display-mode=inline-list] .frequency-group-tag.tag.tag-has-body>.tag-label { - border-radius: var(--tag-border-radius); -} -:root[data-frequency-display-mode=tags] .frequency-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=tags] .frequency-tag>.tag-body { - background-color: var(--tag-color); - padding-left: 0; -} -:root[data-frequency-display-mode=tags] .frequency-body { - font-size: var(--tag-font-size); - font-weight: var(--tag-font-weight); - color: var(--tag-text-color); -} -:root[data-frequency-display-mode=tags] .frequency-tag>.tag-label>.tag-label-content::after { - content: ':'; -} -:root[data-frequency-display-mode=tags-grouped] .frequency-group-tag>.tag-body::before { - display: none; -} -:root[data-frequency-display-mode=tags-grouped] .frequency-group-tag>.tag-body { - background-color: var(--tag-color); - padding-left: 0; -} -:root[data-frequency-display-mode=tags-grouped] .frequency-list { - font-size: var(--tag-font-size); - font-weight: var(--tag-font-weight); - color: var(--tag-text-color); -} -:root[data-frequency-display-mode=tags-grouped] .frequency-group-tag>.tag-label>.tag-label-content::after { - content: ':'; -} -:root[data-frequency-display-mode=tags] .frequency-disambiguation, -:root[data-frequency-display-mode=tags-grouped] .frequency-disambiguation, -:root[data-frequency-display-mode=tags] .frequency-body::after, -:root[data-frequency-display-mode=tags-grouped] .frequency-body::after { - color: inherit; - font-weight: normal; - opacity: 0.75; -} -:root[data-frequency-display-mode=list] .frequency-group-list { - list-style-type: decimal; - padding: 0 0 0 var(--list-padding1); -} -:root[data-frequency-display-mode=list] .frequency-group-item { - display: list-item; -} -:root[data-frequency-display-mode=list] .frequency-group-item::marker { - color: var(--text-color-light3); -} -:root[data-frequency-display-mode=list] .frequency-group-tag { - display: block; - min-height: auto; -} -:root[data-frequency-display-mode=list] .frequency-group-tag>.tag-label { - display: inline-flex; -} -:root[data-frequency-display-mode=list] .frequency-list { - list-style-type: circle; - padding: 0 0 0 var(--list-padding2); -} -:root[data-frequency-display-mode=list] .frequency-item { - display: list-item; -} -:root[data-frequency-display-mode=list] .frequency-item::marker { - color: var(--text-color-light3); -} -:root[data-frequency-display-mode=list] .frequency-group-list[data-count='1'] { - list-style-type: none; - padding-left: 0; -} -:root[data-frequency-display-mode=list] .frequency-group-list[data-count='1']>.frequency-group-item { - display: inline; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1']>.frequency-group-tag>.tag-body { - display: inline-flex; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1']>.frequency-group-tag>.tag-body>.frequency-body { - display: inline; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1'] .frequency-list { - list-style-type: none; - padding-left: 0; -} -:root[data-frequency-display-mode=list] .frequency-group-item[data-count='1'] .frequency-item { - display: inline; -} - - -/* Pitch accent styles */ -.pronunciation-group-list { - margin: 0; - padding: 0 0 0 var(--list-padding1); - list-style-type: decimal; -} -.pronunciation-group-list[data-count='0'], -.pronunciation-group-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.pronunciation-list { - margin: 0; - padding: 0 0 0 var(--list-padding2); - list-style-type: circle; - display: block; -} -.pronunciation-list[data-count='0'], -.pronunciation-list[data-count='1'] { - padding-left: 0; - list-style-type: none; - display: inline; -} -.pronunciation-group::marker, -.pronunciation::marker { - color: var(--text-color-light3); -} -.pronunciation { - display: list-item; - line-height: 1.5; -} -.pronunciation-list[data-count='0'] .pronunciation, -.pronunciation-list[data-count='1'] .pronunciation { - display: inline; -} -.pronunciation-group-tag-list { - margin-right: 0.375em; -} -.pronunciation-disambiguation-list { - color: var(--text-color-light3); - padding-right: var(--disambiguation-space); -} -.pronunciation-disambiguation+.pronunciation-disambiguation::before { - content: var(--disambiguation-separator); -} -.pronunciation-disambiguation-list[data-count='0'] { - display: none; -} -.pronunciation-tag-list:not([data-count='0']) { - margin-right: 0.375em; -} -.pronunciation-downstep-notation-container { - margin-left: 0.25em; -} -.pronunciation-graph-container { - margin-left: 0.25em; -} - - -/* Kanji */ -.kanji-glyph-container { - display: block; - position: relative; -} -.kanji-glyph { - font-family: sans-serif; - font-size: 8.5em; - line-height: 1; - padding: 0.01em; - vertical-align: top; -} -.kanji-glyph-data { - margin-top: 0.75em; - display: flex; - flex-flow: row nowrap; -} -.kanji-glyph-table { - border-spacing: 0; - border-collapse: collapse; -} -.kanji-glyph-table>tbody>tr>* { - border-top: var(--thin-border-size) solid var(--medium-border-color); - text-align: left; - vertical-align: top; - padding: var(--kanji-glyph-table-cell-padding); - margin: 0; -} -.kanji-info-table { - width: 100%; -} -.kanji-info-table>tbody>tr>th, -.kanji-info-table>tbody>tr>td { - text-align: left; - vertical-align: top; - padding: 0; - margin: 0; -} -.kanji-info-table>tbody>tr>td { - text-align: right; -} -.kanji-glyph-table dl { - margin-top: 0; - margin-bottom: 1.4em; -} -.kanji-glyph-table dd { - margin-left: 0; -} -.kanji-gloss-list { - margin: 0; - padding: 0 0 0 var(--list-padding1); - list-style-type: decimal; -} -.kanji-gloss-list[data-count='0'], -.kanji-gloss-list[data-count='1'] { - padding-left: 0; - list-style-type: none; -} -.kanji-gloss-item::marker { - color: var(--text-color-light3); -} -.kanji-gloss-content { - white-space: pre-line; -} -.kanji-tag-list { - position: relative; -} -.entry[data-type=kanji] .entry-body-section[data-section-type=frequencies] { - position: relative; -} - - -/* Progress bar */ -@keyframes progress-bar-indeterminant1a { - 0% { left: 0; } - 25% { left: 0; } - 75% { left: 100%; } - 100% { left: 100%; } -} -@keyframes progress-bar-indeterminant1b { - 0% { right: 100%; } - 50% { right: 0; } - 100% { right: 0; } -} -@keyframes progress-bar-indeterminant2a { - 0% { left: 0; } - 25% { left: 0; } - 100% { left: 100%; } -} -@keyframes progress-bar-indeterminant2b { - 0% { right: 100%; } - 75% { right: 0; } - 100% { right: 0; } -} -.progress-bar-indeterminant { - display: block; - width: 100%; - height: 0; - background-color: var(--progress-bar-indicator-color); - position: relative; - transition: - height var(--progress-bar-active-transition-duration) linear var(--progress-bar-active-transition-duration), - background-color var(--progress-bar-active-transition-duration) linear; -} -.progress-bar-indeterminant[data-active=true] { - height: var(--progress-bar-height); - background-color: var(--progress-bar-track-color); - transition: - height var(--progress-bar-active-transition-duration) linear var(--progress-bar-active-transition-start-delay), - background-color 0s linear; -} -.progress-bar-indeterminant[hidden]:not([data-active=true]) { - display: none; -} -.progress-bar-indeterminant::before, -.progress-bar-indeterminant::after { - content: ''; - display: block; - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 100%; - background-color: var(--progress-bar-indicator-color); - animation: none; -} -.progress-bar-indeterminant:not([hidden])::before { - animation: - progress-bar-indeterminant1a var(--progress-bar-animation-duration) infinite ease-in-out var(--progress-bar-active-transition-start-delay), - progress-bar-indeterminant1b var(--progress-bar-animation-duration) infinite ease-in-out var(--progress-bar-active-transition-start-delay); -} -.progress-bar-indeterminant:not([hidden])::after { - animation: - progress-bar-indeterminant2a var(--progress-bar-animation-duration) infinite ease-in-out calc(var(--progress-bar-active-transition-start-delay) + 0.375 * var(--progress-bar-animation-duration)), - progress-bar-indeterminant2b var(--progress-bar-animation-duration) infinite ease-in-out calc(var(--progress-bar-active-transition-start-delay) + 0.375 * var(--progress-bar-animation-duration)); -} -.top-progress-bar-container { - position: sticky; - top: 0; - height: 0; - pointer-events: none; - z-index: 10; -} - - -/* Frame resizer */ -.frame-resizer-container { - position: fixed; - bottom: 0; - right: 0; - z-index: 100; - background: transparent; - pointer-events: none; - user-select: none; -} -.frame-resizer-sizer1 { - padding-top: 100%; - line-height: 0; -} -.frame-resizer-sizer2 { - display: inline-block; - overflow-x: hidden; - overflow-y: scroll; - vertical-align: bottom; -} -.frame-resizer-sizer2.frame-resizer-sizer2-with-min-size { - min-width: 1em; -} -.frame-resizer-svg { - display: block; - position: absolute; - bottom: 0; - right: 0; - width: 75%; - height: 75%; -} -.frame-resizer-handle { - fill: var(--text-color); - opacity: 0.125; - cursor: se-resize; - pointer-events: auto; - transition: - fill var(--animation-duration) linear, - opacity var(--animation-duration) linear; -} -.frame-resizer-handle:hover, -:root[data-is-resizing=true] .frame-resizer-handle { - fill: var(--accent-color); - opacity: 1; -} - - -/* Footer notifications */ -.footer-notification { - display: flex; - flex-flow: row nowrap; - align-items: flex-start; - pointer-events: auto; - border-radius: 0.25em; - background-color: var(--notification-background-color); - box-shadow: 0 0.125em 0.25em 0 var(--notification-shadow-color); - color: var(--notification-text-color); - margin: 0.5em; - padding: 0; - transition: opacity var(--animation-duration) ease-out; - position: relative; - overflow: auto; - max-height: calc(0.5em * 2 + var(--line-height) * 4 * 1em); -} -.footer-notification[hidden] { - display: flex; - opacity: 0; - transition: opacity var(--animation-duration) ease-in; -} -.footer-notification-body { - flex: 1 1 auto; - padding: 0.5em 0.75em; - white-space: pre-line; -} -.footer-notification-close-button-container { - align-self: stretch; - display: flex; - flex-flow: column nowrap; - align-items: center; - justify-content: center; - padding: 0.25em 0.75em 0.25em 0; - position: sticky; - top: 0; - right: 0; -} -button.footer-notification-close-button { - --button-content-color: var(--notification-text-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - --button-focus-visible-border-color: transparent; - --button-focus-visible-background-color: var(--notification-background-color-light); - --button-focus-visible-shadow: none; - - flex: 0 0 auto; - margin: -0.25em; - padding: 0.5em; - border-style: none; - border-width: 0; - cursor: pointer; - font-size: inherit; -} -.footer-notification-close-button-icon { - display: block; - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - background-color: var(--button-content-color); -} -.tag-details-disambiguation-list>.tag-details-disambiguation:not(:last-child)::after { - content: var(--disambiguation-separator); -} -.footer-notification a { - color: var(--notification-text-color); -} - - -/* Overlays */ -.overlay-panel-container { - pointer-events: none; - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - z-index: 6; -} -.overlay-panel { - pointer-events: auto; - background-color: var(--background-color); - display: block; - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: var(--content-width); - max-width: 100%; - box-sizing: border-box; - margin: 0 auto; - padding: var(--main-content-vertical-padding) var(--main-content-horizontal-padding); - overflow-y: scroll; - transform: none; - opacity: 1; - visibility: visible; - transition: - opacity var(--animation-duration2) ease-out, - visibility 0s linear, - transform var(--animation-duration2) ease-out; -} -.overlay-panel[hidden] { - transform: translate(var(--overlay-panel-translate-distance), 0); - opacity: 0; - visibility: hidden; - transition: - opacity var(--animation-duration2) ease-in, - visibility 0s linear var(--animation-duration2), - transform var(--animation-duration2) ease-in; -} -.overlay-panel[hidden]:not(.hidden-animating) { - display: none; -} -:root[data-popup-action-bar-location=left] .overlay-panel[hidden] { - transform: translate(calc(-1 * var(--overlay-panel-translate-distance)), 0); -} -:root[data-popup-action-bar-location=top] .overlay-panel[hidden] { - transform: translate(0, calc(-1 * var(--overlay-panel-translate-distance))); -} -:root[data-popup-action-bar-location=bottom] .overlay-panel[hidden] { - transform: translate(0, var(--overlay-panel-translate-distance)); -} -.overlay-panel-inner { - padding: var(--entry-vertical-padding) var(--entry-horizontal-padding); -} - - -/* Profile panel */ -.profile-list { - display: flex; - flex-flow: column nowrap; - align-items: stretch; -} -.profile-list-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - cursor: pointer; -} -.profile-list-item-selection { - flex: 0 0 auto; - text-align: center; - padding: 0.25em 0.5em 0.25em 0; -} -.profile-list-item-name { - flex: 1 1 auto; - padding: 0.25em 0; -} - - -/* Audio menu */ -.audio-button-popup-menu[data-show-icons=false] .popup-menu-item-audio-button .popup-menu-item-icon { - display: none; -} -.audio-button-popup-menu .popup-menu-item-icon[data-icon=checkmark] { - background-color: var(--success-color); -} -.audio-button-popup-menu .popup-menu-item-icon[data-icon=cross] { - background-color: var(--danger-color); -} -.audio-button-popup-menu .popup-menu-item-group[data-source-in-options=false][data-valid=null] .popup-menu-item { - color: var(--text-color-light1); -} -.popup-menu-item-audio-button .popup-menu-item-label { - padding-right: 2.5em; -} -.popup-menu-item-set-primary-audio-button { - flex-flow: row nowrap; - align-items: center; - justify-content: center; - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 2.5em; -} -.popup-menu-item-set-primary-audio-button:not([hidden]) { - display: flex; -} -.popup-menu-item-set-primary-audio-button .popup-menu-item-icon { - opacity: 0; - transition: opacity var(--animation-duration) linear; -} -.popup-menu-item-audio-button:hover~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon, -.popup-menu-item-audio-button:active~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon, -.popup-menu-item-audio-button:focus~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon { - opacity: 0.25; -} -.popup-menu-item-set-primary-audio-button:hover .popup-menu-item-icon, -.popup-menu-item-set-primary-audio-button:active .popup-menu-item-icon, -.popup-menu-item-set-primary-audio-button:focus .popup-menu-item-icon { - opacity: 0.375; -} -.popup-menu-item-set-primary-audio-button:focus:not(:focus-visible) .popup-menu-item-icon { - opacity: 0; -} -.popup-menu-item-audio-button:hover~.popup-menu-item-set-primary-audio-button:not(:focus-visible) .popup-menu-item-icon, -.popup-menu-item-audio-button:active~.popup-menu-item-set-primary-audio-button:not(:focus-visible) .popup-menu-item-icon, -.popup-menu-item-audio-button:focus~.popup-menu-item-set-primary-audio-button:not(:focus-visible) .popup-menu-item-icon { - opacity: 0.25; -} -.popup-menu-item-set-primary-audio-button:hover:not(:focus-visible) .popup-menu-item-icon, -.popup-menu-item-set-primary-audio-button:active:not(:focus-visible) .popup-menu-item-icon { - opacity: 0.375; -} -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button .popup-menu-item-icon, -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button:hover .popup-menu-item-icon, -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button:active .popup-menu-item-icon, -.popup-menu-item-group[data-is-primary-card-audio=true]>.popup-menu-item-audio-button~.popup-menu-item-set-primary-audio-button:focus .popup-menu-item-icon { - opacity: 1; -} - - -/* Anki errors */ -.anki-note-error-list { - margin: 0; - padding-left: 1.5em; - list-style: disc; -} -.anki-note-error-info { - color: var(--danger-color); -} -.anki-note-error-header { - font-weight: bold; -} - - -/* Conditional styles */ -:root:not([data-enable-search-tags=true]) .tag[data-category=search] { - display: none; -} -:root[data-compact-tags=true] .tag[data-redundant=true] { - display: none; -} - -:root:not([data-debug=true]) .action-button[data-action=menu] { - display: none; -} -:root[data-anki-enabled=false] .action-button[data-action=view-note], -:root[data-anki-enabled=false] .action-button[data-action=save-note] { - display: none; -} - -:root[data-average-frequency=true] .frequency-group-item:not([data-details='Average']) { - display: none; -} - -:root[data-average-frequency=false] .frequency-group-item[data-details='Average'] { - display: none; -} - -:root[data-audio-enabled=false] .action-button[data-action=play-audio] { - display: none; -} -:root[data-glossary-layout-mode^=compact] .definition-tag-list, -:root[data-glossary-layout-mode^=compact] .definition-disambiguation-list:not([data-count='0']) { - display: inline; -} -:root[data-glossary-layout-mode^=compact] .gloss-list { - display: inline; - list-style: none; - padding-left: 0; -} -:root[data-glossary-layout-mode^=compact] .gloss-item { - display: inline; -} -:root[data-glossary-layout-mode^=compact] .gloss-item:not(:first-child)::before { - white-space: pre-wrap; - content: var(--compact-list-separator); - display: inline; - color: var(--text-color-light3); -} -:root[data-glossary-layout-mode^=compact] .gloss-content { - display: inline; -} -:root[data-glossary-layout-mode^=compact] .gloss-separator { - display: inline; -} - -:root[data-show-pronunciation-text=true] .pronunciation-disambiguation-list[data-term-count='0'], -:root[data-show-pronunciation-text=true] .pronunciation-disambiguation[data-type=reading] { - display: none; -} -:root[data-show-pronunciation-text=false] .pronunciation[data-pronunciation-type=pitch-accent]>.pronunciation-representation-list>.pronunciation-text-container { - display: none; -} -:root[data-show-pronunciation-downstep-position=false] .pronunciation-downstep-notation-container { - display: none; -} -:root[data-show-pronunciation-graph=false] .pronunciation-graph-container { - display: none; -} - -:root[data-glossary-layout-mode^=compact][data-show-pronunciation-graph=false] .pronunciation-list:not([data-has-tags=true]) { - display: inline; - list-style: none; - padding-left: 0; -} -:root[data-glossary-layout-mode^=compact][data-show-pronunciation-graph=false] .pronunciation-list:not([data-has-tags=true]) .pronunciation { - display: inline; -} -:root[data-glossary-layout-mode^=compact][data-show-pronunciation-graph=false] .pronunciation-list:not([data-has-tags=true]) .pronunciation:not(:first-child)::before { - white-space: pre-wrap; - content: var(--compact-list-separator); - display: inline; - color: var(--text-color-light3); -} - -:root[data-popup-display-mode=full-width] .frame-resizer-container { - display: none; -} diff --git a/vendor/yomitan/css/material.css b/vendor/yomitan/css/material.css deleted file mode 100644 index e8717155..00000000 --- a/vendor/yomitan/css/material.css +++ /dev/null @@ -1,1344 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Variables */ -:root { - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - - --font-size-small-no-units: 12; - --font-size-small: calc(1em * var(--font-size-small-no-units) / var(--font-size-no-units)); - - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - - --animation-duration: 0.125s; - --animation-duration2: calc(var(--animation-duration) * 2); - - --checkbox-size: calc(16em / var(--font-size-no-units)); - --icon-button-size: calc(36em / var(--font-size-no-units)); - --radio-size: calc(20em / var(--font-size-no-units)); - --toggle-size: calc(16em / var(--font-size-no-units)); - - --input-font-size-no-units: 1; - --input-font-size: calc(1em * var(--input-font-size-no-units)); - --input-spacing: calc(10em / var(--font-size-no-units)); - --input-width: calc(100em / (var(--font-size-no-units) * var(--input-font-size-no-units)) - var(--input-spacing) / 2); - --input-width-large: calc(200em / (var(--font-size-no-units) * var(--input-font-size-no-units))); - --input-height: calc(32em / (var(--font-size-no-units) * var(--input-font-size-no-units))); - --input-border-radius: 0.25em; - --textarea-line-height: 1.25em; - --textarea-padding: 0.5em; - - --material-arrow-dimension1: calc(5em / var(--font-size-no-units)); - --material-arrow-dimension2: calc(10em / var(--font-size-no-units)); - - --button-border-radius: 0.3em; - --button-default-shadow-params: 0 0.0625em 0.125em 0; - - --thin-border-size: calc(1em / var(--font-size-no-units)); - - --menu-border-radius: 0.3em; - --menu-shadow: 0 1px 3px 1px var(--shadow-color), 0 2px 4px 3px var(--shadow-color); - - --selectable-indicator-transition1: - transform 0s ease-in-out var(--animation-duration2), - background-color var(--animation-duration2) ease-in-out, - opacity var(--animation-duration2) ease-in-out, - visibility 0s ease-in-out var(--animation-duration2); - --selectable-indicator-transition2: - transform var(--animation-duration2) ease-in-out, - background-color var(--animation-duration2) ease-in-out, - opacity var(--animation-duration2) ease-in-out, - visibility var(--animation-duration2) ease-in-out; - - --text-color: #222222; - --text-color-light1: #555555; - --text-color-light2: #666666; - --text-color-light3: #777777; - --text-color-light4: #888888; - --background-color: #f8f9fa; - --background-color-light: #ffffff; - --background-color-dark1: #eeeeee; - - --shadow-color: rgba(0, 0, 0, 0.185); - --shadow-color-off: rgba(0, 0, 0, 0); - --shadow-color-light: rgba(0, 0, 0, 0.085); - - --accent-color: #1a73e8; - --accent-color-light: #4a91ed; - --accent-color-lighter: #8db9f4; - --accent-color-lightest: #a7c9f6; - --accent-color-dark: #1060c0; - --accent-color-transparent0: rgba(28, 116, 233, 0); - --accent-color-transparent5: rgba(28, 116, 233, 0.05); - --accent-color-transparent25: rgba(28, 116, 233, 0.25); - - --danger-color: #c83c28; - --danger-color-light: #dd6755; - --danger-color-lighter: #e68d7f; - --danger-color-lightest: #eeb3aa; - --danger-color-transparent0: rgba(200, 60, 40, 0); - --danger-color-transparent5: rgba(200, 60, 40, 0.05); - --danger-color-transparent25: rgba(200, 60, 40, 0.25); - - --success-color: #51ab30; - - --disabled-color: #aaaaaa; - --disabled-color-light: #dddddd; - --disabled-color-lighter: #eeeeee; - - --input-background-color: #f2f2f2; - --input-background-color-dark: #dddddd; - --input-background-color-darker: #cccccc; - --input-outline-color: var(--text-color); - - --button-default-text-color: #ffffff; - --button-default-border-color: #cccccc; - --button-default-icon-color: #333333; - --button-default-icon-color-light: #666666; - - --checkbox-checked-color: var(--accent-color); - --checkbox-unchecked-color: #666666; - --checkbox-check-color: var(--background-color-light); - --checkbox-disabled-color: var(--disabled-color); - - --toggle-track-color: #cccccc; - --toggle-knob-color: var(--background-color-light); - - --selectable-indicator-color: rgba(160, 160, 160, 0.25); - - --menu-item-hover-color: #bbbbbb; - --menu-item-active-color: #aaaaaa; -} -:root[data-theme=dark] { - --text-color: #d4d4d4; - --text-color-light1: #aaaaaa; - --text-color-light2: #999999; - --text-color-light3: #888888; - --text-color-light4: #777777; - --background-color: #1e1e1e; - --background-color-light: #0a0a0a; - --background-color-dark1: #333333; - - --shadow-color: rgba(105, 105, 105, 0.185); - --shadow-color-off: rgba(255, 255, 255, 0); - --shadow-color-light: rgba(255, 255, 255, 0.085); - - --accent-color: #4a91ed; - --accent-color-light: #1a73e8; - --accent-color-lighter: #135dbe; - --accent-color-lightest: #0e4690; - --accent-color-transparent0: rgb(78, 172, 253, 0); - --accent-color-transparent5: rgb(78, 172, 253, 0.05); - --accent-color-transparent25: rgb(78, 172, 253, 0.25); - - --danger-color: #dd6755; - --danger-color-light: #c83c28; - --danger-color-lighter: #9e301f; - --danger-color-lightest: #732317; - --danger-color-transparent0: rgba(221, 103, 85, 0); - --danger-color-transparent5: rgba(221, 103, 85, 0.05); - --danger-color-transparent25: rgba(221, 103, 85, 0.25); - - --success-color: #75cf54; - - --disabled-color: #444444; - --disabled-color-light: #585858; - --disabled-color-lighter: #777777; - - --input-background-color: #2f2f2f; - --input-background-color-dark: #383838; - --input-background-color-darker: #484848; - --input-outline-color: var(--text-color); - - --button-default-text-color: #000000; - --button-default-border-color: #333333; - --button-default-icon-color: #cccccc; - --button-default-icon-color-light: #999999; - - --checkbox-unchecked-color: #999999; - - --toggle-track-color: #cccccc; - --toggle-knob-color: #ffffff; - - --selectable-indicator-color: rgba(100, 100, 100, 0.25); - - --menu-item-hover-color: #333333; - --menu-item-active-color: #444444; -} - - -/* Root styles */ -:root { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: var(--font-size); - line-height: var(--line-height); - height: 100%; -} -body { - margin: 0; - border: 0; - padding: 0; - height: 100%; - font-family: inherit; - font-size: inherit; - line-height: inherit; - background-color: var(--background-color); - color: var(--text-color); -} - - -/* Text styles */ -.light { - color: var(--text-color-light2); -} -.danger-text { - color: var(--danger-color); -} -.success-text { - color: var(--success-color); -} - -/* Icons */ -.icon { - --icon-image: none; - --icon-size: contain; - - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: var(--icon-size); - -webkit-mask-image: var(--icon-image); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: var(--icon-size); - mask-image: var(--icon-image); -} -.icon.color-icon { - -webkit-mask-image: none; - mask-image: none; - background-repeat: no-repeat; - background-position: center center; - background-size: var(--icon-size); - background-image: var(--icon-image); -} -.icon[data-icon=none] { --icon-image: linear-gradient(transparent, transparent); } -.icon[data-icon=profile] { --icon-image: url(/images/profile.svg); } -.icon[data-icon=cog] { --icon-image: url(/images/cog.svg); } -.icon[data-icon=palette] { --icon-image: url(/images/palette.svg); } -.icon[data-icon=popup] { --icon-image: url(/images/popup.svg); } -.icon[data-icon=speaker] { --icon-image: url(/images/speaker.svg); } -.icon[data-icon=scanning] { --icon-image: url(/images/scanning.svg); } -.icon[data-icon=text-parsing] { --icon-image: url(/images/text-parsing.svg); } -.icon[data-icon=translation] { --icon-image: url(/images/translation.svg); } -.icon[data-icon=book] { --icon-image: url(/images/book.svg); } -.icon[data-icon=note-card] { --icon-image: url(/images/note-card.svg); } -.icon[data-icon=keyboard] { --icon-image: url(/images/keyboard.svg); } -.icon[data-icon=backup] { --icon-image: url(/images/backup.svg); } -.icon[data-icon=lock] { --icon-image: url(/images/lock.svg); } -.icon[data-icon=question-mark] { --icon-image: url(/images/question-mark.svg); } -.icon[data-icon=popup-size] { --icon-image: url(/images/popup-size.svg); } -.icon[data-icon=hamburger-menu] { --icon-image: url(/images/hamburger-menu.svg); } -.icon[data-icon=kebab-menu] { --icon-image: url(/images/kebab-menu.svg); } -.icon[data-icon=mouse] { --icon-image: url(/images/mouse.svg); } -.icon[data-icon=exclamation-point-short] { --icon-image: url(/images/exclamation-point-short.svg); } -.icon[data-icon=magnifying-glass] { --icon-image: url(/images/magnifying-glass.svg); } -.icon[data-icon=collapse] { --icon-image: url(/images/collapse.svg); } -.icon[data-icon=expand] { --icon-image: url(/images/expand.svg); } -.icon[data-icon=window] { --icon-image: url(/images/window.svg); } -.icon[data-icon=cross] { --icon-image: url(/images/cross.svg); } -.icon[data-icon=checkmark] { --icon-image: url(/images/checkmark.svg); } -.icon[data-icon=sentence-parsing] { --icon-image: url(/images/sentence-parsing.svg); } -.icon[data-icon=question-mark] { --icon-image: url(/images/question-mark.svg); } -.icon[data-icon=question-mark-circle] { --icon-image: url(/images/question-mark-circle.svg); } -.icon[data-icon=question-mark-thick] { --icon-image: url(/images/question-mark-thick.svg); } -.icon[data-icon=left-chevron] { --icon-image: url(/images/left-chevron.svg); } -.icon[data-icon=right-chevron] { --icon-image: url(/images/right-chevron.svg); } -.icon[data-icon=up-chevron] { --icon-image: url(/images/up-chevron.svg); } -.icon[data-icon=down-chevron] { --icon-image: url(/images/down-chevron.svg); } -.icon[data-icon=double-down-chevron] { --icon-image: url(/images/double-down-chevron.svg); } -.icon[data-icon=plus-thick] { --icon-image: url(/images/plus-thick.svg); } -.icon[data-icon=clipboard] { --icon-image: url(/images/clipboard.svg); } -.icon[data-icon=key] { --icon-image: url(/images/key.svg); } -.icon[data-icon=tag] { --icon-image: url(/images/tag.svg); } -.icon[data-icon=flag] { --icon-image: url(/images/flag.svg); } -.icon[data-icon=accessibility] { --icon-image: url(/images/accessibility.svg); } -.icon[data-icon=connection] { --icon-image: url(/images/connection.svg); } -.icon[data-icon=external-link] { --icon-image: url(/images/external-link.svg); } -.icon[data-icon=monitor] { --icon-image: url(/images/monitor.svg); } -.icon[data-icon=material-down-arrow] { - --icon-image: url(/images/material-down-arrow.svg); - --icon-size: var(--material-arrow-dimension2) var(--material-arrow-dimension1); -} -.icon[data-icon=material-right-arrow] { - --icon-image: url(/images/material-right-arrow.svg); - --icon-size: var(--material-arrow-dimension1) var(--material-arrow-dimension2); -} - - -/* Checkbox */ -label.checkbox { - cursor: default; -} -.checkbox { - font-size: var(--checkbox-size); - display: inline-block; -} -.checkbox>input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.checkbox-body { - display: block; - cursor: pointer; - width: 1em; - height: 1em; - position: relative; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body { - cursor: default; -} -.checkbox-fill, -.checkbox-border, -.checkbox-check { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: contain; - transition: opacity var(--animation-duration) linear, background-color var(--animation-duration) linear; -} -.checkbox-fill { - mask-image: url(/images/checkbox-fill.svg); - -webkit-mask-image: url(/images/checkbox-fill.svg); - background-color: var(--checkbox-unchecked-color); - opacity: 0; -} -.checkbox-border { - mask-image: url(/images/checkbox-border.svg); - -webkit-mask-image: url(/images/checkbox-border.svg); - background-color: var(--checkbox-unchecked-color); - opacity: 1; -} -.checkbox-check { - mask-image: url(/images/checkbox-check.svg); - -webkit-mask-image: url(/images/checkbox-check.svg); - background-color: var(--checkbox-check-color); - opacity: 0; -} -.checkbox>input[type=checkbox]:checked+.checkbox-body>.checkbox-fill { - background-color: var(--checkbox-checked-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:checked+.checkbox-body>.checkbox-border { - background-color: var(--checkbox-checked-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:checked+.checkbox-body>.checkbox-check { - background-color: var(--checkbox-check-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body>.checkbox-fill { - opacity: 0; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body>.checkbox-border { - background-color: var(--checkbox-disabled-color); - opacity: 1; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body>.checkbox-check { - background-color: var(--checkbox-disabled-color); -} -.checkbox-body::after { - position: absolute; - display: block; - content: ''; - left: -0.75em; - top: -0.75em; - right: -0.75em; - bottom: -0.75em; - border-radius: 2.5em; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.checkbox>input[type=checkbox]:focus+.checkbox-body::after, -.checkbox>input[type=checkbox]:active+.checkbox-body::after, -.checkbox:active>input[type=checkbox]+.checkbox-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.checkbox>input[type=checkbox]:focus:not(:focus-visible)+.checkbox-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.checkbox>input[type=checkbox]:focus-visible+.checkbox-body::after, -.checkbox>input[type=checkbox]:focus-visible:focus+.checkbox-body::after, -.checkbox>input[type=checkbox]:focus-visible:active+.checkbox-body::after, -.checkbox:active>input[type=checkbox]:focus-visible+.checkbox-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.checkbox>input[type=checkbox]:focus+.checkbox-body::after { - opacity: 0.5; -} -.checkbox>input[type=checkbox]:active:focus+.checkbox-body::after, -.checkbox:active>input[type=checkbox]:focus+.checkbox-body::after { - opacity: 1; -} -.checkbox>input[type=checkbox]:disabled+.checkbox-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} - - -/* Toggle switch */ -label.toggle { - cursor: default; -} -.toggle { - font-size: var(--toggle-size); - display: inline-block; -} -.toggle>input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.toggle-body { - display: block; - cursor: pointer; - width: 2em; - height: 1em; - position: relative; -} -.toggle-track { - display: block; - position: absolute; - left: 0.125em; - right: 0.125em; - top: 0.125em; - bottom: 0.125em; - background-color: var(--toggle-track-color); - border-radius: 0.4375em; - transition: background-color var(--animation-duration) ease-in-out; -} -.toggle-knob { - display: block; - position: absolute; - left: 0; - top: 0; - width: 1em; - height: 1em; - background-color: var(--toggle-knob-color); - border-radius: 0.5em; - box-shadow: - 0 0.0625em 0.25em 0 var(--shadow-color), - 0 0.125em 0.125em 0 var(--shadow-color); - transition: - transform var(--animation-duration) ease-in-out, - background-color var(--animation-duration) ease-in-out; -} -.toggle-body>.toggle-knob::after { - position: absolute; - display: block; - content: ''; - left: -0.75em; - top: -0.75em; - right: -0.75em; - bottom: -0.75em; - border-radius: 2.5em; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.toggle>input[type=checkbox]:focus+.toggle-body>.toggle-knob::after, -.toggle>input[type=checkbox]:active+.toggle-body>.toggle-knob::after, -.toggle:active>input[type=checkbox]+.toggle-body>.toggle-knob::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.toggle>input[type=checkbox]+.toggle-body>.toggle-knob::after { - opacity: 0.5; -} -.toggle>input[type=checkbox]:active+.toggle-body>.toggle-knob::after, -.toggle:active>input[type=checkbox]+.toggle-body>.toggle-knob::after { - opacity: 1; -} -.toggle>input[type=checkbox]:focus:not(:focus-visible)+.toggle-body>.toggle-knob::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.toggle>input[type=checkbox]:focus-visible+.toggle-body>.toggle-knob::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.toggle>input[type=checkbox]:checked+.toggle-body>.toggle-knob { - transform: translateX(1em); -} -.toggle>input[type=checkbox]:checked+.toggle-body>.toggle-track { - background-color: var(--accent-color-lighter); -} -.toggle>input[type=checkbox]:checked+.toggle-body>.toggle-knob { - background-color: var(--accent-color); -} -.toggle>input[type=checkbox]:focus:checked+.toggle-body>.toggle-knob::after, -.toggle>input[type=checkbox]:active:checked+.toggle-body>.toggle-knob::after, -.toggle:active>input[type=checkbox]:checked+.toggle-body>.toggle-knob::after { - background-color: var(--accent-color-transparent25); -} -.toggle>input[type=checkbox]:disabled+.toggle-body { - cursor: default; -} -.toggle>input[type=checkbox]:disabled+.toggle-body>.toggle-track { - background-color: var(--disabled-color-light); -} -.toggle>input[type=checkbox]:disabled+.toggle-body>.toggle-knob { - background-color: var(--disabled-color-lighter); -} -.toggle>input[type=checkbox]:disabled+.toggle-body>.toggle-knob::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} - - -/* Radio button */ -label.radio { - cursor: default; -} -.radio { - display: inline-block; - vertical-align: middle; -} -.radio>input[type=radio] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.radio-body { - cursor: pointer; - display: block; - position: relative; - width: var(--radio-size); - height: var(--radio-size); -} -.radio>input[type=radio]:disabled+.radio-body { - cursor: default; -} -.radio-border, -.radio-dot { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--accent-color); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: var(--radio-size) var(--radio-size); - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: var(--radio-size) var(--radio-size); -} -.radio-border { - mask-image: url(/images/radio-button.svg); - -webkit-mask-image: url(/images/radio-button.svg); -} -.radio-dot { - mask-image: url(/images/radio-button-dot.svg); - -webkit-mask-image: url(/images/radio-button-dot.svg); - opacity: 1; - transform: none; - transition: - transform var(--animation-duration2) ease-in-out, - opacity var(--animation-duration2) ease-in-out, - visibility var(--animation-duration2) ease-in-out; -} -.radio>input[type=radio]:disabled+.radio-body>.radio-border, -.radio>input[type=radio]:disabled+.radio-body>.radio-dot { - background-color: var(--disabled-color); -} -.radio>input[type=radio]:not(:checked)+.radio-body>.radio-dot { - opacity: 0; - transform: scale(0); - transition: - transform 0s ease-in-out var(--animation-duration2), - opacity var(--animation-duration2) ease-in-out, - visibility 0s ease-in-out var(--animation-duration2); -} -.radio-body::after { - position: absolute; - display: block; - content: ''; - left: -0.75em; - top: -0.75em; - right: -0.75em; - bottom: -0.75em; - border-radius: 2.5em; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.radio>input[type=radio]:focus+.radio-body::after, -.radio>input[type=radio]:active+.radio-body::after, -.radio:active>input[type=radio]+.radio-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.radio>input[type=radio]:focus:not(:focus-visible)+.radio-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.radio>input[type=radio]:focus-visible+.radio-body::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.radio>input[type=radio]:focus+.radio-body::after { - opacity: 0.5; -} -.radio>input[type=radio]:active:focus+.radio-body::after, -.radio:active>input[type=radio]:focus+.radio-body::after { - opacity: 1; -} -.radio>input[type=radio]:disabled+.radio-body::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.radio-label { - cursor: pointer; - white-space: nowrap; -} -.radio-label>.radio { - vertical-align: middle; -} -.radio-label>.radio-label-text { - display: inline-block; - margin-left: 0.5em; - vertical-align: middle; - white-space: normal; -} - - -/* Material design select */ -select { - width: var(--input-width-large); - height: var(--input-height); - line-height: var(--line-height); - border: 0; - border-radius: var(--input-border-radius); - box-sizing: border-box; - padding: 0 0.5em; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - background-image: url(/images/material-down-arrow.svg); - background-repeat: no-repeat; - background-position: right calc(10em / var(--font-size-no-units)) center; - background-color: var(--input-background-color); - background-size: var(--material-arrow-dimension2) var(--material-arrow-dimension1); - cursor: pointer; - color: var(--text-color); - font-size: var(--input-font-size); -} -select::-ms-expand { - display: none; -} - - -/* Material design inputs */ -input[type=text], -input[type=number], -input[type=password] { - width: var(--input-width); - height: var(--input-height); - line-height: var(--line-height); - color: var(--text-color); - font-size: var(--input-font-size); - background-color: var(--input-background-color); - border: none; - border-radius: var(--input-border-radius); - box-sizing: border-box; - padding: 0 0.5em; - appearance: textfield; - -moz-appearance: textfield; - -webkit-appearance: textfield; -} -input[type=number]::-webkit-inner-spin-button, -input[type=number]::-webkit-outer-spin-button { - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; - margin: 0; -} -input[type=text], -input[type=password] { - width: var(--input-width-large); -} -textarea { - box-sizing: border-box; - padding: var(--textarea-padding); - font-family: 'Courier New', Courier, monospace; - color: var(--text-color); - font-size: var(--input-font-size); - background-color: var(--input-background-color); - border-radius: var(--input-border-radius); - line-height: var(--textarea-line-height); - border: var(--thin-border-size) solid var(--input-background-color); -} -select:invalid, -textarea:invalid, -input[type=text]:invalid, -input[type=number]:invalid, -input[type=password]:invalid, -select[data-invalid=true], -textarea[data-invalid=true], -input[type=text][data-invalid=true], -input[type=number][data-invalid=true], -input[type=password][data-invalid=true] { - border: var(--thin-border-size) solid var(--danger-color); -} -select, -textarea, -input[type=text], -input[type=number], -input[type=password] { - box-shadow: none; - transition: box-shadow calc(var(--animation-duration) / 2) linear; -} -select:focus, -textarea:focus, -input[type=text]:focus, -input[type=number]:focus, -input[type=password]:focus { - box-shadow: 0 0 0 calc(2em / var(--font-size-no-units)) var(--input-outline-color); - outline: none; -} -select:invalid:focus, -textarea:invalid:focus, -input[type=text]:invalid:focus, -input[type=number]:invalid:focus, -input[type=password]:invalid:focus, -select[data-invalid=true]:focus, -textarea[data-invalid=true]:focus, -input[type=text][data-invalid=true]:focus, -input[type=number][data-invalid=true]:focus, -input[type=password][data-invalid=true]:focus { - box-shadow: 0 0 0 calc(2em / var(--font-size-no-units)) var(--danger-color); - outline: none; -} -input[type=text].code, -input[type=number].code, -input[type=password].code { - font-family: 'Courier New', Courier, monospace; -} -textarea.no-wrap { - white-space: pre; - overflow-wrap: normal; -} - -/* Input groups */ -.input-group { - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -.input-group>input[type=text], -.input-group>input[type=number], -.input-group>input[type=password], -.input-group>button.input-button { - flex: 1 1 auto; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right-style: none; - z-index: 1; -} -.input-suffix, -.button.input-suffix, -button.input-suffix { - display: flex; - flex-flow: row nowrap; - align-items: center; - border-radius: var(--input-border-radius); - border-style: none; - border-width: 0; - height: var(--input-height); - box-sizing: border-box; - padding: 0 0.5em; - position: relative; -} -.input-suffix:not(:first-child), -.button.input-suffix:not(:first-child), -button.input-suffix:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-suffix:not(:last-child), -.button.input-suffix:not(:last-child), -button.input-suffix:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-suffix:not(button) { - background-color: var(--input-background-color); -} -input[type=text]:invalid~.input-suffix:not(button), -input[type=number]:invalid~.input-suffix:not(button), -input[type=password]:invalid~.input-suffix:not(button), -input[type=text][data-invalid=true]~.input-suffix:not(button), -input[type=number][data-invalid=true]~.input-suffix:not(button), -input[type=password][data-invalid=true]~.input-suffix:not(button) { - border-color: var(--danger-color); - border-width: var(--thin-border-size); - border-style: solid; - border-left-style: none; - border-right-style: none; -} - - -/* Material design button */ -button, -.button { - --button-content-color: var(--button-default-text-color); - --button-border-color: var(--accent-color); - --button-background-color: var(--accent-color); - --button-shadow: none; - - --button-hover-content-color: var(--button-content-color); - --button-hover-border-color: var(--button-hover-background-color); - --button-hover-background-color: var(--accent-color-light); - --button-hover-shadow: var(--button-default-shadow-params) var(--shadow-color-light); - - --button-focus-content-color: var(--button-hover-content-color); - --button-focus-border-color: var(--button-hover-border-color); - --button-focus-background-color: var(--button-hover-background-color); - --button-focus-shadow: var(--button-hover-shadow); - - --button-focus-visible-content-color: var(--button-focus-content-color); - --button-focus-visible-border-color: var(--button-focus-border-color); - --button-focus-visible-background-color: var(--button-focus-background-color); - --button-focus-visible-shadow: var(--button-focus-shadow); - - --button-active-content-color: var(--button-content-color); - --button-active-border-color: var(--button-active-background-color); - --button-active-background-color: var(--accent-color-lighter); - --button-active-shadow: var(--button-default-shadow-params) var(--shadow-color); - - --button-disabled-content-color: var(--button-default-text-color); - --button-disabled-border-color: var(--disabled-color); - --button-disabled-background-color: var(--disabled-color); - --button-disabled-shadow: none; - - --button-current-content-color: var(--button-content-color); - --button-current-border-color: var(--button-border-color); - --button-current-background-color: var(--button-background-color); - --button-current-shadow: var(--button-shadow); - - --button-padding-vertical: 0.5em; - --button-padding-horizontal: 1em; - - border-width: var(--thin-border-size); - border-style: solid; - border-radius: var(--button-border-radius); - padding: var(--button-padding-vertical) var(--button-padding-horizontal); - font-weight: bold; - font-size: inherit; - font-family: inherit; - cursor: pointer; - transition: - background-color var(--animation-duration) ease-in-out, - box-shadow var(--animation-duration) ease-in-out, - border-color var(--animation-duration) ease-in-out; - -webkit-tap-highlight-color: transparent; - - color: var(--button-current-content-color); - border-color: var(--button-current-border-color); - background-color: var(--button-current-background-color); - box-shadow: var(--button-current-shadow); -} -button:hover, -.button:hover { - --button-current-content-color: var(--button-hover-content-color); - --button-current-border-color: var(--button-hover-border-color); - --button-current-background-color: var(--button-hover-background-color); - --button-current-shadow: var(--button-hover-shadow); -} -button:focus, -.button:focus { - --button-current-content-color: var(--button-focus-content-color); - --button-current-border-color: var(--button-focus-border-color); - --button-current-background-color: var(--button-focus-background-color); - --button-current-shadow: var(--button-focus-shadow); - - outline: none; -} -button:active, -.button:active { - --button-current-content-color: var(--button-active-content-color); - --button-current-border-color: var(--button-active-border-color); - --button-current-background-color: var(--button-active-background-color); - --button-current-shadow: var(--button-active-shadow); -} -button:focus:not(:focus-visible), -.button:focus:not(:focus-visible) { - --button-current-content-color: var(--button-content-color); - --button-current-border-color: var(--button-border-color); - --button-current-background-color: var(--button-background-color); - --button-current-shadow: var(--button-shadow); -} -button:focus-visible, -.button:focus-visible { - --button-current-content-color: var(--button-focus-visible-content-color); - --button-current-border-color: var(--button-focus-visible-border-color); - --button-current-background-color: var(--button-focus-visible-background-color); - --button-current-shadow: var(--button-focus-visible-shadow); -} -button:hover:focus-visible, -button:hover:not(:focus-visible), -.button:hover:focus-visible, -.button:hover:not(:focus-visible) { - --button-current-content-color: var(--button-hover-content-color); - --button-current-border-color: var(--button-hover-border-color); - --button-current-background-color: var(--button-hover-background-color); - --button-current-shadow: var(--button-hover-shadow); -} -button:focus:focus-visible, -.button:focus:focus-visible { - --button-current-content-color: var(--button-focus-visible-content-color); - --button-current-border-color: var(--button-focus-visible-border-color); - --button-current-background-color: var(--button-focus-visible-background-color); - --button-current-shadow: var(--button-focus-visible-shadow); -} -button:active:focus-visible, -button:active:not(:focus-visible), -.button:active:focus-visible, -.button:active:not(:focus-visible) { - --button-current-content-color: var(--button-active-content-color); - --button-current-border-color: var(--button-active-border-color); - --button-current-background-color: var(--button-active-background-color); - --button-current-shadow: var(--button-active-shadow); -} -button:disabled, -.button:disabled { - cursor: default; -} -button:disabled, -button:disabled:focus, -button:disabled:hover, -button:disabled:active, -.button:disabled, -.button:disabled:focus, -.button:disabled:hover, -.button:disabled:active { - --button-current-content-color: var(--button-disabled-content-color); - --button-current-border-color: var(--button-disabled-border-color); - --button-current-background-color: var(--button-disabled-background-color); - --button-current-shadow: var(--button-disabled-shadow); -} -button:disabled:focus-visible, -.button:disabled:focus-visible { - --button-current-content-color: var(--button-disabled-content-color); - --button-current-border-color: var(--button-disabled-border-color); - --button-current-background-color: var(--button-disabled-background-color); - --button-current-shadow: var(--button-disabled-shadow); -} - -/* Standard danger button */ -button.danger { - --button-border-color: var(--danger-color); - --button-background-color: var(--danger-color); - --button-hover-background-color: var(--danger-color-light); - --button-active-background-color: var(--danger-color-lighter); -} - -/* Low emphasis button */ -button.low-emphasis { - --button-content-color: var(--accent-color); - --button-border-color: var(--button-default-border-color); - --button-background-color: var(--accent-color-transparent0); - --button-hover-border-color: var(--accent-color); - --button-hover-background-color: var(--accent-color-transparent5); - --button-active-border-color: var(--accent-color); - --button-active-background-color: var(--accent-color-transparent25); - --button-disabled-content-color: var(--disabled-color); - --button-disabled-border-color: var(--disabled-color); - --button-disabled-background-color: var(--accent-color-transparent0); -} - -/* Low emphasis danger button */ -button.low-emphasis.danger { - --button-content-color: var(--danger-color); - --button-border-color: var(--button-default-border-color); - --button-background-color: var(--danger-color-transparent0); - --button-hover-border-color: var(--danger-color); - --button-hover-background-color: var(--danger-color-transparent5); - --button-active-border-color: var(--danger-color); - --button-active-background-color: var(--danger-color-transparent25); - --button-disabled-content-color: var(--disabled-color); - --button-disabled-border-color: var(--disabled-color); - --button-disabled-background-color: var(--danger-color-transparent0); -} - -/* Input button */ -button.input-button { - --button-content-color: var(--button-default-icon-color); - --button-border-color: var(--input-background-color); - --button-background-color: var(--input-background-color); - --button-hover-background-color: var(--input-background-color-dark); - --button-active-background-color: var(--input-background-color-darker); - - --button-padding-vertical: 0; - --button-padding-horizontal: 0.5em; - - text-align: left; - font-weight: normal; - border-style: none; - border-width: 0; - width: var(--input-width-large); - height: var(--input-height); - line-height: var(--input-height); - box-sizing: border-box; - position: relative; -} - -/* Input suffix button */ -button.input-suffix { - --button-content-color: var(--button-default-icon-color); - --button-border-color: var(--input-background-color); - --button-background-color: var(--input-background-color); - --button-hover-background-color: var(--input-background-color-dark); - --button-active-background-color: var(--input-background-color-darker); -} -button.input-suffix.light-icon { - --button-content-color: var(--button-default-icon-color-light); -} -button.input-suffix.input-suffix-icon-button { - width: 2.125em; -} -button.input-suffix.input-suffix-icon-button>.icon { - display: block; - width: 100%; - height: 100%; - background-color: var(--button-current-content-color); -} -input[type=text]:invalid~button.input-suffix, -input[type=number]:invalid~button.input-suffix, -input[type=password]:invalid~button.input-suffix, -input[type=text][data-invalid=true]~button.input-suffix, -input[type=number][data-invalid=true]~button.input-suffix, -input[type=password][data-invalid=true]~button.input-suffix { - --button-border-color: var(--danger-color); - --button-hover-border-color: var(--danger-color); - --button-active-border-color: var(--danger-color); - --button-disabled-border-color: var(--danger-color); - - border-width: var(--thin-border-size); - border-style: solid; - border-left-style: none; -} - - -/* Button inner label */ -.button-inner-label { - margin-top: calc(-1 * var(--button-padding-vertical)); - margin-bottom: calc(-1 * var(--button-padding-vertical)); - margin-left: calc(-1 * var(--button-padding-horizontal)); - margin-right: calc(-1 * var(--button-padding-horizontal)); - padding: var(--button-padding-vertical) var(--button-padding-horizontal); -} - - -/* Material design icon button */ -button.icon-button { - --button-content-color: var(--button-default-icon-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - --button-disabled-content-color: var(--button-default-icon-color); - --button-disabled-border-color: transparent; - --button-disabled-background-color: transparent; - --button-disabled-shadow: none; - - vertical-align: middle; - border: none; - margin: 0; - padding: 0; - box-sizing: content-box; - font-size: inherit; - cursor: pointer; -} -button.icon-button.light-icon { - --button-content-color: var(--button-default-icon-color-light); - --button-disabled-content-color: var(--button-default-icon-color-light); -} -button.icon-button:not([hidden]) { - display: inline-block; -} -button.icon-button>.icon-button-inner { - display: block; - width: var(--icon-button-size); - height: var(--icon-button-size); - position: relative; -} -.icon-button>.icon-button-inner::after { - position: absolute; - display: block; - content: ''; - left: 0; - top: 0; - right: 0; - bottom: 0; - border-radius: 50%; - background-color: var(--selectable-indicator-color); - pointer-events: none; - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.icon-button:focus>.icon-button-inner::after, -.icon-button:active>.icon-button-inner::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.icon-button:focus:not(:focus-visible)>.icon-button-inner::after { - transform: scale(0); - opacity: 0; - visibility: hidden; - transition: var(--selectable-indicator-transition1); -} -.icon-button:focus-visible>.icon-button-inner::after, -.icon-button:focus-visible:active>.icon-button-inner::after, -.icon-button:focus>.icon-button-inner::after, -.icon-button:focus:active>.icon-button-inner::after { - transform: scale(1); - opacity: 1; - visibility: visible; - transition: var(--selectable-indicator-transition2); -} -.icon-button>.icon-button-inner>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--button-current-content-color); - --icon-size: calc(16em / var(--font-size-no-units)) calc(16em / var(--font-size-no-units)); -} -.icon-button>.icon-button-inner>.icon[data-icon=material-right-arrow] { --icon-size: var(--material-arrow-dimension1) var(--material-arrow-dimension2); } -.icon-button>.icon-button-inner>.icon[data-icon=material-down-arrow] { --icon-size: var(--material-arrow-dimension2) var(--material-arrow-dimension1); } - -.input-height-icon-button-container { - height: var(--input-height); - box-sizing: border-box; -} -.input-height-icon-button-container>.icon-button { - position: relative; - top: calc((var(--input-height) - var(--icon-button-size)) * 0.5); -} - - -/* Popup menu */ -#popup-menus { - position: absolute; -} -.popup-menu-container { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - z-index: 1001; - outline: none; - overflow: hidden; -} -.popup-menu { - position: absolute; - left: 0; - top: 0; - max-width: 100%; - max-height: 100%; - box-sizing: border-box; - box-shadow: var(--menu-shadow); - border-radius: var(--menu-border-radius); - background-color: var(--background-color-light); - padding: 0.5em 0; - min-width: 8em; - overflow: auto; -} -.popup-menu-body { - display: flex; - flex-flow: column nowrap; - align-items: stretch; - white-space: nowrap; -} -button.popup-menu-item { - --button-content-color: var(--text-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: var(--menu-item-hover-color); - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: var(--menu-item-active-color); - --button-active-shadow: none; - - --button-disabled-content-color: var(--text-color-light2); - --button-disabled-border-color: transparent; - --button-disabled-background-color: transparent; - --button-disabled-shadow: none; - - --button-padding-vertical: 0.625em; - --button-padding-horizontal: 1.5em; - - flex: 1 1 auto; - border-radius: 0; - border-style: none; - border-width: 0; - text-align: left; - font-size: 1em; - font-weight: normal; - font-family: inherit; - align-items: center; -} -button.popup-menu-item.popup-menu-item-bold { - font-weight: bold; -} -button.popup-menu-item:not([hidden]) { - display: flex; -} -button.popup-menu-item.popup-menu-item-thin { - --button-padding-vertical: 0.375em; -} -.popup-menu-item-icon { - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - background-color: var(--button-current-content-color); - flex: 0 0 auto; -} -.popup-menu-item-icon:not([hidden]) { - display: block; -} -.popup-menu-item-icon+.popup-menu-item-label { - margin-left: 0.5em; -} -:root[data-page-type=popup] .popup-menu.popup-menu-auto-size, -.popup-menu.popup-menu-small { - border-radius: calc(var(--menu-border-radius) * 0.75); - padding: 0.25em 0; - min-width: 6em; -} -:root[data-page-type=popup] .popup-menu.popup-menu-auto-size button.popup-menu-item, -.popup-menu.popup-menu-small button.popup-menu-item { - --button-padding-vertical: 0.5em; - --button-padding-horizontal: 0.75em; - - font-size: var(--font-size-small); -} -:root[data-page-type=popup] .popup-menu.popup-menu-auto-size button.popup-menu-item.popup-menu-item-thin, -.popup-menu.popup-menu-small button.popup-menu-item.popup-menu-item-thin { - --button-padding-vertical: 0.25em; -} -.popup-menu-item-group { - position: relative; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} diff --git a/vendor/yomitan/css/permissions.css b/vendor/yomitan/css/permissions.css deleted file mode 100644 index b72053ef..00000000 --- a/vendor/yomitan/css/permissions.css +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#permissions-origin-list { - display: grid; - grid-template-columns: auto 1fr auto; - grid-template-rows: auto; - align-items: center; - justify-content: center; -} -.permissions-origin-index { - margin: 0 0.5em; -} -input[type=text].permissions-origin-input { - width: auto; - justify-self: stretch; -} -.permissions-origin-button { - justify-self: center; - margin-left: 0.5em; -} diff --git a/vendor/yomitan/css/popup-outer.css b/vendor/yomitan/css/popup-outer.css deleted file mode 100644 index f1d3e9a2..00000000 --- a/vendor/yomitan/css/popup-outer.css +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2016-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -iframe.yomitan-popup { - all: initial; - font-size: 1px; - background-color: #ffffff; - border: 1em solid #999999; - box-shadow: 0 0 10em rgba(0, 0, 0, 0.5); - position: fixed; - resize: none; - visibility: hidden; - z-index: 2147483647; - box-sizing: border-box; -} -iframe.yomitan-popup[data-theme=dark] { - background-color: #1e1e1e; - border-color: #666666; -} -iframe.yomitan-popup[data-outer-theme=dark] { - box-shadow: 0 0 10em rgba(255, 255, 255, 0.5); -} -iframe.yomitan-popup[data-outer-theme=none] { - box-shadow: none; -} -iframe.yomitan-popup[data-popup-display-mode=full-width] { - border-left: none; - border-right: none; -} -iframe.yomitan-popup[data-popup-display-mode=full-width][data-below=true] { - border-bottom: none; -} -iframe.yomitan-popup[data-popup-display-mode=full-width]:not([data-below=true]) { - border-top: none; -} diff --git a/vendor/yomitan/css/popup-preview.css b/vendor/yomitan/css/popup-preview.css deleted file mode 100644 index 9a4e6367..00000000 --- a/vendor/yomitan/css/popup-preview.css +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -:root { - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - - --line-height-no-units: 20; - --line-height: calc(var(--line-height-no-units) / var(--font-size-no-units)); - - --animation-duration: 0s; - - --example-text-color: #333333; - --background-color: rgba(0, 0, 0, 0); -} -:root[data-loaded=true] { - --animation-duration: 0.25s; -} - -:root[data-theme=dark] { - --example-text-color: #d4d4d4; - --background-color: rgba(0, 0, 0, 0); -} - - -html { - background-color: var(--background-color); -} -html.dark { - background-color: var(--background-color); -} -html, -body { - margin: 0; - padding: 0; - border: 0; - overflow: hidden; - width: 100%; - height: 100%; - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - font-size: var(--font-size); - line-height: var(--line-height); -} - -.content { - display: flex; - min-width: 100%; - min-height: 100%; - box-sizing: border-box; - padding: 1em; - flex-flow: column nowrap; - align-items: center; - justify-content: center; -} -.content-body { - max-width: 100%; - width: 400px; -} -.top-options { - max-width: 100%; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.top-options-left { - flex: 1 1 auto; -} -.top-options-right { - flex: 0 0 auto; -} - -.example-text-container { - position: relative; -} -.example-text { - display: block; - width: 100%; - font-size: 24px; - line-height: 1.25em; - height: 1.25em; - box-sizing: border-box; - border: 1px solid rgba(221, 221, 221, 0); - margin: 0; - padding: 0; - outline: none; - color: var(--example-text-color); - background-color: transparent; - white-space: pre; - transition: background-color var(--animation-duration) linear 0s, border-color var(--animation-duration) linear 0s; -} -.example-text:hover, -.example-text-input { - border-color: #dddddd; -} -.example-text[hidden] { - display: none; -} -.example-text-input { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -.example-text-input:not([hidden])+.example-text { - visibility: hidden; -} - -.popup-placeholder { - display: flex; - width: 100%; - height: 250px; - padding-top: 10px; - border: 1px solid rgba(0, 0, 0, 0); - flex-flow: column nowrap; - justify-content: center; -} -.placeholder-info { - flex: 0 1 auto; - visibility: hidden; - opacity: 0; - transition: opacity var(--animation-duration) linear 0s, visibility 0s linear var(--animation-duration); -} -.placeholder-info.placeholder-info-visible { - color: var(--example-text-color); - visibility: visible; - opacity: 1; - transition: opacity var(--animation-duration) linear 0s, visibility 0s linear 0s; -} - -.theme-button { - display: inline-block; - margin-left: 0.5em; - text-decoration: none; - cursor: pointer; - white-space: nowrap; - line-height: 0; -} -.theme-button>input { - vertical-align: middle; - margin: 0 0.25em 0 0; - padding: 0; -} -.theme-button>span { - vertical-align: middle; -} -.theme-button:hover>span { - text-decoration: underline; -} diff --git a/vendor/yomitan/css/search-settings.css b/vendor/yomitan/css/search-settings.css deleted file mode 100644 index 5693c5f2..00000000 --- a/vendor/yomitan/css/search-settings.css +++ /dev/null @@ -1,489 +0,0 @@ -:root { - --padding: 10px; - --padding-negative: calc(var(--padding) * -1); - --content-width: 700px; - --shadow-vertical: 0 1px 4px 0 var(--shadow-color), 0 2px 2px 0 var(--shadow-color); - --shadow-left: -1px 0 4px 0 var(--shadow-color), -2px 0 2px 0 var(--shadow-color); - --settings-group-horizontal-margin: 0; - --settings-group-inner-vertical-padding: 0.85em; - --settings-group-inner-horizontal-padding: 1.5em; - --settings-group-inner-horizontal-padding-half: calc(var(--settings-group-inner-horizontal-padding) * 0.5); - --settings-group-inner-horizontal-padding-half-wrappable: var(--settings-group-inner-horizontal-padding-half); - --settings-group-inner-horizontal-padding-fourth: calc(var(--settings-group-inner-horizontal-padding) * 0.25); - --settings-group-border-radius: 0.3em; - --settings-group-right-max-height: 40px; - --settings-group-wrap: nowrap; - --show-preview-label-height: 40px; - - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - --font-size-small: 12px; - --outline-item-height: 40px; - --outline-item-icon-size: 32px; - --input-short-width: calc(var(--input-width-large) / 2 - var(--padding) / 2); - --input-short-height: 24px; - --input-medium-width: calc(var(--input-width-large) * 0.75); - --fab-button-size: 56px; - --fab-button-padding: 16px; - --modal-width: 600px; - --modal-height: 400px; - --modal-width-small: 400px; - --modal-height-small: 200px; - --modal-width-medium: 600px; - --modal-height-medium: 400px; - --modal-transition-offset: -64px; - --badge-size: 16px; - - --link-color: var(--accent-color); - --link-color-hover: var(--accent-color-dark); - --separator-color1: #cccccc; - --separator-color2: #eeeeee; - --outline-item-background-color: rgba(13, 13, 13, 0); - --outline-item-background-color-hover: rgba(13, 13, 13, 0.15); - --warning-color: #96751c; - --warning-color-light: #edc75e; - --dim-background-color: rgba(0, 0, 0, 0.5); - --content-dimmer-color: rgba(0, 0, 0, 0.1); - --advanced-color: #6640be; - --advanced-color-lighter: hsl(258, 50%, 75%); - --advanced-color-transparent25: rgba(102, 64, 190, 0.5); - - --modal-padding-horizontal: 1em; - --modal-padding-vertical: 0.625em; - --modal-padding-vertical-half: calc(var(--modal-padding-vertical) * 0.5); - --modal-button-spacing: 0.625em; -} -:root:not([data-loaded=true]) { - --animation-duration: 0s; -} -:root[data-theme=dark] { - --separator-color1: #333333; - --separator-color2: #222222; -} - -/* Modal */ -.modal { - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - overscroll-behavior: contain; - background-color: var(--dim-background-color); - outline: none; - z-index: 10000; - opacity: 1; - visibility: visible; - transition: - opacity var(--animation-duration2) ease-out, - visibility 0s linear; -} -.modal[hidden] { - opacity: 0; - visibility: hidden; - transition: - opacity var(--animation-duration2) ease-in, - visibility 0s linear var(--animation-duration2); -} -.modal[hidden]:not(.hidden-animating) { - display: none; -} -.modal-content { - max-width: 100%; - max-height: 100%; - width: var(--modal-width); - height: var(--modal-height); - background-color: var(--background-color-light); - flex: 0 1 auto; - border-radius: 0.5em; - transform: translate(0, 0); - transition: - transform var(--animation-duration2) ease-out, - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; - box-shadow: var(--shadow-vertical); - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.modal[hidden] .modal-content { - pointer-events: none; -} -.modal-content.modal-content-small { - width: var(--modal-width-small); - min-height: var(--modal-height-small); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-medium { - width: var(--modal-width-medium); - min-height: var(--modal-height-medium); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-full { - width: var(--content-width); - height: 100%; - transform: translate(0, 0); - border-radius: 0; -} -.modal[hidden] .modal-content { - transform: translate(0, var(--modal-transition-offset)); - transition: - transform 0s linear var(--animation-duration2), - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; -} -.modal-header { - flex: 0 0 auto; - padding: var(--modal-padding-vertical) var(--modal-padding-horizontal) var(--modal-padding-vertical-half); - display: flex; - width: 100%; - align-items: center; - box-sizing: border-box; -} -.modal-title { - font-size: 1.125em; - flex: 1 1 auto; -} -.modal-footer { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal) var(--modal-padding-vertical); - margin-right: calc(var(--modal-button-spacing) * -1); - margin-top: calc(var(--modal-button-spacing) * -1); - display: flex; - flex-flow: row wrap; - align-items: flex-end; - justify-items: flex-end; - justify-content: flex-end; -} -.modal-footer>* { - margin-right: var(--modal-button-spacing); - margin-top: var(--modal-button-spacing); -} -.modal-body { - flex: 1 1 auto; - overflow: auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body-addon { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body>.settings-item, -.modal-settings-group>.settings-item { - margin-left: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item { - margin-right: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item+.settings-item { - border-top: none; -} -.modal-body .settings-item-left { - padding-left: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-right { - padding-right: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-children { - padding-left: var(--modal-padding-horizontal); - padding-right: var(--modal-padding-horizontal); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} - -.modal.modal-left { - display: flex; - flex-flow: row nowrap; - width: 100%; - height: 100%; - background-color: transparent; - pointer-events: none; -} -.modal-content-container { - pointer-events: none; - width: 100%; - height: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; -} - -.modal-content-container>.modal-content, -.modal-content-container>.modal-content-dimmer { - pointer-events: auto; -} - -.modal-content-container>.modal-content-dimmer { - background: var(--custom-css-modal-background); - width: var(--custom-css-dim-size); - height: 100%; - margin-right: calc(100% - var(--custom-css-dim-size)); - position: absolute; -} - -.modal-header-button-container { - margin-top: calc(-1 * var(--modal-padding-vertical-half)); - margin-bottom: calc(-1 * var(--modal-padding-vertical-half)); -} -.modal-header-button-group { - display: block; - position: relative; - width: var(--icon-button-size); - height: var(--icon-button-size); -} -.modal-header-button { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -button.icon-button.modal-header-button { - --button-content-color: var(--button-default-icon-color-light); - --button-hover-content-color: var(--button-default-icon-color); - --button-active-content-color: var(--button-default-icon-color); -} -button.icon-button.modal-header-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.modal-header-button[data-modal-action=expand], -.modal-header-button[data-modal-action=collapse] { - visibility: visible; - opacity: 1; - z-index: 1; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out 0s; -} -.modal-content.modal-content-full .modal-header-button[data-modal-action=expand], -.modal-content:not(.modal-content-full) .modal-header-button[data-modal-action=collapse] { - visibility: hidden; - opacity: 0; - pointer-events: none; - z-index: 0; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out var(--animation-duration2); -} - -.modal-separator-line { - border-top: var(--thin-border-size) solid var(--separator-color1); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.modal-separator-line-light { - border-top: var(--thin-border-size) solid var(--separator-color2); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} - -/* Settings styles */ -.settings-group { - margin: 0 var(--settings-group-horizontal-margin); - padding: 0; - box-sizing: border-box; - background-color: var(--background-color-light); - box-shadow: var(--shadow-vertical); - border-radius: var(--settings-group-border-radius); - overflow-x: hidden; -} -.settings-group.settings-group-top-margin { - margin-top: 1.0125em; -} -.settings-item { - position: relative; -} -.settings-item:not([hidden]) { - display: block; -} -.settings-item-outer { - display: block; - width: 100%; -} -.settings-item-inner { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-content: stretch; - width: 100%; -} -.settings-item-inner.settings-item-inner-wrappable { - flex-wrap: var(--settings-group-wrap); -} -.settings-item-left { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 1 1 auto; - align-self: center; - position: relative; -} -.settings-item-left:last-child { - padding-right: var(--settings-group-inner-horizontal-padding); -} -.settings-item-right { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half); - flex: 0 1 auto; - align-self: stretch; - max-height: var(--settings-group-right-max-height); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-left { - padding-right: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-center { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 0 1 100%; - align-self: flex-start; - text-align: center; -} -.settings-item+.settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-description { - color: var(--text-color-light2); -} -.settings-item-right.open-panel-button-container { - padding: 0.25em 1em 0.25em 0.75em; - max-height: calc(var(--settings-group-right-max-height) + var(--settings-group-inner-vertical-padding) * 2); -} -.settings-item-children { - padding: 0em var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - margin-top: 0; -} -.settings-item-children.settings-item-children-group { - padding: 0 0 0 calc(var(--settings-group-inner-horizontal-padding) + var(--settings-group-inner-horizontal-padding)); -} -.settings-item-children.settings-item-children-group .settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-children.settings-item-children-group .settings-item-left { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-left:not(:last-child) { - padding-right: calc(var(--settings-group-inner-horizontal-padding-half-wrappable) * 2); -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-children { - padding-left: 0; -} -.settings-item.settings-item-button, -a.settings-item.settings-item-button { - cursor: pointer; - color: var(--text-color); - text-decoration: none; - background-color: transparent; - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button>.settings-item-inner, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-left, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-right { - margin-top: 0; -} -.settings-item.settings-item-button:hover, -.settings-item.settings-item-button:active { - background-color: var(--background-color); -} -.settings-item.settings-item-button .icon-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button:hover .icon-button>.icon-button-inner>.icon, -.settings-item.settings-item-button:active .icon-button>.icon-button-inner>.icon { - background-color: var(--accent-color); -} -.settings-item-invalid-indicator { - display: none; - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 0.5em; - background-color: var(--danger-color); -} -.settings-item[data-invalid=true] .settings-item-invalid-indicator { - display: block; -} - - -/* Settings item groups */ -.settings-item-group { - margin-right: var(--padding-negative); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-group.settings-item-group-wrap { - flex-wrap: wrap; -} -.settings-item-group-item { - flex: 0 1 auto; - padding-right: var(--padding); -} -.settings-item-group-item-label { - font-size: var(--font-size-small); - line-height: 1; -} -input[type=text].short-width, -input[type=number].short-width, -select.short-width { - width: var(--input-short-width); -} -input[type=text].medium-width, -input[type=number].medium-width, -select.medium-width { - width: var(--input-medium-width); -} -input[type=text].short-height, -input[type=number].short-height, -select.short-height { - height: var(--input-short-height); - margin-top: calc(var(--settings-group-right-max-height) - var(--input-short-height) - var(--font-size-small)); - line-height: var(--line-height); -} -.settings-item-button-group-container { - max-height: none; - width: 100%; -} -.settings-item-button-group { - display: flex; - width: 100%; - flex-flow: row wrap; - max-height: none; - justify-content: flex-start; - margin-top: var(--padding-negative); - margin-right: var(--padding-negative); -} -.settings-item-button-group-item { - flex: 0 1 auto; - padding-top: var(--padding); - padding-right: var(--padding); -} -.settings-item-progress-report { - display: none; - font-weight: bold; - color: #4169e1; -} -.settings-item-error-report { - display: none; - font-weight: bold; - color: #8b0000; -} diff --git a/vendor/yomitan/css/search.css b/vendor/yomitan/css/search.css deleted file mode 100644 index 1f76682e..00000000 --- a/vendor/yomitan/css/search.css +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Variables */ -:root { - --search-scroll-container-horizontal-padding: 0.72em; - --query-horizontal-padding: 0; - - --padding: calc(10em / var(--font-size-no-units)); - --content-width-search: 700; - --content-width: calc(1em * var(--content-width-search) / var(--font-size-no-units)); - - --background-color: #ffffff; - --separator-color1: #cccccc; - - --search-textbox-height: calc(var(--textarea-line-height) + var(--textarea-padding) * 2); - --search-textbox-min-height: calc(var(--textarea-line-height) + var(--textarea-padding) * 2); - --search-textbox-max-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); - - --cog-icon-size: 26px; -} -:root:not([data-loaded=true]) { - --animation-duration: 0s; -} -:root[data-theme=dark] { - --separator-color1: #333333; -} - -/* Common styles */ -:root { - height: 100%; -} -body { - background-color: var(--background-color); - margin: 0; - padding: 0; - color: var(--text-color); - height: 100%; - overflow: hidden; -} -.search-header { - padding-left: var(--search-scroll-container-horizontal-padding); - padding-right: var(--search-scroll-container-horizontal-padding); -} -h1 { - font-size: 2em; - line-height: 1.5em; - margin: 0; - padding: 0.25em 0 0; - font-weight: normal; - box-sizing: border-box; - border-bottom: calc(1em / (var(--font-size-no-units) * 2)) solid var(--separator-color1); -} - -/* Search bar */ -.search-textbox-container { - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: center; - margin: 0; - padding: 0; - border: 0; -} -#search-textbox { - color: var(--text-color); - flex: 1 1 auto; - box-sizing: border-box; - padding: var(--textarea-padding); - background-color: var(--input-background-color); - border-radius: 0; - line-height: var(--textarea-line-height); - border: 0; - outline: none; - width: 100%; - height: var(--search-textbox-height); - min-height: var(--search-textbox-min-height); - max-height: var(--search-textbox-max-height); - resize: none; - font-size: var(--font-size); - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - white-space: pre-wrap; - z-index: 1; -} -.search-button { - flex: 0 0 auto; - position: relative; - width: 2.5em; - height: var(--search-textbox-height); - min-height: var(--search-textbox-min-height); - max-height: var(--search-textbox-max-height); - background-color: var(--input-background-color); - border: 0; - padding: 0; - margin: 0; - cursor: pointer; - outline: none; - transition: background-color var(--animation-duration) ease-in-out; - border-radius: 0; -} -.search-button:hover, -.search-button:focus { - background-color: var(--input-background-color-dark); -} -.search-button:focus:not(:focus-visible):not(:hover) { - background-color: var(--input-background-color); -} -.search-button:focus-visible { - background-color: var(--input-background-color-dark); -} -.search-button:active, -.search-button:active:focus { - background-color: var(--input-background-color-darker); -} - -.search-button>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--button-default-icon-color); - --icon-size: 16px 16px; -} - -.clear-button { - flex: 0 0 auto; - position: relative; - width: 2.5em; - height: var(--search-textbox-height); - min-height: var(--search-textbox-min-height); - max-height: var(--search-textbox-max-height); - background-color: var(--input-background-color); - border: 0; - padding: 0; - margin: 0; - cursor: pointer; - outline: none; - transition: background-color var(--animation-duration) ease-in-out; - border-radius: 0; -} -.clear-button:hover, -.clear-button:focus { - background-color: var(--input-background-color-dark); -} -.clear-button:focus:not(:focus-visible):not(:hover) { - background-color: var(--input-background-color); -} -.clear-button:focus-visible { - background-color: var(--input-background-color-dark); -} -.clear-button:active, -.clear-button:active:focus { - background-color: var(--input-background-color-darker); -} - -.clear-button>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: var(--button-default-icon-color); - --icon-size: 16px 16px; -} - -/* Search options */ -#search-settings-button>.icon { - display: block; - background-color: var(--button-default-icon-color); - width: var(--cog-icon-size); - height: var(--cog-icon-size); - transition: var(--animation-duration) filter ease-in-out; -} -#search-settings-button>.icon:hover, -#search-settings-button>.icon:focus { - filter: invert(0.5); -} -#search-settings-button { - margin-right: 0; - float: right; -} -.search-options-right { - flex: 1; -} -.search-options { - display: flex; - flex-flow: row wrap; - margin: 0.5em 0 0 0; - align-items: center; -} -.search-option { - flex: 0 1 auto; - margin: 0.5em 2em 0.5em 0; - align-items: center; - cursor: pointer; -} -.search-option:not([hidden]) { - display: flex; -} -.search-option-label { - padding-left: 0.5em; -} - -/* Search styles */ -#intro { - overflow: hidden; -} -#intro>p { - margin: 0; -} -:root[data-search-mode=action-popup] #intro, -:root[data-search-mode=action-popup] #search-option-clipboard-monitor-container { - display: none; -} -:root[data-search-mode=action-popup], -:root[data-search-mode=action-popup] body { - width: 640px; - height: 480px; -} - -/* Dark mode before themes are applied - DO NOT use this for normal theming */ -@media (prefers-color-scheme: dark) { - :root:not([data-loaded=true]) { - background-color: #1e1e1e; - } -} diff --git a/vendor/yomitan/css/settings.css b/vendor/yomitan/css/settings.css deleted file mode 100644 index 85bbd09b..00000000 --- a/vendor/yomitan/css/settings.css +++ /dev/null @@ -1,2785 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2020-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Variables */ -:root { - --padding: 10px; - --padding-negative: calc(var(--padding) * -1); - --content-width: 700px; - --main-content-padding: 10px; - --sidebar-size: 200px; - --preview-sidebar-expanded-width: 400px; - --shadow-vertical: 0 1px 4px 0 var(--shadow-color), 0 2px 2px 0 var(--shadow-color); - --shadow-vertical-top: 0 -1px 4px 0 var(--shadow-color), 0 -2px 2px 0 var(--shadow-color); - --shadow-left: -1px 0 4px 0 var(--shadow-color), -2px 0 2px 0 var(--shadow-color); - --shadow-right: 1px 0 4px 0 var(--shadow-color), 2px 0 2px 0 var(--shadow-color); - --settings-group-horizontal-margin: 0; - --settings-group-inner-vertical-padding: 0.85em; - --settings-group-inner-horizontal-padding: 1.5em; - --settings-group-inner-horizontal-padding-half: calc(var(--settings-group-inner-horizontal-padding) * 0.5); - --settings-group-inner-horizontal-padding-half-wrappable: var(--settings-group-inner-horizontal-padding-half); - --settings-group-inner-horizontal-padding-fourth: calc(var(--settings-group-inner-horizontal-padding) * 0.25); - --settings-group-border-radius: 0.3em; - --settings-group-right-max-height: 40px; - --settings-group-wrap: nowrap; - --show-preview-label-height: 40px; - - --font-size-no-units: 14; - --font-size: calc(1px * var(--font-size-no-units)); - --font-size-small: 12px; - --outline-item-height: 40px; - --outline-item-icon-size: 32px; - --input-short-width: calc(var(--input-width-large) / 2 - var(--padding) / 2); - --input-short-height: 24px; - --input-medium-width: calc(var(--input-width-large) * 0.75); - --fab-button-size: 56px; - --fab-button-padding: 16px; - --modal-width: 600px; - --modal-height: 400px; - --modal-width-small: 400px; - --modal-height-small: 200px; - --modal-width-medium: 600px; - --modal-height-medium: 400px; - --modal-transition-offset: -64px; - --badge-size: 16px; - - --link-color: var(--accent-color); - --link-color-hover: var(--accent-color-dark); - --separator-color1: #cccccc; - --separator-color2: #eeeeee; - --outline-item-background-color: rgba(13, 13, 13, 0); - --outline-item-background-color-hover: rgba(13, 13, 13, 0.15); - --warning-color: #96751c; - --warning-color-light: #edc75e; - --dim-background-color: rgba(0, 0, 0, 0.5); - --content-dimmer-color: rgba(0, 0, 0, 0.1); - --advanced-color: #6640be; - --advanced-color-lighter: hsl(258, 50%, 75%); - --advanced-color-transparent50: rgba(102, 64, 190, 0.5); - - --modal-padding-horizontal: 1em; - --modal-padding-vertical: 0.625em; - --modal-padding-vertical-half: calc(var(--modal-padding-vertical) * 0.5); - --modal-button-spacing: 0.625em; - - --scrollbar-thumb-color: #c1c1c1; - --scrollbar-track-color: #f1f1f1; - --scrollbar-inverse-thumb-color: #444444; - --scrollbar-inverse-track-color: #2f2f2f; - - --dictionary-import-border-color: #cccccc; - --dictionary-import-border-color-hover: #bfd1ff; - --dictionary-import-hover-background-color: rgba(28, 116, 233, 0.05); - - --custom-css-dim-size: 73.5%; - --custom-css-dim-fade-length: 3.5%; - --custom-css-modal-background: linear-gradient(90deg, var(--dim-background-color) calc(100% - var(--custom-css-dim-fade-length)), rgba(0, 0, 0, 0)); -} -:root:not([data-loaded=true]) { - --animation-duration: 0s; -} -:root[data-theme=dark] { - --separator-color1: #333333; - --separator-color2: #222222; - - --scrollbar-thumb-color: #444444; - --scrollbar-track-color: #2f2f2f; - --scrollbar-inverse-thumb-color: #c1c1c1; - --scrollbar-inverse-track-color: #f1f1f1; - - --dictionary-import-border-color: #333333; - --dictionary-import-border-color-hover: #1c74e9; - --dictionary-import-hover-background-color: rgba(191, 209, 255, 0.05); -} - -/* Scrollbars */ -:root:not([data-theme=light]) .scrollbar, -:root:not([data-theme=light]) .modal-body { - scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar { - width: auto; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-button, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-button { - height: 0; -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-thumb, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-thumb { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-track { - background-color: var(--scrollbar-thumb-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-track-piece, -:root:not([data-theme=light]) .modal-::-webkit-scrollbar-track-piece { - background-color: var(--scrollbar-track-color); -} -:root:not([data-theme=light]) .scrollbar::-webkit-scrollbar-corner, -:root:not([data-theme=light]) .modal-body::-webkit-scrollbar-corner { - background-color: var(--scrollbar-track-color); -} - - -@media (max-width: 700px) { - :root { - --settings-group-horizontal-margin: calc(var(--main-content-padding) * -1); - --settings-group-inner-horizontal-padding: var(--main-content-padding); - --settings-group-border-radius: 0; - } -} - -@media (max-width: 400px) { - :root { - --settings-group-horizontal-margin: calc(var(--main-content-padding) * -1); - --settings-group-inner-horizontal-padding: var(--main-content-padding); - --settings-group-inner-horizontal-padding-half-wrappable: var(--settings-group-inner-horizontal-padding); - --settings-group-wrap: wrap; - } -} - - -/* Common styles */ -body { - overflow: hidden; -} -p { - margin: 0; -} -ol, -ul { - margin: 0; - padding: 0 0 0 1.5em; -} -p+p, -p+ol, -p+ul, -ol+p, -ol+ol, -ol+ul, -ul+p, -ul+ol, -ul+ul, -li { - margin: 0.425em 0 0; -} -a { - color: var(--link-color); - text-decoration: none; - cursor: pointer; -} -a:hover { - color: var(--link-color-hover); - text-decoration: underline; -} -code { - font-family: 'Courier New', Courier, monospace; - background-color: var(--input-background-color); -} -label { - cursor: pointer; -} -pre { - white-space: pre-wrap; - margin: 0; -} - - -/* Text styles */ -.warning-text { - color: var(--warning-color); -} - - -/* Headings */ -h1 { - font-size: 2em; - line-height: 1.5em; - margin: 0; - padding: 0.25em 0 0; - font-weight: normal; - box-sizing: border-box; - border-bottom: var(--thin-border-size) solid var(--separator-color1); -} -h2 { - font-size: 1.125em; - font-weight: normal; - line-height: 1.5; - padding: 0.9em 0; - margin: 0.85em 0 0; -} -h3 { - font-size: 1em; - font-weight: bold; - line-height: 1.5; - margin: 1.5em 0 0.85em; -} -.heading-container { - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: baseline; -} -.heading-container a { - color: inherit; - transition: background-color var(--animation-duration) ease-in-out; -} -.heading-container a:hover { - color: var(--link-color-hover); - text-decoration: none; -} -.heading-container-icon { - flex: 0 0 auto; - align-self: center; - margin: 0.85em 0.75em 0 0; -} -.heading-container-icon>.icon { - display: block; - background-color: var(--button-default-icon-color); - width: var(--outline-item-icon-size); - height: var(--outline-item-icon-size); -} -.heading-container-left { - flex: 1 1 auto; -} -.heading-container-right { - flex: 0 0 auto; -} -.heading-sub-text { - font-size: calc(1em / 1.125); - color: var(--text-color-light2); -} -a.heading-link-light { - color: var(--text-color-light2); -} -.heading-description, -.heading-description.more { - padding: 0; - margin: 0 0 1.0125em; -} - - -/* Content layout */ -.content-outer { - display: flex; - flex-flow: column nowrap; - width: 100%; - height: 100%; -} -.content { - flex: 1 0 auto; - width: 100%; - height: 100%; - display: flex; - overflow-x: auto; - overflow-y: scroll; - position: relative; - align-items: stretch; - justify-content: flex-start; -} -.content-left { - flex: 1 1 0; - position: sticky; - top: 0; - z-index: 5; -} -.content-center { - flex: 0 1 auto; - width: var(--content-width); - padding: 0 var(--main-content-padding); - max-width: var(--content-width); - box-sizing: border-box; -} -.content-right { - flex: 1 1 0; - position: sticky; - top: 0; - z-index: 2; -} -#content-scroll-focus { - opacity: 0; - margin: 0; - padding: 0; - outline: none; - background-color: transparent; - display: inline; - width: 0; - height: 0; - line-height: 0; - user-select: none; -} -#content-scroll-focus::-moz-focus-inner { - border: 0; -} -.content-dimmer { - display: block; - visibility: hidden; - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - z-index: 3; - opacity: 0; - background-color: var(--content-dimmer-color); - pointer-events: none; - transition: opacity var(--animation-duration) ease-in-out, visibility var(--animation-duration) ease-in-out; -} - - -/* More details toggle */ -.more-toggle { - cursor: pointer; -} -.more-toggle.more-only[data-expanded=true], -.more-toggle.no-more-only:not([data-expanded=true]) { - display: none; -} -.more { - margin-top: 0.85em; -} - - -/* Footer */ -.footer-padding { - height: 4.5em; -} - - -/* Left sidebar */ -.sidebar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: var(--sidebar-size); - max-width: 100%; - background-color: var(--background-color); - transition: max-width var(--animation-duration) ease-in; -} -.sidebar:hover { - max-width: var(--sidebar-size); - transition: - max-width var(--animation-duration) ease-out 0.5s, - box-shadow var(--animation-duration) ease-out; -} -.sidebar-inner { - width: 100%; - height: 100%; - display: flex; - justify-content: space-between; - flex-flow: column nowrap; - overflow-x: hidden; - overflow-y: auto; - overscroll-behavior: contain; - transition: box-shadow var(--animation-duration) ease-out; -} -.sidebar-top { - position: sticky; - top: 0; - height: 2em; - z-index: 1; -} -.sidebar-top-link { - display: block; - background-color: var(--background-color); - height: 100%; - line-height: 2em; - padding: 0 1.5em; - opacity: 1; - visibility: visible; - transition: opacity var(--animation-duration2) ease-in-out, visibility var(--animation-duration2); -} -.sidebar-top-link[hidden] { - display: block; - opacity: 0; - visibility: hidden; -} -.sidebar-top-link:not(:hover) { - color: var(--text-color); -} -.sidebar-top-icon { - display: inline-block; - background-repeat: no-repeat; - background-size: 12px 12px; - width: 12px; - height: 12px; - background-image: url(/images/up-arrow.svg); - margin-right: calc(var(--padding) * 0.5); -} -.sidebar-body { - padding: 2em 0; -} -.sidebar-bottom { - padding-bottom: 2em; -} -.outline-item { - --button-content-color: var(--text-color); - --button-border-color: transparent; - --button-background-color: var(--outline-item-background-color); - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: var(--outline-item-background-color-hover); - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: var(--outline-item-background-color-hover); - --button-active-shadow: none; - - font-weight: normal; - border-style: none; - border-width: 0; - border-radius: 0; - display: flex; - align-items: center; - width: 100%; - height: var(--outline-item-height); - padding: 0 1.5em; - cursor: pointer; - transition: background-color var(--animation-duration) ease-in-out; - box-sizing: border-box; - position: relative; -} -.outline-item, -.outline-item:hover { - text-decoration: none; -} -.outline-item-left { - display: inline-block; - width: var(--outline-item-icon-size); - height: var(--outline-item-icon-size); - min-width: var(--outline-item-icon-size); - min-height: var(--outline-item-icon-size); - position: relative; - line-height: var(--outline-item-height); -} -.outline-item-left-warning-badge { - position: absolute; - right: calc(var(--outline-item-icon-size) * -0.125); - top: calc(var(--outline-item-icon-size) * -0.125); -} -.outline-item-left-warning-badge:not([hidden]) { - display: block; -} -.outline-item-label { - white-space: nowrap; - padding-left: var(--padding); -} -.outline-item-icon { - display: block; - background-color: var(--button-default-icon-color); - width: 100%; - height: 100%; -} - - -/* Preview sidebar */ -.preview-sidebar { - display: flex; - flex-flow: column nowrap; - align-content: center; - justify-content: center; - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 100%; - min-width: 100%; - max-width: 100%; - transition: - width var(--animation-duration) ease-in-out, - max-width var(--animation-duration) ease-in-out, - box-shadow var(--animation-duration) ease-in-out; -} -.preview-sidebar-inner { - width: 100%; - height: 100%; - display: flex; - flex-flow: column nowrap; - align-content: center; - justify-content: center; - overflow: hidden; - background-color: var(--background-color); -} -.preview-sidebar-setting { - text-align: center; - flex: 0 0 auto; -} -.preview-frame-container { - position: relative; - align-self: stretch; - flex: 1 1 auto; - visibility: visible; -} -.preview-frame { - border: none; - margin: 0; - padding: 0; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - user-select: none; -} - - -/* Settings styles */ -.settings-group { - margin: 0 var(--settings-group-horizontal-margin); - padding: 0; - box-sizing: border-box; - background-color: var(--background-color-light); - box-shadow: var(--shadow-vertical); - border-radius: var(--settings-group-border-radius); - overflow-x: hidden; -} -.settings-group.settings-group-top-margin { - margin-top: 1.0125em; -} -.settings-item { - position: relative; -} -.settings-item:not([hidden]) { - display: block; -} -.settings-item-outer { - display: block; - width: 100%; -} -.settings-item-inner { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-content: stretch; - width: 100%; -} -.settings-item-inner.settings-item-inner-wrappable { - flex-wrap: var(--settings-group-wrap); -} -.settings-item-left { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 1 1 auto; - align-self: center; - position: relative; -} -.settings-item-left:last-child { - padding-right: var(--settings-group-inner-horizontal-padding); -} -.settings-item-right { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding-half); - flex: 0 1 auto; - align-self: stretch; - max-height: var(--settings-group-right-max-height); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-left { - padding-right: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: var(--settings-group-inner-horizontal-padding-half-wrappable); -} -.settings-item-center { - padding: var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - flex: 0 1 100%; - align-self: flex-start; - text-align: center; -} -.settings-item+.settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-description { - color: var(--text-color-light2); -} -.settings-item-right.open-panel-button-container { - padding: 0.25em 1em 0.25em 0.75em; - max-height: calc(var(--settings-group-right-max-height) + var(--settings-group-inner-vertical-padding) * 2); -} -.settings-item-children { - padding: 0em var(--settings-group-inner-horizontal-padding-half) var(--settings-group-inner-vertical-padding) var(--settings-group-inner-horizontal-padding); - margin-top: 0; -} -.settings-item-children.settings-item-children-group { - padding: 0 0 0 calc(var(--settings-group-inner-horizontal-padding) + var(--settings-group-inner-horizontal-padding)); -} -.settings-item-children.settings-item-children-group .settings-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.settings-item-children.settings-item-children-group .settings-item-left { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-left:not(:last-child) { - padding-right: calc(var(--settings-group-inner-horizontal-padding-half-wrappable) * 2); -} -.settings-item-children.settings-item-children-group .settings-item-inner.settings-item-inner-wrappable>.settings-item-right { - padding-left: 0; -} -.settings-item-children.settings-item-children-group .settings-item-children { - padding-left: 0; -} -.settings-item.settings-item-button, -a.settings-item.settings-item-button { - cursor: pointer; - color: var(--text-color); - text-decoration: none; - background-color: transparent; - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button>.settings-item-inner, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-left, -.settings-item.settings-item-button>.settings-item-inner>.settings-item-right { - margin-top: 0; -} -.settings-item.settings-item-button:hover, -.settings-item.settings-item-button:active { - background-color: var(--background-color); -} -.settings-item.settings-item-button .icon-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.settings-item.settings-item-button:hover .icon-button>.icon-button-inner>.icon, -.settings-item.settings-item-button:active .icon-button>.icon-button-inner>.icon { - background-color: var(--accent-color); -} -.settings-item-invalid-indicator { - display: none; - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 0.5em; - background-color: var(--danger-color); -} -.settings-item[data-invalid=true] .settings-item-invalid-indicator { - display: block; -} - - -/* Settings item groups */ -.settings-item-group { - margin-right: var(--padding-negative); - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: center; - justify-content: flex-end; -} -.settings-item-group.settings-item-group-wrap { - flex-wrap: wrap; -} -.settings-item-group-item { - flex: 0 1 auto; - padding-right: var(--padding); -} -.settings-item-group-item-label { - font-size: var(--font-size-small); - line-height: 1; -} -input[type=text].short-width, -input[type=number].short-width, -select.short-width { - width: var(--input-short-width); -} -input[type=text].medium-width, -input[type=number].medium-width, -select.medium-width { - width: var(--input-medium-width); -} -input[type=text].short-height, -input[type=number].short-height, -select.short-height { - height: var(--input-short-height); - margin-top: calc(var(--settings-group-right-max-height) - var(--input-short-height) - var(--font-size-small)); - line-height: var(--line-height); -} -.settings-item-button-group-container { - max-height: none; - width: 100%; -} -.settings-item-button-group { - display: flex; - width: 100%; - flex-flow: row wrap; - max-height: none; - justify-content: flex-start; - margin-top: var(--padding-negative); - margin-right: var(--padding-negative); -} -.settings-item-button-group-item { - flex: 0 1 auto; - padding-top: var(--padding); - padding-right: var(--padding); -} -.settings-item-progress-report { - display: none; - font-weight: bold; - color: #4169e1; -} -.settings-item-error-report { - display: none; - font-weight: bold; - color: #8b0000; -} - -/* Hide progress report until import begins */ -.settings-item:has(.settings-item-inner>.settings-item-left>.settings-item-progress-report), -.settings-item:has(.settings-item-inner>.settings-item-left>.settings-item-error-report) { - display: none; -} - - -/* Advanced settings */ -.settings-group.advanced-only>.settings-item::after, -.settings-item.advanced-only::after { - content: ''; - background-color: var(--advanced-color-lighter); - position: absolute; - right: 0; - top: 0; - height: 100%; - width: 0.25em; -} -.outline-item.advanced-only::after { - content: ''; - background-color: var(--advanced-color-lighter); - position: absolute; - left: 0; - height: 100%; - width: 0.25em; -} -.advanced-toggle { - --accent-color: var(--advanced-color); - --accent-color-lighter: var(--advanced-color-lighter); - --accent-color-transparent25: var(--advanced-color-transparent50); -} - -/* Debug settings */ -.settings-group.debug-only>.settings-item::after, -.settings-item.debug-only::after { - content: ''; - background-color: var(--danger-color-lighter); - position: absolute; - right: 0; - top: 0; - height: 100%; - width: 0.25em; -} -.outline-item.debug-only::after { - content: ''; - background-color: var(--danger-color-lighter); - position: absolute; - left: 0; - height: 100%; - width: 0.25em; -} -.debug-toggle { - --accent-color: var(--danger-color); - --accent-color-lighter: var(--danger-color-lighter); - --accent-color-transparent25: var(--danger-color-transparent25); -} - -/* Modal */ -.modal { - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; - overscroll-behavior: contain; - background-color: var(--dim-background-color); - outline: none; - z-index: 100; - opacity: 1; - visibility: visible; - transition: - opacity var(--animation-duration2) ease-out, - visibility 0s linear; -} -.modal[hidden] { - opacity: 0; - visibility: hidden; - transition: - opacity var(--animation-duration2) ease-in, - visibility 0s linear var(--animation-duration2); -} -.modal[hidden]:not(.hidden-animating) { - display: none; -} -.modal-content { - max-width: 100%; - max-height: 100%; - width: var(--modal-width); - height: var(--modal-height); - background-color: var(--background-color-light); - flex: 0 1 auto; - border-radius: 0.5em; - transform: translate(0, 0); - transition: - transform var(--animation-duration2) ease-out, - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; - box-shadow: var(--shadow-vertical); - display: flex; - flex-flow: column nowrap; - overflow: hidden; -} -.modal[hidden] .modal-content { - pointer-events: none; -} -.modal-content.modal-content-small { - width: var(--modal-width-small); - min-height: var(--modal-height-small); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-medium { - width: var(--modal-width-medium); - min-height: var(--modal-height-medium); - height: auto; - max-height: 100%; -} -.modal-content.modal-content-full { - width: var(--content-width); - height: 100%; - transform: translate(0, 0); - border-radius: 0; -} -.modal[hidden] .modal-content { - transform: translate(0, var(--modal-transition-offset)); - transition: - transform 0s linear var(--animation-duration2), - width var(--animation-duration2) ease-in-out, - height var(--animation-duration2) ease-in-out, - border-radius var(--animation-duration2) ease-in-out; -} -.modal-header { - flex: 0 0 auto; - padding: var(--modal-padding-vertical) var(--modal-padding-horizontal) var(--modal-padding-vertical-half); - display: flex; - width: 100%; - align-items: center; - box-sizing: border-box; -} -.modal-title { - font-size: 1.125em; - flex: 1 1 auto; -} -.modal-footer { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal) var(--modal-padding-vertical); - margin-right: calc(var(--modal-button-spacing) * -1); - margin-top: calc(var(--modal-button-spacing) * -1); - display: flex; - flex-flow: row wrap; - align-items: flex-end; - justify-items: flex-end; - justify-content: flex-end; -} -.modal-footer>* { - margin-right: var(--modal-button-spacing); - margin-top: var(--modal-button-spacing); -} -.modal-footer-spaced { - justify-content: space-evenly; -} -.modal-body { - flex: 1 1 auto; - overflow: auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body-addon { - flex: 0 0 auto; - padding: var(--modal-padding-vertical-half) var(--modal-padding-horizontal); -} -.modal-body>.settings-item, -.modal-settings-group>.settings-item { - margin-left: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item { - margin-right: calc(var(--modal-padding-horizontal) * -1); -} -.modal-body .settings-item+.settings-item { - border-top: none; -} -.modal-body .settings-item-left { - padding-left: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-right { - padding-right: var(--modal-padding-horizontal); - padding-top: var(--settings-group-inner-horizontal-padding-fourth); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} -.modal-body .settings-item-children { - padding-left: var(--modal-padding-horizontal); - padding-right: var(--modal-padding-horizontal); - padding-bottom: var(--settings-group-inner-horizontal-padding-fourth); -} - -.modal.modal-left { - display: flex; - flex-flow: row nowrap; - width: 100%; - height: 100%; - background-color: transparent; - pointer-events: none; -} -.modal-content-container { - pointer-events: none; - width: 100%; - height: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: center; - align-items: center; -} - -.modal-content-container>.modal-content, -.modal-content-container>.modal-content-dimmer { - pointer-events: auto; -} - -.modal-content-container>.modal-content-dimmer { - background: var(--custom-css-modal-background); - width: var(--custom-css-dim-size); - height: 100%; - margin-right: calc(100% - var(--custom-css-dim-size)); - position: absolute; -} - -.modal-header-button-container { - margin-top: calc(-1 * var(--modal-padding-vertical-half)); - margin-bottom: calc(-1 * var(--modal-padding-vertical-half)); -} -.modal-header-button-group { - display: block; - position: relative; - width: var(--icon-button-size); - height: var(--icon-button-size); -} -.modal-header-button { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -button.icon-button.modal-header-button { - --button-content-color: var(--button-default-icon-color-light); - --button-hover-content-color: var(--button-default-icon-color); - --button-active-content-color: var(--button-default-icon-color); -} -button.icon-button.modal-header-button>.icon-button-inner>.icon { - transition: background-color var(--animation-duration) ease-in-out; -} -.modal-header-button[data-modal-action=expand], -.modal-header-button[data-modal-action=collapse] { - visibility: visible; - opacity: 1; - z-index: 1; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out 0s; -} -.modal-content.modal-content-full .modal-header-button[data-modal-action=expand], -.modal-content:not(.modal-content-full) .modal-header-button[data-modal-action=collapse] { - visibility: hidden; - opacity: 0; - pointer-events: none; - z-index: 0; - transition: - opacity var(--animation-duration2) ease-in-out 0s, - visibility 0s ease-in-out var(--animation-duration2); -} - -.modal-separator-line { - border-top: var(--thin-border-size) solid var(--separator-color1); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.modal-separator-line-light { - border-top: var(--thin-border-size) solid var(--separator-color2); - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} - - -/* Status footer */ -.status-footer-container { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; - align-items: stretch; - pointer-events: none; - z-index: 2; -} -.status-footer-container2 { - display: flex; - flex-flow: column nowrap; - justify-content: flex-end; - align-items: center; - width: 100%; - height: 100%; - box-sizing: border-box; -} -.status-footer-container::after { - /* Used to add scrollbar width to get better alignment with the main content container */ - content: ''; - display: block; - flex: 0 0 auto; - overflow-y: scroll; - visibility: hidden; -} -.status-footer { - max-width: var(--content-width); - max-height: 100%; - width: 100%; - pointer-events: auto; - overflow: auto; - flex: 0 1 auto; - padding: 0.375em 0; - box-sizing: border-box; - box-shadow: var(--shadow-vertical-top); - background-color: var(--background-color-light); - border-radius: var(--settings-group-border-radius) var(--settings-group-border-radius) 0 0; - transform: none; - opacity: 1; - transition: - transform var(--animation-duration) ease-out, - opacity var(--animation-duration) ease-out; -} -.status-footer-container[hidden] .status-footer { - transform: translate(0, 100%); - opacity: 0; - transition: - transform var(--animation-duration) ease-in, - opacity var(--animation-duration) ease-in; -} -.status-footer-container[hidden]:not(.hidden-animating) { - display: none; -} -.status-footer-header { - display: flex; - width: 100%; - flex-flow: row nowrap; - align-items: center; - padding: 0.375em 0.75em; - box-sizing: border-box; -} -.status-footer-header-label { - font-weight: bold; - flex: 1 1 auto; -} -.status-footer-item { - padding: 0.375em 0.75em; -} - - -/* Floating action button container */ -.fab-container { - display: flex; - visibility: hidden; - align-items: stretch; - position: fixed; - left: 0; - bottom: 0; - top: 0; - right: 0; - pointer-events: none; - z-index: 10; -} -.fab-container::after { - content: ''; - display: block; - overflow-y: scroll; - overflow-x: hidden; - visibility: hidden; -} -.fab-container-left { - flex: 1 1 0; -} -.fab-container-center { - flex: 1 1 auto; - width: var(--content-width); - padding: 0 var(--main-content-padding); - max-width: var(--content-width); - box-sizing: border-box; - display: flex; - justify-content: flex-end; -} -.fab-container-right { - flex: 1 1 0; - position: relative; -} -.fab-container-right-inner1 { - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 100%; - min-width: 100%; - max-width: 100%; - transition: - width var(--animation-duration) ease-in-out, - max-width var(--animation-duration) ease-in-out; -} -.fab-container-right-inner2 { - display: flex; - flex-flow: column nowrap; - position: absolute; - right: 100%; - bottom: 0; - padding: 0 var(--fab-button-padding) 0 0; -} -.fab-container-item { - padding-bottom: var(--fab-button-padding); -} -button.fab-button { - --button-content-color: var(--button-default-text-color); - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - display: block; - padding: 0; - margin: 0; - pointer-events: all; -} -button.fab-button>.icon-button-inner { - width: var(--fab-button-size); - height: var(--fab-button-size); -} -.fab-button-background { - position: absolute; - display: block; - content: ''; - left: 0; - top: 0; - right: 0; - bottom: 0; - border-radius: 50%; - background-color: var(--accent-color); - box-shadow: var(--shadow-vertical); -} -button.fab-button>.icon-button-inner>.icon { - background-color: var(--button-content-color); -} -.fab-container-item.fab-container-item-popup-preview { - display: none; -} - - -/* Progress */ -.progress-labels { - display: flex; - flex-flow: row nowrap; - width: 100%; -} -.progress-info { - flex: 1 0 auto; -} -.progress-status { - text-align: right; - flex: 1 0 auto; - white-space: nowrap; -} -.progress-bar-track { - width: 100%; - height: 4px; - background-color: var(--input-background-color); -} -.progress-bar { - width: 0; - height: 100%; - background-color: var(--accent-color); -} -.progress-bar.danger { - background-color: var(--danger-color); -} - - -/* Tabs */ -.anki-card-tabs-container { - display: flex; - flex-flow: row nowrap; - align-items: stretch; - position: relative; - width: 100%; - box-sizing: border-box; -} -.tabs { - flex: 1 1 auto; - display: flex; - flex-flow: row wrap; - align-items: stretch; - height: 2.75em; - overflow: hidden; - min-width: 0; -} -.tab { - cursor: pointer; - flex: 1 1 auto; - min-width: 0; -} -.tab>input[type='radio'] { - opacity: 0; - width: 0; - height: 0; - display: block; - margin: 0; - padding: 0; - border: none; - appearance: none; - -moz-appearance: none; - -webkit-appearance: none; -} -.tab-inner { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: center; - position: relative; - height: 100%; - padding: 0 1em; -} -.tab-inner::before { - content: ''; - display: block; - position: absolute; - pointer-events: none; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: var(--text-color-light3); - opacity: 0; - transition: - background-color var(--animation-duration) ease-in-out, - opacity var(--animation-duration) ease-in-out; -} -.tab>input[type='radio']:checked~.tab-inner::before { - background-color: var(--accent-color); -} -.tab>input[type='radio']:hover~.tab-inner::before, -.tab>input[type='radio']:focus~.tab-inner::before { - opacity: 0.125; -} -.tab>input[type='radio']:active~.tab-inner::before { - opacity: 0.25; -} -.tab>input[type='radio']:focus:not(:focus-visible)~.tab-inner::before { - opacity: 0; -} -.tab>input[type='radio']:focus-visible~.tab-inner::before, -.tab>input[type='radio']:hover:focus-visible~.tab-inner::before, -.tab>input[type='radio']:hover:not(:focus-visible)~.tab-inner::before { - opacity: 0.125; -} -.tab>input[type='radio']:active:focus-visible~.tab-inner::before, -.tab>input[type='radio']:active:not(:focus-visible)~.tab-inner::before { - opacity: 0.25; -} -.tab-inner::after { - content: ''; - display: block; - position: absolute; - pointer-events: none; - left: 0; - right: 0; - bottom: 0; - height: 0em; - background-color: var(--accent-color); - transition: height var(--animation-duration) ease-in-out; -} -.tab>input[type='radio']:checked~.tab-inner::after { - height: 0.2em; -} -.tab-label { - position: relative; - display: block; - font-weight: bold; - font-size: calc(12em / var(--font-size-no-units)); - color: var(--text-color-light3); - transition: color var(--animation-duration) ease-in-out; -} -.tab>input[type='radio']:checked~.tab-inner>.tab-label { - color: var(--accent-color); -} -#anki-cards-new-format { - height: 2.75em; - flex: 0 0 auto; - width: 2.75em; - margin-left: auto; - cursor: pointer; - position: relative; - box-sizing: border-box; -} - -#anki-cards-new-format::before { - content: ''; - display: block; - position: absolute; - pointer-events: none; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: var(--text-color-light3); - opacity: 0; - transition: - background-color var(--animation-duration) ease-in-out, - opacity var(--animation-duration) ease-in-out; -} - -#anki-cards-new-format:hover::before { - opacity: 0.125; -} - -#anki-cards-new-format:active::before { - opacity: 0.25; -} - -#anki-cards-new-format .icon { - background-color: var(--text-color-light3); - transition: background-color var(--animation-duration) ease-in-out; -} - -#anki-cards-new-format .icon-button>.icon-button-inner::after { - display: none; -} - -.outer-link { - color: var(--link-color); -} - -/* Conditional styles */ -body.sidebar-visible .content-dimmer { - visibility: visible; - opacity: 1; -} -body.sidebar-visible .sidebar, -body.sidebar-visible .sidebar:hover { - max-width: var(--sidebar-size); - transition: max-width var(--animation-duration) ease-out; -} -body.sidebar-visible .sidebar-inner { - box-shadow: var(--shadow-right); -} -body.sidebar-visible .fab-container { - visibility: visible; -} -body.sidebar-visible .content-left { - z-index: 4; -} - -body.preview-sidebar-visible .content-dimmer { - visibility: visible; - opacity: 1; -} -body.preview-sidebar-visible .preview-sidebar { - width: 70vw; - max-width: var(--preview-sidebar-expanded-width); - box-shadow: var(--shadow-left); -} -body.preview-sidebar-visible .content-right { - z-index: 5; -} -body.preview-sidebar-visible .fab-container-right-inner1 { - width: 70vw; - max-width: var(--preview-sidebar-expanded-width); -} -body.preview-sidebar-visible .fab-container { - visibility: visible; -} -body.sidebar-visible .fab-container-item.fab-container-item-popup-preview, -body.preview-sidebar-visible .fab-container-item.fab-container-item-popup-preview { - display: block; -} - -/* Quick start guide image styles */ -#action-popup { - float: left; - width: 30%; - height: 30%; - margin: 1.5em 0 1.5em 1.5em; -} - -#action-popup-container { - display: flex; -} - -.quick-start-img { - border-top: var(--thin-border-size) solid var(--separator-color2); - display: block; - margin: auto; - width: 75%; - height: 75%; -} - -/* Specialized settings styles */ -#audio-source-list>div+div { - margin-top: 0.375em; -} -#audio-source-list .generic-list-index-prefix { - width: 2em; - text-align: center; -} -#audio-source-list-empty { - display: none; -} -.audio-source { - display: flex; - flex-flow: row nowrap; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.audio-source-inner { - margin: 0 0.375em; - flex: 1 1 auto; - display: flex; - flex-flow: row wrap; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.audio-source-type-select { - flex: 1 0 auto; - width: calc(var(--input-width-large) + 2em); - margin: 0.125em 0; -} -.audio-source-parameter-container { - margin: 0.125em 0; - flex: 1e8 1 auto; - flex-flow: row nowrap; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.audio-source-parameter-container:not([hidden]) { - display: flex; -} -.audio-source-parameter-label { - flex: 0 0 auto; - margin: 0 0.375em; -} -.audio-source-parameter { - flex: 1 1 auto; -} -.audio-source-parameter, -input.audio-source-parameter { - width: var(--input-width); -} - -#audio-source-move-up>span.icon-button-inner, -#audio-source-move-down>span.icon-button-inner { - width: 26px; -} - -.profile-add-button-container { - display: flex; - flex-flow: row nowrap; - justify-content: flex-end; -} -.profile-entry-header { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.profile-entry-header-text { - font-size: var(--font-size-small); - line-height: 1; - text-align: left; -} -.profile-entry { - width: 100%; - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-bottom: 0.25em; -} -.profile-entry-cell:nth-child(1) { - flex: 0 0 auto; - min-width: 2em; - text-align: center; -} -.profile-entry-cell:nth-child(2) { - flex: 0 0 auto; - text-align: center; - width: 3.5em; -} -.profile-entry-cell:nth-child(3) { - flex: 1 1 auto; -} -.profile-entry-cell:nth-child(4) { - flex: 0 0 auto; - min-width: 4em; - text-align: center; - align-self: stretch; -} -.profile-entry-cell:nth-child(5) { - flex: 0 0 auto; - width: 2.75em; - text-align: right; -} -input[type=text].profile-entry-name-input { - width: 100%; -} -.profile-entry-condition-count-link { - display: flex; - flex-flow: row nowrap; - width: 100%; - height: 100%; - align-items: center; - justify-content: center; -} - -.profile-condition-groups { - margin-left: calc(var(--modal-padding-horizontal) * -1); - margin-right: calc(var(--modal-padding-horizontal) * -1); - padding-left: var(--modal-padding-horizontal); - padding-right: var(--modal-padding-horizontal); - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.profile-condition-group-list-info { - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: center; - margin-top: 0.5em; -} -.profile-condition-group-list-info-space { - flex: 1 1 auto; -} -.profile-condition-groups-empty-info { - flex: 1 1 auto; -} -.profile-condition-groups:not(:empty)+.profile-condition-group-list-info>.profile-condition-groups-empty-info { - display: none; -} -.profile-condition-group { - margin-top: 0.5em; - margin-bottom: 0.5em; -} -.profile-condition-list-info { - width: 100%; - display: flex; - align-items: center; - margin-bottom: 1em; -} -.profile-condition-list-info-space { - flex: 1 1 auto; -} -.profile-condition-group-separator-label { - width: 2.5em; - text-align: center; - margin-right: 0.25em; -} -.profile-condition-group:last-child>.profile-condition-list-info>.profile-condition-group-separator-label { - display: none; -} - -.profile-condition { - display: flex; - width: 100%; - flex-flow: row nowrap; - align-items: flex-start; - margin-bottom: 0.25em; -} -.profile-condition-inner { - display: flex; - width: 100%; - flex-flow: row wrap; - align-items: center; - margin-top: -0.25em; - margin-left: -0.25em; -} -.profile-condition-inner>* { - margin-left: 0.25em; - margin-top: 0.25em; -} -.profile-condition-prefix { - width: 2.5em; - text-align: center; - flex: 0 0 auto; - height: var(--input-height); - display: flex; - align-items: center; - justify-content: center; - margin-right: 0.25em; -} -.profile-condition-prefix::after { - content: 'if'; -} -.profile-condition:nth-child(n+2)>.profile-condition-prefix::after { - content: 'and'; -} -select.profile-condition-type, -select.profile-condition-operator { - width: auto; - padding-left: 1em; - padding-right: 1em; - flex: 1 0 auto; -} -.profile-condition-input-container { - flex: 1000000 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.profile-condition-input { - width: 100%; - flex: 1 1 auto; -} -.profile-condition-menu-button-container { - margin-left: 0.25em; -} - -.icon[data-icon=big-circle] { background-image: url('/images/big-circle.svg'); } -.icon[data-icon=small-circle] { background-image: url('/images/small-circle.svg'); } -.icon[data-icon=big-square] { background-image: url('/images/big-square.svg'); } -.icon[data-icon=big-diamond] { background-image: url('/images/big-diamond.svg'); } -.icon.select-icon { - padding-left: 30px; - background-repeat: no-repeat; - background-position: 5px center; - background-size: 20px 20px; -} - -.anki-card-fields { - display: grid; - grid-template-columns: auto 1fr; - grid-template-rows: auto; - align-items: center; - width: 100%; - margin-top: 0.5em; - gap: 0.5em; -} - -.anki-card-field-input-header { - font-weight: bold; -} -.anki-card-field-overwrite-header { - display: none; - font-weight: bold; -} - -.anki-card-field-name-container { - display: flex; - flex-flow: row nowrap; - align-self: stretch; - align-items: center; - margin-top: 0.25em; - padding: 0 0.25em; -} -.anki-card-field-name-container[data-invalid=true], -.anki-card-field-name-container[data-order-matches=false][data-index='0'] { - background-color: var(--danger-color-lightest); - border-radius: var(--input-border-radius); -} -.anki-card-field-name { - flex: 1 1 auto; -} -.anki-card-field-value-container { - width: 100%; - margin-top: 0.25em; -} -.anki-card-field-overwrite-container { - display: none; -} - -#anki-card-primary[data-anki-duplicate-behavior='overwrite'] .anki-card-fields { - grid-template-columns: auto 1fr 1fr; -} -#anki-card-primary[data-anki-duplicate-behavior='overwrite'] .anki-card-field-overwrite-header { - display: block; -} -#anki-card-primary[data-anki-duplicate-behavior='overwrite'] .anki-card-field-overwrite-container { - display: block; -} - -.anki-card-delete-format { - display: flex; - flex-flow: row nowrap; - align-items: center; - justify-content: flex-end; - padding: 0.5em 0; -} - -input.anki-card-field-value { - flex: 1 1 auto; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -#anki-error-message-details { - margin-top: 0.25em; - font-family: 'Courier New', Courier, monospace; - white-space: pre; - overflow-x: auto; -} - -.anki-field-marker-info-table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; -} -.anki-field-marker-info-table tr.anki-field-marker-info-table-heading { - font-weight: bold; - background-color: var(--input-background-color); -} -.anki-field-marker-info-table td { - vertical-align: top; - border: 1px solid var(--separator-color1); - margin: 0; - padding: 0.25em; -} -.anki-field-marker-info-table td:nth-child(n+2) { - border-left: none; -} -.anki-field-marker-info-table td:nth-last-child(n+2) { - border-right: none; -} -code.anki-field-marker { - white-space: nowrap; - font-size: 0.85em; - font-weight: bold; -} - -.anki-card-templates-layout { - display: flex; - flex-flow: column nowrap; -} -.anki-card-templates-info { - flex: 0 1 auto; -} -.anki-card-templates-test-input-container { - width: 100%; -} -.anki-card-templates-test-container { - flex: 0 1 auto; -} -.anki-card-templates-test-table { - display: grid; - grid-template-columns: auto 1fr auto; - grid-template-rows: auto; - align-items: center; - width: 100%; - box-sizing: border-box; - column-gap: 0.85em; -} -.anki-card-templates-test-table-header { - font-size: var(--font-size-small); -} -#anki-card-templates-textarea { - flex: 1 1 auto; - width: 100%; - max-width: 100%; - box-sizing: border-box; - resize: none; - min-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); -} - -.generate-anki-notes-layout { - display: flex; - flex-flow: column nowrap; -} -.generate-anki-notes-info { - flex: 0 1 auto; -} -.generate-anki-notes-test-container { - flex: 0 1 auto; -} -.generate-anki-notes-test-table { - display: grid; - grid-template-columns: 1fr auto; - grid-template-rows: auto; - align-items: center; - width: 100%; - box-sizing: border-box; - column-gap: 0.85em; -} -.generate-anki-notes-test-table-header { - font-size: var(--font-size-small); -} -#generate-anki-notes-textarea { - flex: 1 1 auto; - width: 100%; - max-width: 100%; - box-sizing: border-box; - resize: none; - min-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); -} -#generate-anki-notes-test-text-input { - width: 100%; -} - -#generate-anki-notes-buttons-wrapper { - display: flex; - justify-content: space-between; -} - -.code { - flex: 0 0 auto; - width: 100%; - max-width: 100%; - min-height: calc(var(--textarea-line-height) + var(--textarea-padding) * 2); - box-sizing: border-box; - padding: var(--textarea-padding); - font-family: 'Courier New', Courier, monospace; - background-color: var(--input-background-color); - border: none; - border-radius: var(--input-border-radius); - line-height: var(--textarea-line-height); - overflow: auto; - white-space: pre; -} - -.custom-popup-css-container { - display: flex; - flex-flow: column nowrap; -} -.custom-popup-css-header { - font-size: var(--font-size-small); -} -#custom-popup-css, -#custom-popup-outer-css { - flex: 1 1 auto; - width: 100%; - max-width: 100%; - box-sizing: border-box; - resize: none; - min-height: calc(var(--textarea-line-height) * 5 + var(--textarea-padding) * 2); -} - -.scan-input-list { - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.scan-input { - margin: 0.5em 0; -} -.scan-input+.scan-input { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.scan-input-grid { - display: grid; - grid-template-columns: auto auto 1fr auto; - grid-template-rows: auto; - width: 100%; - column-gap: 0.25em; - row-gap: 0.25em; - margin: 0.5em 0; - padding: 0 var(--modal-padding-horizontal); - box-sizing: border-box; -} -.scan-input-menu-button-cell { - grid-area: 1/4/2/5; -} -.scan-input-index-cell { - grid-area: 1/1/2/2; - align-self: center; - width: 2em; - text-align: center; -} -.scan-input-prefix-cell { - align-self: center; - padding-right: 0.5em; - display: flex; - flex-flow: row nowrap; - align-items: center; - white-space: nowrap; -} -.scan-input-content-cell { - width: 100%; -} -.scan-input-prefix-cell[data-property=include] { - grid-area: 1/2/2/3; -} -.scan-input-prefix-cell[data-property=exclude] { - grid-area: 2/2/3/3; -} -.scan-input-prefix-cell[data-property=types] { - grid-area: 3/2/4/3; -} -.scan-input-prefix-cell[data-property=search-options] { - grid-area: 4/2/5/3; -} -.scan-input-prefix-cell[data-property=touch-options] { - grid-area: 5/2/6/3; -} -.scan-input-prefix-cell[data-property=pen-options] { - grid-area: 6/2/7/3; -} -.scan-input-content-cell[data-property=include] { - grid-area: 1/3/2/4; -} -.scan-input-content-cell[data-property=exclude] { - grid-area: 2/3/3/4; -} -.scan-input-content-cell[data-property=types] { - grid-area: 3/3/4/4; - display: flex; - flex-flow: row wrap; - align-items: center; -} -.scan-input-content-cell[data-property=search-options] { - grid-area: 4/3/5/4; - display: flex; - flex-flow: row wrap; - align-items: center; -} -.scan-input-content-cell[data-property=touch-options] { - grid-area: 5/3/6/4; - display: flex; - flex-flow: column nowrap; - align-items: flex-start; -} -.scan-input-content-cell[data-property=pen-options] { - grid-area: 6/3/7/4; - display: flex; - flex-flow: column nowrap; - align-items: flex-start; -} -.scan-input-options-cell { - padding: 0.25em 0; - align-self: start; -} -.scan-input:not([data-show-advanced=true]) .scan-input-advanced-only { - display: none; -} -.scan-input-checkbox-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-right: 0.75em; - cursor: pointer; -} -.scan-input-checkbox-item>span { - padding-left: 0.375em; -} -.scan-input-option-heading { - font-weight: bold; -} -.scan-input-option-group { - display: flex; - flex-flow: column nowrap; - padding-left: 1.5em; - align-items: flex-start; -} - -.translation-text-replacement-entry { - display: grid; - grid-template-columns: auto auto 1fr auto; - grid-template-rows: auto; - grid-template-areas: - 'index pattern-label pattern button' - '. replacement-label replacement button' - '. test-label test .'; - column-gap: 0.25em; - row-gap: 0.25em; - align-items: stretch; - justify-items: stretch; -} -.translation-text-replacement-entry+.translation-text-replacement-entry { - margin-top: 0.5em; -} -.translation-text-replacement-index { - grid-area: index; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-pattern-label { - grid-area: pattern-label; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-replacement-label { - grid-area: replacement-label; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-pattern-container { - grid-area: pattern; - align-self: stretch; - justify-self: stretch; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -.translation-text-replacement-replacement-container { - grid-area: replacement; - align-self: stretch; - justify-self: stretch; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -input.translation-text-replacement-pattern, -input.translation-text-replacement-replacement { - flex: 1 1 auto; - width: auto; -} -.translation-text-replacement-checkbox-container { - white-space: nowrap; - display: flex; - flex-flow: row nowrap; - align-items: center; - padding-left: 0.5em; -} -.translation-text-replacement-checkbox-label { - padding-left: 0.5em; -} -.translation-text-replacement-button { - grid-area: button; - align-self: center; - justify-self: start; -} -.translation-text-replacement-test-label { - grid-area: test-label; - align-self: center; - justify-self: start; - padding-right: 0.5em; -} -.translation-text-replacement-test-container { - grid-area: test; - align-self: stretch; - justify-self: stretch; - display: flex; - flex-flow: row nowrap; - align-items: stretch; -} -input.translation-text-replacement-test-input, -input.translation-text-replacement-test-output { - flex: 1 1 auto; - width: auto; -} -.translation-text-replacement-test-label-inner { - grid-area: button; - align-self: center; - justify-self: start; - flex: 0 0 auto; - padding: 0 0.5em; - white-space: nowrap; -} -.translation-text-replacement-entry:not([data-test-visible=true]) .translation-text-replacement-test-node { - display: none; -} - -.sentence-termination-character-list-table { - width: 100%; - table-layout: fixed; - border-spacing: 0.25em; - margin-top: 0.5em; - min-width: 400px; -} -.sentence-termination-character-list-table thead td { - white-space: nowrap; - font-size: var(--font-size-small); - line-height: 1; - text-align: left; - vertical-align: bottom; - font-weight: normal; -} -.sentence-termination-character-list-table td { - vertical-align: middle; - padding: 0; -} -.sentence-termination-character-list-table td:nth-child(1) { - width: 2em; -} -.sentence-termination-character-list-table td:nth-child(2) { - width: 4em; -} -.sentence-termination-character-list-table td:nth-child(3) { - width: 25%; -} -.sentence-termination-character-list-table td:nth-child(4) { - width: 18.5%; -} -.sentence-termination-character-list-table td:nth-child(5) { - width: 18.5%; -} -.sentence-termination-character-list-table td:nth-child(6) { - width: 40%; -} -.sentence-termination-character-list-table td:nth-child(7) { - width: 3em; -} -select.sentence-termination-character-type, -input.sentence-termination-character-input1, -input.sentence-termination-character-input2 { - width: 100%; -} -.sentence-termination-character-input2-alt { - text-align: center; -} -.sentence-termination-character-entry:not([data-type=quote]) .sentence-termination-character-input2 { - display: none; -} -.sentence-termination-character-entry[data-type=quote] .sentence-termination-character-input2-alt { - display: none; -} -.sentence-termination-character-include-list { - display: flex; - flex-flow: row nowrap; -} -.sentence-termination-character-include { - display: flex; - flex-flow: row nowrap; - white-space: nowrap; - align-items: center; -} -.sentence-termination-character-include>:first-child { - margin-right: 0.375em; -} -.sentence-termination-character-include+.sentence-termination-character-include { - margin-left: 1em; -} -#sentence-termination-character-list-empty { - flex: 0 1 auto; - margin-top: 0.5em; -} - -.hotkey-list { - margin: 0 calc(var(--modal-padding-horizontal) * -1); -} -.hotkey-list-item { - margin: 0.5em 0; -} -.hotkey-list-item+.hotkey-list-item { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.hotkey-list-item-grid { - display: grid; - grid-template-columns: auto auto 1fr auto; - grid-template-rows: auto; - grid-template-areas: - 'index input-label input button' - '. action-label action .'; - width: 100%; - column-gap: 0.25em; - row-gap: 0.25em; - margin: 0.5em 0; - padding: 0 var(--modal-padding-horizontal); - box-sizing: border-box; -} -.hotkey-list-item-index-cell { - grid-area: index; - align-self: center; - text-align: center; - width: 2em; -} -.hotkey-list-item-button-cell { - grid-area: button; - align-self: center; -} -.hotkey-list-item-input-label-cell { - grid-area: input-label; - align-self: center; -} -.hotkey-list-item-input-cell { - grid-area: input; - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: stretch; - align-self: center; -} -.hotkey-list-item-input { - flex: 1 1 auto; -} -.hotkey-list-item-action-label-cell { - grid-area: action-label; - align-self: center; -} -.hotkey-list-item-action-cell { - grid-area: action; - align-self: center; - display: flex; - flex-flow: row nowrap; - width: 100%; - align-items: center; -} -.hotkey-list-item-action { - flex: 1 1 auto; -} -.hotkey-list-item-enabled-button-container { - margin-left: 0.375em; -} -button.hotkey-list-item-enabled-button { - display: flex; - flex-flow: row nowrap; - align-items: stretch; - width: auto; -} -button.hotkey-list-item-enabled-button[data-scope-count='0'] { - text-decoration: line-through; -} -.hotkey-list-item-enabled-button-label { - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.hotkey-list-item-enabled-button-label>.checkbox { - margin-right: 0.5em; -} -.hotkey-list-item-action-argument-container { - margin-left: 0.375em; - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: stretch; - width: var(--input-width-large); -} -.hotkey-argument-label { - margin-right: 0.25em; -} -.hotkey-list-item-flex-row { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.hotkey-list-item-flex-row-label { - margin: 0 0.5em 0 1em; -} - -.hotkey-scope-popup-menu-item-label { - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.hotkey-scope-popup-menu-item-label>.checkbox { - margin-right: 0.5em; -} - -.inline-icon { - position: relative; - width: calc(1em * (16 / var(--font-size-no-units))); - height: calc(1em * (16 / var(--font-size-no-units))); - top: calc(1em * (3 / var(--font-size-no-units))); -} - -.badge { - position: relative; - width: var(--badge-size); - height: var(--badge-size); - margin: 0; - padding: 0; - border-radius: 50%; - box-shadow: var(--shadow-vertical); -} -.badge:not([hidden]) { - display: block; -} -.badge>.icon { - display: block; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -.badge.badge-small-icon>.icon { - margin: calc(1em / var(--font-size-no-units)); -} -.badge.info-badge { - background-color: var(--accent-color-lighter); -} -.badge.info-badge>.icon { - background-color: var(--accent-color); -} -.badge.warning-badge { - background-color: var(--warning-color-light); -} -.badge.warning-badge>.icon { - background-color: var(--warning-color); -} -.badge.danger-badge { - background-color: var(--danger-color-lighter); -} -.badge.danger-badge>.icon { - background-color: var(--danger-color); -} - -.collapsible-dictionary-list { - width: 100%; - display: flex; - flex-flow: column nowrap; - align-items: stretch; -} -.collapsible-dictionary-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-left: calc(var(--modal-padding-horizontal) * -1); - margin-right: calc(var(--modal-padding-horizontal) * -1); - padding: var(--settings-group-inner-horizontal-padding-fourth) var(--modal-padding-horizontal); -} -.collapsible-dictionary-item:not(:first-child) { - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.collapsible-dictionary-cell { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.collapsible-dictionary-cell:first-of-type { - flex: 1 1 auto; -} -.collapsible-dictionary-cell:not(:first-of-type) { - flex: 0 0 auto; - margin-left: 1em; -} -.collapsible-dictionary-cell-label { - margin-left: 0.375em; -} - -.page-loading-stalled-notification { - border: 1px solid var(--danger-color); -} -:root:not([data-loading-stalled=true]) .page-loading-stalled-notification { - display: none; -} - -.warn-custom-templates-notification { - border: 1px solid var(--danger-color); -} -:root:not([data-warn-custom-templates=true]) .warn-custom-templates-notification { - display: none; -} - -.test-anki-note-viewer-container { - margin-top: 0.85em; - display: flex; - flex-flow: row wrap; - align-items: flex-start; -} -.test-anki-note-viewer-container>:nth-child(n+2) { - margin-left: 0.5em; -} -.test-anki-note-viewer-button { - flex: 0 0 auto; -} -.test-anki-note-viewer-results { - align-self: center; -} -.test-anki-note-viewer-results[data-success=true] { - color: var(--success-color); -} -.test-anki-note-viewer-results[data-success=false] { - color: var(--danger-color); -} - - -/* Dictionary settings */ -.dictionary-list { - width: 100%; - display: grid; - grid-template-columns: auto auto 1fr auto auto auto; - grid-template-rows: auto; - place-items: center start; - margin-top: 0.5em; -} -.dictionary-list-index { - margin-right: 0.5em; -} -.dictionary-list[data-count='0']>.dictionary-item-top { - display: none; -} -.dictionary-item-button-height { - height: var(--icon-button-size); -} -.dictionary-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - border-top: var(--thin-border-size) solid var(--separator-color2); -} -.dictionary-item-enabled-toggle-container { - margin-right: 0.5em; -} -.dictionary-item-title-container { - flex: 1 1 auto; - display: flex; - flex-flow: row nowrap; - align-items: center; - margin-right: 0.5em; - overflow-wrap: anywhere; -} -.dictionary-title { - color: inherit; - transition: color var(--animation-duration) ease-in-out; -} -.dictionary-item[data-enabled=false] .dictionary-title { - color: var(--text-color-light2); -} -.dictionary-outdated-button, -.dictionary-update-available, -.dictionary-integrity-button-check, -.dictionary-integrity-button-warning, -.dictionary-integrity-button-error { - --button-content-color: transparent; - --button-border-color: transparent; - --button-background-color: transparent; - --button-shadow: none; - - --button-hover-content-color: transparent; - --button-hover-border-color: transparent; - --button-hover-background-color: transparent; - --button-hover-shadow: none; - - --button-active-content-color: transparent; - --button-active-border-color: transparent; - --button-active-background-color: transparent; - --button-active-shadow: none; - - --button-disabled-content-color: transparent; - --button-disabled-border-color: transparent; - --button-disabled-background-color: transparent; - --button-disabled-shadow: none; - - --button-padding-vertical: 0; - --button-padding-horizontal: 0; - - margin-left: 0.375em; -} -.dictionary-details-table { - display: table; - width: 100%; -} -.dictionary-details-entry { - display: table-row; -} -.dictionary-details-entry+.dictionary-details-entry>* { - padding-top: 0.25em; -} -.dictionary-details-entry-label { - display: table-cell; - font-weight: bold; - white-space: nowrap; - padding-right: 0.5em; -} -.dictionary-details-entry-info { - display: table-cell; - white-space: pre-line; -} - -#dictionary-alias-input { - width: 100%; -} - -#dictionary-move-up>span.icon-button-inner, -#dictionary-move-down>span.icon-button-inner { - width: 26px; -} - -/* Secondary search dictionary settings */ -.secondary-search-dictionary-list { - margin-top: 0.5em; -} -.secondary-search-dictionary-item { - padding: 0.375em 0; -} - - -/* Dictionary Import */ -#dictionary-import-url-text { - width: 100%; - height: 4em; - text-wrap: nowrap; - resize: none; -} - -#dictionary-import-url-button { - flex: auto; -} - -#dictionary-drop-file-zone { - transition: background-color var(--animation-duration) ease-in-out, border var(--animation-duration) ease-in-out; - border: 2px dashed var(--dictionary-import-border-color); - border-radius: 5px; - flex: auto; - min-height: 20em; - user-select: none; - text-align: center; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; -} - -#dictionary-drop-file-zone:hover { - background-color: var(--dictionary-import-hover-background-color); - border: 2px dashed var(--accent-color); -} - -#dictionary-drop-file-zone.drag-over { - border: 2px solid var(--accent-color); - background-color: var(--dictionary-import-border-color-hover); -} - -#dictionary-drag-drop-text { - pointer-events: none; -} - -#dictionary-drag-drop-text>.icon { - display: block; - margin: auto; - background-color: var(--button-default-icon-color); - width: var(--outline-item-icon-size); - height: var(--outline-item-icon-size); -} - -#dictionary-drag-drop-text h1, -#dictionary-drag-drop-text h5 { - margin: 0; - padding: 0; - font-weight: normal; - border-bottom: none; -} - -#dictionary-import-modal .modal-body:has(#dictionary-drop-file-zone) { - display: flex; -} - - -/* Generic layouts */ -.margin-above { - margin-top: 0.85em; -} -.margin-left { - margin-left: 0.85em; -} - -.horizontal-flex { - display: flex; - flex-flow: row wrap; - margin-left: -0.375em; - align-items: center; - align-content: flex-start; - justify-content: flex-start; -} -.horizontal-flex.horizontal-flex-nowrap { - flex-wrap: nowrap; - margin-left: 0; -} -.horizontal-flex>* { - margin-left: 0.375em; -} -.horizontal-flex.horizontal-flex-nowrap>*:first-child { - margin-left: 0; -} -.horizontal-flex-fill { - flex-grow: 1; -} - -.generic-list { - counter-reset: generic-list-index; -} -.generic-list-index-prefix::after { - counter-increment: generic-list-index; - content: counter(generic-list-index); -} -.generic-list:not(:empty)~.generic-list-empty-indicator { - display: none; -} - -.flex-row-nowrap { - display: flex; - flex-flow: row nowrap; - align-items: center; - width: 100%; -} -.flex-row-nowrap.right { - justify-content: flex-end; -} -.flex-row-wrap { - display: flex; - flex-flow: row wrap; - align-items: center; -} -.flex-margin-left { - margin-left: 0.5em; -} - -.flex-column-nowrap { - display: flex; - flex-flow: column nowrap; - align-items: flex-start; - width: 100%; -} -.flex-column-nowrap-spaced>* { - margin-top: 0.25em; -} - -.flex-label { - display: flex; - flex-flow: row nowrap; - align-items: center; -} -.flex-label>span { - margin-left: 0.375em; -} -.flex-label.no-wrap>span { - white-space: nowrap; -} - -.no-wrap { - white-space: nowrap; -} -.overflow-wrap { - word-break: break-all; -} - -.input-prevention-option-list { - margin-top: 0.375em; - display: flex; - flex-flow: column nowrap; - align-items: flex-start; - width: 100%; - padding-left: 0.5em; - box-sizing: border-box; -} -.input-prevention-option-list-item { - display: flex; - flex-flow: row nowrap; - align-items: center; - width: 100%; -} -.input-prevention-option-list-item>:first-child { - flex: 0 0 auto; -} -.input-prevention-option-list-item>:not(:first-child) { - margin-left: 0.375em; - flex: 1 1 auto; -} - -.legal-npm { - flex-grow: 1; - height: 250px; - padding: 0.5em 1em; - border: 0; -} - -/* Environment-specific display */ -:root[data-browser=unknown] [data-show-for-browser], -:root[data-browser=unknown] [data-hide-for-browser], -:root[data-browser=edge] [data-show-for-browser]:not([data-show-for-browser~=edge]), -:root[data-browser=edge-legacy] [data-show-for-browser]:not([data-show-for-browser~=edge-legacy]), -:root[data-browser=chrome] [data-show-for-browser]:not([data-show-for-browser~=chrome]), -:root[data-browser=safari] [data-show-for-browser]:not([data-show-for-browser~=safari]), -:root[data-browser=firefox] [data-show-for-browser]:not([data-show-for-browser~=firefox]), -:root[data-browser=firefox-mobile] [data-show-for-browser]:not([data-show-for-browser~=firefox-mobile]), -:root[data-browser=edge] [data-hide-for-browser~=edge], -:root[data-browser=edge-legacy] [data-hide-for-browser~=edge-legacy], -:root[data-browser=chrome] [data-hide-for-browser~=chrome], -:root[data-browser=safari] [data-hide-for-browser~=safari], -:root[data-browser=firefox] [data-hide-for-browser~=firefox], -:root[data-browser=firefox-mobile] [data-hide-for-browser~=firefox-mobile] { - display: none; -} - -:root[data-os=unknown] [data-show-for-os], -:root[data-os=unknown] [data-hide-for-os], -:root[data-os=mac] [data-show-for-os]:not([data-show-for-os~=mac]), -:root[data-os=win] [data-show-for-os]:not([data-show-for-os~=win]), -:root[data-os=android] [data-show-for-os]:not([data-show-for-os~=android]), -:root[data-os=cros] [data-show-for-os]:not([data-show-for-os~=cros]), -:root[data-os=linux] [data-show-for-os]:not([data-show-for-os~=linux]), -:root[data-os=openbsd] [data-show-for-os]:not([data-show-for-os~=openbsd]), -:root[data-os=mac] [data-hide-for-os~=mac], -:root[data-os=win] [data-hide-for-os~=win], -:root[data-os=android] [data-hide-for-os~=android], -:root[data-os=cros] [data-hide-for-os~=cros], -:root[data-os=linux] [data-hide-for-os~=linux], -:root[data-os=openbsd] [data-hide-for-os~=openbsd] { - display: none; -} - -:root[data-manifest-version=unknown] [data-show-for-manifest-version], -:root[data-manifest-version=unknown] [data-hide-for-manifest-version], -:root[data-manifest-version='2'] [data-show-for-manifest-version]:not([data-show-for-manifest-version~='2']), -:root[data-manifest-version='3'] [data-show-for-manifest-version]:not([data-show-for-manifest-version~='3']), -:root[data-manifest-version='2'] [data-hide-for-manifest-version~='2'], -:root[data-manifest-version='3'] [data-hide-for-manifest-version~='3'] { - display: none; -} - -/* Media-specific styles */ -@media (max-width: 800px), (hover: none) and (max-width: 1100px) { - .fab-container { - visibility: visible; - } -} -@media (max-width: 700px) { - .sidebar-inner { - box-shadow: var(--shadow-right); - } - :root { - --custom-css-dim-size: 100%; - --custom-css-modal-background: var(--dim-background-color); - } -} - -/* Mobile overrides */ - -/* Treat devices that can't hover as mobile devices */ -@media (hover: none) { - #audio-source-move-up>span.icon-button-inner, - #audio-source-move-down>span.icon-button-inner, - #dictionary-move-up>span.icon-button-inner, - #dictionary-move-down>span.icon-button-inner { - width: 36px; - } -} - -/* Dark mode before themes are applied - DO NOT use this for normal theming */ -@media (prefers-color-scheme: dark) { - :root:not([data-loaded=true]) { - background-color: #1e1e1e; - } -} diff --git a/vendor/yomitan/css/structured-content.css b/vendor/yomitan/css/structured-content.css deleted file mode 100644 index 11be9ebd..00000000 --- a/vendor/yomitan/css/structured-content.css +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the entrys of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* Glossary images */ -.gloss-image-container { - display: inline-block; - white-space: nowrap; - max-width: 100%; - max-height: 100vh; - position: relative; - vertical-align: top; - line-height: 0; - font-size: calc(1em / var(--font-size-no-units)); - overflow: hidden; -} -.gloss-image-link[data-background=true]>.gloss-image-container { - background-color: var(--gloss-image-background-color); -} -.gloss-image-link { - cursor: inherit; - color: var(--accent-color); - display: inline-block; - position: relative; - line-height: 1; - max-width: 100%; -} -.gloss-image-link:hover { - color: var(--accent-color-dark); - cursor: pointer; -} -.gloss-image-container-overlay { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - font-size: calc(1em * var(--font-size-no-units)); - line-height: var(--line-height); - display: table; - table-layout: fixed; - white-space: normal; - color: var(--text-color-light3); -} -.gloss-image-link[data-has-image=true][data-image-load-state=load-error] .gloss-image-container-overlay::after { - content: 'Image failed to load'; - display: table-cell; - width: 100%; - height: 100%; - vertical-align: middle; - text-align: center; - padding: 0.25em; -} -.gloss-image-background { - --image: none; - - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: var(--text-color); - -webkit-mask-repeat: no-repeat; - -webkit-mask-position: center center; - -webkit-mask-mode: alpha; - -webkit-mask-size: contain; - -webkit-mask-image: var(--image); - mask-repeat: no-repeat; - mask-position: center center; - mask-mode: alpha; - mask-size: contain; - mask-image: var(--image); - display: none; -} -.gloss-image { - display: inline-block; - vertical-align: top; - object-fit: contain; - border: none; - outline: none; -} -.gloss-image-link[data-has-aspect-ratio=true] .gloss-image { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; -} -.gloss-image-link[data-image-rendering=pixelated] .gloss-image, -.gloss-image-link[data-image-rendering=pixelated] .gloss-image-background { - image-rendering: auto; - image-rendering: -moz-crisp-edges; - image-rendering: -webkit-optimize-contrast; - image-rendering: pixelated; - image-rendering: crisp-edges; -} -.gloss-image-link[data-image-rendering=crisp-edges] .gloss-image, -.gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background { - image-rendering: auto; - image-rendering: -moz-crisp-edges; - image-rendering: -webkit-optimize-contrast; - image-rendering: crisp-edges; -} -:root[data-browser=firefox] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image, -:root[data-browser=firefox] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background, -:root[data-browser=firefox-mobile] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image, -:root[data-browser=firefox-mobile] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background { - image-rendering: auto; -} -.gloss-image-link[data-has-aspect-ratio=true] .gloss-image-sizer { - display: inline-block; - width: 0; - vertical-align: top; - font-size: 0; -} -.gloss-image-link-text { - display: none; - line-height: var(--line-height); -} -.gloss-image-link-text::before { - content: '['; -} -.gloss-image-link-text::after { - content: ']'; -} -.gloss-image-description { - display: block; - white-space: pre-line; -} - -.gloss-image-link[data-appearance=monochrome] .gloss-image { - /* Workaround for coloring monochrome gloss images due to issues with masking using a canvas without loading extra media */ - /* drop-shadow with 0.01px blur is at minimum required for Firefox to render the shadow when used on a canvas */ - --shadow-settings: 0 0 0.01px var(--text-color); - filter: grayscale(1) opacity(0.5) drop-shadow(var(--shadow-settings)) drop-shadow(var(--shadow-settings)) saturate(1000%) brightness(1000%); -} - -.gloss-image-link[data-size-units=em] .gloss-image-container { - font-size: 1em; -} - -.gloss-image-link[data-vertical-align=baseline] { vertical-align: baseline; } -.gloss-image-link[data-vertical-align=sub] { vertical-align: sub; } -.gloss-image-link[data-vertical-align=super] { vertical-align: super; } -.gloss-image-link[data-vertical-align=text-top] { vertical-align: top; } -.gloss-image-link[data-vertical-align=text-bottom] { vertical-align: bottom; } -.gloss-image-link[data-vertical-align=middle] { vertical-align: middle; } -.gloss-image-link[data-vertical-align=top] { vertical-align: top; } -.gloss-image-link[data-vertical-align=bottom] { vertical-align: bottom; } -.gloss-image-link[data-collapsed=true], -:root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true] { - vertical-align: baseline; -} - -.gloss-image-link[data-collapsed=true] .gloss-image-container, -:root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true] .gloss-image-container { - display: none; - position: absolute; - left: 0; - top: 100%; - z-index: 1; -} -.entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsed=true] .gloss-image-container, -:root[data-glossary-layout-mode^=compact] .entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsible=true] .gloss-image-container, -:root[data-glossary-layout-mode^=compact] .definition-item:nth-last-of-type(1) .gloss-image-link[data-collapsible=true] .gloss-image-container { - bottom: 100%; - top: auto; -} -.gloss-image-link[data-collapsed=true]:hover .gloss-image-container, -.gloss-image-link[data-collapsed=true]:focus .gloss-image-container, -:root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true]:hover .gloss-image-container, -:root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true]:focus .gloss-image-container { - display: block; -} -.gloss-image-link[data-collapsed=true] .gloss-image-link-text, -:root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true] .gloss-image-link-text { - display: inline; -} -.gloss-image-link[data-collapsed=true]~.gloss-image-description, -:root[data-glossary-layout-mode^=compact] .gloss-image-description { - display: inline; -} - - -/* Links */ -.gloss-link-text { - vertical-align: baseline; -} -.gloss-link-external-icon { - display: inline-block; - vertical-align: middle; - width: calc(16em / var(--font-size-no-units)); - height: calc(16em / var(--font-size-no-units)); - margin-left: 0.25em; - background-color: var(--link-color); - position: relative; -} - - -/* Structured content glossary styles */ -.gloss-sc-table-container { - display: block; -} -.gloss-sc-table { - table-layout: auto; - border-collapse: collapse; -} -.gloss-sc-thead, -.gloss-sc-tfoot, -.gloss-sc-th { - font-weight: bold; - background-color: var(--background-color-dark1); -} -.gloss-sc-th, -.gloss-sc-td { - border-width: calc(1em / var(--font-size-no-units)); - border-style: solid; - border-color: var(--text-color-light2); - padding: 0.25em; - vertical-align: top; -} -.gloss-sc-ol, -.gloss-sc-ul { - padding-left: var(--list-padding2); -} -:root[data-glossary-layout-mode^=compact] .gloss-sc-ul[data-sc-content=glossary] { - display: inline; - list-style: none; - padding-left: 0; -} -:root[data-glossary-layout-mode^=compact] .gloss-sc-ul[data-sc-content=glossary] .gloss-sc-li { - display: inline; -} -:root[data-glossary-layout-mode^=compact] .gloss-sc-ul[data-sc-content=glossary] .gloss-sc-li:not(:first-child)::before { - white-space: pre-wrap; - content: var(--compact-list-separator); - display: inline; - color: var(--text-color-light3); -} -.gloss-sc-details { - padding-left: var(--list-padding1); -} -.gloss-sc-summary { - list-style-position: outside; -} diff --git a/vendor/yomitan/css/visibility-modifiers.css b/vendor/yomitan/css/visibility-modifiers.css deleted file mode 100644 index 011ded4a..00000000 --- a/vendor/yomitan/css/visibility-modifiers.css +++ /dev/null @@ -1,21 +0,0 @@ -:root:not([data-debug=true]) .debug-only { - display: none; -} -:root:not([data-advanced=true]) .advanced-only { - display: none; -} -:root:not([data-advanced=false]) .basic-only { - display: none; -} -:root:not([data-language=ja]):not([data-language=zh]):not([data-language=yue]) .jpzhyue-only { - display: none; -} -:root:not([data-language=ja]):not([data-language=zh]):not([data-language=yue]):not([data-language=ko]) .jpzhyueko-only { - display: none; -} -:root:is([data-language=ja], [data-language=zh], [data-language=yue], [data-language=ko]) .not-jpzhyueko { - display: none; -} -:root:not([data-language=ja]) .jp-only { - display: none; -} \ No newline at end of file diff --git a/vendor/yomitan/data/anki-compact-gloss-style.js b/vendor/yomitan/data/anki-compact-gloss-style.js deleted file mode 100644 index 4060f55b..00000000 --- a/vendor/yomitan/data/anki-compact-gloss-style.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2019-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -const ANKI_COMPACT_GLOSS_STYLES = ` -ul[data-sc-content="glossary"] > li:not(:first-child)::before { - white-space: pre-wrap; - content: ' | '; - display: inline; - color: #777777; -} - -ul[data-sc-content="glossary"] > li { - display: inline; -} - -ul[data-sc-content="glossary"] { - display: inline; - list-style: none; - padding-left: 0; -} -`; - -/** - * @returns {string} - */ -export function getAnkiCompactGlossStyles() { - return ANKI_COMPACT_GLOSS_STYLES.trim(); -} diff --git a/vendor/yomitan/data/audio/fallback-bloop.mp3 b/vendor/yomitan/data/audio/fallback-bloop.mp3 deleted file mode 100644 index e3d94873..00000000 Binary files a/vendor/yomitan/data/audio/fallback-bloop.mp3 and /dev/null differ diff --git a/vendor/yomitan/data/audio/fallback-click.mp3 b/vendor/yomitan/data/audio/fallback-click.mp3 deleted file mode 100644 index 7a9728d1..00000000 Binary files a/vendor/yomitan/data/audio/fallback-click.mp3 and /dev/null differ diff --git a/vendor/yomitan/data/fonts/kanji-stroke-orders.ttf b/vendor/yomitan/data/fonts/kanji-stroke-orders.ttf deleted file mode 100644 index 154fa473..00000000 Binary files a/vendor/yomitan/data/fonts/kanji-stroke-orders.ttf and /dev/null differ diff --git a/vendor/yomitan/data/pronunciation-style.json b/vendor/yomitan/data/pronunciation-style.json deleted file mode 100644 index 3a69c567..00000000 --- a/vendor/yomitan/data/pronunciation-style.json +++ /dev/null @@ -1,166 +0,0 @@ -[ - { - "selectors": [".pronunciation-downstep-notation"], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".pronunciation-text"], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".pronunciation-mora"], - "styles": [ - ["display", "inline-block"], - ["position", "relative"] - ] - }, - { - "selectors": [".pronunciation-mora-line"], - "styles": [ - ["border-color", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-mora[data-pitch=high]>.pronunciation-mora-line"], - "styles": [ - ["display", "block"], - ["user-select", "none"], - ["pointer-events", "none"], - ["position", "absolute"], - ["top", "0.1em"], - ["left", "0"], - ["right", "0"], - ["height", "0"], - ["border-top-width", "0.1em"], - ["border-top-style", "solid"] - ] - }, - { - "selectors": [".pronunciation-mora[data-pitch=high][data-pitch-next=low]>.pronunciation-mora-line"], - "styles": [ - ["right", "-0.1em"], - ["height", "0.4em"], - ["border-right-width", "0.1em"], - ["border-right-style", "solid"] - ] - }, - { - "selectors": [".pronunciation-mora[data-pitch=high][data-pitch-next=low]"], - "styles": [ - ["padding-right", "0.1em"], - ["margin-right", "0.1em"] - ] - }, - { - "selectors": [".pronunciation-devoice-indicator"], - "styles": [ - ["display", "block"], - ["position", "absolute"], - ["left", "50%"], - ["top", "50%"], - ["width", "1.125em"], - ["height", "1.125em"], - ["border-radius", "50%"], - ["box-sizing", "border-box"], - ["z-index", "1"], - ["transform", "translate(-50%, -50%)"], - ["border", "1.5px dotted #c83c28"] - ] - }, - { - "selectors": [".pronunciation-nasal-indicator"], - "styles": [ - ["display", "block"], - ["position", "absolute"], - ["right", "-0.125em"], - ["top", "0.125em"], - ["width", "0.375em"], - ["height", "0.375em"], - ["border-radius", "50%"], - ["box-sizing", "border-box"], - ["z-index", "1"], - ["border", "1.5px solid #c83c28"] - ] - }, - { - "selectors": [".pronunciation-nasal-diacritic"], - "styles": [ - ["position", "absolute"], - ["width", "0"], - ["height", "0"], - ["opacity", "0"] - ] - }, - { - "selectors": [".pronunciation-character"], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".pronunciation-character-group"], - "styles": [ - ["display", "inline-block"], - ["position", "relative"] - ] - }, - { - "selectors": [".pronunciation-graph"], - "styles": [ - ["display", "inline-block"], - ["vertical-align", "middle"], - ["height", "1.5em"] - ] - }, - { - "selectors": [ - ".pronunciation-graph-line", - ".pronunciation-graph-line-tail" - ], - "styles": [ - ["fill", "none"], - ["stroke-width", "5"], - ["stroke", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-line-tail"], - "styles": [ - ["stroke-dasharray", "5 5"] - ] - }, - { - "selectors": [".pronunciation-graph-dot"], - "styles": [ - ["stroke-width", "5"], - ["fill", "currentColor"], - ["stroke", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-dot-downstep1"], - "styles": [ - ["fill", "none"], - ["stroke-width", "5"], - ["stroke", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-dot-downstep2"], - "styles": [ - ["fill", "currentColor"] - ] - }, - { - "selectors": [".pronunciation-graph-triangle"], - "styles": [ - ["fill", "none"], - ["stroke-width", "5"], - ["stroke", "currentColor"] - ] - } -] diff --git a/vendor/yomitan/data/recommended-dictionaries.json b/vendor/yomitan/data/recommended-dictionaries.json deleted file mode 100644 index 7ca6b473..00000000 --- a/vendor/yomitan/data/recommended-dictionaries.json +++ /dev/null @@ -1,901 +0,0 @@ -{ - "afb": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-afb-en", - "description": "Gulf Arabic to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-afb-en.zip" - } - ] - }, - "aii": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [ - { - "name": "kty-aii-en-ipa", - "description": "Assyrian Neo-Aramaic IPA dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-aii-en-ipa.zip" - } - ], - "terms": [ - { - "name": "kty-aii-en", - "description": "Assyrian Neo-Aramaic to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-aii-en.zip" - } - ] - }, - "ang": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-ang-en", - "description": "Old English to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ang-en.zip" - } - ] - }, - "ar": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [ - { - "name": "kty-ar-en-ipa", - "description": "Arabic IPA dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ar-en-ipa.zip" - } - ], - "terms": [ - { - "name": "kty-ar-en", - "description": "Arabic to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ar-en.zip" - } - ] - }, - "arz": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [ - { - "name": "kty-ar-en-ipa", - "description": "Arabic IPA dictionary created from Wiktionary data.", - "homepage": "https://github.com/yomidevs/kaikki-to-yomitan/blob/master/downloads.md", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ar-en-ipa.zip" - } - ], - "terms": [ - { - "name": "kty-ar-en", - "description": "Arabic to English dictionary created from Wiktionary data.", - "homepage": "https://github.com/yomidevs/kaikki-to-yomitan/blob/master/downloads.md", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ar-en.zip" - } - ] - }, - "cs": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-cs-en", - "description": "Czech to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-cs-en.zip" - } - ] - }, - "de": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-de-en", - "description": "German to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-de-en.zip" - } - ] - }, - "el": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-el-en", - "description": "Greek to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-el-en.zip" - } - ] - }, - "en": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-en-en", - "description": "English to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-en-en.zip" - } - ] - }, - "enm": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-enm-en", - "description": "Middle English to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-enm-en.zip" - } - ] - }, - "eo": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-eo-en", - "description": "Esperanto to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-eo-en.zip" - } - ] - }, - "es": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-es-en", - "description": "Spanish to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-es-en.zip" - } - ] - }, - "fa": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-fa-en", - "description": "Persian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-fa-en.zip" - } - ] - }, - "fi": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-fi-en", - "description": "Finnish to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-fi-en.zip" - } - ] - }, - "fr": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-fr-en", - "description": "French to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-fr-en.zip" - } - ] - }, - "grc": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-grc-en", - "description": "Ancient Greek to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-grc-en.zip" - } - ] - }, - "haw": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "pukui-elbert-1986", - "description": "English to Hawaiian Dictionary from Pukui-Elbert in 1986", - "homepage": "https://github.com/bee-san/awesome-hawaiian-language", - "downloadUrl": "https://github.com/bee-san/awesome-hawaiian-language/releases/download/0.0.1/Pukui-Elbert-1986-Deduped-Yomitan.zip" - }, - { - "name": "combined-dictionary", - "description": "English to Hawaiian Dictionary from Stephen (Kepano) Trussel", - "homepage": "https://github.com/bee-san/awesome-hawaiian-language", - "downloadUrl": "https://github.com/bee-san/awesome-hawaiian-language/releases/download/0.0.1/Combined-Hawaiian-Dictionary-2020-Mitch-Cleaned.zip" - }, - { - "name": "hawaiian-place-names-2002", - "description": "Hawaiian Place Names, published 2002", - "homepage": "https://github.com/bee-san/awesome-hawaiian-language", - "downloadUrl": "https://github.com/bee-san/awesome-hawaiian-language/releases/download/0.0.1/Hawaii-place-names-2002-yomitan.zip" - } - ] - }, - "he": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-he-en", - "description": "Hebrew to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-he-en.zip" - } - ] - }, - "hi": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-hi-en", - "description": "Hindi to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-hi-en.zip" - } - ] - }, - "hu": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-hu-en", - "description": "Hungarian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-hu-en.zip" - } - ] - }, - "id": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-id-en", - "description": "Indonesian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-id-en.zip" - } - ] - }, - "it": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-it-en", - "description": "Italian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-it-en.zip" - } - ] - }, - "ja": { - "frequency": [ - { - "name": "BCCWJ", - "description": "Based on the Balanced Corpus of Contemporary Written Japanese covering books, magazines, newspapers, blogs, forums, textbooks, and legal documents among others.", - "homepage": "https://github.com/Kuuuube/yomitan-dictionaries?tab=readme-ov-file#bccwj-suw-luw-combined", - "downloadUrl": "https://github.com/Kuuuube/yomitan-dictionaries/releases/download/yomitan-permalink/BCCWJ_SUW_LUW_combined.zip" - }, - { - "name": "JPDB", - "description": "A frequency dictionary based on the corpus from the online Japanese dictionary and SRS system at https://jpdb.io.", - "homepage": "https://github.com/Kuuuube/yomitan-dictionaries?tab=readme-ov-file#jpdb-v22-frequency", - "downloadUrl": "https://github.com/Kuuuube/yomitan-dictionaries/releases/download/yomitan-permalink/JPDB_v2.2_Frequency_Kana.zip" - }, - { - "name": "Jiten", - "description": "A frequency dictionary based on the corpus from the media stats database at https://jiten.moe", - "homepage": "https://jiten.moe/other", - "downloadUrl": "https://api.jiten.moe/api/frequency-list/download?downloadType=yomitan" - } - ], - "grammar": [], - "kanji": [ - { - "name": "KANJIDIC", - "description": "An English dictionary with readings, meanings, stroke order diagrams, frequency, grade level, JLPT level and frequency of kanji characters.", - "homepage": "https://github.com/yomidevs/jmdict-yomitan?tab=readme-ov-file#kanjidic-for-yomitan", - "downloadUrl": "https://github.com/yomidevs/jmdict-yomitan/releases/latest/download/KANJIDIC_english.zip" - } - ], - "pronunciation": [], - "terms": [ - { - "name": "Jitendex", - "description": "A free and openly licensed Japanese-to-English dictionary with example sentences, usage notes, etymology notes, cross references, antonyms, definition notes.", - "homepage": "https://jitendex.org", - "downloadUrl": "https://github.com/stephenmk/stephenmk.github.io/releases/latest/download/jitendex-yomitan.zip" - }, - { - "name": "JMnedict", - "description": "A dictionary of Japanese proper names maintained by the Electronic Dictionary Research and Development Group.", - "homepage": "https://github.com/yomidevs/jmdict-yomitan?tab=readme-ov-file#jmnedict-for-yomitan", - "downloadUrl": "https://github.com/yomidevs/jmdict-yomitan/releases/latest/download/JMnedict.zip" - } - ] - }, - "km": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-km-en", - "description": "Khmer to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-km-en.zip" - } - ] - }, - "kn": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-kn-en", - "description": "Kannada to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-kn-en.zip" - } - ] - }, - "ko": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-ko-en", - "description": "Korean to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ko-en.zip" - } - ] - }, - "la": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-la-en", - "description": "Latin to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-la-en.zip" - } - ] - }, - "lv": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-lv-en", - "description": "Latvian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-lv-en.zip" - } - ] - }, - "mn": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-mn-en", - "description": "Mongolian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-mn-en.zip" - } - ] - }, - "mt": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [ - { - "name": "kty-mt-en-ipa", - "description": "Maltese IPA dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-mt-en-ipa.zip" - } - ], - "terms": [ - { - "name": "kty-mt-en", - "description": "Maltese to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-mt-en.zip" - } - ] - }, - "nl": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-nl-en", - "description": "Dutch to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-nl-en.zip" - } - ] - }, - "no": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-nb-en", - "description": "Norwegian Bokmål to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-nb-en.zip" - }, - { - "name": "kty-nn-en", - "description": "Norwegian Nynorsk to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-nn-en.zip" - } - ] - }, - "pl": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-pl-en", - "description": "Polish to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-pl-en.zip" - } - ] - }, - "pt": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-pt-en", - "description": "Portuguese to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-pt-en.zip" - } - ] - }, - "ro": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-ro-en", - "description": "Romanian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ro-en.zip" - } - ] - }, - "ru": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-ru-en", - "description": "Russian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-ru-en.zip" - }, - { - "name": "opr-ru-en", - "description": "OpenRussian is a user-contributed, libre Russian dictionary including the accents, examples, audio, related words and synonyms.", - "homepage": "https://github.com/ImenaOphelia/openrussian-to-yomitan", - "downloadUrl": "https://github.com/ImenaOphelia/openrussian-to-yomitan/releases/latest/download/opr-ru-en.zip" - } - ] - }, - "scn": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-scn-en", - "description": "Sicillian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-scn-en.zip" - } - ] - }, - "sga": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-sga-en", - "description": "Old Irish to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-sga-en.zip" - } - ] - }, - "sh": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-sh-en", - "description": "Serbo-Croatian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-sh-en.zip" - } - ] - }, - "sq": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-sq-en", - "description": "Albanian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-sq-en.zip" - } - ] - }, - "sv": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-sv-en", - "description": "Swedish to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-sv-en.zip" - } - ] - }, - "th": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-th-en", - "description": "Thai to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-th-en.zip" - } - ] - }, - "tl": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-tl-en", - "description": "Tagalog to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-tl-en.zip" - } - ] - }, - "tok": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "toki-pona-to-chinese", - "description": "Toki Pona to Chinese dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-chinese.zip" - }, - { - "name": "toki-pona-to-czech", - "description": "Toki Pona to Czech dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-czech.zip" - }, - { - "name": "toki-pona-to-dutch", - "description": "Toki Pona to Dutch dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-dutch.zip" - }, - { - "name": "toki-pona-to-english", - "description": "Toki Pona to English dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-english.zip" - }, - { - "name": "toki-pona-to-esperanto", - "description": "Toki Pona to Esperanto dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-esperanto.zip" - }, - { - "name": "toki-pona-to-french", - "description": "Toki Pona to French dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-french.zip" - }, - { - "name": "toki-pona-to-german", - "description": "Toki Pona to German dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-german.zip" - }, - { - "name": "toki-pona-to-indonesian", - "description": "Toki Pona to Indonesian dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-indonesian.zip" - }, - { - "name": "toki-pona-to-italian", - "description": "Toki Pona to Italian dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-italian.zip" - }, - { - "name": "toki-pona-to-polish", - "description": "Toki Pona to Polish dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-polish.zip" - }, - { - "name": "toki-pona-to-portuguese", - "description": "Toki Pona to Portuguese dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-portuguese.zip" - }, - { - "name": "toki-pona-to-russian", - "description": "Toki Pona to Russian dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-russian.zip" - }, - { - "name": "toki-pona-to-slovak", - "description": "Toki Pona to Slovak dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-slovak.zip" - }, - { - "name": "toki-pona-to-spanish", - "description": "Toki Pona to Spanish dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-spanish.zip" - }, - { - "name": "toki-pona-to-turkish", - "description": "Toki Pona to Turkish dictionary", - "homepage": "https://github.com/bee-san/awesome-toki-pona", - "downloadUrl": "https://github.com/bee-san/awesome-toki-pona/releases/download/0.0.3/toki-pona-to-turkish.zip" - } - ] - }, - "tr": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-tr-en", - "description": "Turkish to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-tr-en.zip" - } - ] - }, - "uk": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-uk-en", - "description": "Ukranian to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-uk-en.zip" - } - ] - }, - "vi": { - "frequency": [], - "grammar": [], - "kanji": [], - "pronunciation": [], - "terms": [ - { - "name": "kty-vi-en", - "description": "Vietnamese to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-vi-en.zip" - } - ] - }, - "yue": { - "frequency": [ - { - "name": "Words.hk Frequency", - "description": "Frequency list of Cantonese terms and honzi provided by words.hk.", - "homepage": "https://github.com/MarvNC/wordshk-yomitan", - "downloadUrl": "https://github.com/MarvNC/wordshk-yomitan/releases/download/2024-09-17/YUE.Freq.Words.hk.Frequency.zip" - } - ], - "grammar": [], - "kanji": [ - { - "name": "Words.hk 粵典 漢字", - "description": "A free and open Cantonese dictionary with definitions and example sentences in Cantonese and English.", - "homepage": "https://github.com/MarvNC/wordshk-yomitan", - "downloadUrl": "https://github.com/MarvNC/wordshk-yomitan/releases/download/2025-07-09/Words.hk.Honzi.2025-07-08.zip" - } - ], - "pronunciation": [], - "terms": [ - { - "name": "Words.hk 粵典", - "description": "A free and open Cantonese dictionary with definitions and example sentences in Cantonese and English.", - "homepage": "https://github.com/MarvNC/wordshk-yomitan", - "downloadUrl": "https://github.com/MarvNC/wordshk-yomitan/releases/download/2025-07-09/Words.hk.2025-07-08.zip" - }, - { - "name": "CC-Canto", - "description": "CC-Canto is an open source Cantonese dictionary project created by Pleco, intended to be used alongside the CC-CEDICT dictionary. It provides Cantonese specific words and definitions.", - "homepage": "https://github.com/MarvNC/cc-cedict-yomitan", - "downloadUrl": "https://github.com/MarvNC/cc-cedict-yomitan/releases/latest/download/CC-Canto.zip" - }, - { - "name": "CC-CEDICT Canto", - "description": "CC-CEDICT is a continuation of the CEDICT project with the aim to provide a complete downloadable Chinese to English dictionary with pronunciation in pinyin for the Chinese characters. This version includes Cantonese readings provided by Pleco.", - "homepage": "https://github.com/MarvNC/cc-cedict-yomitan", - "downloadUrl": "https://github.com/MarvNC/cc-cedict-yomitan/releases/latest/download/CC-CEDICT.Canto.zip" - }, - { - "name": "Cantodict", - "description": "CantoDict was a Cantonese-English dictionary created and maintained by Adam Sheik and public contributors.", - "homepage": "https://github.com/MarvNC/yomitan-dictionaries?tab=readme-ov-file#cantodict", - "downloadUrl": "https://github.com/MarvNC/yomichan-dictionaries/raw/master/dl/%5BCantonese%5D%20Cantodict.zip" - } - ] - }, - "zh": { - "frequency": [], - "grammar": [], - "kanji": [ - { - "name": "CC-CEDICT", - "description": "A free and open Chinese-English dictionary provided by the CC-CEDICT project.", - "homepage": "https://github.com/MarvNC/cc-cedict-yomitan", - "downloadUrl": "https://github.com/MarvNC/cc-cedict-yomitan/releases/latest/download/CC-CEDICT.Hanzi.zip" - } - ], - "pronunciation": [], - "terms": [ - { - "name": "CC-CEDICT", - "description": "A free and open Chinese-English dictionary provided by the CC-CEDICT project.", - "homepage": "https://github.com/MarvNC/cc-cedict-yomitan", - "downloadUrl": "https://github.com/MarvNC/cc-cedict-yomitan/releases/latest/download/CC-CEDICT.zip" - }, - { - "name": "kty-zh-en", - "description": "Chinese to English dictionary created from Wiktionary data.", - "homepage": "https://yomidevs.github.io/kaikki-to-yomitan/", - "downloadUrl": "https://pub-c3d38cca4dc2403b88934c56748f5144.r2.dev/releases/latest/kty-zh-en.zip" - } - ] - } -} diff --git a/vendor/yomitan/data/recommended-settings.json b/vendor/yomitan/data/recommended-settings.json deleted file mode 100644 index 3c0761be..00000000 --- a/vendor/yomitan/data/recommended-settings.json +++ /dev/null @@ -1,862 +0,0 @@ -{ - "ar": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - } - ], - "arz": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - } - ], - "cs": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "da": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "de": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "el": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - }, - { - "modification": { - "action": "set", - "path": "scanning.length", - "value": 24 - }, - "description": "Increase the default scanning length from 16 to 24 characters." - } - ], - "en": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - }, - { - "modification": { - "action": "set", - "path": "sentenceParsing.terminationCharacters", - "value": [ - { - "enabled": true, - "character1": "\"", - "character2": "\"", - "includeCharacterAtStart": false, - "includeCharacterAtEnd": false - }, - { - "enabled": false, - "character1": "'", - "character2": "'", - "includeCharacterAtStart": false, - "includeCharacterAtEnd": false - }, - { - "enabled": true, - "character1": ".", - "character2": null, - "includeCharacterAtStart": false, - "includeCharacterAtEnd": true - }, - { - "enabled": true, - "character1": "!", - "character2": null, - "includeCharacterAtStart": false, - "includeCharacterAtEnd": true - }, - { - "enabled": true, - "character1": "?", - "character2": null, - "includeCharacterAtStart": false, - "includeCharacterAtEnd": true - }, - { - "enabled": true, - "character1": "…", - "character2": null, - "includeCharacterAtStart": false, - "includeCharacterAtEnd": true - } - ] - }, - "description": "Disable apostrophes as a sentence terminator." - } - ], - "eo": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "es": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "fi": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "fr": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "translation.textReplacements.groups", - "value": [ - [ - { - "pattern": "l('|’)", - "ignoreCase": true, - "replacement": "" - }, - { - "pattern": "j('|’)", - "ignoreCase": true, - "replacement": "" - }, - { - "pattern": "d('|’)", - "ignoreCase": true, - "replacement": "" - }, - { - "pattern": "s('|’)", - "ignoreCase": true, - "replacement": "" - } - ] - ] - }, - "description": "Separating the l', j', d', s' from the word." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "he": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "hi": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "hu": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "id": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "it": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "ja": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "character" - }, - "description": "Scan text one character at a time." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "letter" - }, - "description": "Lookup words by letter in the dictionary." - } - ], - "ko": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "kn": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "la": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "lv": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "mn": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "nl": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "no": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "pl": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "pt": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "ro": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "ru": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "sga": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "sh": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "sq": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "sv": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "tr": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - }, - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "uk": [ - { - "modification": { - "action": "set", - "path": "parsing.enableScanningParser", - "value": false - }, - "description": "Turn off Yomitan's internal parser for languages with spaces." - } - ], - "vi": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "word" - }, - "description": "Scan text one word at a time (as opposed to one character)." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "word" - }, - "description": "Lookup whole words in the dictionary." - } - ], - "yue": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "character" - }, - "description": "Scan text one character at a time." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "letter" - }, - "description": "Lookup words by letter in the dictionary." - } - ], - "zh": [ - { - "modification": { - "action": "set", - "path": "scanning.scanResolution", - "value": "character" - }, - "description": "Scan text one character at a time." - }, - { - "modification": { - "action": "set", - "path": "translation.searchResolution", - "value": "letter" - }, - "description": "Lookup words by letter in the dictionary." - } - ] -} diff --git a/vendor/yomitan/data/schemas/custom-audio-list-schema.json b/vendor/yomitan/data/schemas/custom-audio-list-schema.json deleted file mode 100644 index 885ad087..00000000 --- a/vendor/yomitan/data/schemas/custom-audio-list-schema.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$id": "customAudioList", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "required": [ - "type", - "audioSources" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "audioSourceList" - }, - "audioSources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "url" - ], - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string" - } - } - } - } - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-index-schema.json b/vendor/yomitan/data/schemas/dictionary-index-schema.json deleted file mode 100644 index f68e321e..00000000 --- a/vendor/yomitan/data/schemas/dictionary-index-schema.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "$id": "dictionaryIndex", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "isoLanguageCode": { - "type": "string", - "description": "ISO language code (ISO 639-1 where possible, ISO 639-3 otherwise).", - "pattern": "^[a-z]{2,3}$" - } - }, - "type": "object", - "description": "Index file containing information about the data contained in the dictionary.", - "required": [ - "title", - "revision" - ], - "properties": { - "title": { - "type": "string", - "description": "Title of the dictionary." - }, - "revision": { - "type": "string", - "description": "Revision of the dictionary. This value is displayed, and used to check for dictionary updates." - }, - "minimumYomitanVersion": { - "type": "string", - "description": "Minimum version of Yomitan that is compatible with this dictionary." - }, - "sequenced": { - "type": "boolean", - "default": false, - "description": "Whether or not this dictionary contains sequencing information for related terms." - }, - "format": { - "type": "integer", - "description": "Format of data found in the JSON data files.", - "enum": [1, 2, 3] - }, - "version": { - "type": "integer", - "description": "Alias for format.", - "enum": [1, 2, 3] - }, - "author": { - "type": "string", - "description": "Creator of the dictionary." - }, - "isUpdatable": { - "type": "boolean", - "const": true, - "description": "Whether this dictionary contains links to its latest version." - }, - "indexUrl": { - "type": "string", - "description": "URL for the index file of the latest revision of the dictionary, used to check for updates." - }, - "downloadUrl": { - "type": "string", - "description": "URL for the download of the latest revision of the dictionary." - }, - "url": { - "type": "string", - "description": "URL for the source of the dictionary, displayed in the dictionary details." - }, - "description": { - "type": "string", - "description": "Description of the dictionary data." - }, - "attribution": { - "type": "string", - "description": "Attribution information for the dictionary data." - }, - "sourceLanguage": { - "$ref": "#/definitions/isoLanguageCode", - "description": "Language of the terms in the dictionary." - }, - "targetLanguage": { - "$ref": "#/definitions/isoLanguageCode", - "description": "Main language of the definitions in the dictionary." - }, - "frequencyMode": { - "type": "string", - "enum": ["occurrence-based", "rank-based"] - }, - "tagMeta": { - "type": "object", - "description": "Tag information for terms and kanji. This object is obsolete and individual tag files should be used instead.", - "additionalProperties": { - "type": "object", - "description": "Information about a single tag. The object key is the name of the tag.", - "properties": { - "category": { - "type": "string", - "description": "Category for the tag." - }, - "order": { - "type": "number", - "description": "Sorting order for the tag." - }, - "notes": { - "type": "string", - "description": "Notes for the tag." - }, - "score": { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - } - }, - "additionalProperties": false - } - } - }, - "anyOf": [ - { - "required": ["format"] - }, - { - "required": ["version"] - } - ], - "dependencies": { - "isUpdatable": ["indexUrl", "downloadUrl"] - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-kanji-bank-v1-schema.json b/vendor/yomitan/data/schemas/dictionary-kanji-bank-v1-schema.json deleted file mode 100644 index d13e143b..00000000 --- a/vendor/yomitan/data/schemas/dictionary-kanji-bank-v1-schema.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$id": "dictionaryKanjiBankV1", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing kanji information.", - "items": { - "type": "array", - "description": "Information about a single kanji character.", - "minItems": 4, - "maxItems": 4, - "items": [ - { - "type": "string", - "description": "Kanji character.", - "minLength": 1 - }, - { - "type": "string", - "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags." - } - ], - "additionalItems": { - "type": "string", - "description": "A meaning for the kanji character." - } - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-kanji-bank-v3-schema.json b/vendor/yomitan/data/schemas/dictionary-kanji-bank-v3-schema.json deleted file mode 100644 index 79272985..00000000 --- a/vendor/yomitan/data/schemas/dictionary-kanji-bank-v3-schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "$id": "dictionaryKanjiBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing kanji information.", - "items": { - "type": "array", - "description": "Information about a single kanji character.", - "minItems": 6, - "maxItems": 6, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "Kanji character.", - "minLength": 1 - }, - { - "type": "string", - "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings." - }, - { - "type": "string", - "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags." - }, - { - "type": "array", - "description": "Array of meanings for the kanji character.", - "items": { - "type": "string", - "description": "A meaning for the kanji character." - } - }, - { - "type": "object", - "description": "Various stats for the kanji character.", - "additionalProperties": { - "type": "string" - } - } - ] - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-kanji-meta-bank-v3-schema.json b/vendor/yomitan/data/schemas/dictionary-kanji-meta-bank-v3-schema.json deleted file mode 100644 index bdbddf9b..00000000 --- a/vendor/yomitan/data/schemas/dictionary-kanji-meta-bank-v3-schema.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$id": "dictionaryKanjiMetaBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "frequency": { - "oneOf": [ - { - "type": ["string", "number"] - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "value" - ], - "properties": { - "value": { - "type": "number" - }, - "displayValue": { - "type": "string" - } - } - } - ] - } - }, - "type": "array", - "description": "Custom metadata for kanji characters.", - "items": { - "type": "array", - "description": "Metadata about a single kanji character.", - "minItems": 3, - "maxItems": 3, - "additionalItems": false, - "items": [ - { - "type": "string", - "minLength": 1 - }, - { - "type": "string", - "const": "freq", - "description": "Type of data. \"freq\" corresponds to frequency information." - }, - { - "$ref": "#/definitions/frequency", - "description": "Data for the character." - } - ] - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-tag-bank-v3-schema.json b/vendor/yomitan/data/schemas/dictionary-tag-bank-v3-schema.json deleted file mode 100644 index f3a2f89b..00000000 --- a/vendor/yomitan/data/schemas/dictionary-tag-bank-v3-schema.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$id": "dictionaryTagBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing tag information for terms and kanji.", - "items": { - "type": "array", - "description": "Information about a single tag.", - "minItems": 5, - "maxItems": 5, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "Tag name." - }, - { - "type": "string", - "description": "Category for the tag." - }, - { - "type": "number", - "description": "Sorting order for the tag." - }, - { - "type": "string", - "description": "Notes for the tag." - }, - { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - } - ] - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-term-bank-v1-schema.json b/vendor/yomitan/data/schemas/dictionary-term-bank-v1-schema.json deleted file mode 100644 index 4dd6e185..00000000 --- a/vendor/yomitan/data/schemas/dictionary-term-bank-v1-schema.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "$id": "dictionaryTermBankV1", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "array", - "description": "Data file containing term information.", - "items": { - "type": "array", - "description": "Information about a single term.", - "minItems": 5, - "maxItems": 5, - "items": [ - { - "type": "string", - "description": "The text for the term." - }, - { - "type": "string", - "description": "Reading of the term, or an empty string if the reading is the same as the term." - }, - { - "type": ["string", "null"], - "description": "String of space-separated tags for the definition. An empty string is treated as no tags." - }, - { - "type": "string", - "description": "String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vz: zuru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns." - }, - { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - } - ], - "additionalItems": { - "type": "string", - "description": "Single definition for the term." - } - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-term-bank-v3-schema.json b/vendor/yomitan/data/schemas/dictionary-term-bank-v3-schema.json deleted file mode 100644 index 0899c566..00000000 --- a/vendor/yomitan/data/schemas/dictionary-term-bank-v3-schema.json +++ /dev/null @@ -1,593 +0,0 @@ -{ - "$id": "dictionaryTermBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "structuredContent": { - "oneOf": [ - { - "type": "string", - "description": "Represents a text node." - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/structuredContent", - "description": "An array of child content." - } - }, - { - "type": "object", - "oneOf": [ - { - "type": "object", - "description": "Empty tags.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "const": "br" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - } - } - }, - { - "type": "object", - "description": "Generic container tags.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "enum": ["ruby", "rt", "rp", "table", "thead", "tbody", "tfoot", "tr"] - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - }, - { - "type": "object", - "description": "Table tags.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "enum": ["td", "th"] - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "colSpan": { - "type": "integer", - "minimum": 1 - }, - "rowSpan": { - "type": "integer", - "minimum": 1 - }, - "style": { - "$ref": "#/definitions/structuredContentStyle" - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - }, - { - "type": "object", - "description": "Container tags supporting configurable styles.", - "required": [ - "tag" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "enum": ["span", "div", "ol", "ul", "li", "details", "summary"] - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "style": { - "$ref": "#/definitions/structuredContentStyle" - }, - "title": { - "type": "string", - "description": "Hover text for the element." - }, - "open": { - "type": "boolean", - "description": "Whether or not the details element is open by default." - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - }, - { - "type": "object", - "description": "Image tag.", - "required": [ - "tag", - "path" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "const": "img" - }, - "data": { - "$ref": "#/definitions/structuredContentData" - }, - "path": { - "type": "string", - "description": "Path to the image file in the archive." - }, - "width": { - "type": "number", - "description": "Preferred width of the image.", - "minimum": 0 - }, - "height": { - "type": "number", - "description": "Preferred height of the image.", - "minimum": 0 - }, - "title": { - "type": "string", - "description": "Hover text for the image." - }, - "alt": { - "type": "string", - "description": "Alt text for the image." - }, - "description": { - "type": "string", - "description": "Description of the image." - }, - "pixelated": { - "type": "boolean", - "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.", - "default": false - }, - "imageRendering": { - "type": "string", - "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.", - "enum": ["auto", "pixelated", "crisp-edges"], - "default": "auto" - }, - "appearance": { - "type": "string", - "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.", - "enum": ["auto", "monochrome"], - "default": "auto" - }, - "background": { - "type": "boolean", - "description": "Whether or not a background color is displayed behind the image.", - "default": true - }, - "collapsed": { - "type": "boolean", - "description": "Whether or not the image is collapsed by default.", - "default": false - }, - "collapsible": { - "type": "boolean", - "description": "Whether or not the image can be collapsed.", - "default": false - }, - "verticalAlign": { - "type": "string", - "description": "The vertical alignment of the image.", - "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"] - }, - "border": { - "type": "string", - "description": "Shorthand for border width, style, and color." - }, - "borderRadius": { - "type": "string", - "description": "Roundness of the corners of the image's outer border edge." - }, - "sizeUnits": { - "type": "string", - "description": "The units for the width and height.", - "enum": ["px", "em"] - } - } - }, - { - "type": "object", - "description": "Link tag.", - "required": [ - "tag", - "href" - ], - "additionalProperties": false, - "properties": { - "tag": { - "type": "string", - "const": "a" - }, - "content": { - "$ref": "#/definitions/structuredContent" - }, - "href": { - "type": "string", - "description": "The URL for the link. URLs starting with a ? are treated as internal links to other dictionary content.", - "pattern": "^(?:https?:|\\?)[\\w\\W]*" - }, - "lang": { - "type": "string", - "description": "Defines the language of an element in the format defined by RFC 5646." - } - } - } - ] - } - ] - }, - "structuredContentData": { - "type": "object", - "description": "Generic data attributes that should be added to the element.", - "additionalProperties": { - "type": "string" - } - }, - "structuredContentStyle": { - "type": "object", - "additionalProperties": false, - "properties": { - "fontStyle": { - "type": "string", - "enum": ["normal", "italic"], - "default": "normal" - }, - "fontWeight": { - "type": "string", - "enum": ["normal", "bold"], - "default": "normal" - }, - "fontSize": { - "type": "string", - "default": "medium" - }, - "color": { - "type": "string" - }, - "background": { - "type": "string" - }, - "backgroundColor": { - "type": "string" - }, - "textDecorationLine": { - "oneOf": [ - { - "type": "string", - "enum": ["none", "underline", "overline", "line-through"], - "default": "none" - }, - { - "type": "array", - "items": { - "type": "string", - "enum": ["underline", "overline", "line-through"], - "default": "none" - } - } - ] - }, - "textDecorationStyle": { - "type": "string", - "enum": ["solid", "double", "dotted", "dashed", "wavy"], - "default": "solid" - }, - "textDecorationColor": { - "type": "string" - }, - "borderColor": { - "type": "string" - }, - "borderStyle": { - "type": "string" - }, - "borderRadius": { - "type": "string" - }, - "borderWidth": { - "type": "string" - }, - "clipPath": { - "type": "string" - }, - "verticalAlign": { - "type": "string", - "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"], - "default": "baseline" - }, - "textAlign": { - "type": "string", - "enum": ["start", "end", "left", "right", "center", "justify", "justify-all", "match-parent"], - "default": "start" - }, - "textEmphasis": { - "type": "string" - }, - "textShadow": { - "type": "string" - }, - "margin": { - "type": "string" - }, - "marginTop": { - "type": ["number", "string"], - "default": 0 - }, - "marginLeft": { - "type": ["number", "string"], - "default": 0 - }, - "marginRight": { - "type": ["number", "string"], - "default": 0 - }, - "marginBottom": { - "type": ["number", "string"], - "default": 0 - }, - "padding": { - "type": "string" - }, - "paddingTop": { - "type": "string" - }, - "paddingLeft": { - "type": "string" - }, - "paddingRight": { - "type": "string" - }, - "paddingBottom": { - "type": "string" - }, - "wordBreak": { - "type": "string", - "enum": ["normal", "break-all", "keep-all"], - "default": "normal" - }, - "whiteSpace": { - "type": "string", - "default": "normal" - }, - "cursor": { - "type": "string", - "default": "auto" - }, - "listStyleType": { - "type": "string", - "default": "disc" - } - } - } - }, - "type": "array", - "description": "Data file containing term information.", - "items": { - "type": "array", - "description": "Information about a single term.", - "minItems": 8, - "maxItems": 8, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "The text for the term." - }, - { - "type": "string", - "description": "Reading of the term, or an empty string if the reading is the same as the term." - }, - { - "type": ["string", "null"], - "description": "String of space-separated tags for the definition. An empty string is treated as no tags." - }, - { - "type": "string", - "description": "String of space-separated rule identifiers for the definition which is used to validate deinflection. An empty string should be used for words which aren't inflected." - }, - { - "type": "number", - "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." - }, - { - "type": "array", - "description": "Array of definitions for the term.", - "items": { - "oneOf": [ - { - "type": "string", - "description": "Single definition for the term." - }, - { - "type": "object", - "description": "Single detailed definition for the term.", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "description": "The type of the data for this definition.", - "enum": ["text", "image", "structured-content"] - } - }, - "oneOf": [ - { - "required": [ - "type", - "text" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "text" - }, - "text": { - "type": "string", - "description": "Single definition for the term." - } - } - }, - { - "required": [ - "type", - "content" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "structured-content" - }, - "content": { - "$ref": "#/definitions/structuredContent", - "description": "Single definition for the term using a structured content object." - } - } - }, - { - "required": [ - "type", - "path" - ], - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "const": "image" - }, - "path": { - "type": "string", - "description": "Path to the image file in the archive." - }, - "width": { - "type": "integer", - "description": "Preferred width of the image.", - "minimum": 1 - }, - "height": { - "type": "integer", - "description": "Preferred height of the image.", - "minimum": 1 - }, - "title": { - "type": "string", - "description": "Hover text for the image." - }, - "alt": { - "type": "string", - "description": "Alt text for the image." - }, - "description": { - "type": "string", - "description": "Description of the image." - }, - "pixelated": { - "type": "boolean", - "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.", - "default": false - }, - "imageRendering": { - "type": "string", - "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.", - "enum": ["auto", "pixelated", "crisp-edges"], - "default": "auto" - }, - "appearance": { - "type": "string", - "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.", - "enum": ["auto", "monochrome"], - "default": "auto" - }, - "background": { - "type": "boolean", - "description": "Whether or not a background color is displayed behind the image.", - "default": true - }, - "collapsed": { - "type": "boolean", - "description": "Whether or not the image is collapsed by default.", - "default": false - }, - "collapsible": { - "type": "boolean", - "description": "Whether or not the image can be collapsed.", - "default": true - } - } - } - ] - }, - { - "type": "array", - "description": "Deinflection of the term to an uninflected term.", - "minItems": 2, - "maxItems": 2, - "items": [ - { - "type": "string", - "description": "The uninflected term." - }, - { - "type": "array", - "description": "A chain of inflection rules that produced the inflected term", - "items": { - "type": "string", - "description": "A single inflection rule." - } - } - ] - } - ] - } - }, - { - "type": "integer", - "description": "Sequence number for the term. Terms with the same sequence number can be shown together when the \"resultOutputMode\" option is set to \"merge\"." - }, - { - "type": "string", - "description": "String of space-separated tags for the term. An empty string is treated as no tags." - } - ] - } -} diff --git a/vendor/yomitan/data/schemas/dictionary-term-meta-bank-v3-schema.json b/vendor/yomitan/data/schemas/dictionary-term-meta-bank-v3-schema.json deleted file mode 100644 index 69b4b086..00000000 --- a/vendor/yomitan/data/schemas/dictionary-term-meta-bank-v3-schema.json +++ /dev/null @@ -1,227 +0,0 @@ -{ - "$id": "dictionaryTermMetaBankV3", - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "frequency": { - "oneOf": [ - { - "type": ["string", "number"] - }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "value" - ], - "properties": { - "value": { - "type": "number" - }, - "displayValue": { - "type": "string" - } - } - } - ] - } - }, - "type": "array", - "description": "Custom metadata for terms.", - "items": { - "type": "array", - "description": "Metadata about a single term.", - "minItems": 3, - "maxItems": 3, - "additionalItems": false, - "items": [ - { - "type": "string", - "description": "The text for the term." - }, - { - "type": "string", - "enum": ["freq", "pitch", "ipa"], - "description": "Type of data. \"freq\" corresponds to frequency information; \"pitch\" corresponds to pitch information. \"ipa\" corresponds to IPA transcription." - }, - { - "description": "Data for the term." - } - ], - "oneOf": [ - { - "minItems": 3, - "maxItems": 3, - "items": [ - {}, - {"const": "freq"}, - { - "oneOf": [ - { - "$ref": "#/definitions/frequency", - "description": "Frequency information for the term." - }, - { - "type": "object", - "required": [ - "reading", - "frequency" - ], - "additionalProperties": false, - "properties": { - "reading": { - "type": "string", - "description": "Reading for the term." - }, - "frequency": { - "$ref": "#/definitions/frequency", - "description": "Frequency information for the term." - } - } - } - ] - } - ] - }, - { - "minItems": 3, - "maxItems": 3, - "items": [ - {}, - {"const": "pitch"}, - { - "type": "object", - "description": "Pitch accent information for the term.", - "required": [ - "reading", - "pitches" - ], - "additionalProperties": false, - "properties": { - "reading": { - "type": "string", - "description": "Reading for the term." - }, - "pitches": { - "type": "array", - "description": "List of different pitch accent information for the term and reading combination.", - "items": { - "type": "object", - "required": [ - "position" - ], - "additionalProperties": false, - "properties": { - "position": { - "oneOf": [ - { - "type": "integer", - "description": "Mora position of the pitch accent downstep. A value of 0 indicates that the word does not have a downstep (heiban).", - "minimum": 0 - }, - { - "type": "string", - "description": "Pitch level of each mora with H representing high and L representing low. For example: HHLL for a 4 mora word.", - "pattern": "^[HL]+$" - } - ] - }, - "nasal": { - "oneOf": [ - { - "type": "integer", - "description": "Position of a mora with nasal sound.", - "minimum": 0 - }, - { - "type": "array", - "description": "Positions of morae with nasal sound.", - "items": { - "type": "integer", - "minimum": 0 - } - } - ] - }, - "devoice": { - "oneOf": [ - { - "type": "integer", - "description": "Position of a mora with devoiced sound.", - "minimum": 0 - }, - { - "type": "array", - "description": "Positions of morae with devoiced sound.", - "items": { - "type": "integer", - "minimum": 0 - } - } - ] - }, - "tags": { - "type": "array", - "description": "List of tags for this pitch accent.", - "items": { - "type": "string", - "description": "Tag for this pitch accent. This typically corresponds to a certain type of part of speech." - } - } - } - } - } - } - } - ] - }, - { - "minItems": 3, - "maxItems": 3, - "items": [ - {}, - {"const": "ipa"}, - { - "type": ["object"], - "description": "IPA transcription information for the term.", - "required": [ - "reading", - "transcriptions" - ], - "additionalProperties": false, - "properties": { - "reading": { - "type": "string", - "description": "Reading for the term." - }, - "transcriptions": { - "type": "array", - "description": "List of different IPA transcription information for the term and reading combination.", - "items": { - "type": "object", - "required": [ - "ipa" - ], - "additionalProperties": false, - "properties": { - "ipa": { - "type": "string", - "description": "IPA transcription for the term." - }, - "tags": { - "type": "array", - "description": "List of tags for this IPA transcription.", - "items": { - "type": "string", - "description": "Tag for this IPA transcription." - } - } - } - } - } - } - } - ] - } - ] - } -} diff --git a/vendor/yomitan/data/schemas/options-schema.json b/vendor/yomitan/data/schemas/options-schema.json deleted file mode 100644 index 5aa07988..00000000 --- a/vendor/yomitan/data/schemas/options-schema.json +++ /dev/null @@ -1,1413 +0,0 @@ -{ - "$id": "options", - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "required": [ - "version", - "profiles", - "profileCurrent", - "global" - ], - "properties": { - "version": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "profiles": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "required": [ - "name", - "conditionGroups", - "options" - ], - "properties": { - "name": { - "type": "string", - "default": "Default" - }, - "conditionGroups": { - "type": "array", - "items": { - "type": "object", - "required": [ - "conditions" - ], - "properties": { - "conditions": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type", - "operator", - "value" - ], - "properties": { - "type": { - "type": "string" - }, - "operator": { - "type": "string" - }, - "value": {} - } - } - } - } - } - }, - "options": { - "type": "object", - "required": [ - "general", - "popupWindow", - "audio", - "scanning", - "translation", - "dictionaries", - "parsing", - "anki", - "sentenceParsing", - "inputs", - "clipboard", - "accessibility" - ], - "properties": { - "general": { - "type": "object", - "required": [ - "enable", - "language", - "resultOutputMode", - "debugInfo", - "maxResults", - "showAdvanced", - "showDebug", - "popupDisplayMode", - "popupWidth", - "popupHeight", - "popupHorizontalOffset", - "popupVerticalOffset", - "popupHorizontalOffset2", - "popupVerticalOffset2", - "popupHorizontalTextPosition", - "popupVerticalTextPosition", - "popupScalingFactor", - "popupScaleRelativeToPageZoom", - "popupScaleRelativeToVisualViewport", - "showGuide", - "enableContextMenuScanSelected", - "compactTags", - "averageFrequency", - "glossaryLayoutMode", - "mainDictionary", - "popupTheme", - "popupOuterTheme", - "customPopupCss", - "customPopupOuterCss", - "enableWanakana", - "showPitchAccentDownstepNotation", - "showPitchAccentPositionNotation", - "showPitchAccentGraph", - "showIframePopupsInRootFrame", - "useSecurePopupFrameUrl", - "usePopupShadowDom", - "usePopupWindow", - "popupCurrentIndicatorMode", - "popupActionBarVisibility", - "popupActionBarLocation", - "frequencyDisplayMode", - "termDisplayMode", - "sortFrequencyDictionary", - "sortFrequencyDictionaryOrder", - "stickySearchHeader", - "fontFamily", - "fontSize", - "lineHeight", - "enableYomitanApi", - "yomitanApiServer", - "yomitanApiAllowCssSanitizationBypass" - ], - "properties": { - "enable": { - "type": "boolean", - "default": true - }, - "language": { - "type": "string", - "default": "ja" - }, - "resultOutputMode": { - "type": "string", - "enum": ["group", "merge", "split", "term"], - "default": "group" - }, - "fontFamily": { - "type": "string", - "default": "" - }, - "fontSize": { - "type": "number", - "default": 14 - }, - "lineHeight": { - "type": "string", - "default": "1.5" - }, - "debugInfo": { - "type": "boolean", - "default": false - }, - "maxResults": { - "type": "integer", - "minimum": 1, - "default": 32 - }, - "showAdvanced": { - "type": "boolean", - "default": false - }, - "showDebug": { - "type": "boolean", - "default": false - }, - "popupDisplayMode": { - "type": "string", - "enum": ["default", "full-width"], - "default": "default" - }, - "popupWidth": { - "type": "number", - "minimum": 0, - "default": 400 - }, - "popupHeight": { - "type": "number", - "minimum": 0, - "default": 250 - }, - "popupHorizontalOffset": { - "type": "number", - "default": 0 - }, - "popupVerticalOffset": { - "type": "number", - "default": 10 - }, - "popupHorizontalOffset2": { - "type": "number", - "default": 10 - }, - "popupVerticalOffset2": { - "type": "number", - "default": 0 - }, - "popupHorizontalTextPosition": { - "type": "string", - "enum": ["below", "above"], - "default": "below" - }, - "popupVerticalTextPosition": { - "type": "string", - "enum": ["default", "before", "after", "left", "right"], - "default": "before" - }, - "popupScalingFactor": { - "type": "number", - "default": 1 - }, - "popupScaleRelativeToPageZoom": { - "type": "boolean", - "default": false - }, - "popupScaleRelativeToVisualViewport": { - "type": "boolean", - "default": true - }, - "showGuide": { - "type": "boolean", - "default": true - }, - "enableContextMenuScanSelected": { - "type": "boolean", - "default": true - }, - "compactTags": { - "type": "boolean", - "default": false - }, - "averageFrequency": { - "type": "boolean", - "default": false - }, - "glossaryLayoutMode": { - "type": "string", - "enum": ["default", "compact", "compact-popup-anki"], - "default": "default" - }, - "mainDictionary": { - "type": "string" - }, - "popupTheme": { - "type": "string", - "enum": ["light", "dark", "browser", "site"], - "default": "site" - }, - "popupOuterTheme": { - "type": "string", - "enum": ["light", "dark", "browser", "site", "none"], - "default": "site" - }, - "customPopupCss": { - "type": "string", - "default": "" - }, - "customPopupOuterCss": { - "type": "string", - "default": "" - }, - "enableWanakana": { - "type": "boolean", - "default": true - }, - "showPitchAccentDownstepNotation": { - "type": "boolean", - "default": true - }, - "showPitchAccentPositionNotation": { - "type": "boolean", - "default": true - }, - "showPitchAccentGraph": { - "type": "boolean", - "default": false - }, - "showIframePopupsInRootFrame": { - "type": "boolean", - "default": true - }, - "useSecurePopupFrameUrl": { - "type": "boolean", - "default": true - }, - "usePopupShadowDom": { - "type": "boolean", - "default": true - }, - "usePopupWindow": { - "type": "boolean", - "default": false - }, - "popupCurrentIndicatorMode": { - "type": "string", - "enum": ["none", "asterisk", "triangle", "bar-left", "bar-right", "dot-left", "dot-right"], - "default": "triangle" - }, - "popupActionBarVisibility": { - "type": "string", - "enum": ["auto", "always"], - "default": "auto" - }, - "popupActionBarLocation": { - "type": "string", - "enum": ["left", "right", "top", "bottom"], - "default": "top" - }, - "frequencyDisplayMode": { - "type": "string", - "enum": ["tags", "tags-grouped", "split-tags", "split-tags-grouped", "inline-list", "list"], - "default": "split-tags-grouped" - }, - "termDisplayMode": { - "type": "string", - "enum": ["ruby", "ruby-and-reading", "term-and-reading", "term-only"], - "default": "ruby" - }, - "sortFrequencyDictionary": { - "type": ["string", "null"], - "default": null - }, - "sortFrequencyDictionaryOrder": { - "type": "string", - "enum": ["ascending", "descending"], - "default": "descending" - }, - "stickySearchHeader": { - "type": "boolean", - "default": false - }, - "enableYomitanApi": { - "type": "boolean", - "default": false - }, - "yomitanApiServer": { - "type": "string", - "default": "http://127.0.0.1:19633" - }, - "yomitanApiAllowCssSanitizationBypass": { - "type": "boolean", - "default": false - } - } - }, - "popupWindow": { - "type": "object", - "required": [ - "width", - "height", - "left", - "top", - "useLeft", - "useTop", - "windowType", - "windowState" - ], - "properties": { - "width": { - "type": "integer", - "minimum": 0, - "default": 400 - }, - "height": { - "type": "integer", - "minimum": 0, - "default": 250 - }, - "left": { - "type": "integer", - "default": 0 - }, - "top": { - "type": "integer", - "default": 0 - }, - "useLeft": { - "type": "boolean", - "default": false - }, - "useTop": { - "type": "boolean", - "default": false - }, - "windowType": { - "type": "string", - "enum": ["normal", "popup"], - "default": "popup" - }, - "windowState": { - "type": "string", - "enum": ["normal", "maximized", "fullscreen"], - "default": "normal" - } - } - }, - "audio": { - "type": "object", - "required": [ - "enabled", - "volume", - "autoPlay", - "fallbackSoundType", - "sources", - "enableDefaultAudioSources" - ], - "properties": { - "enabled": { - "type": "boolean", - "default": true - }, - "volume": { - "type": "number", - "minimum": 0, - "maximum": 100, - "default": 100 - }, - "autoPlay": { - "type": "boolean", - "default": false - }, - "fallbackSoundType": { - "type": "string", - "enum": ["none", "click", "bloop"], - "default": "click" - }, - "sources": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "url", - "voice" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "jpod101", - "language-pod-101", - "jisho", - "lingua-libre", - "wiktionary", - "text-to-speech", - "text-to-speech-reading", - "custom", - "custom-json" - ], - "default": "jpod101" - }, - "url": { - "type": "string", - "default": "" - }, - "voice": { - "type": "string", - "default": "" - } - } - }, - "default": [] - }, - "enableDefaultAudioSources": { - "type": "boolean", - "default": true - } - } - }, - "scanning": { - "type": "object", - "required": [ - "inputs", - "preventMiddleMouse", - "preventBackForward", - "selectText", - "alphanumeric", - "autoHideResults", - "delay", - "hideDelay", - "length", - "deepDomScan", - "popupNestingMaxDepth", - "enablePopupSearch", - "enableOnPopupExpressions", - "enableOnSearchPage", - "enableSearchTags", - "layoutAwareScan", - "matchTypePrefix", - "hidePopupOnCursorExit", - "hidePopupOnCursorExitDelay", - "reducedMotionScrolling", - "reducedMotionScrollingScale", - "reducedMotionScrollingSwipeThreshold", - "normalizeCssZoom", - "scanWithoutMousemove", - "scanResolution" - ], - "properties": { - "inputs": { - "type": "array", - "default": [ - { - "include": "shift", - "exclude": "mouse0", - "types": { - "mouse": true, - "touch": false, - "pen": false - }, - "options": { - "showAdvanced": false, - "searchTerms": true, - "searchKanji": true, - "scanOnTouchTap": true, - "scanOnTouchMove": false, - "scanOnTouchPress": false, - "scanOnTouchRelease": false, - "scanOnPenMove": true, - "scanOnPenHover": false, - "scanOnPenReleaseHover": false, - "scanOnPenPress": true, - "scanOnPenRelease": false, - "preventTouchScrolling": false, - "preventPenScrolling": false, - "minimumTouchTime": 0 - } - }, - { - "include": "", - "exclude": "", - "types": { - "mouse": false, - "touch": true, - "pen": true - }, - "options": { - "showAdvanced": false, - "searchTerms": true, - "searchKanji": true, - "scanOnTouchTap": true, - "scanOnTouchMove": false, - "scanOnTouchPress": false, - "scanOnTouchRelease": false, - "scanOnPenMove": true, - "scanOnPenHover": false, - "scanOnPenReleaseHover": false, - "scanOnPenPress": true, - "scanOnPenRelease": false, - "preventTouchScrolling": true, - "preventPenScrolling": true, - "minimumTouchTime": 0 - } - } - ], - "items": { - "type": "object", - "required": [ - "include", - "exclude", - "types", - "options" - ], - "properties": { - "include": { - "type": "string", - "default": "shift" - }, - "exclude": { - "type": "string", - "default": "" - }, - "types": { - "type": "object", - "required": [ - "mouse", - "touch", - "pen" - ], - "properties": { - "mouse": { - "type": "boolean", - "default": true - }, - "touch": { - "type": "boolean", - "default": true - }, - "pen": { - "type": "boolean", - "default": true - } - } - }, - "options": { - "type": "object", - "required": [ - "showAdvanced", - "searchTerms", - "searchKanji", - "scanOnTouchTap", - "scanOnTouchMove", - "scanOnTouchPress", - "scanOnTouchRelease", - "scanOnPenMove", - "scanOnPenHover", - "scanOnPenReleaseHover", - "scanOnPenPress", - "scanOnPenRelease", - "preventTouchScrolling", - "preventPenScrolling", - "minimumTouchTime" - ], - "properties": { - "showAdvanced": { - "type": "boolean", - "default": false - }, - "searchTerms": { - "type": "boolean", - "default": true - }, - "searchKanji": { - "type": "boolean", - "default": true - }, - "scanOnTouchTap": { - "type": "boolean", - "default": true - }, - "scanOnTouchMove": { - "type": "boolean", - "default": false - }, - "scanOnTouchPress": { - "type": "boolean", - "default": false - }, - "scanOnTouchRelease": { - "type": "boolean", - "default": false - }, - "scanOnPenMove": { - "type": "boolean", - "default": true - }, - "scanOnPenHover": { - "type": "boolean", - "default": false - }, - "scanOnPenReleaseHover": { - "type": "boolean", - "default": false - }, - "scanOnPenPress": { - "type": "boolean", - "default": true - }, - "scanOnPenRelease": { - "type": "boolean", - "default": false - }, - "preventTouchScrolling": { - "type": "boolean", - "default": true - }, - "preventPenScrolling": { - "type": "boolean", - "default": true - }, - "minimumTouchTime": { - "type": "number", - "default": 0 - } - } - } - } - } - }, - "preventMiddleMouse": { - "type": "object", - "required": [ - "onTextHover", - "onWebPages", - "onPopupPages", - "onSearchPages", - "onSearchQuery" - ], - "properties": { - "onWebPages": { - "type": "boolean", - "default": false - }, - "onPopupPages": { - "type": "boolean", - "default": false - }, - "onSearchPages": { - "type": "boolean", - "default": false - }, - "onSearchQuery": { - "type": "boolean", - "default": false - } - } - }, - "preventBackForward": { - "type": "object", - "required": [ - "onTextHover", - "onWebPages", - "onPopupPages", - "onSearchPages", - "onSearchQuery" - ], - "properties": { - "onWebPages": { - "type": "boolean", - "default": false - }, - "onPopupPages": { - "type": "boolean", - "default": false - }, - "onSearchPages": { - "type": "boolean", - "default": false - }, - "onSearchQuery": { - "type": "boolean", - "default": false - } - } - }, - "selectText": { - "type": "boolean", - "default": false - }, - "alphanumeric": { - "type": "boolean", - "default": true - }, - "autoHideResults": { - "type": "boolean", - "default": false - }, - "delay": { - "type": "number", - "minimum": 0, - "default": 20 - }, - "hideDelay": { - "type": "number", - "minimum": 0, - "default": 0 - }, - "length": { - "type": "integer", - "minimum": 1, - "default": 16 - }, - "deepDomScan": { - "type": "boolean", - "default": false - }, - "popupNestingMaxDepth": { - "type": "integer", - "minimum": 0, - "default": 10 - }, - "enablePopupSearch": { - "type": "boolean", - "default": false - }, - "enableOnPopupExpressions": { - "type": "boolean", - "default": false - }, - "enableOnSearchPage": { - "type": "boolean", - "default": true - }, - "enableSearchTags": { - "type": "boolean", - "default": false - }, - "layoutAwareScan": { - "type": "boolean", - "default": false - }, - "matchTypePrefix": { - "type": "boolean", - "default": false - }, - "hidePopupOnCursorExit": { - "type": "boolean", - "default": false - }, - "hidePopupOnCursorExitDelay": { - "type": "number", - "minimum": 0, - "default": 0 - }, - "reducedMotionScrolling": { - "type": "boolean", - "default": false - }, - "reducedMotionScrollingScale": { - "type": "number", - "default": 1 - }, - "reducedMotionScrollingSwipeThreshold": { - "type": "number", - "minimum": 0, - "default": 40 - }, - "normalizeCssZoom": { - "type": "boolean", - "default": true - }, - "scanWithoutMousemove": { - "type": "boolean", - "default": true - }, - "scanResolution": { - "type": "string", - "enum": [ - "character", - "word" - ], - "default": "character" - } - } - }, - "translation": { - "type": "object", - "required": [ - "textReplacements", - "searchResolution" - ], - "properties": { - "searchResolution": { - "type": "string", - "enum": [ - "letter", - "word" - ], - "default": "letter" - }, - "textReplacements": { - "type": "object", - "required": [ - "searchOriginal", - "groups" - ], - "properties": { - "searchOriginal": { - "type": "boolean", - "default": true - }, - "groups": { - "type": "array", - "items": { - "type": "array", - "items": { - "type": "object", - "required": [ - "pattern", - "ignoreCase", - "replacement" - ], - "properties": { - "pattern": { - "type": "string", - "default": "" - }, - "ignoreCase": { - "type": "boolean", - "default": false - }, - "replacement": { - "type": "string", - "default": "" - } - } - } - } - } - } - } - } - }, - "dictionaries": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "alias", - "enabled", - "allowSecondarySearches", - "definitionsCollapsible", - "partsOfSpeechFilter", - "useDeinflections" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "alias": { - "type": "string", - "default": "" - }, - "enabled": { - "type": "boolean", - "default": true - }, - "allowSecondarySearches": { - "type": "boolean", - "default": false - }, - "definitionsCollapsible": { - "type": "string", - "enum": ["not-collapsible", "expanded", "collapsed", "force-collapsed", "force-expanded"], - "default": "not-collapsible" - }, - "partsOfSpeechFilter": { - "type": "boolean", - "default": true - }, - "useDeinflections": { - "type": "boolean", - "default": true - } - } - } - }, - "parsing": { - "type": "object", - "required": [ - "enableScanningParser", - "enableMecabParser", - "selectedParser", - "termSpacing", - "readingMode" - ], - "properties": { - "enableScanningParser": { - "type": "boolean", - "default": true - }, - "enableMecabParser": { - "type": "boolean", - "default": false - }, - "selectedParser": { - "type": ["string", "null"], - "default": null - }, - "termSpacing": { - "type": "boolean", - "default": true - }, - "readingMode": { - "type": "string", - "enum": ["hiragana", "katakana", "romaji", "dictionary-reading", "none"], - "default": "hiragana" - } - } - }, - "anki": { - "type": "object", - "required": [ - "enable", - "server", - "tags", - "screenshot", - "cardFormats", - "duplicateScope", - "duplicateScopeCheckAllModels", - "checkForDuplicates", - "duplicateBehavior", - "fieldTemplates", - "suspendNewCards", - "displayTagsAndFlags", - "targetTags", - "noteGuiMode", - "apiKey", - "downloadTimeout", - "forceSync" - ], - "properties": { - "enable": { - "type": "boolean", - "default": false - }, - "server": { - "type": "string", - "default": "http://127.0.0.1:8765" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "yomitan" - ] - }, - "screenshot": { - "type": "object", - "required": [ - "format", - "quality" - ], - "properties": { - "format": { - "type": "string", - "enum": ["png", "jpeg"], - "default": "png" - }, - "quality": { - "type": "integer", - "minimum": 0, - "maximum": 100, - "default": 92 - } - } - }, - "cardFormats": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "icon", - "deck", - "model", - "fields", - "type" - ], - "properties": { - "name": { - "type": "string", - "default": "" - }, - "icon": { - "type": "string", - "enum": ["big-circle", "small-circle", "big-square", "big-diamond"], - "default": "big-circle" - }, - "deck": { - "type": "string", - "default": "" - }, - "model": { - "type": "string", - "default": "" - }, - "type": { - "type": "string", - "enum": ["term", "kanji"], - "default": "term" - }, - "fields": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "value": { - "type": "string", - "default": "" - }, - "overwriteMode": { - "type": "string", - "enum": ["coalesce", "coalesce-new", "skip", "append", "prepend", "overwrite"], - "default": "coalesce" - } - } - } - } - } - }, - "default": [ - { - "name": "Expression", - "icon": "big-circle", - "deck": "", - "model": "", - "fields": {}, - "type": "term" - }, - { - "name": "Reading", - "icon": "small-circle", - "deck": "", - "model": "", - "fields": {}, - "type": "term" - }, - { - "name": "Kanji", - "icon": "big-circle", - "deck": "", - "model": "", - "fields": {}, - "type": "kanji" - } - ] - }, - "duplicateScope": { - "type": "string", - "default": "collection", - "enum": ["collection", "deck", "deck-root"] - }, - "duplicateScopeCheckAllModels": { - "type": "boolean", - "default": false - }, - "checkForDuplicates": { - "type": "boolean", - "default": true - }, - "duplicateBehavior": { - "type": "string", - "enum": ["prevent", "overwrite", "new"], - "default": "new" - }, - "fieldTemplates": { - "type": ["string", "null"], - "default": null - }, - "suspendNewCards": { - "type": "boolean", - "default": false - }, - "displayTagsAndFlags": { - "type": "string", - "enum": ["never", "always", "non-standard", "custom"], - "default": "never" - }, - "targetTags": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "noteGuiMode": { - "type": "string", - "enum": ["browse", "edit"], - "default": "browse" - }, - "apiKey": { - "type": "string", - "default": "" - }, - "downloadTimeout": { - "type": "number", - "default": 0, - "minimum": 0 - }, - "forceSync": { - "type": "boolean", - "default": false - } - } - }, - "sentenceParsing": { - "type": "object", - "required": [ - "scanExtent", - "terminationCharacterMode", - "terminationCharacters" - ], - "properties": { - "scanExtent": { - "type": "integer", - "minimum": 0, - "default": 200 - }, - "terminationCharacterMode": { - "type": "string", - "enum": ["custom", "custom-no-newlines", "newlines", "none"], - "default": "custom" - }, - "terminationCharacters": { - "type": "array", - "items": { - "type": "object", - "required": [ - "enabled", - "character1", - "character2", - "includeCharacterAtStart", - "includeCharacterAtEnd" - ], - "properties": { - "enabled": { - "type": "boolean", - "default": true - }, - "character1": { - "type": "string", - "default": "\"", - "minLength": 1, - "maxLength": 1 - }, - "character2": { - "type": ["string", "null"], - "default": "\"", - "minLength": 1, - "maxLength": 1 - }, - "includeCharacterAtStart": { - "type": "boolean", - "default": false - }, - "includeCharacterAtEnd": { - "type": "boolean", - "default": false - } - } - }, - "default": [ - {"enabled": true, "character1": "「", "character2": "」", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": "『", "character2": "』", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": "\"", "character2": "\"", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": "'", "character2": "'", "includeCharacterAtStart": false, "includeCharacterAtEnd": false}, - {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "。", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "…", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︒", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︕", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︖", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}, - {"enabled": true, "character1": "︙", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true} - ] - } - } - }, - "inputs": { - "type": "object", - "required": [ - "hotkeys" - ], - "properties": { - "hotkeys": { - "type": "array", - "items": { - "type": "object", - "required": [ - "action", - "argument", - "key", - "modifiers", - "scopes", - "enabled" - ], - "properties": { - "action": { - "type": "string", - "default": "" - }, - "argument": { - "type": "string", - "default": "" - }, - "key": { - "type": ["string", "null"], - "default": null - }, - "modifiers": { - "type": "array", - "items": { - "type": "string", - "enum": ["alt", "ctrl", "shift", "meta"], - "default": "alt" - } - }, - "scopes": { - "type": "array", - "items": { - "type": "string", - "enum": ["popup", "search", "web"], - "default": "popup" - }, - "default": ["popup", "search"] - }, - "enabled": { - "type": "boolean", - "default": true - } - } - }, - "default": [ - {"action": "close", "argument": "", "key": "Escape", "modifiers": [], "scopes": ["popup"], "enabled": true}, - {"action": "focusSearchBox", "argument": "", "key": "Escape", "modifiers": [], "scopes": ["search"], "enabled": true}, - {"action": "previousEntry", "argument": "3", "key": "PageUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "nextEntry", "argument": "3", "key": "PageDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "lastEntry", "argument": "", "key": "End", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "firstEntry", "argument": "", "key": "Home", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "previousEntry", "argument": "1", "key": "ArrowUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "nextEntry", "argument": "1", "key": "ArrowDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "historyBackward", "argument": "", "key": "KeyB", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "historyForward", "argument": "", "key": "KeyF", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "profilePrevious", "argument": "", "key": "Minus", "modifiers": ["alt"], "scopes": ["popup", "search", "web"], "enabled": true}, - {"action": "profileNext", "argument": "", "key": "Equal", "modifiers": ["alt"], "scopes": ["popup", "search", "web"], "enabled": true}, - {"action": "addNote", "argument": "0", "key": "KeyE", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "addNote", "argument": "1", "key": "KeyR", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "addNote", "argument": "2", "key": "KeyK", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "playAudio", "argument": "", "key": "KeyP", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "viewNotes", "argument": "0", "key": "KeyV", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true}, - {"action": "copyHostSelection", "argument": "", "key": "KeyC", "modifiers": ["ctrl"], "scopes": ["popup"], "enabled": true} - ] - } - } - }, - "clipboard": { - "type": "object", - "required": [ - "enableBackgroundMonitor", - "enableSearchPageMonitor", - "autoSearchContent", - "maximumSearchLength" - ], - "properties": { - "enableBackgroundMonitor": { - "type": "boolean", - "default": false - }, - "enableSearchPageMonitor": { - "type": "boolean", - "default": false - }, - "autoSearchContent": { - "type": "boolean", - "default": true - }, - "maximumSearchLength": { - "type": "integer", - "default": 1000, - "minimum": 0 - } - } - }, - "accessibility": { - "type": "object", - "required": [ - "forceGoogleDocsHtmlRendering" - ], - "properties": { - "forceGoogleDocsHtmlRendering": { - "type": "boolean", - "default": false - } - } - } - } - } - } - } - }, - "profileCurrent": { - "type": "integer", - "minimum": 0, - "default": 0 - }, - "global": { - "type": "object", - "required": [ - "database", - "dataTransmissionConsentShown" - ], - "properties": { - "database": { - "type": "object", - "required": [ - "prefixWildcardsSupported" - ], - "properties": { - "prefixWildcardsSupported": { - "type": "boolean", - "default": false - } - } - }, - "dataTransmissionConsentShown": { - "type": "boolean", - "default": false - } - } - } - } -} diff --git a/vendor/yomitan/data/schemas/recommended-dictionaries-schema.json b/vendor/yomitan/data/schemas/recommended-dictionaries-schema.json deleted file mode 100644 index b3df85aa..00000000 --- a/vendor/yomitan/data/schemas/recommended-dictionaries-schema.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "$id": "recommendedDictionaries", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Contains data for recommended dictionaries on welcome page.", - "type": "object", - "patternProperties": { - "^.{2,}$": { - "type": "object", - "properties": { - "terms": { - "type": "array", - "items": { - "$ref": "#/definitions/Dictionary" - } - }, - "kanji": { - "type": "array", - "items": { - "$ref": "#/definitions/Dictionary" - } - }, - "frequency": { - "type": "array", - "items": { - "$ref": "#/definitions/Dictionary" - } - }, - "grammar": { - "type": "array", - "items": { - "$ref": "#/definitions/Dictionary" - } - }, - "pronunciation": { - "type": "array", - "items": { - "$ref": "#/definitions/Dictionary" - } - } - }, - "required": [ - "terms", - "kanji", - "frequency", - "grammar" - ], - "additionalProperties": false - } - }, - "definitions": { - "Dictionary": { - "type": "object", - "required": [ - "name", - "downloadUrl", - "description" - ], - "properties": { - "name": { - "type": "string", - "minLength": 2 - }, - "downloadUrl": { - "type": "string", - "minLength": 2 - }, - "description": { - "type": "string", - "minLength": 2 - }, - "homepage": { - "type": "string", - "minLength": 2 - } - } - } - } -} diff --git a/vendor/yomitan/data/schemas/recommended-settings-schema.json b/vendor/yomitan/data/schemas/recommended-settings-schema.json deleted file mode 100644 index b795d49a..00000000 --- a/vendor/yomitan/data/schemas/recommended-settings-schema.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "$id": "recommendedSettings", - "$schema": "http://json-schema.org/draft-07/schema#", - "description": "Contains data for recommended default options overrides by language.", - "type": "object", - "$defs": { - "path": { - "type": "string", - "minLength": 2 - }, - "value": { - "anyOf": [ - { - "type": "string", - "minLength": 1 - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "array" - }, - { - "type": "object" - } - ] - }, - "description": { - "type": "string", - "minLength": 2 - } - }, - "patternProperties": { - "^.{2,}$": { - "title": "Language", - "type": "array", - "items": { - "title": "Modification", - "type": "object", - "oneOf": [ - { - "type": "object", - "title": "ModificationSet", - "properties": { - "modification": { - "type": "object", - "properties": { - "action": { - "type": "string", - "const": "set" - }, - "path": { - "$ref": "#/$defs/path" - }, - "value": { - "$ref": "#/$defs/value" - } - } - }, - "description": { - "$ref": "#/$defs/description" - } - } - }, - { - "type": "object", - "title": "ModificationDelete", - "properties": { - "modification": { - "type": "object", - "properties": { - "action": { - "type": "string", - "const": "delete" - }, - "path": { - "$ref": "#/$defs/path" - }, - "value": { - "$ref": "#/$defs/value" - } - } - }, - "description": { - "$ref": "#/$defs/description" - } - } - }, - { - "type": "object", - "title": "ModificationSwap", - "properties": { - "modification": { - "type": "object", - "properties": { - "action": { - "type": "string", - "const": "swap" - }, - "path1": { - "$ref": "#/$defs/path" - }, - "path2": { - "$ref": "#/$defs/path" - } - } - }, - "description": { - "$ref": "#/$defs/description" - } - } - }, - { - "type": "object", - "title": "ModificationSplice", - "properties": { - "modification": { - "type": "object", - "properties": { - "action": { - "type": "string", - "const": "splice" - }, - "path": { - "$ref": "#/$defs/path" - }, - "start": { - "type": "number" - }, - "deleteCount": { - "type": "number" - }, - "items": { - "type": "array", - "items": { - "$ref": "#/$defs/value" - } - } - } - }, - "description": { - "$ref": "#/$defs/description" - } - } - }, - { - "type": "object", - "title": "ModificationPush", - "properties": { - "modification": { - "type": "object", - "properties": { - "action": { - "type": "string", - "const": "push" - }, - "path": { - "$ref": "#/$defs/path" - }, - "items": { - "type": "array", - "items": { - "$ref": "#/$defs/value" - } - } - } - }, - "description": { - "$ref": "#/$defs/description" - } - } - } - ] - } - } - } -} diff --git a/vendor/yomitan/data/structured-content-style.json b/vendor/yomitan/data/structured-content-style.json deleted file mode 100644 index eb9ef332..00000000 --- a/vendor/yomitan/data/structured-content-style.json +++ /dev/null @@ -1,340 +0,0 @@ -[ - { - "selectors": [".gloss-image-container"], - "styles": [ - ["display", "inline-block"], - ["white-space", "nowrap"], - ["max-width", "100%"], - ["max-height", "100vh"], - ["position", "relative"], - ["vertical-align", "top"], - ["line-height", "0"], - ["overflow", "hidden"], - ["font-size", "1px"] - ] - }, - { - "selectors": [".gloss-image-link"], - "styles": [ - ["cursor", "inherit"], - ["display", "inline-block"], - ["position", "relative"], - ["line-height", "1"], - ["max-width", "100%"], - ["color", "inherit"] - ] - }, - { - "selectors": [".gloss-image-container-overlay"], - "styles": [ - ["position", "absolute"], - ["left", "0"], - ["top", "0"], - ["width", "100%"], - ["height", "100%"], - ["font-size", "calc(1em * var(--font-size-no-units))"], - ["line-height", "var(--line-height)"], - ["display", "table"], - ["table-layout", "fixed"], - ["white-space", "normal"], - ["color", "var(--text-color-light3)"] - ] - }, - { - "selectors": [".gloss-image-link[data-has-image=true][data-image-load-state=load-error] .gloss-image-container-overlay::after"], - "styles": [ - ["content", "'Image failed to load'"], - ["display", "table-cell"], - ["width", "100%"], - ["height", "100%"], - ["vertical-align", "middle"], - ["text-align", "center"], - ["padding", "0.25em"] - ] - }, - { - "selectors": [".gloss-image-background"], - "styles": [ - ["--image", "none"], - ["position", "absolute"], - ["left", "0"], - ["top", "0"], - ["width", "100%"], - ["height", "100%"], - ["-webkit-mask-repeat", "no-repeat"], - ["-webkit-mask-position", "center center"], - ["-webkit-mask-mode", "alpha"], - ["-webkit-mask-size", "contain"], - ["-webkit-mask-image", "var(--image)"], - ["mask-repeat", "no-repeat"], - ["mask-position", "center center"], - ["mask-mode", "alpha"], - ["mask-size", "contain"], - ["mask-image", "var(--image)"], - ["background-color", "currentColor"] - ] - }, - { - "selectors": [".gloss-image"], - "styles": [ - ["display", "inline-block"], - ["vertical-align", "top"], - ["object-fit", "contain"], - ["border", "none"], - ["outline", "none"] - ] - }, - { - "selectors": [".gloss-image-link[data-has-aspect-ratio=true] .gloss-image"], - "styles": [ - ["position", "absolute"], - ["left", "0"], - ["top", "0"], - ["width", "100%"], - ["height", "100%"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-image-rendering=pixelated] .gloss-image", - ".gloss-image-link[data-image-rendering=pixelated] .gloss-image-background" - ], - "styles": [ - ["image-rendering", "auto"], - ["image-rendering", "-moz-crisp-edges"], - ["image-rendering", "-webkit-optimize-contrast"], - ["image-rendering", "pixelated"], - ["image-rendering", "crisp-edges"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-image-rendering=crisp-edges] .gloss-image", - ".gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background" - ], - "styles": [ - ["image-rendering", "auto"], - ["image-rendering", "-moz-crisp-edges"], - ["image-rendering", "-webkit-optimize-contrast"], - ["image-rendering", "crisp-edges"] - ] - }, - { - "selectors": [ - ":root[data-browser=firefox] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image", - ":root[data-browser=firefox] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background", - ":root[data-browser=firefox-mobile] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image", - ":root[data-browser=firefox-mobile] .gloss-image-link[data-image-rendering=crisp-edges] .gloss-image-background" - ], - "styles": [ - ["image-rendering", "auto"] - ] - }, - { - "selectors": [".gloss-image-link[data-has-aspect-ratio=true] .gloss-image-sizer"], - "styles": [ - ["display", "inline-block"], - ["width", "0"], - ["vertical-align", "top"], - ["font-size", "0"] - ] - }, - { - "selectors": [".gloss-image-link-text"], - "styles": [ - ["display", "none"], - ["line-height", "var(--line-height)"] - ] - }, - { - "selectors": [".gloss-image-link-text::before"], - "styles": [ - ["content", "'['"] - ] - }, - { - "selectors": [".gloss-image-link-text::after"], - "styles": [ - ["content", "']'"] - ] - }, - { - "selectors": [".gloss-image-description"], - "styles": [ - ["display", "block"], - ["white-space", "pre-line"] - ] - }, - { - "selectors": [".gloss-image-link[data-appearance=monochrome] .gloss-image"], - "styles": [ - ["--shadow-settings", "0 0 0.01px var(--text-color)"], - ["filter", "grayscale(1) opacity(0.5) drop-shadow(var(--shadow-settings)) drop-shadow(var(--shadow-settings)) saturate(1000%) brightness(1000%)"], - ["opacity", "0"] - ] - }, - { - "selectors": [".gloss-image-link[data-size-units=em] .gloss-image-container"], - "styles": [ - ["font-size", "1em"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=baseline]"], - "styles": [ - ["vertical-align", "baseline"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=sub]"], - "styles": [ - ["vertical-align", "sub"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=super]"], - "styles": [ - ["vertical-align", "super"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=text-top]"], - "styles": [ - ["vertical-align", "top"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=text-bottom]"], - "styles": [ - ["vertical-align", "bottom"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=middle]"], - "styles": [ - ["vertical-align", "middle"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=top]"], - "styles": [ - ["vertical-align", "top"] - ] - }, - { - "selectors": [".gloss-image-link[data-vertical-align=bottom]"], - "styles": [ - ["vertical-align", "bottom"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true]", - ":root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true]" - ], - "styles": [ - ["vertical-align", "baseline"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true] .gloss-image-container", - ":root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true] .gloss-image-container" - ], - "styles": [ - ["display", "none"], - ["position", "absolute"], - ["left", "0"], - ["top", "100%"], - ["z-index", "1"] - ] - }, - { - "selectors": [ - ".entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsed=true] .gloss-image-container", - ":root[data-glossary-layout-mode^=compact] .entry:nth-last-of-type(1):not(:nth-of-type(1)) .gloss-image-link[data-collapsible=true] .gloss-image-container", - ":root[data-glossary-layout-mode^=compact] .definition-item:nth-last-of-type(1) .gloss-image-link[data-collapsible=true] .gloss-image-container" - ], - "styles": [ - ["bottom", "100%"], - ["top", "auto"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true]:hover .gloss-image-container", - ".gloss-image-link[data-collapsed=true]:focus .gloss-image-container", - ":root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true]:hover .gloss-image-container", - ":root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true]:focus .gloss-image-container" - ], - "styles": [ - ["display", "block"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true] .gloss-image-link-text", - ":root[data-glossary-layout-mode^=compact] .gloss-image-link[data-collapsible=true] .gloss-image-link-text" - ], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [ - ".gloss-image-link[data-collapsed=true]~.gloss-image-description", - ":root[data-glossary-layout-mode^=compact] .gloss-image-description" - ], - "styles": [ - ["display", "inline"] - ] - }, - { - "selectors": [".gloss-link-external-icon"], - "styles": [ - ["display", "none"] - ] - }, - { - "selectors": [".gloss-sc-table-container"], - "styles": [ - ["display", "block"] - ] - }, - { - "selectors": [".gloss-sc-table"], - "styles": [ - ["table-layout", "auto"], - ["border-collapse", "collapse"] - ] - }, - { - "selectors": [ - ".gloss-sc-thead", - ".gloss-sc-tfoot", - ".gloss-sc-th" - ], - "styles": [ - ["font-weight", "bold"] - ] - }, - { - "selectors": [ - ".gloss-sc-th", - ".gloss-sc-td" - ], - "styles": [ - ["border-style", "solid"], - ["padding", "0.25em"], - ["vertical-align", "top"], - ["border-width", "1px"], - ["border-color", "currentColor"] - ] - }, - { - "selectors": [".gloss-image-link:not([data-appearance=monochrome]) .gloss-image-background"], - "styles": [ - ["display", "none"] - ] - } -] diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v10.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v10.handlebars deleted file mode 100644 index 8442a93c..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v10.handlebars +++ /dev/null @@ -1,30 +0,0 @@ -{{#*inline "part-of-speech-pretty"}} - {{~#if (op "===" . "v1")~}}Ichidan verb - {{~else if (op "===" . "v5")~}}Godan verb - {{~else if (op "===" . "vk")~}}Kuru verb - {{~else if (op "===" . "vs")~}}Suru verb - {{~else if (op "===" . "vz")~}}Zuru verb - {{~else if (op "===" . "adj-i")~}}I-adjective - {{~else if (op "===" . "n")~}}Noun - {{~else~}}{{.}} - {{~/if~}} -{{/inline}} - -{{#*inline "part-of-speech"}} - {{~#scope~}} - {{~#if (op "!==" definition.type "kanji")~}} - {{~#set "first" true}}{{/set~}} - {{~#each definition.expressions~}} - {{~#each wordClasses~}} - {{~#unless (get (concat "used_" .))~}} - {{~> part-of-speech-pretty . ~}} - {{~#unless (get "first")}}, {{/unless~}} - {{~#set (concat "used_" .) true~}}{{~/set~}} - {{~#set "first" false~}}{{~/set~}} - {{~/unless~}} - {{~/each~}} - {{~/each~}} - {{~#if (get "first")~}}Unknown{{~/if~}} - {{~/if~}} - {{~/scope~}} -{{/inline}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v12.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v12.handlebars deleted file mode 100644 index 9fe3c9d0..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v12.handlebars +++ /dev/null @@ -1,3 +0,0 @@ -{{#*inline "search-query"}} - {{~#multiLine}}{{context.fullQuery}}{{/multiLine~}} -{{/inline}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v13.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v13.handlebars deleted file mode 100644 index afa5a2c0..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v13.handlebars +++ /dev/null @@ -1,148 +0,0 @@ -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{#getMedia "selectionText"}}{{/getMedia}}{{/if~}} -{{/inline}} - -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{#getMedia "textFurigana" definition.cloze.sentence escape=false}}{{/getMedia}} - {{~else~}} - {{definition.cloze.sentence}} - {{~/if~}} - {{~/if~}} -{{/inline}} - -{{<<<<<<<}} -{{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}} -{{=======}} -{{#each glossary}}{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}{{/each}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}} -{{=======}} -{{#each glossary}}{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}{{#unless @last}} | {{/unless}}{{/each}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#each glossary}}
  • {{#multiLine}}{{.}}{{/multiLine}}
  • {{/each}} -{{=======}} -{{#each glossary}}
  • {{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}}
  • {{/each}} -{{>>>>>>>}} - -{{<<<<<<<}} - {{~#if definition.audioFileName~}} - [sound:{{definition.audioFileName}}] - {{~/if~}} -{{=======}} - {{~#if (hasMedia "audio")~}} - [sound:{{#getMedia "audio"}}{{/getMedia}}] - {{~/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} - -{{=======}} - {{~#if (hasMedia "screenshot")~}} - - {{~/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} - {{~#if definition.clipboardImageFileName~}} - - {{~/if~}} -{{=======}} - {{~#if (hasMedia "clipboardImage")~}} - - {{~/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#if definition.clipboardText~}}{{definition.clipboardText}}{{~/if~}} -{{=======}} -{{~#if (hasMedia "clipboardText")}}{{#getMedia "clipboardText"}}{{/getMedia}}{{/if~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "pitch-accent-item-downstep-notation"}} - {{~#scope~}} - - {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}} - {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}} - {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}} - {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}} - {{~#each (getKanaMorae reading)~}} - {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}} - {{~#set "style2"}}{{/set~}} - {{~#if (isMoraPitchHigh @index ../position)}} - {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}} - {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}} - {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}} - {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}} - {{~/if~}} - {{~/if~}} - {{{.}}} - {{~/each~}} - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}} -{{#*inline "pitch-accent-item-graph"}} - {{~#scope~}} - {{~#set "morae" (getKanaMorae reading)}}{{/set~}} - {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}} - - - - - - - pitch-accent-item-graph-position index=@index position=../position~}} - {{~#set "cmd" "L"}}{{/set~}} - {{~/each~}} - "> - pitch-accent-item-graph-position index=(get "morae-count") position=position}}"> - {{#each (get "morae")}} - - {{/each}} - - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-position"~}} - [{{position}}] -{{~/inline}} - -{{#*inline "pitch-accent-item"}} - {{~#if (op "==" format "downstep-notation")~}} - {{~> pitch-accent-item-downstep-notation~}} - {{~else if (op "==" format "graph")~}} - {{~> pitch-accent-item-graph~}} - {{~else if (op "==" format "position")~}} - {{~> pitch-accent-item-position~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accent-item"}} - {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='downstep-notation'~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='text'~}} -{{/inline}} -{{>>>>>>>}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v2.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v2.handlebars deleted file mode 100644 index c018094e..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v2.handlebars +++ /dev/null @@ -1,109 +0,0 @@ -{{! Pitch Accents }} -{{#*inline "pitch-accent-item-downstep-notation"}} - {{~#scope~}} - - {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}} - {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}} - {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}} - {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}} - {{~#each (getKanaMorae reading)~}} - {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}} - {{~#set "style2"}}{{/set~}} - {{~#if (isMoraPitchHigh @index ../position)}} - {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}} - {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}} - {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}} - {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}} - {{~/if~}} - {{~/if~}} - {{{.}}} - {{~/each~}} - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}} -{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}} -{{#*inline "pitch-accent-item-graph"}} - {{~#scope~}} - {{~#set "morae" (getKanaMorae reading)}}{{/set~}} - {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}} - - - - - - - pitch-accent-item-graph-position index=@index position=../position~}} - {{~#set "cmd" "L"}}{{/set~}} - {{~/each~}} - "> - pitch-accent-item-graph-position index=(get "morae-count") position=position}}"> - {{#each (get "morae")}} - - {{/each}} - - - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-item-position"~}} - [{{position}}] -{{~/inline}} - -{{#*inline "pitch-accent-item"}} - {{~#if (op "==" format "downstep-notation")~}} - {{~> pitch-accent-item-downstep-notation~}} - {{~else if (op "==" format "graph")~}} - {{~> pitch-accent-item-graph~}} - {{~else if (op "==" format "position")~}} - {{~> pitch-accent-item-position~}} - {{~/if~}} -{{/inline}} - -{{#*inline "pitch-accent-item-disambiguation"}} - {{~#scope~}} - {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}} - {{~#if (op ">" (property (get "exclusive") "length") 0)~}} - {{~#set "separator" ""~}}{{/set~}} - ({{#each (get "exclusive")~}} - {{~#get "separator"}}{{/get~}}{{{.}}} - {{~/each}} only) - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~else~}} - No pitch accent data - {{~/if~}} -{{/inline}} - -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='downstep-notation'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} - -{{#*inline "pitch-accent-positions"}} - {{~> pitch-accent-list format='position'~}} -{{/inline}} -{{! End Pitch Accents }} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v21.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v21.handlebars deleted file mode 100644 index 33c4dc6c..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v21.handlebars +++ /dev/null @@ -1,161 +0,0 @@ -{{<<<<<<<}} -{{#formatGlossary ../dictionary}}{{{.}}}{{/formatGlossary}} -{{=======}} -{{formatGlossary ../dictionary .}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furigana}}{{{.}}}{{/furigana~}} -{{=======}} -{{~furigana .~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#furigana}}{{{definition}}}{{/furigana}} -{{=======}} -{{furigana definition}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furigana expression reading~}}{{~/furigana~}} -{{=======}} -{{~furigana expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furigana expression reading}}{{/furigana~}} -{{=======}} -{{~furigana expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furiganaPlain}}{{{.}}}{{/furiganaPlain~}} -{{=======}} -{{~furiganaPlain .~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#furiganaPlain}}{{{definition}}}{{/furiganaPlain}} -{{=======}} -{{furiganaPlain definition}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furiganaPlain expression reading~}}{{~/furiganaPlain~}} -{{=======}} -{{~furiganaPlain expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#furiganaPlain expression reading}}{{/furiganaPlain~}} -{{=======}} -{{~furiganaPlain expression reading~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "audio"}}{{/getMedia}} -{{=======}} -{{getMedia "audio"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "screenshot"}}{{/getMedia}} -{{=======}} -{{getMedia "screenshot"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "clipboardImage"}}{{/getMedia}} -{{=======}} -{{getMedia "clipboardImage"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "clipboardText"}}{{/getMedia}} -{{=======}} -{{getMedia "clipboardText"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "selectionText"}}{{/getMedia}} -{{=======}} -{{getMedia "selectionText"}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#getMedia "textFurigana" definition.cloze.sentence escape=false}}{{/getMedia}} -{{=======}} -{{getMedia "textFurigana" definition.cloze.sentence escape=false}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}} -{{=======}} -{{~pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "any" false}}{{/set~}} -{{=======}} -{{~set "any" false~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "any" true}}{{/set~}} -{{=======}} -{{~set "any" true~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "previousDictionary" dictionary~}}{{~/set~}} -{{=======}} -{{~set "previousDictionary" dictionary~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}} -{{=======}} -{{~set "exclusive" (spread exclusiveExpressions exclusiveReadings)~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "separator" ""~}}{{/set~}} -{{=======}} -{{~set "separator" ""~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#get "separator"}}{{/get~}} -{{=======}} -{{~get "separator"~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "found" false}}{{/set~}} -{{=======}} -{{~set "found" false~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "found" true}}{{/set~}} -{{=======}} -{{~set "found" true~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "first" true}}{{/set~}} -{{=======}} -{{~set "first" true~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set "first" false~}}{{~/set~}} -{{=======}} -{{~set "first" false~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#set (concat "used_" .) true~}}{{~/set~}} -{{=======}} -{{~set (concat "used_" .) true~}} -{{>>>>>>>}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v24.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v24.handlebars deleted file mode 100644 index 1459fd49..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v24.handlebars +++ /dev/null @@ -1,92 +0,0 @@ -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}} -{{/inline}} - -{{#*inline "phonetic-transcriptions"}} - {{~#if (op ">" definition.phoneticTranscriptions.length 0)~}} -
      - {{~#each definition.phoneticTranscriptions~}} - {{~#each phoneticTranscriptions~}} -
    • - {{~set "any" false~}} - {{~#each tags~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{ipa~}} -
    • - {{~/each~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} - -{{<<<<<<<}} -{{#*inline "conjugation"}} - {{~#if definition.reasons~}} - {{~#each definition.reasons~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} - -{{#*inline "frequency-harmonic-rank"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-harmonic-occurrence"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-rank"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-occurrence"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{~#*inline "pitch-accent-categories"~}} - {{~#each (pitchCategories @root)~}}{{~.~}}{{~#unless @last~}},{{~/unless~}}{{~/each~}} -{{~/inline~}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v27.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v27.handlebars deleted file mode 100644 index 48060415..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v27.handlebars +++ /dev/null @@ -1,21 +0,0 @@ -{{<<<<<<<}} -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{getMedia "textFurigana" definition.cloze.sentence escape=false}} - {{~else~}} - {{definition.cloze.sentence}} - {{~/if~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{{getMedia "textFurigana" definition.cloze.sentence escape=false}}} - {{~else~}} - {{{definition.cloze.sentence}}} - {{~/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v28.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v28.handlebars deleted file mode 100644 index 8279e5e9..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v28.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{<<<<<<<}} -{{#*inline "url"}} - {{definition.url}} -{{/inline}} -{{=======}} -{{~#*inline "url"~}} - {{definition.url}} -{{~/inline~}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v29.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v29.handlebars deleted file mode 100644 index e19d66c4..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v29.handlebars +++ /dev/null @@ -1,13 +0,0 @@ -{{<<<<<<<}} -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs-jj"}} - {{~> pitch-accent-list format='graph-jj'~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v33.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v33.handlebars deleted file mode 100644 index 6fb967e5..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v33.handlebars +++ /dev/null @@ -1,69 +0,0 @@ -{{<<<<<<<}} -{{#*inline "sentence"}} - {{~#if definition.cloze}}{{definition.cloze.sentence}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "sentence"}} - {{~#if definition.cloze}}{{{definition.cloze.sentence}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-prefix"}} - {{~#if definition.cloze}}{{definition.cloze.prefix}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-prefix"}} - {{~#if definition.cloze}}{{{definition.cloze.prefix}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-body"}} - {{~#if definition.cloze}}{{definition.cloze.body}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-body"}} - {{~#if definition.cloze}}{{{definition.cloze.body}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{{definition.cloze.bodyKana}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "cloze-suffix"}} - {{~#if definition.cloze}}{{definition.cloze.suffix}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "cloze-suffix"}} - {{~#if definition.cloze}}{{{definition.cloze.suffix}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "clipboard-text"}} - {{~#if (hasMedia "clipboardText")}}{{getMedia "clipboardText"}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "clipboard-text"}} - {{~#if (hasMedia "clipboardText")}}{{{getMedia "clipboardText"}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{getMedia "selectionText"}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{{getMedia "selectionText"}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v34.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v34.handlebars deleted file mode 100644 index 5538df85..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v34.handlebars +++ /dev/null @@ -1,59 +0,0 @@ -{{<<<<<<<}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      {{~#each definition.definitions~}}
    1. {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}
    2. {{~/each~}}
    - {{~else~}} - {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{=======}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v35.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v35.handlebars deleted file mode 100644 index e71efcf8..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v35.handlebars +++ /dev/null @@ -1,33 +0,0 @@ -{{<<<<<<<}} -{{#*inline "glossary-brief"}} - {{~> glossary brief=true ~}} -{{/inline}} -{{=======}} -{{#*inline "glossary-brief"}} - {{~> glossary brief=true ~}} -{{/inline}} - -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-first-no-dictionary"}} - {{~> glossary-first noDictionaryTag=true ~}} -{{/inline}} - -{{#*inline "glossary-first-brief"}} - {{~> glossary-first brief=true ~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v36.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v36.handlebars deleted file mode 100644 index 0b07e483..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v36.handlebars +++ /dev/null @@ -1,3 +0,0 @@ -{{#*inline "onyomi-hiragana"}} - {{~#each definition.onyomi}}{{hiragana .}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v37.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v37.handlebars deleted file mode 100644 index b6effdda..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v37.handlebars +++ /dev/null @@ -1,33 +0,0 @@ -{{<<<<<<<}} -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~else~}} - No pitch accent data - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v38.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v38.handlebars deleted file mode 100644 index 83b6e3ac..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v38.handlebars +++ /dev/null @@ -1,43 +0,0 @@ -{{<<<<<<<}} -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{name}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v4.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v4.handlebars deleted file mode 100644 index dc88395a..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v4.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{#*inline "clipboard-image"}} - {{~#if definition.clipboardImageFileName~}} - - {{~/if~}} -{{/inline}} - -{{#*inline "clipboard-text"}} - {{~#if definition.clipboardText~}}{{definition.clipboardText}}{{~/if~}} -{{/inline}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v41.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v41.handlebars deleted file mode 100644 index 4da7d1bb..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v41.handlebars +++ /dev/null @@ -1,129 +0,0 @@ -{{<<<<<<<}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{=======}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~#if dictScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{=======}} -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v45.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v45.handlebars deleted file mode 100644 index 14da7ce7..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v45.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{<<<<<<<}} -{{#*inline "selection-text"}} - {{~#if (hasMedia "selectionText")}}{{{getMedia "selectionText"}}}{{/if~}} -{{/inline}} -{{=======}} -{{#*inline "popup-selection-text"}} - {{~#if (hasMedia "popupSelectionText")}}{{{getMedia "popupSelectionText"}}}{{/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v49.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v49.handlebars deleted file mode 100644 index f95cdd46..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v49.handlebars +++ /dev/null @@ -1,115 +0,0 @@ -{{<<<<<<<}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~set "any" false~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionary}} - {{~set "any" true~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{formatGlossary ../dictionary .}}
    • {{/each}}
    - {{~/if~}} - {{~set "previousDictionary" dictionary~}} -{{/inline}} -{{=======}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~set "any" false~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionaryAlias}} - {{~set "any" true~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{formatGlossary ../dictionary .}}
    • {{/each}}
    - {{~/if~}} - {{~set "previousDictionary" dictionary~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "dictionary"}} - {{~definition.dictionary~}} -{{/inline}} -{{=======}} -{{#*inline "dictionary"}} - {{~definition.dictionary~}} -{{/inline}} - -{{#*inline "dictionary-alias"}} - {{~definition.dictionaryAlias~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionary}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionaryAlias}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v6.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v6.handlebars deleted file mode 100644 index 809423ce..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v6.handlebars +++ /dev/null @@ -1,25 +0,0 @@ -{{#*inline "conjugation"}} - {{~#if definition.reasons~}} - {{~#each definition.reasons~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{.}} - {{~/each~}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~#furigana expression reading~}}{{~/furigana~}} - ) {{/if~}} - {{~/if~}} - {{~dictionary}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v61.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v61.handlebars deleted file mode 100644 index 781d9f63..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v61.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{#*inline "sentence-furigana-plain"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFuriganaPlain" definition.cloze.sentence)~}} - {{{getMedia "textFuriganaPlain" definition.cloze.sentence escape=false}}} - {{~else~}} - {{{definition.cloze.sentence}}} - {{~/if~}} - {{~/if~}} -{{/inline}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v63.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v63.handlebars deleted file mode 100644 index 1c96da05..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v63.handlebars +++ /dev/null @@ -1,43 +0,0 @@ -{{<<<<<<<}} -{{#*inline "phonetic-transcriptions"}} - {{~#if (op ">" definition.phoneticTranscriptions.length 0)~}} -
      - {{~#each definition.phoneticTranscriptions~}} - {{~#each phoneticTranscriptions~}} -
    • - {{~set "any" false~}} - {{~#each tags~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{ipa~}} -
    • - {{~/each~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "phonetic-transcriptions"}} - {{~#if (op ">" definition.phoneticTranscriptions.length 0)~}} -
      - {{~#each definition.phoneticTranscriptions~}} - {{~#each phoneticTranscriptions~}} -
    • - {{~set "any" false~}} - {{~#each tags~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{ipa~}} -
    • - {{~/each~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v64.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v64.handlebars deleted file mode 100644 index 3adbfc89..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v64.handlebars +++ /dev/null @@ -1,69 +0,0 @@ -{{<<<<<<<}} -{{#*inline "expression"}} - {{~#if merge~}} - {{~#if modeTermKana~}} - {{~#each definition.reading~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~else~}} - {{~#each definition.expression~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~/each~}} - {{~else~}} - {{~#each definition.expression~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~/if~}} - {{~else~}} - {{~#if modeTermKana~}} - {{~#if definition.reading~}} - {{definition.reading}} - {{~else~}} - {{definition.expression}} - {{~/if~}} - {{~else~}} - {{definition.expression}} - {{~/if~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "expression"}} - {{~#if merge~}} - {{~#each definition.expression~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{definition.expression}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "reading"}} - {{~#unless modeTermKana~}} - {{~#if merge~}} - {{~#each definition.reading~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{~definition.reading~}} - {{~/if~}} - {{~/unless~}} -{{/inline}} -{{=======}} -{{#*inline "reading"}} - {{~#if merge~}} - {{~#each definition.reading~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{~definition.reading~}} - {{~/if~}} -{{/inline}} -{{>>>>>>>}} \ No newline at end of file diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v66.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v66.handlebars deleted file mode 100644 index 514b00e6..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v66.handlebars +++ /dev/null @@ -1,16 +0,0 @@ -{{~#*inline "glossary-plain"~}} - {{~#scope~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~#unless ../noDictionaryTag~}} - ({{dictionaryAlias}})
    - {{~/unless~}} - {{#each glossary}}{{{formatGlossaryPlain ../dictionary .}}}{{#unless @last}}
    {{/unless}}{{/each}}{{#unless @last}}
    {{/unless}} - {{~/unless~}} - {{~/each~}} - {{~/scope~}} -{{~/inline~}} - -{{#*inline "glossary-plain-no-dictionary"~}} - {{~> glossary-plain noDictionaryTag=true ~}} -{{/inline}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v67.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v67.handlebars deleted file mode 100644 index 4d5b1541..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v67.handlebars +++ /dev/null @@ -1,47 +0,0 @@ -{{<<<<<<<}} -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionaryAlias}}: {{frequency~}} -
    • - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionaryAlias}}: {{frequency~}} -
    • - {{~/unless~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} -{{>>>>>>>}} - -{{#*inline "single-frequency-number"}} - {{~#if (op ">" definition.frequencyNumbers.length 0)~}} - {{~#each definition.frequencyNumbers~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{frequency~}} - {{~/unless~}} - {{~/each~}} - {{/if}} -{{/inline}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v68.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v68.handlebars deleted file mode 100644 index 942e010c..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v68.handlebars +++ /dev/null @@ -1,9 +0,0 @@ -{{<<<<<<<}} -{{#*inline "pitch-accent-item"}} - {{~pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}} -{{/inline}} -{{=======}} -{{#*inline "pitch-accent-item"}} - {{~pronunciation format=format reading=reading pitchPositions=positions nasalPositions=nasalPositions devoicePositions=devoicePositions~}} -{{/inline}} -{{>>>>>>>}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v71.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v71.handlebars deleted file mode 100644 index da9719f8..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v71.handlebars +++ /dev/null @@ -1,80 +0,0 @@ -{{<<<<<<<}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~#if dictScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} -
    - {{~else~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{=======}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~#if dictScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} -
    - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} -{{>>>>>>>}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v74.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v74.handlebars deleted file mode 100644 index 04c1b260..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v74.handlebars +++ /dev/null @@ -1,36 +0,0 @@ -{{<<<<<<<}} -{{~#*inline "glossary-plain"~}} - {{~#scope~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~#unless ../noDictionaryTag~}} - ({{dictionaryAlias}})
    - {{~/unless~}} - {{#each glossary}}{{{formatGlossaryPlain ../dictionary .}}}{{#unless @last}}
    {{/unless}}{{/each}}{{#unless @last}}
    {{/unless}} - {{~/unless~}} - {{~/each~}} - {{~/scope~}} -{{~/inline~}} -{{=======}} -{{~#*inline "glossary-plain"~}} - {{~#scope~}} - {{~#if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~#unless ../noDictionaryTag~}} - ({{dictionaryAlias}})
    - {{~/unless~}} - {{#each glossary}}{{{formatGlossaryPlain ../dictionary .}}}{{#unless @last}}
    {{/unless}}{{/each}}{{#unless @last}}
    {{/unless}} - {{~/unless~}} - {{~/each~}} - {{~else~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~#unless noDictionaryTag~}} - ({{definition.dictionaryAlias}})
    - {{~/unless~}} - {{#each definition.glossary}}{{{formatGlossaryPlain ../definition.dictionary .}}}{{/each}} - {{~/unless~}} - {{~/if~}} - {{~/scope~}} -{{~/inline~}} -{{>>>>>>>}} diff --git a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v8.handlebars b/vendor/yomitan/data/templates/anki-field-templates-upgrade-v8.handlebars deleted file mode 100644 index b3aed45f..00000000 --- a/vendor/yomitan/data/templates/anki-field-templates-upgrade-v8.handlebars +++ /dev/null @@ -1,131 +0,0 @@ -{{#*inline "stroke-count"}} - {{~#scope~}} - {{~#set "found" false}}{{/set~}} - {{~#each definition.stats.misc~}} - {{~#if (op "===" name "strokes")~}} - {{~#set "found" true}}{{/set~}} - Stroke count: {{value}} - {{~/if~}} - {{~/each~}} - {{~#if (op "!" (get "found"))~}} - Stroke count: Unknown - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{<<<<<<<}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~#set "any" false}}{{/set~}} - {{~#if definitionTags~}}{{#each definitionTags~}} - {{~#if (op "||" (op "!" ../data.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~#set "any" true}}{{/set~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{~/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{{.}}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if glossary.[1]~}} - {{~#if compactGlossaries~}} - {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{#multiLine}}{{.}}{{/multiLine}}
    • {{/each}}
    - {{~/if~}} - {{~else~}} - {{~#multiLine}}{{glossary.[0]}}{{/multiLine~}} - {{~/if~}} -{{/inline}} -{{=======}} -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~#set "any" false}}{{/set~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~#set "any" true}}{{/set~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionary}} - {{~#set "any" true}}{{/set~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{#multiLine}}{{.}}{{/multiLine}}
    • {{/each}}
    - {{~/if~}} - {{~#set "previousDictionary" dictionary~}}{{~/set~}} -{{/inline}} -{{>>>>>>>}} - -{{<<<<<<<}} -{{#*inline "glossary"}} -
    - {{~#if modeKanji~}} - {{~#if definition.glossary.[1]~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{definition.glossary.[0]}} - {{~/if~}} - {{~else~}} - {{~#if group~}} - {{~#if definition.definitions.[1]~}} -
      {{#each definition.definitions}}
    1. {{> glossary-single brief=../brief compactGlossaries=../compactGlossaries data=../.}}
    2. {{/each}}
    - {{~else~}} - {{~> glossary-single definition.definitions.[0] brief=brief compactGlossaries=compactGlossaries data=.~}} - {{~/if~}} - {{~else if merge~}} - {{~#if definition.definitions.[1]~}} -
      {{#each definition.definitions}}
    1. {{> glossary-single brief=../brief compactGlossaries=../compactGlossaries data=../.}}
    2. {{/each}}
    - {{~else~}} - {{~> glossary-single definition.definitions.[0] brief=brief compactGlossaries=compactGlossaries data=.~}} - {{~/if~}} - {{~else~}} - {{~> glossary-single definition brief=brief compactGlossaries=compactGlossaries data=.~}} - {{~/if~}} - {{~/if~}} -
    -{{/inline}} -{{=======}} -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} -
      {{~#each definition.definitions~}}
    1. {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}
    2. {{~/each~}}
    - {{~else~}} - {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/each~}} - {{~/if~}} - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-no-dictionary"}} - {{~> glossary noDictionaryTag=true ~}} -{{/inline}} -{{>>>>>>>}} diff --git a/vendor/yomitan/data/templates/default-anki-field-templates.handlebars b/vendor/yomitan/data/templates/default-anki-field-templates.handlebars deleted file mode 100644 index 80ec17f5..00000000 --- a/vendor/yomitan/data/templates/default-anki-field-templates.handlebars +++ /dev/null @@ -1,490 +0,0 @@ -{{#*inline "glossary-single"}} - {{~#unless brief~}} - {{~#scope~}} - {{~set "any" false~}} - {{~#each definitionTags~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/if~}} - {{~/each~}} - {{~#unless noDictionaryTag~}} - {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{dictionaryAlias}} - {{~set "any" true~}} - {{~/if~}} - {{~/unless~}} - {{~#if (get "any")}}) {{/if~}} - {{~/scope~}} - {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}} - {{~/unless~}} - {{~#if (op "<=" glossary.length 1)~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{/each}} - {{~else if @root.compactGlossaries~}} - {{#each glossary}}{{formatGlossary ../dictionary .}}{{#unless @last}} | {{/unless}}{{/each}} - {{~else~}} -
      {{#each glossary}}
    • {{formatGlossary ../dictionary .}}
    • {{/each}}
    - {{~/if~}} - {{~set "previousDictionary" dictionary~}} -{{/inline}} - -{{#*inline "audio"}} - {{~#if (hasMedia "audio")~}} - [sound:{{getMedia "audio"}}] - {{~/if~}} -{{/inline}} - -{{#*inline "character"}} - {{~definition.character~}} -{{/inline}} - -{{#*inline "dictionary"}} - {{~definition.dictionary~}} -{{/inline}} - -{{#*inline "dictionary-alias"}} - {{~definition.dictionaryAlias~}} -{{/inline}} - -{{#*inline "expression"}} - {{~#if merge~}} - {{~#each definition.expression~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{definition.expression}} - {{~/if~}} -{{/inline}} - -{{#*inline "furigana"}} - {{~#if merge~}} - {{~#each definition.expressions~}} - {{~furigana .~}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{furigana definition}} - {{~/if~}} -{{/inline}} - -{{#*inline "furigana-plain"}} - {{~#if merge~}} - {{~#each definition.expressions~}} - {{~furiganaPlain .~}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{furiganaPlain definition}} - {{~/if~}} -{{/inline}} - -{{~#*inline "glossary"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} -
      - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    1. - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} -
    2. - {{~#if dictScopedStyles~}} - - {{~/if~}} - {{~/unless~}} - {{~/each~}} -
    - {{~else if (op "===" definition.type "kanji")~}} - {{~#if (op ">" definition.glossary.length 1)~}} -
      {{#each definition.glossary}}
    1. {{.}}
    2. {{/each}}
    - {{~else~}} - {{~#each definition.glossary~}}{{.}}{{~/each~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-no-dictionary"}} - {{~> glossary noDictionaryTag=true ~}} -{{/inline}} - -{{#*inline "glossary-brief"}} - {{~> glossary brief=true ~}} -{{/inline}} - -{{~#*inline "glossary-plain"~}} - {{~#scope~}} - {{~#if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#each definition.definitions~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{~#unless ../noDictionaryTag~}} - ({{dictionaryAlias}})
    - {{~/unless~}} - {{#each glossary}}{{{formatGlossaryPlain ../dictionary .}}}{{#unless @last}}
    {{/unless}}{{/each}}{{#unless @last}}
    {{/unless}} - {{~/unless~}} - {{~/each~}} - {{~else~}} - {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} - {{~#unless noDictionaryTag~}} - ({{definition.dictionaryAlias}})
    - {{~/unless~}} - {{#each definition.glossary}}{{{formatGlossaryPlain ../definition.dictionary .}}}{{/each}} - {{~/unless~}} - {{~/if~}} - {{~/scope~}} -{{~/inline~}} - -{{#*inline "glossary-plain-no-dictionary"~}} - {{~> glossary-plain noDictionaryTag=true ~}} -{{/inline}} - -{{~#*inline "glossary-first"~}} -
    - {{~#scope~}} - {{~#if (op "===" definition.type "term")~}} - {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} - {{~#if definition.glossaryScopedStyles~}} - - {{~/if~}} - {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} - {{~#if (op ">" definition.definitions.length 1)~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~else~}} - {{~#with definition.definitions.[0]~}} - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} - {{~#if glossaryScopedStyles~}} - - {{~/if~}} - {{~/with~}} - {{~/if~}} - {{~/if~}} - {{~/scope~}} -
    -{{~/inline~}} - -{{#*inline "glossary-first-no-dictionary"}} - {{~> glossary-first noDictionaryTag=true ~}} -{{/inline}} - -{{#*inline "glossary-first-brief"}} - {{~> glossary-first brief=true ~}} -{{/inline}} - -{{#*inline "kunyomi"}} - {{~#each definition.kunyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} - -{{#*inline "onyomi"}} - {{~#each definition.onyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} - -{{#*inline "onyomi-hiragana"}} - {{~#each definition.onyomi}}{{hiragana .}}{{#unless @last}}, {{/unless}}{{/each~}} -{{/inline}} - -{{#*inline "reading"}} - {{~#if merge~}} - {{~#each definition.reading~}} - {{{.}}} - {{~#unless @last}}、{{/unless~}} - {{~/each~}} - {{~else~}} - {{~definition.reading~}} - {{~/if~}} -{{/inline}} - -{{#*inline "sentence"}} - {{~#if definition.cloze}}{{{definition.cloze.sentence}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-prefix"}} - {{~#if definition.cloze}}{{{definition.cloze.prefix}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-body"}} - {{~#if definition.cloze}}{{{definition.cloze.body}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-body-kana"}} - {{~#if definition.cloze}}{{{definition.cloze.bodyKana}}}{{/if~}} -{{/inline}} - -{{#*inline "cloze-suffix"}} - {{~#if definition.cloze}}{{{definition.cloze.suffix}}}{{/if~}} -{{/inline}} - -{{#*inline "tags"}} - {{~#mergeTags definition group merge}}{{this}}{{/mergeTags~}} -{{/inline}} - -{{~#*inline "url"~}} - {{definition.url}} -{{~/inline~}} - -{{#*inline "screenshot"}} - {{~#if (hasMedia "screenshot")~}} - - {{~/if~}} -{{/inline}} - -{{#*inline "document-title"}} - {{~context.document.title~}} -{{/inline}} - -{{! Pitch Accents }} -{{#*inline "pitch-accent-item"}} - {{~pronunciation format=format reading=reading pitchPositions=positions nasalPositions=nasalPositions devoicePositions=devoicePositions~}} -{{/inline}} - -{{#*inline "pitch-accent-item-disambiguation"}} - {{~#scope~}} - {{~set "exclusive" (spread exclusiveExpressions exclusiveReadings)~}} - {{~#if (op ">" (property (get "exclusive") "length") 0)~}} - {{~set "separator" ""~}} - ({{#each (get "exclusive")~}} - {{~get "separator"~}}{{{.}}} - {{~/each}} only) - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "pitch-accent-list"}} - {{~#if (op ">" pitchCount 0)~}} - {{~#if (op ">" pitchCount 1)~}}
      {{~/if~}} - {{~#each pitches~}} - {{~#each pitches~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    1. {{~/if~}} - {{~> pitch-accent-item-disambiguation~}} - {{~> pitch-accent-item format=../../format~}} - {{~#if (op ">" ../../pitchCount 1)~}}
    2. {{~/if~}} - {{~/each~}} - {{~/each~}} - {{~#if (op ">" pitchCount 1)~}}
    {{~/if~}} - {{~/if~}} -{{/inline}} - -{{#*inline "pitch-accents"}} - {{~> pitch-accent-list format='text'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs"}} - {{~> pitch-accent-list format='graph'~}} -{{/inline}} - -{{#*inline "pitch-accent-graphs-jj"}} - {{~> pitch-accent-list format='graph-jj'~}} -{{/inline}} - -{{#*inline "pitch-accent-positions"}} - {{~> pitch-accent-list format='position'~}} -{{/inline}} - -{{~#*inline "pitch-accent-categories"~}} - {{~#each (pitchCategories @root)~}}{{~.~}}{{~#unless @last~}},{{~/unless~}}{{~/each~}} -{{~/inline~}} -{{! End Pitch Accents }} - -{{#*inline "phonetic-transcriptions"}} - {{~#if (op ">" definition.phoneticTranscriptions.length 0)~}} -
      - {{~#each definition.phoneticTranscriptions~}} - {{~#each phoneticTranscriptions~}} -
    • - {{~set "any" false~}} - {{~#each tags~}} - {{~#if (get "any")}}, {{else}}({{/if~}} - {{name}} - {{~set "any" true~}} - {{~/each~}} - {{~#if (get "any")}}) {{/if~}} - {{ipa~}} -
    • - {{~/each~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} - -{{#*inline "clipboard-image"}} - {{~#if (hasMedia "clipboardImage")~}} - - {{~/if~}} -{{/inline}} - -{{#*inline "clipboard-text"}} - {{~#if (hasMedia "clipboardText")}}{{{getMedia "clipboardText"}}}{{/if~}} -{{/inline}} - -{{#*inline "conjugation"}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} - {{~set "multiple" false~}} - {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} - {{~set "multiple" true~}} - {{~/if~}} - {{~#if (get "multiple")~}}
      {{/if~}} - {{~#each definition.inflectionRuleChainCandidates~}} - {{~#if (op ">" inflectionRules.length 0)~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~#each inflectionRules~}} - {{~#if (op ">" @index 0)}} « {{/if~}} - {{name}} - {{~/each~}} - {{~#if (get "multiple")~}}
    • {{/if~}} - {{~/if~}} - {{~/each~}} - {{~#if (get "multiple")~}}
    {{/if~}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequencies"}} - {{~#if (op ">" definition.frequencies.length 0)~}} -
      - {{~#each definition.frequencies~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} -
    • - {{~#if (op "!==" ../definition.type "kanji")~}} - {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}( - {{~furigana expression reading~}} - ) {{/if~}} - {{~/if~}} - {{~dictionaryAlias}}: {{frequency~}} -
    • - {{~/unless~}} - {{~/each~}} -
    - {{~/if~}} -{{/inline}} - -{{#*inline "single-frequency-number"}} - {{~#if (op ">" definition.frequencyNumbers.length 0)~}} - {{~#each definition.frequencyNumbers~}} - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} - {{frequency~}} - {{~/unless~}} - {{~/each~}} - {{/if}} -{{/inline}} - -{{#*inline "frequency-harmonic-rank"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-harmonic-occurrence"}} - {{~#if (op "===" definition.frequencyHarmonic -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyHarmonic}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-rank"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 9999999 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{#*inline "frequency-average-occurrence"}} - {{~#if (op "===" definition.frequencyAverage -1) ~}} - 0 - {{~else ~}} - {{definition.frequencyAverage}} - {{~/if~}} -{{/inline}} - -{{#*inline "stroke-count"}} - {{~#scope~}} - {{~set "found" false~}} - {{~#each definition.stats.misc~}} - {{~#if (op "===" name "strokes")~}} - {{~set "found" true~}} - Stroke count: {{value}} - {{~/if~}} - {{~/each~}} - {{~#if (op "!" (get "found"))~}} - Stroke count: Unknown - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "part-of-speech-pretty"}} - {{~#if (op "===" . "v1")~}}Ichidan verb - {{~else if (op "===" . "v5")~}}Godan verb - {{~else if (op "===" . "vk")~}}Kuru verb - {{~else if (op "===" . "vs")~}}Suru verb - {{~else if (op "===" . "vz")~}}Zuru verb - {{~else if (op "===" . "adj-i")~}}I-adjective - {{~else if (op "===" . "n")~}}Noun - {{~else~}}{{.}} - {{~/if~}} -{{/inline}} - -{{#*inline "part-of-speech"}} - {{~#scope~}} - {{~#if (op "!==" definition.type "kanji")~}} - {{~set "first" true~}} - {{~#each definition.expressions~}} - {{~#each wordClasses~}} - {{~#unless (get (concat "used_" .))~}} - {{~> part-of-speech-pretty . ~}} - {{~#unless (get "first")}}, {{/unless~}} - {{~set (concat "used_" .) true~}} - {{~set "first" false~}} - {{~/unless~}} - {{~/each~}} - {{~/each~}} - {{~#if (get "first")~}}Unknown{{~/if~}} - {{~/if~}} - {{~/scope~}} -{{/inline}} - -{{#*inline "search-query"}} - {{~#multiLine}}{{context.fullQuery}}{{/multiLine~}} -{{/inline}} - -{{#*inline "popup-selection-text"}} - {{~#if (hasMedia "popupSelectionText")}}{{{getMedia "popupSelectionText"}}}{{/if~}} -{{/inline}} - -{{#*inline "sentence-furigana"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFurigana" definition.cloze.sentence)~}} - {{{getMedia "textFurigana" definition.cloze.sentence escape=false}}} - {{~else~}} - {{{definition.cloze.sentence}}} - {{~/if~}} - {{~/if~}} -{{/inline}} - -{{#*inline "sentence-furigana-plain"}} - {{~#if definition.cloze~}} - {{~#if (hasMedia "textFuriganaPlain" definition.cloze.sentence)~}} - {{{getMedia "textFuriganaPlain" definition.cloze.sentence escape=false}}} - {{~else~}} - {{{definition.cloze.sentence}}} - {{~/if~}} - {{~/if~}} -{{/inline}} - -{{~> (lookup . "marker") ~}} diff --git a/vendor/yomitan/fonts/NotoSansJP-Regular.ttf b/vendor/yomitan/fonts/NotoSansJP-Regular.ttf deleted file mode 100644 index b2dad730..00000000 Binary files a/vendor/yomitan/fonts/NotoSansJP-Regular.ttf and /dev/null differ diff --git a/vendor/yomitan/images/accessibility.svg b/vendor/yomitan/images/accessibility.svg deleted file mode 100644 index d07890c1..00000000 --- a/vendor/yomitan/images/accessibility.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/add-duplicate-big-circle-blue.svg b/vendor/yomitan/images/add-duplicate-big-circle-blue.svg deleted file mode 100644 index 5a74ae5d..00000000 --- a/vendor/yomitan/images/add-duplicate-big-circle-blue.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/add-duplicate-big-circle.svg b/vendor/yomitan/images/add-duplicate-big-circle.svg deleted file mode 100644 index da39eb1c..00000000 --- a/vendor/yomitan/images/add-duplicate-big-circle.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/add-duplicate-big-diamond.svg b/vendor/yomitan/images/add-duplicate-big-diamond.svg deleted file mode 100644 index 30c39f73..00000000 --- a/vendor/yomitan/images/add-duplicate-big-diamond.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/yomitan/images/add-duplicate-big-square.svg b/vendor/yomitan/images/add-duplicate-big-square.svg deleted file mode 100644 index 6fca2fd9..00000000 --- a/vendor/yomitan/images/add-duplicate-big-square.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/yomitan/images/add-duplicate-small-circle-blue.svg b/vendor/yomitan/images/add-duplicate-small-circle-blue.svg deleted file mode 100644 index efbfc62c..00000000 --- a/vendor/yomitan/images/add-duplicate-small-circle-blue.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/add-duplicate-small-circle.svg b/vendor/yomitan/images/add-duplicate-small-circle.svg deleted file mode 100644 index 6bc430e6..00000000 --- a/vendor/yomitan/images/add-duplicate-small-circle.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/backup.svg b/vendor/yomitan/images/backup.svg deleted file mode 100644 index 54f9e01d..00000000 --- a/vendor/yomitan/images/backup.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/big-circle.svg b/vendor/yomitan/images/big-circle.svg deleted file mode 100644 index 102b9aaf..00000000 --- a/vendor/yomitan/images/big-circle.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/big-diamond.svg b/vendor/yomitan/images/big-diamond.svg deleted file mode 100644 index 6d729bde..00000000 --- a/vendor/yomitan/images/big-diamond.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/yomitan/images/big-square.svg b/vendor/yomitan/images/big-square.svg deleted file mode 100644 index f8571655..00000000 --- a/vendor/yomitan/images/big-square.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/yomitan/images/book.svg b/vendor/yomitan/images/book.svg deleted file mode 100644 index 1b785296..00000000 --- a/vendor/yomitan/images/book.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/browser-action-popup.webp b/vendor/yomitan/images/browser-action-popup.webp deleted file mode 100644 index 56ea7fa3..00000000 Binary files a/vendor/yomitan/images/browser-action-popup.webp and /dev/null differ diff --git a/vendor/yomitan/images/checkbox-border.svg b/vendor/yomitan/images/checkbox-border.svg deleted file mode 100644 index cd117bbd..00000000 --- a/vendor/yomitan/images/checkbox-border.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/checkbox-check.svg b/vendor/yomitan/images/checkbox-check.svg deleted file mode 100644 index 7e2c8f5c..00000000 --- a/vendor/yomitan/images/checkbox-check.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/checkbox-fill.svg b/vendor/yomitan/images/checkbox-fill.svg deleted file mode 100644 index 19056771..00000000 --- a/vendor/yomitan/images/checkbox-fill.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/checkmark.svg b/vendor/yomitan/images/checkmark.svg deleted file mode 100644 index 14504166..00000000 --- a/vendor/yomitan/images/checkmark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/clipboard.svg b/vendor/yomitan/images/clipboard.svg deleted file mode 100644 index 75545134..00000000 --- a/vendor/yomitan/images/clipboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/cog.svg b/vendor/yomitan/images/cog.svg deleted file mode 100644 index 7232d25d..00000000 --- a/vendor/yomitan/images/cog.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/collapse.svg b/vendor/yomitan/images/collapse.svg deleted file mode 100644 index 1efed703..00000000 --- a/vendor/yomitan/images/collapse.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/connection.svg b/vendor/yomitan/images/connection.svg deleted file mode 100644 index 9a639f0c..00000000 --- a/vendor/yomitan/images/connection.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/cross.svg b/vendor/yomitan/images/cross.svg deleted file mode 100644 index 9ea89e51..00000000 --- a/vendor/yomitan/images/cross.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/double-down-chevron.svg b/vendor/yomitan/images/double-down-chevron.svg deleted file mode 100644 index 90684054..00000000 --- a/vendor/yomitan/images/double-down-chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/down-chevron.svg b/vendor/yomitan/images/down-chevron.svg deleted file mode 100644 index ad2414c2..00000000 --- a/vendor/yomitan/images/down-chevron.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/vendor/yomitan/images/entry-current.svg b/vendor/yomitan/images/entry-current.svg deleted file mode 100644 index abf3f76d..00000000 --- a/vendor/yomitan/images/entry-current.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/exclamation-point-short.svg b/vendor/yomitan/images/exclamation-point-short.svg deleted file mode 100644 index 6e92c460..00000000 --- a/vendor/yomitan/images/exclamation-point-short.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/expand.svg b/vendor/yomitan/images/expand.svg deleted file mode 100644 index 57a2bd98..00000000 --- a/vendor/yomitan/images/expand.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/external-link.svg b/vendor/yomitan/images/external-link.svg deleted file mode 100644 index f8bbba58..00000000 --- a/vendor/yomitan/images/external-link.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/flag.svg b/vendor/yomitan/images/flag.svg deleted file mode 100644 index 940da218..00000000 --- a/vendor/yomitan/images/flag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/hamburger-menu.svg b/vendor/yomitan/images/hamburger-menu.svg deleted file mode 100644 index 9048d205..00000000 --- a/vendor/yomitan/images/hamburger-menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/hiragana-a.svg b/vendor/yomitan/images/hiragana-a.svg deleted file mode 100644 index 1a7d6a7f..00000000 --- a/vendor/yomitan/images/hiragana-a.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/icon128.png b/vendor/yomitan/images/icon128.png deleted file mode 100644 index 90dd473b..00000000 Binary files a/vendor/yomitan/images/icon128.png and /dev/null differ diff --git a/vendor/yomitan/images/icon16.png b/vendor/yomitan/images/icon16.png deleted file mode 100644 index 0c7dcb8a..00000000 Binary files a/vendor/yomitan/images/icon16.png and /dev/null differ diff --git a/vendor/yomitan/images/icon19.png b/vendor/yomitan/images/icon19.png deleted file mode 100644 index 8e2e7263..00000000 Binary files a/vendor/yomitan/images/icon19.png and /dev/null differ diff --git a/vendor/yomitan/images/icon32.png b/vendor/yomitan/images/icon32.png deleted file mode 100644 index 5dcdd2b9..00000000 Binary files a/vendor/yomitan/images/icon32.png and /dev/null differ diff --git a/vendor/yomitan/images/icon38.png b/vendor/yomitan/images/icon38.png deleted file mode 100644 index 7c9b68b4..00000000 Binary files a/vendor/yomitan/images/icon38.png and /dev/null differ diff --git a/vendor/yomitan/images/icon48.png b/vendor/yomitan/images/icon48.png deleted file mode 100644 index 11fda213..00000000 Binary files a/vendor/yomitan/images/icon48.png and /dev/null differ diff --git a/vendor/yomitan/images/icon64.png b/vendor/yomitan/images/icon64.png deleted file mode 100644 index 2bce5c1d..00000000 Binary files a/vendor/yomitan/images/icon64.png and /dev/null differ diff --git a/vendor/yomitan/images/kebab-menu.svg b/vendor/yomitan/images/kebab-menu.svg deleted file mode 100644 index 6df6a177..00000000 --- a/vendor/yomitan/images/kebab-menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/key.svg b/vendor/yomitan/images/key.svg deleted file mode 100644 index 738e07a3..00000000 --- a/vendor/yomitan/images/key.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/keyboard.svg b/vendor/yomitan/images/keyboard.svg deleted file mode 100644 index aac85b1c..00000000 --- a/vendor/yomitan/images/keyboard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/left-chevron.svg b/vendor/yomitan/images/left-chevron.svg deleted file mode 100644 index 9dd012dc..00000000 --- a/vendor/yomitan/images/left-chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/lock.svg b/vendor/yomitan/images/lock.svg deleted file mode 100644 index ec42789e..00000000 --- a/vendor/yomitan/images/lock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/magnifying-glass.svg b/vendor/yomitan/images/magnifying-glass.svg deleted file mode 100644 index a8367d8d..00000000 --- a/vendor/yomitan/images/magnifying-glass.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/material-down-arrow.svg b/vendor/yomitan/images/material-down-arrow.svg deleted file mode 100644 index dd60c48d..00000000 --- a/vendor/yomitan/images/material-down-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/material-right-arrow.svg b/vendor/yomitan/images/material-right-arrow.svg deleted file mode 100644 index 15be03c0..00000000 --- a/vendor/yomitan/images/material-right-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/monitor.svg b/vendor/yomitan/images/monitor.svg deleted file mode 100644 index b2fd82d6..00000000 --- a/vendor/yomitan/images/monitor.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/yomitan/images/mouse.svg b/vendor/yomitan/images/mouse.svg deleted file mode 100644 index 80c400e6..00000000 --- a/vendor/yomitan/images/mouse.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/note-card.svg b/vendor/yomitan/images/note-card.svg deleted file mode 100644 index fb00b074..00000000 --- a/vendor/yomitan/images/note-card.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/overwrite-big-circle.svg b/vendor/yomitan/images/overwrite-big-circle.svg deleted file mode 100644 index d7d48ad8..00000000 --- a/vendor/yomitan/images/overwrite-big-circle.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/overwrite-big-diamond.svg b/vendor/yomitan/images/overwrite-big-diamond.svg deleted file mode 100644 index d66c4832..00000000 --- a/vendor/yomitan/images/overwrite-big-diamond.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/yomitan/images/overwrite-big-square.svg b/vendor/yomitan/images/overwrite-big-square.svg deleted file mode 100644 index 227544f4..00000000 --- a/vendor/yomitan/images/overwrite-big-square.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/yomitan/images/overwrite-small-circle.svg b/vendor/yomitan/images/overwrite-small-circle.svg deleted file mode 100644 index 7bcb1926..00000000 --- a/vendor/yomitan/images/overwrite-small-circle.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/palette.svg b/vendor/yomitan/images/palette.svg deleted file mode 100644 index 4a615ef2..00000000 --- a/vendor/yomitan/images/palette.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/play-audio.svg b/vendor/yomitan/images/play-audio.svg deleted file mode 100644 index 1d5e2d9c..00000000 --- a/vendor/yomitan/images/play-audio.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/plus-circle-large.svg b/vendor/yomitan/images/plus-circle-large.svg deleted file mode 100644 index b034a723..00000000 --- a/vendor/yomitan/images/plus-circle-large.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/plus-circle-small.svg b/vendor/yomitan/images/plus-circle-small.svg deleted file mode 100644 index 1ddc2b72..00000000 --- a/vendor/yomitan/images/plus-circle-small.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/plus-thick.svg b/vendor/yomitan/images/plus-thick.svg deleted file mode 100644 index 6b1b5c5a..00000000 --- a/vendor/yomitan/images/plus-thick.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/popup-size.svg b/vendor/yomitan/images/popup-size.svg deleted file mode 100644 index 220409db..00000000 --- a/vendor/yomitan/images/popup-size.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/popup.svg b/vendor/yomitan/images/popup.svg deleted file mode 100644 index 77217cd0..00000000 --- a/vendor/yomitan/images/popup.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/profile.svg b/vendor/yomitan/images/profile.svg deleted file mode 100644 index 52a1363d..00000000 --- a/vendor/yomitan/images/profile.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/question-mark-circle.svg b/vendor/yomitan/images/question-mark-circle.svg deleted file mode 100644 index 0076f7cd..00000000 --- a/vendor/yomitan/images/question-mark-circle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/question-mark-thick.svg b/vendor/yomitan/images/question-mark-thick.svg deleted file mode 100644 index 7f2214a6..00000000 --- a/vendor/yomitan/images/question-mark-thick.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/question-mark.svg b/vendor/yomitan/images/question-mark.svg deleted file mode 100644 index bc3b9a1c..00000000 --- a/vendor/yomitan/images/question-mark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/radio-button-dot.svg b/vendor/yomitan/images/radio-button-dot.svg deleted file mode 100644 index b1aebe27..00000000 --- a/vendor/yomitan/images/radio-button-dot.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/radio-button.svg b/vendor/yomitan/images/radio-button.svg deleted file mode 100644 index 8c655069..00000000 --- a/vendor/yomitan/images/radio-button.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/right-chevron.svg b/vendor/yomitan/images/right-chevron.svg deleted file mode 100644 index e210057b..00000000 --- a/vendor/yomitan/images/right-chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/scanning-popup.webp b/vendor/yomitan/images/scanning-popup.webp deleted file mode 100644 index 9bab9204..00000000 Binary files a/vendor/yomitan/images/scanning-popup.webp and /dev/null differ diff --git a/vendor/yomitan/images/scanning.svg b/vendor/yomitan/images/scanning.svg deleted file mode 100644 index 9ac16c83..00000000 --- a/vendor/yomitan/images/scanning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/sentence-parsing.svg b/vendor/yomitan/images/sentence-parsing.svg deleted file mode 100644 index 7c883175..00000000 --- a/vendor/yomitan/images/sentence-parsing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/settings-dictionaries-popup.webp b/vendor/yomitan/images/settings-dictionaries-popup.webp deleted file mode 100644 index 2a798fd7..00000000 Binary files a/vendor/yomitan/images/settings-dictionaries-popup.webp and /dev/null differ diff --git a/vendor/yomitan/images/small-circle.svg b/vendor/yomitan/images/small-circle.svg deleted file mode 100644 index 3578c5e0..00000000 --- a/vendor/yomitan/images/small-circle.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/source-term.svg b/vendor/yomitan/images/source-term.svg deleted file mode 100644 index a70938f2..00000000 --- a/vendor/yomitan/images/source-term.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/speaker.svg b/vendor/yomitan/images/speaker.svg deleted file mode 100644 index e0a4e798..00000000 --- a/vendor/yomitan/images/speaker.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/spinner.svg b/vendor/yomitan/images/spinner.svg deleted file mode 100644 index ec19ba83..00000000 --- a/vendor/yomitan/images/spinner.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - \ No newline at end of file diff --git a/vendor/yomitan/images/tag.svg b/vendor/yomitan/images/tag.svg deleted file mode 100644 index edbdcfbe..00000000 --- a/vendor/yomitan/images/tag.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/text-parsing.svg b/vendor/yomitan/images/text-parsing.svg deleted file mode 100644 index dfa88af8..00000000 --- a/vendor/yomitan/images/text-parsing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/translation.svg b/vendor/yomitan/images/translation.svg deleted file mode 100644 index fdb98b1d..00000000 --- a/vendor/yomitan/images/translation.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/up-arrow.svg b/vendor/yomitan/images/up-arrow.svg deleted file mode 100644 index d5dea78c..00000000 --- a/vendor/yomitan/images/up-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/up-chevron.svg b/vendor/yomitan/images/up-chevron.svg deleted file mode 100644 index fa1bb7b4..00000000 --- a/vendor/yomitan/images/up-chevron.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/vendor/yomitan/images/view-note-buried.svg b/vendor/yomitan/images/view-note-buried.svg deleted file mode 100644 index 354398af..00000000 --- a/vendor/yomitan/images/view-note-buried.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/view-note-learning.svg b/vendor/yomitan/images/view-note-learning.svg deleted file mode 100644 index 4c58e889..00000000 --- a/vendor/yomitan/images/view-note-learning.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/view-note-review.svg b/vendor/yomitan/images/view-note-review.svg deleted file mode 100644 index 8c62f9f0..00000000 --- a/vendor/yomitan/images/view-note-review.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/view-note-suspended.svg b/vendor/yomitan/images/view-note-suspended.svg deleted file mode 100644 index 2b70b531..00000000 --- a/vendor/yomitan/images/view-note-suspended.svg +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/view-note.svg b/vendor/yomitan/images/view-note.svg deleted file mode 100644 index 3e6f1dce..00000000 --- a/vendor/yomitan/images/view-note.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/images/window.svg b/vendor/yomitan/images/window.svg deleted file mode 100644 index d0d3b0fb..00000000 --- a/vendor/yomitan/images/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/yomitan/images/yomitan-icon.svg b/vendor/yomitan/images/yomitan-icon.svg deleted file mode 100644 index 3756901d..00000000 --- a/vendor/yomitan/images/yomitan-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/yomitan/info.html b/vendor/yomitan/info.html deleted file mode 100644 index 8b5bde24..00000000 --- a/vendor/yomitan/info.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - Yomitan Info - - - - - - - - - - - - - - -
    -
    -
    - - - -

    Yomitan Info

    - -

    Need help?

    - - -

    General

    -
    -
    -
      -
    • Extension version:
    • -
    • Platform:
    • -
    • Browser:
    • -
    • Language:
    • -
    • User agent:
    • -
    • AnkiConnect version:
    • -
    • Installed dictionaries:
    • -
    • Export settings
    • -
    -
    -
    - - -
    -
    - -
    -
    - - - -
    -
    -
    - - - diff --git a/vendor/yomitan/issues.html b/vendor/yomitan/issues.html deleted file mode 100644 index 856551bf..00000000 --- a/vendor/yomitan/issues.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - Yomitan Issues - - - - - - - - - - - - - - -
    -
    -
    - - - -

    Yomitan Issues

    - -

    Audio download failed due to possible extension permissions error (Chrome)

    -
    -
    -

    - Depending on the extension's configuration, Yomitan can sometimes run into issues with - downloading audio files while creating Anki cards. - This may be due to a permissions issue where Yomitan hasn't been granted access to - the sites hosting the audio files. -

    -

    - Check the Site access section of the - extension settings pages - and grant the extension access to all sites or add the specific audio host URLs. -

    -

    - From your browser's address bar, go to about:addons and navigate to the settings for Yomitan. - Check the Site access section of the extension settings pages - and grant the extension access to all sites or add the specific audio host URLs. -

    -
    -
    - -

    Audio download failed due to an expired server certificate

    -
    -
    -

    - If a website failes to keep its HTTPS certificate up to date, - downloads can fail because the browser flags the connection as insecure. - This has happened occasionally for some websites that Yomitan interacts with, - and the issue is usually resolved within a day. -

    -

    - This issue is a server-side issue that Yomitan doesn't have control over. -

    -
    -
    - -

    Audio download was cancelled due to an idle timeout

    -
    -
    -

    - Audio files can be downloaded from remote servers when creating Anki cards, - and sometimes these downloads can stall due to server or internet connectivity issues. - The Idle download timeout setting on the settings page - specifies a time limit for stalled downloads. -

    -
    -
    - - - -
    -
    -
    - - - diff --git a/vendor/yomitan/js/accessibility/accessibility-controller.js b/vendor/yomitan/js/accessibility/accessibility-controller.js deleted file mode 100644 index e4983a38..00000000 --- a/vendor/yomitan/js/accessibility/accessibility-controller.js +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2021-2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -import {isContentScriptRegistered, registerContentScript, unregisterContentScript} from '../background/script-manager.js'; -import {log} from '../core/log.js'; - -/** - * This class controls the registration of accessibility handlers. - */ -export class AccessibilityController { - constructor() { - /** @type {?import('core').TokenObject} */ - this._updateGoogleDocsAccessibilityToken = null; - /** @type {?Promise} */ - this._updateGoogleDocsAccessibilityPromise = null; - /** @type {boolean} */ - this._forceGoogleDocsHtmlRenderingAny = false; - } - - /** - * Updates the accessibility handlers. - * @param {import('settings').Options} fullOptions The full options object from the `Backend` instance. - * The value is treated as read-only and is not modified. - */ - async update(fullOptions) { - let forceGoogleDocsHtmlRenderingAny = false; - for (const {options} of fullOptions.profiles) { - if (options.accessibility.forceGoogleDocsHtmlRendering) { - forceGoogleDocsHtmlRenderingAny = true; - break; - } - } - - await this._updateGoogleDocsAccessibility(forceGoogleDocsHtmlRenderingAny); - } - - // Private - - /** - * @param {boolean} forceGoogleDocsHtmlRenderingAny - */ - async _updateGoogleDocsAccessibility(forceGoogleDocsHtmlRenderingAny) { - // Reentrant token - /** @type {?import('core').TokenObject} */ - const token = {}; - this._updateGoogleDocsAccessibilityToken = token; - - // Wait for previous - let promise = this._updateGoogleDocsAccessibilityPromise; - if (promise !== null) { await promise; } - - // Reentrant check - if (this._updateGoogleDocsAccessibilityToken !== token) { return; } - - // Update - promise = this._updateGoogleDocsAccessibilityInner(forceGoogleDocsHtmlRenderingAny); - this._updateGoogleDocsAccessibilityPromise = promise; - await promise; - this._updateGoogleDocsAccessibilityPromise = null; - } - - /** - * @param {boolean} forceGoogleDocsHtmlRenderingAny - */ - async _updateGoogleDocsAccessibilityInner(forceGoogleDocsHtmlRenderingAny) { - if (this._forceGoogleDocsHtmlRenderingAny === forceGoogleDocsHtmlRenderingAny) { return; } - - this._forceGoogleDocsHtmlRenderingAny = forceGoogleDocsHtmlRenderingAny; - - const id = 'googleDocsAccessibility'; - try { - if (forceGoogleDocsHtmlRenderingAny) { - if (await isContentScriptRegistered(id)) { return; } - try { - await this._registerGoogleDocsContentScript(id, false); - } catch (e) { - // Firefox doesn't support `world` field and will throw an error. - // In this case, use the xray vision version. - await this._registerGoogleDocsContentScript(id, true); - } - } else { - await unregisterContentScript(id); - } - } catch (e) { - log.error(e); - } - } - - /** - * @param {string} id - * @param {boolean} xray - * @returns {Promise} - */ - _registerGoogleDocsContentScript(id, xray) { - /** @type {import('script-manager').RegistrationDetails} */ - const details = { - allFrames: true, - matches: ['*://docs.google.com/*'], - runAt: 'document_start', - js: [ - xray ? - 'js/accessibility/google-docs-xray.js' : - 'js/accessibility/google-docs.js', - ], - }; - if (!xray) { details.world = 'MAIN'; } - return registerContentScript(id, details); - } -} diff --git a/vendor/yomitan/js/accessibility/google-docs-util.js b/vendor/yomitan/js/accessibility/google-docs-util.js deleted file mode 100644 index d97adc67..00000000 --- a/vendor/yomitan/js/accessibility/google-docs-util.js +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * Copyright (C) 2022 Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -import {computeZoomScale, isPointInAnyRect} from '../dom/document-util.js'; -import {TextSourceRange} from '../dom/text-source-range.js'; - -/** - * This class is a helper for handling Google Docs content in content scripts. - */ -export class GoogleDocsUtil { - constructor() { - /** @type {?HTMLStyleElement} */ - this._styleNode = null; - } - - /** - * Scans the document for text or elements with text information at the given coordinate. - * Coordinates are provided in [client space](https://developer.mozilla.org/en-US/docs/Web/CSS/CSSOM_View/Coordinate_systems). - * @param {number} x The x coordinate to search at. - * @param {number} y The y coordinate to search at. - * @param {import('document-util').GetRangeFromPointOptions} options Options to configure how element detection is performed. - * @returns {?TextSourceRange} A range for the hovered text or element, or `null` if no applicable content was found. - */ - getRangeFromPoint(x, y, {normalizeCssZoom}) { - const styleNode = this._getStyleNode(); - styleNode.disabled = false; - const element = document.elementFromPoint(x, y); - styleNode.disabled = true; - if (element !== null && element.matches('.kix-canvas-tile-content svg>g>rect')) { - const ariaLabel = element.getAttribute('aria-label'); - if (typeof ariaLabel === 'string' && ariaLabel.length > 0) { - return this._createRange(element, ariaLabel, x, y, normalizeCssZoom); - } - } - return null; - } - - /** - * Gets this -
    nameinstalled versionlicense typelink
    @resvg/resvg-wasm2.6.2MPL-2.0git+ssh://git@github.com/yisibl/resvg-js.git
    @zip.js/zip.js2.7.54BSD-3-Clausegit+https://github.com/gildas-lormeau/zip.js.git
    dexie4.0.11Apache-2.0git+https://github.com/dexie/Dexie.js.git
    dexie-export-import4.1.4Apache-2.0git+https://github.com/dexie/Dexie.js.git
    hangul-js0.2.6MITgit://github.com/e-/Hangul.js.git
    kanji-processor1.0.2n/ahttps://registry.npmjs.org/kanji-processor/-/kanji-processor-1.0.2.tgz
    parse57.2.1MITgit://github.com/inikulin/parse5.git
    yomitan-handlebars1.0.0MITn/a
    linkedom0.18.10ISCgit+https://github.com/WebReflection/linkedom.git
    - - diff --git a/vendor/yomitan/legal.html b/vendor/yomitan/legal.html deleted file mode 100644 index f959570b..00000000 --- a/vendor/yomitan/legal.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - Yomitan Legal - - - - - - - - - - - - - - - -
    -
    -
    -
    - - - -

    Yomitan Legal

    - -

    Yomitan License

    -
    -
    -
    -
    -
    -
    -Copyright (C) 2023-2025  Yomitan Authors
    -Copyright (C) 2016-2022  Yomichan Authors
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU General Public License as published by
    -the Free Software Foundation, either version 3 of the License, or
    -(at your option) any later version.
    -
    -This program is distributed in the hope that it will be useful,
    -but WITHOUT ANY WARRANTY; without even the implied warranty of
    -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    -GNU General Public License for more details.
    -
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <https://www.gnu.org/licenses/>.
    -
    -
    -
    -
    -
    -
    - -

    EDRDG License

    -
    -
    -
    -
    -
    -
    -This package uses the EDICT and KANJIDIC dictionary files. These files are
    -the property of the Electronic Dictionary Research and Development Group,
    -and are used in conformance with the Group's licence.
    -
    -
    -
    -
    -
    -
    - -

    Javascript Dependency Licenses

    -
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    -
    - - - - diff --git a/vendor/yomitan/lib/dexie.js b/vendor/yomitan/lib/dexie.js deleted file mode 100644 index 48db7f57..00000000 --- a/vendor/yomitan/lib/dexie.js +++ /dev/null @@ -1,9602 +0,0 @@ -// @ts-nocheck -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// node_modules/dexie/dist/dexie.js -var require_dexie = __commonJS({ - "node_modules/dexie/dist/dexie.js"(exports, module) { - (function(global2, factory) { - typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Dexie = factory()); - })(exports, function() { - "use strict"; - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { - d2.__proto__ = b2; - } || function(d2, b2) { - for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; - }; - return extendStatics(d, b); - }; - function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { - this.constructor = d; - } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - var __assign2 = function() { - __assign2 = Object.assign || function __assign3(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign2.apply(this, arguments); - }; - function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); - } - var _global2 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; - var keys = Object.keys; - var isArray = Array.isArray; - if (typeof Promise !== "undefined" && !_global2.Promise) { - _global2.Promise = Promise; - } - function extend(obj, extension) { - if (typeof extension !== "object") - return obj; - keys(extension).forEach(function(key) { - obj[key] = extension[key]; - }); - return obj; - } - var getProto = Object.getPrototypeOf; - var _hasOwn = {}.hasOwnProperty; - function hasOwn(obj, prop) { - return _hasOwn.call(obj, prop); - } - function props(proto, extension) { - if (typeof extension === "function") - extension = extension(getProto(proto)); - (typeof Reflect === "undefined" ? keys : Reflect.ownKeys)(extension).forEach(function(key) { - setProp(proto, key, extension[key]); - }); - } - var defineProperty = Object.defineProperty; - function setProp(obj, prop, functionOrGetSet, options) { - defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, "get") && typeof functionOrGetSet.get === "function" ? { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } : { value: functionOrGetSet, configurable: true, writable: true }, options)); - } - function derive(Child) { - return { - from: function(Parent) { - Child.prototype = Object.create(Parent.prototype); - setProp(Child.prototype, "constructor", Child); - return { - extend: props.bind(null, Child.prototype) - }; - } - }; - } - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - function getPropertyDescriptor(obj, prop) { - var pd = getOwnPropertyDescriptor(obj, prop); - var proto; - return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop); - } - var _slice = [].slice; - function slice(args, start, end) { - return _slice.call(args, start, end); - } - function override(origFunc, overridedFactory) { - return overridedFactory(origFunc); - } - function assert(b) { - if (!b) - throw new Error("Assertion Failed"); - } - function asap$1(fn) { - if (_global2.setImmediate) - setImmediate(fn); - else - setTimeout(fn, 0); - } - function arrayToObject(array, extractor) { - return array.reduce(function(result, item, i) { - var nameAndValue = extractor(item, i); - if (nameAndValue) - result[nameAndValue[0]] = nameAndValue[1]; - return result; - }, {}); - } - function getByKeyPath(obj, keyPath) { - if (typeof keyPath === "string" && hasOwn(obj, keyPath)) - return obj[keyPath]; - if (!keyPath) - return obj; - if (typeof keyPath !== "string") { - var rv = []; - for (var i = 0, l = keyPath.length; i < l; ++i) { - var val = getByKeyPath(obj, keyPath[i]); - rv.push(val); - } - return rv; - } - var period = keyPath.indexOf("."); - if (period !== -1) { - var innerObj = obj[keyPath.substr(0, period)]; - return innerObj == null ? void 0 : getByKeyPath(innerObj, keyPath.substr(period + 1)); - } - return void 0; - } - function setByKeyPath(obj, keyPath, value) { - if (!obj || keyPath === void 0) - return; - if ("isFrozen" in Object && Object.isFrozen(obj)) - return; - if (typeof keyPath !== "string" && "length" in keyPath) { - assert(typeof value !== "string" && "length" in value); - for (var i = 0, l = keyPath.length; i < l; ++i) { - setByKeyPath(obj, keyPath[i], value[i]); - } - } else { - var period = keyPath.indexOf("."); - if (period !== -1) { - var currentKeyPath = keyPath.substr(0, period); - var remainingKeyPath = keyPath.substr(period + 1); - if (remainingKeyPath === "") - if (value === void 0) { - if (isArray(obj) && !isNaN(parseInt(currentKeyPath))) - obj.splice(currentKeyPath, 1); - else - delete obj[currentKeyPath]; - } else - obj[currentKeyPath] = value; - else { - var innerObj = obj[currentKeyPath]; - if (!innerObj || !hasOwn(obj, currentKeyPath)) - innerObj = obj[currentKeyPath] = {}; - setByKeyPath(innerObj, remainingKeyPath, value); - } - } else { - if (value === void 0) { - if (isArray(obj) && !isNaN(parseInt(keyPath))) - obj.splice(keyPath, 1); - else - delete obj[keyPath]; - } else - obj[keyPath] = value; - } - } - } - function delByKeyPath(obj, keyPath) { - if (typeof keyPath === "string") - setByKeyPath(obj, keyPath, void 0); - else if ("length" in keyPath) - [].map.call(keyPath, function(kp) { - setByKeyPath(obj, kp, void 0); - }); - } - function shallowClone(obj) { - var rv = {}; - for (var m in obj) { - if (hasOwn(obj, m)) - rv[m] = obj[m]; - } - return rv; - } - var concat = [].concat; - function flatten(a) { - return concat.apply([], a); - } - var intrinsicTypeNames = "BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(flatten([8, 16, 32, 64].map(function(num) { - return ["Int", "Uint", "Float"].map(function(t) { - return t + num + "Array"; - }); - }))).filter(function(t) { - return _global2[t]; - }); - var intrinsicTypes = new Set(intrinsicTypeNames.map(function(t) { - return _global2[t]; - })); - function cloneSimpleObjectTree(o) { - var rv = {}; - for (var k in o) - if (hasOwn(o, k)) { - var v = o[k]; - rv[k] = !v || typeof v !== "object" || intrinsicTypes.has(v.constructor) ? v : cloneSimpleObjectTree(v); - } - return rv; - } - function objectIsEmpty(o) { - for (var k in o) - if (hasOwn(o, k)) - return false; - return true; - } - var circularRefs = null; - function deepClone(any) { - circularRefs = /* @__PURE__ */ new WeakMap(); - var rv = innerDeepClone(any); - circularRefs = null; - return rv; - } - function innerDeepClone(x) { - if (!x || typeof x !== "object") - return x; - var rv = circularRefs.get(x); - if (rv) - return rv; - if (isArray(x)) { - rv = []; - circularRefs.set(x, rv); - for (var i = 0, l = x.length; i < l; ++i) { - rv.push(innerDeepClone(x[i])); - } - } else if (intrinsicTypes.has(x.constructor)) { - rv = x; - } else { - var proto = getProto(x); - rv = proto === Object.prototype ? {} : Object.create(proto); - circularRefs.set(x, rv); - for (var prop in x) { - if (hasOwn(x, prop)) { - rv[prop] = innerDeepClone(x[prop]); - } - } - } - return rv; - } - var toString = {}.toString; - function toStringTag(o) { - return toString.call(o).slice(8, -1); - } - var iteratorSymbol = typeof Symbol !== "undefined" ? Symbol.iterator : "@@iterator"; - var getIteratorOf = typeof iteratorSymbol === "symbol" ? function(x) { - var i; - return x != null && (i = x[iteratorSymbol]) && i.apply(x); - } : function() { - return null; - }; - function delArrayItem(a, x) { - var i = a.indexOf(x); - if (i >= 0) - a.splice(i, 1); - return i >= 0; - } - var NO_CHAR_ARRAY = {}; - function getArrayOf(arrayLike) { - var i, a, x, it; - if (arguments.length === 1) { - if (isArray(arrayLike)) - return arrayLike.slice(); - if (this === NO_CHAR_ARRAY && typeof arrayLike === "string") - return [arrayLike]; - if (it = getIteratorOf(arrayLike)) { - a = []; - while (x = it.next(), !x.done) - a.push(x.value); - return a; - } - if (arrayLike == null) - return [arrayLike]; - i = arrayLike.length; - if (typeof i === "number") { - a = new Array(i); - while (i--) - a[i] = arrayLike[i]; - return a; - } - return [arrayLike]; - } - i = arguments.length; - a = new Array(i); - while (i--) - a[i] = arguments[i]; - return a; - } - var isAsyncFunction = typeof Symbol !== "undefined" ? function(fn) { - return fn[Symbol.toStringTag] === "AsyncFunction"; - } : function() { - return false; - }; - var dexieErrorNames = [ - "Modify", - "Bulk", - "OpenFailed", - "VersionChange", - "Schema", - "Upgrade", - "InvalidTable", - "MissingAPI", - "NoSuchDatabase", - "InvalidArgument", - "SubTransaction", - "Unsupported", - "Internal", - "DatabaseClosed", - "PrematureCommit", - "ForeignAwait" - ]; - var idbDomErrorNames = [ - "Unknown", - "Constraint", - "Data", - "TransactionInactive", - "ReadOnly", - "Version", - "NotFound", - "InvalidState", - "InvalidAccess", - "Abort", - "Timeout", - "QuotaExceeded", - "Syntax", - "DataClone" - ]; - var errorList = dexieErrorNames.concat(idbDomErrorNames); - var defaultTexts = { - VersionChanged: "Database version changed by other database connection", - DatabaseClosed: "Database has been closed", - Abort: "Transaction aborted", - TransactionInactive: "Transaction has already completed or failed", - MissingAPI: "IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb" - }; - function DexieError(name, msg) { - this.name = name; - this.message = msg; - } - derive(DexieError).from(Error).extend({ - toString: function() { - return this.name + ": " + this.message; - } - }); - function getMultiErrorMessage(msg, failures) { - return msg + ". Errors: " + Object.keys(failures).map(function(key) { - return failures[key].toString(); - }).filter(function(v, i, s) { - return s.indexOf(v) === i; - }).join("\n"); - } - function ModifyError(msg, failures, successCount, failedKeys) { - this.failures = failures; - this.failedKeys = failedKeys; - this.successCount = successCount; - this.message = getMultiErrorMessage(msg, failures); - } - derive(ModifyError).from(DexieError); - function BulkError(msg, failures) { - this.name = "BulkError"; - this.failures = Object.keys(failures).map(function(pos) { - return failures[pos]; - }); - this.failuresByPos = failures; - this.message = getMultiErrorMessage(msg, this.failures); - } - derive(BulkError).from(DexieError); - var errnames = errorList.reduce(function(obj, name) { - return obj[name] = name + "Error", obj; - }, {}); - var BaseException = DexieError; - var exceptions = errorList.reduce(function(obj, name) { - var fullName = name + "Error"; - function DexieError2(msgOrInner, inner) { - this.name = fullName; - if (!msgOrInner) { - this.message = defaultTexts[name] || fullName; - this.inner = null; - } else if (typeof msgOrInner === "string") { - this.message = "".concat(msgOrInner).concat(!inner ? "" : "\n " + inner); - this.inner = inner || null; - } else if (typeof msgOrInner === "object") { - this.message = "".concat(msgOrInner.name, " ").concat(msgOrInner.message); - this.inner = msgOrInner; - } - } - derive(DexieError2).from(BaseException); - obj[name] = DexieError2; - return obj; - }, {}); - exceptions.Syntax = SyntaxError; - exceptions.Type = TypeError; - exceptions.Range = RangeError; - var exceptionMap = idbDomErrorNames.reduce(function(obj, name) { - obj[name + "Error"] = exceptions[name]; - return obj; - }, {}); - function mapError(domError, message) { - if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name]) - return domError; - var rv = new exceptionMap[domError.name](message || domError.message, domError); - if ("stack" in domError) { - setProp(rv, "stack", { get: function() { - return this.inner.stack; - } }); - } - return rv; - } - var fullNameExceptions = errorList.reduce(function(obj, name) { - if (["Syntax", "Type", "Range"].indexOf(name) === -1) - obj[name + "Error"] = exceptions[name]; - return obj; - }, {}); - fullNameExceptions.ModifyError = ModifyError; - fullNameExceptions.DexieError = DexieError; - fullNameExceptions.BulkError = BulkError; - function nop() { - } - function mirror(val) { - return val; - } - function pureFunctionChain(f1, f2) { - if (f1 == null || f1 === mirror) - return f2; - return function(val) { - return f2(f1(val)); - }; - } - function callBoth(on1, on2) { - return function() { - on1.apply(this, arguments); - on2.apply(this, arguments); - }; - } - function hookCreatingChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - var res = f1.apply(this, arguments); - if (res !== void 0) - arguments[0] = res; - var onsuccess = this.onsuccess, onerror = this.onerror; - this.onsuccess = null; - this.onerror = null; - var res2 = f2.apply(this, arguments); - if (onsuccess) - this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; - if (onerror) - this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; - return res2 !== void 0 ? res2 : res; - }; - } - function hookDeletingChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - f1.apply(this, arguments); - var onsuccess = this.onsuccess, onerror = this.onerror; - this.onsuccess = this.onerror = null; - f2.apply(this, arguments); - if (onsuccess) - this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; - if (onerror) - this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; - }; - } - function hookUpdatingChain(f1, f2) { - if (f1 === nop) - return f2; - return function(modifications) { - var res = f1.apply(this, arguments); - extend(modifications, res); - var onsuccess = this.onsuccess, onerror = this.onerror; - this.onsuccess = null; - this.onerror = null; - var res2 = f2.apply(this, arguments); - if (onsuccess) - this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess; - if (onerror) - this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror; - return res === void 0 ? res2 === void 0 ? void 0 : res2 : extend(res, res2); - }; - } - function reverseStoppableEventChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - if (f2.apply(this, arguments) === false) - return false; - return f1.apply(this, arguments); - }; - } - function promisableChain(f1, f2) { - if (f1 === nop) - return f2; - return function() { - var res = f1.apply(this, arguments); - if (res && typeof res.then === "function") { - var thiz = this, i = arguments.length, args = new Array(i); - while (i--) - args[i] = arguments[i]; - return res.then(function() { - return f2.apply(thiz, args); - }); - } - return f2.apply(this, arguments); - }; - } - var debug = typeof location !== "undefined" && /^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href); - function setDebug(value, filter) { - debug = value; - } - var INTERNAL = {}; - var ZONE_ECHO_LIMIT = 100, _a$1 = typeof Promise === "undefined" ? [] : function() { - var globalP = Promise.resolve(); - if (typeof crypto === "undefined" || !crypto.subtle) - return [globalP, getProto(globalP), globalP]; - var nativeP = crypto.subtle.digest("SHA-512", new Uint8Array([0])); - return [ - nativeP, - getProto(nativeP), - globalP - ]; - }(), resolvedNativePromise = _a$1[0], nativePromiseProto = _a$1[1], resolvedGlobalPromise = _a$1[2], nativePromiseThen = nativePromiseProto && nativePromiseProto.then; - var NativePromise = resolvedNativePromise && resolvedNativePromise.constructor; - var patchGlobalPromise = !!resolvedGlobalPromise; - function schedulePhysicalTick() { - queueMicrotask(physicalTick); - } - var asap = function(callback, args) { - microtickQueue.push([callback, args]); - if (needsNewPhysicalTick) { - schedulePhysicalTick(); - needsNewPhysicalTick = false; - } - }; - var isOutsideMicroTick = true, needsNewPhysicalTick = true, unhandledErrors = [], rejectingErrors = [], rejectionMapper = mirror; - var globalPSD = { - id: "global", - global: true, - ref: 0, - unhandleds: [], - onunhandled: nop, - pgp: false, - env: {}, - finalize: nop - }; - var PSD = globalPSD; - var microtickQueue = []; - var numScheduledCalls = 0; - var tickFinalizers = []; - function DexiePromise(fn) { - if (typeof this !== "object") - throw new TypeError("Promises must be constructed via new"); - this._listeners = []; - this._lib = false; - var psd = this._PSD = PSD; - if (typeof fn !== "function") { - if (fn !== INTERNAL) - throw new TypeError("Not a function"); - this._state = arguments[1]; - this._value = arguments[2]; - if (this._state === false) - handleRejection(this, this._value); - return; - } - this._state = null; - this._value = null; - ++psd.ref; - executePromiseTask(this, fn); - } - var thenProp = { - get: function() { - var psd = PSD, microTaskId = totalEchoes; - function then(onFulfilled, onRejected) { - var _this = this; - var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes); - var cleanup = possibleAwait && !decrementExpectedAwaits(); - var rv = new DexiePromise(function(resolve, reject) { - propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd)); - }); - if (this._consoleTask) - rv._consoleTask = this._consoleTask; - return rv; - } - then.prototype = INTERNAL; - return then; - }, - set: function(value) { - setProp(this, "then", value && value.prototype === INTERNAL ? thenProp : { - get: function() { - return value; - }, - set: thenProp.set - }); - } - }; - props(DexiePromise.prototype, { - then: thenProp, - _then: function(onFulfilled, onRejected) { - propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD)); - }, - catch: function(onRejected) { - if (arguments.length === 1) - return this.then(null, onRejected); - var type2 = arguments[0], handler = arguments[1]; - return typeof type2 === "function" ? this.then(null, function(err) { - return err instanceof type2 ? handler(err) : PromiseReject(err); - }) : this.then(null, function(err) { - return err && err.name === type2 ? handler(err) : PromiseReject(err); - }); - }, - finally: function(onFinally) { - return this.then(function(value) { - return DexiePromise.resolve(onFinally()).then(function() { - return value; - }); - }, function(err) { - return DexiePromise.resolve(onFinally()).then(function() { - return PromiseReject(err); - }); - }); - }, - timeout: function(ms, msg) { - var _this = this; - return ms < Infinity ? new DexiePromise(function(resolve, reject) { - var handle = setTimeout(function() { - return reject(new exceptions.Timeout(msg)); - }, ms); - _this.then(resolve, reject).finally(clearTimeout.bind(null, handle)); - }) : this; - } - }); - if (typeof Symbol !== "undefined" && Symbol.toStringTag) - setProp(DexiePromise.prototype, Symbol.toStringTag, "Dexie.Promise"); - globalPSD.env = snapShot(); - function Listener(onFulfilled, onRejected, resolve, reject, zone) { - this.onFulfilled = typeof onFulfilled === "function" ? onFulfilled : null; - this.onRejected = typeof onRejected === "function" ? onRejected : null; - this.resolve = resolve; - this.reject = reject; - this.psd = zone; - } - props(DexiePromise, { - all: function() { - var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise(function(resolve, reject) { - if (values.length === 0) - resolve([]); - var remaining = values.length; - values.forEach(function(a, i) { - return DexiePromise.resolve(a).then(function(x) { - values[i] = x; - if (!--remaining) - resolve(values); - }, reject); - }); - }); - }, - resolve: function(value) { - if (value instanceof DexiePromise) - return value; - if (value && typeof value.then === "function") - return new DexiePromise(function(resolve, reject) { - value.then(resolve, reject); - }); - var rv = new DexiePromise(INTERNAL, true, value); - return rv; - }, - reject: PromiseReject, - race: function() { - var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise(function(resolve, reject) { - values.map(function(value) { - return DexiePromise.resolve(value).then(resolve, reject); - }); - }); - }, - PSD: { - get: function() { - return PSD; - }, - set: function(value) { - return PSD = value; - } - }, - totalEchoes: { get: function() { - return totalEchoes; - } }, - newPSD: newScope, - usePSD, - scheduler: { - get: function() { - return asap; - }, - set: function(value) { - asap = value; - } - }, - rejectionMapper: { - get: function() { - return rejectionMapper; - }, - set: function(value) { - rejectionMapper = value; - } - }, - follow: function(fn, zoneProps) { - return new DexiePromise(function(resolve, reject) { - return newScope(function(resolve2, reject2) { - var psd = PSD; - psd.unhandleds = []; - psd.onunhandled = reject2; - psd.finalize = callBoth(function() { - var _this = this; - run_at_end_of_this_or_next_physical_tick(function() { - _this.unhandleds.length === 0 ? resolve2() : reject2(_this.unhandleds[0]); - }); - }, psd.finalize); - fn(); - }, zoneProps, resolve, reject); - }); - } - }); - if (NativePromise) { - if (NativePromise.allSettled) - setProp(DexiePromise, "allSettled", function() { - var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise(function(resolve) { - if (possiblePromises.length === 0) - resolve([]); - var remaining = possiblePromises.length; - var results = new Array(remaining); - possiblePromises.forEach(function(p, i) { - return DexiePromise.resolve(p).then(function(value) { - return results[i] = { status: "fulfilled", value }; - }, function(reason) { - return results[i] = { status: "rejected", reason }; - }).then(function() { - return --remaining || resolve(results); - }); - }); - }); - }); - if (NativePromise.any && typeof AggregateError !== "undefined") - setProp(DexiePromise, "any", function() { - var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync); - return new DexiePromise(function(resolve, reject) { - if (possiblePromises.length === 0) - reject(new AggregateError([])); - var remaining = possiblePromises.length; - var failures = new Array(remaining); - possiblePromises.forEach(function(p, i) { - return DexiePromise.resolve(p).then(function(value) { - return resolve(value); - }, function(failure) { - failures[i] = failure; - if (!--remaining) - reject(new AggregateError(failures)); - }); - }); - }); - }); - if (NativePromise.withResolvers) - DexiePromise.withResolvers = NativePromise.withResolvers; - } - function executePromiseTask(promise, fn) { - try { - fn(function(value) { - if (promise._state !== null) - return; - if (value === promise) - throw new TypeError("A promise cannot be resolved with itself."); - var shouldExecuteTick = promise._lib && beginMicroTickScope(); - if (value && typeof value.then === "function") { - executePromiseTask(promise, function(resolve, reject) { - value instanceof DexiePromise ? value._then(resolve, reject) : value.then(resolve, reject); - }); - } else { - promise._state = true; - promise._value = value; - propagateAllListeners(promise); - } - if (shouldExecuteTick) - endMicroTickScope(); - }, handleRejection.bind(null, promise)); - } catch (ex) { - handleRejection(promise, ex); - } - } - function handleRejection(promise, reason) { - rejectingErrors.push(reason); - if (promise._state !== null) - return; - var shouldExecuteTick = promise._lib && beginMicroTickScope(); - reason = rejectionMapper(reason); - promise._state = false; - promise._value = reason; - addPossiblyUnhandledError(promise); - propagateAllListeners(promise); - if (shouldExecuteTick) - endMicroTickScope(); - } - function propagateAllListeners(promise) { - var listeners = promise._listeners; - promise._listeners = []; - for (var i = 0, len = listeners.length; i < len; ++i) { - propagateToListener(promise, listeners[i]); - } - var psd = promise._PSD; - --psd.ref || psd.finalize(); - if (numScheduledCalls === 0) { - ++numScheduledCalls; - asap(function() { - if (--numScheduledCalls === 0) - finalizePhysicalTick(); - }, []); - } - } - function propagateToListener(promise, listener) { - if (promise._state === null) { - promise._listeners.push(listener); - return; - } - var cb = promise._state ? listener.onFulfilled : listener.onRejected; - if (cb === null) { - return (promise._state ? listener.resolve : listener.reject)(promise._value); - } - ++listener.psd.ref; - ++numScheduledCalls; - asap(callListener, [cb, promise, listener]); - } - function callListener(cb, promise, listener) { - try { - var ret, value = promise._value; - if (!promise._state && rejectingErrors.length) - rejectingErrors = []; - ret = debug && promise._consoleTask ? promise._consoleTask.run(function() { - return cb(value); - }) : cb(value); - if (!promise._state && rejectingErrors.indexOf(value) === -1) { - markErrorAsHandled(promise); - } - listener.resolve(ret); - } catch (e) { - listener.reject(e); - } finally { - if (--numScheduledCalls === 0) - finalizePhysicalTick(); - --listener.psd.ref || listener.psd.finalize(); - } - } - function physicalTick() { - usePSD(globalPSD, function() { - beginMicroTickScope() && endMicroTickScope(); - }); - } - function beginMicroTickScope() { - var wasRootExec = isOutsideMicroTick; - isOutsideMicroTick = false; - needsNewPhysicalTick = false; - return wasRootExec; - } - function endMicroTickScope() { - var callbacks, i, l; - do { - while (microtickQueue.length > 0) { - callbacks = microtickQueue; - microtickQueue = []; - l = callbacks.length; - for (i = 0; i < l; ++i) { - var item = callbacks[i]; - item[0].apply(null, item[1]); - } - } - } while (microtickQueue.length > 0); - isOutsideMicroTick = true; - needsNewPhysicalTick = true; - } - function finalizePhysicalTick() { - var unhandledErrs = unhandledErrors; - unhandledErrors = []; - unhandledErrs.forEach(function(p) { - p._PSD.onunhandled.call(null, p._value, p); - }); - var finalizers = tickFinalizers.slice(0); - var i = finalizers.length; - while (i) - finalizers[--i](); - } - function run_at_end_of_this_or_next_physical_tick(fn) { - function finalizer() { - fn(); - tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1); - } - tickFinalizers.push(finalizer); - ++numScheduledCalls; - asap(function() { - if (--numScheduledCalls === 0) - finalizePhysicalTick(); - }, []); - } - function addPossiblyUnhandledError(promise) { - if (!unhandledErrors.some(function(p) { - return p._value === promise._value; - })) - unhandledErrors.push(promise); - } - function markErrorAsHandled(promise) { - var i = unhandledErrors.length; - while (i) - if (unhandledErrors[--i]._value === promise._value) { - unhandledErrors.splice(i, 1); - return; - } - } - function PromiseReject(reason) { - return new DexiePromise(INTERNAL, false, reason); - } - function wrap(fn, errorCatcher) { - var psd = PSD; - return function() { - var wasRootExec = beginMicroTickScope(), outerScope = PSD; - try { - switchToZone(psd, true); - return fn.apply(this, arguments); - } catch (e) { - errorCatcher && errorCatcher(e); - } finally { - switchToZone(outerScope, false); - if (wasRootExec) - endMicroTickScope(); - } - }; - } - var task = { awaits: 0, echoes: 0, id: 0 }; - var taskCounter = 0; - var zoneStack = []; - var zoneEchoes = 0; - var totalEchoes = 0; - var zone_id_counter = 0; - function newScope(fn, props2, a1, a2) { - var parent = PSD, psd = Object.create(parent); - psd.parent = parent; - psd.ref = 0; - psd.global = false; - psd.id = ++zone_id_counter; - globalPSD.env; - psd.env = patchGlobalPromise ? { - Promise: DexiePromise, - PromiseProp: { value: DexiePromise, configurable: true, writable: true }, - all: DexiePromise.all, - race: DexiePromise.race, - allSettled: DexiePromise.allSettled, - any: DexiePromise.any, - resolve: DexiePromise.resolve, - reject: DexiePromise.reject - } : {}; - if (props2) - extend(psd, props2); - ++parent.ref; - psd.finalize = function() { - --this.parent.ref || this.parent.finalize(); - }; - var rv = usePSD(psd, fn, a1, a2); - if (psd.ref === 0) - psd.finalize(); - return rv; - } - function incrementExpectedAwaits() { - if (!task.id) - task.id = ++taskCounter; - ++task.awaits; - task.echoes += ZONE_ECHO_LIMIT; - return task.id; - } - function decrementExpectedAwaits() { - if (!task.awaits) - return false; - if (--task.awaits === 0) - task.id = 0; - task.echoes = task.awaits * ZONE_ECHO_LIMIT; - return true; - } - if (("" + nativePromiseThen).indexOf("[native code]") === -1) { - incrementExpectedAwaits = decrementExpectedAwaits = nop; - } - function onPossibleParallellAsync(possiblePromise) { - if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) { - incrementExpectedAwaits(); - return possiblePromise.then(function(x) { - decrementExpectedAwaits(); - return x; - }, function(e) { - decrementExpectedAwaits(); - return rejection(e); - }); - } - return possiblePromise; - } - function zoneEnterEcho(targetZone) { - ++totalEchoes; - if (!task.echoes || --task.echoes === 0) { - task.echoes = task.awaits = task.id = 0; - } - zoneStack.push(PSD); - switchToZone(targetZone, true); - } - function zoneLeaveEcho() { - var zone = zoneStack[zoneStack.length - 1]; - zoneStack.pop(); - switchToZone(zone, false); - } - function switchToZone(targetZone, bEnteringZone) { - var currentZone = PSD; - if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) { - queueMicrotask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho); - } - if (targetZone === PSD) - return; - PSD = targetZone; - if (currentZone === globalPSD) - globalPSD.env = snapShot(); - if (patchGlobalPromise) { - var GlobalPromise = globalPSD.env.Promise; - var targetEnv = targetZone.env; - if (currentZone.global || targetZone.global) { - Object.defineProperty(_global2, "Promise", targetEnv.PromiseProp); - GlobalPromise.all = targetEnv.all; - GlobalPromise.race = targetEnv.race; - GlobalPromise.resolve = targetEnv.resolve; - GlobalPromise.reject = targetEnv.reject; - if (targetEnv.allSettled) - GlobalPromise.allSettled = targetEnv.allSettled; - if (targetEnv.any) - GlobalPromise.any = targetEnv.any; - } - } - } - function snapShot() { - var GlobalPromise = _global2.Promise; - return patchGlobalPromise ? { - Promise: GlobalPromise, - PromiseProp: Object.getOwnPropertyDescriptor(_global2, "Promise"), - all: GlobalPromise.all, - race: GlobalPromise.race, - allSettled: GlobalPromise.allSettled, - any: GlobalPromise.any, - resolve: GlobalPromise.resolve, - reject: GlobalPromise.reject - } : {}; - } - function usePSD(psd, fn, a1, a2, a3) { - var outerScope = PSD; - try { - switchToZone(psd, true); - return fn(a1, a2, a3); - } finally { - switchToZone(outerScope, false); - } - } - function nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) { - return typeof fn !== "function" ? fn : function() { - var outerZone = PSD; - if (possibleAwait) - incrementExpectedAwaits(); - switchToZone(zone, true); - try { - return fn.apply(this, arguments); - } finally { - switchToZone(outerZone, false); - if (cleanup) - queueMicrotask(decrementExpectedAwaits); - } - }; - } - function execInGlobalContext(cb) { - if (Promise === NativePromise && task.echoes === 0) { - if (zoneEchoes === 0) { - cb(); - } else { - enqueueNativeMicroTask(cb); - } - } else { - setTimeout(cb, 0); - } - } - var rejection = DexiePromise.reject; - function tempTransaction(db, mode, storeNames, fn) { - if (!db.idbdb || !db._state.openComplete && (!PSD.letThrough && !db._vip)) { - if (db._state.openComplete) { - return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError)); - } - if (!db._state.isBeingOpened) { - if (!db._state.autoOpen) - return rejection(new exceptions.DatabaseClosed()); - db.open().catch(nop); - } - return db._state.dbReadyPromise.then(function() { - return tempTransaction(db, mode, storeNames, fn); - }); - } else { - var trans = db._createTransaction(mode, storeNames, db._dbSchema); - try { - trans.create(); - db._state.PR1398_maxLoop = 3; - } catch (ex) { - if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) { - console.warn("Dexie: Need to reopen db"); - db.close({ disableAutoOpen: false }); - return db.open().then(function() { - return tempTransaction(db, mode, storeNames, fn); - }); - } - return rejection(ex); - } - return trans._promise(mode, function(resolve, reject) { - return newScope(function() { - PSD.trans = trans; - return fn(resolve, reject, trans); - }); - }).then(function(result) { - if (mode === "readwrite") - try { - trans.idbtrans.commit(); - } catch (_a2) { - } - return mode === "readonly" ? result : trans._completion.then(function() { - return result; - }); - }); - } - } - var DEXIE_VERSION = "4.0.11"; - var maxString = String.fromCharCode(65535); - var minKey = -Infinity; - var INVALID_KEY_ARGUMENT = "Invalid key provided. Keys must be of type string, number, Date or Array."; - var STRING_EXPECTED = "String expected."; - var connections = []; - var DBNAMES_DB = "__dbnames"; - var READONLY = "readonly"; - var READWRITE = "readwrite"; - function combine(filter1, filter2) { - return filter1 ? filter2 ? function() { - return filter1.apply(this, arguments) && filter2.apply(this, arguments); - } : filter1 : filter2; - } - var AnyRange = { - type: 3, - lower: -Infinity, - lowerOpen: false, - upper: [[]], - upperOpen: false - }; - function workaroundForUndefinedPrimKey(keyPath) { - return typeof keyPath === "string" && !/\./.test(keyPath) ? function(obj) { - if (obj[keyPath] === void 0 && keyPath in obj) { - obj = deepClone(obj); - delete obj[keyPath]; - } - return obj; - } : function(obj) { - return obj; - }; - } - function Entity2() { - throw exceptions.Type(); - } - function cmp2(a, b) { - try { - var ta = type(a); - var tb = type(b); - if (ta !== tb) { - if (ta === "Array") - return 1; - if (tb === "Array") - return -1; - if (ta === "binary") - return 1; - if (tb === "binary") - return -1; - if (ta === "string") - return 1; - if (tb === "string") - return -1; - if (ta === "Date") - return 1; - if (tb !== "Date") - return NaN; - return -1; - } - switch (ta) { - case "number": - case "Date": - case "string": - return a > b ? 1 : a < b ? -1 : 0; - case "binary": { - return compareUint8Arrays(getUint8Array(a), getUint8Array(b)); - } - case "Array": - return compareArrays(a, b); - } - } catch (_a2) { - } - return NaN; - } - function compareArrays(a, b) { - var al = a.length; - var bl = b.length; - var l = al < bl ? al : bl; - for (var i = 0; i < l; ++i) { - var res = cmp2(a[i], b[i]); - if (res !== 0) - return res; - } - return al === bl ? 0 : al < bl ? -1 : 1; - } - function compareUint8Arrays(a, b) { - var al = a.length; - var bl = b.length; - var l = al < bl ? al : bl; - for (var i = 0; i < l; ++i) { - if (a[i] !== b[i]) - return a[i] < b[i] ? -1 : 1; - } - return al === bl ? 0 : al < bl ? -1 : 1; - } - function type(x) { - var t = typeof x; - if (t !== "object") - return t; - if (ArrayBuffer.isView(x)) - return "binary"; - var tsTag = toStringTag(x); - return tsTag === "ArrayBuffer" ? "binary" : tsTag; - } - function getUint8Array(a) { - if (a instanceof Uint8Array) - return a; - if (ArrayBuffer.isView(a)) - return new Uint8Array(a.buffer, a.byteOffset, a.byteLength); - return new Uint8Array(a); - } - var Table = function() { - function Table2() { - } - Table2.prototype._trans = function(mode, fn, writeLocked) { - var trans = this._tx || PSD.trans; - var tableName = this.name; - var task2 = debug && typeof console !== "undefined" && console.createTask && console.createTask("Dexie: ".concat(mode === "readonly" ? "read" : "write", " ").concat(this.name)); - function checkTableInTransaction(resolve, reject, trans2) { - if (!trans2.schema[tableName]) - throw new exceptions.NotFound("Table " + tableName + " not part of transaction"); - return fn(trans2.idbtrans, trans2); - } - var wasRootExec = beginMicroTickScope(); - try { - var p = trans && trans.db._novip === this.db._novip ? trans === PSD.trans ? trans._promise(mode, checkTableInTransaction, writeLocked) : newScope(function() { - return trans._promise(mode, checkTableInTransaction, writeLocked); - }, { trans, transless: PSD.transless || PSD }) : tempTransaction(this.db, mode, [this.name], checkTableInTransaction); - if (task2) { - p._consoleTask = task2; - p = p.catch(function(err) { - console.trace(err); - return rejection(err); - }); - } - return p; - } finally { - if (wasRootExec) - endMicroTickScope(); - } - }; - Table2.prototype.get = function(keyOrCrit, cb) { - var _this = this; - if (keyOrCrit && keyOrCrit.constructor === Object) - return this.where(keyOrCrit).first(cb); - if (keyOrCrit == null) - return rejection(new exceptions.Type("Invalid argument to Table.get()")); - return this._trans("readonly", function(trans) { - return _this.core.get({ trans, key: keyOrCrit }).then(function(res) { - return _this.hook.reading.fire(res); - }); - }).then(cb); - }; - Table2.prototype.where = function(indexOrCrit) { - if (typeof indexOrCrit === "string") - return new this.db.WhereClause(this, indexOrCrit); - if (isArray(indexOrCrit)) - return new this.db.WhereClause(this, "[".concat(indexOrCrit.join("+"), "]")); - var keyPaths = keys(indexOrCrit); - if (keyPaths.length === 1) - return this.where(keyPaths[0]).equals(indexOrCrit[keyPaths[0]]); - var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function(ix) { - if (ix.compound && keyPaths.every(function(keyPath) { - return ix.keyPath.indexOf(keyPath) >= 0; - })) { - for (var i = 0; i < keyPaths.length; ++i) { - if (keyPaths.indexOf(ix.keyPath[i]) === -1) - return false; - } - return true; - } - return false; - }).sort(function(a, b) { - return a.keyPath.length - b.keyPath.length; - })[0]; - if (compoundIndex && this.db._maxKey !== maxString) { - var keyPathsInValidOrder = compoundIndex.keyPath.slice(0, keyPaths.length); - return this.where(keyPathsInValidOrder).equals(keyPathsInValidOrder.map(function(kp) { - return indexOrCrit[kp]; - })); - } - if (!compoundIndex && debug) - console.warn("The query ".concat(JSON.stringify(indexOrCrit), " on ").concat(this.name, " would benefit from a ") + "compound index [".concat(keyPaths.join("+"), "]")); - var idxByName = this.schema.idxByName; - function equals(a, b) { - return cmp2(a, b) === 0; - } - var _a2 = keyPaths.reduce(function(_a3, keyPath) { - var prevIndex = _a3[0], prevFilterFn = _a3[1]; - var index = idxByName[keyPath]; - var value = indexOrCrit[keyPath]; - return [ - prevIndex || index, - prevIndex || !index ? combine(prevFilterFn, index && index.multi ? function(x) { - var prop = getByKeyPath(x, keyPath); - return isArray(prop) && prop.some(function(item) { - return equals(value, item); - }); - } : function(x) { - return equals(value, getByKeyPath(x, keyPath)); - }) : prevFilterFn - ]; - }, [null, null]), idx = _a2[0], filterFunction = _a2[1]; - return idx ? this.where(idx.name).equals(indexOrCrit[idx.keyPath]).filter(filterFunction) : compoundIndex ? this.filter(filterFunction) : this.where(keyPaths).equals(""); - }; - Table2.prototype.filter = function(filterFunction) { - return this.toCollection().and(filterFunction); - }; - Table2.prototype.count = function(thenShortcut) { - return this.toCollection().count(thenShortcut); - }; - Table2.prototype.offset = function(offset) { - return this.toCollection().offset(offset); - }; - Table2.prototype.limit = function(numRows) { - return this.toCollection().limit(numRows); - }; - Table2.prototype.each = function(callback) { - return this.toCollection().each(callback); - }; - Table2.prototype.toArray = function(thenShortcut) { - return this.toCollection().toArray(thenShortcut); - }; - Table2.prototype.toCollection = function() { - return new this.db.Collection(new this.db.WhereClause(this)); - }; - Table2.prototype.orderBy = function(index) { - return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ? "[".concat(index.join("+"), "]") : index)); - }; - Table2.prototype.reverse = function() { - return this.toCollection().reverse(); - }; - Table2.prototype.mapToClass = function(constructor) { - var _a2 = this, db = _a2.db, tableName = _a2.name; - this.schema.mappedClass = constructor; - if (constructor.prototype instanceof Entity2) { - constructor = function(_super) { - __extends(class_1, _super); - function class_1() { - return _super !== null && _super.apply(this, arguments) || this; - } - Object.defineProperty(class_1.prototype, "db", { - get: function() { - return db; - }, - enumerable: false, - configurable: true - }); - class_1.prototype.table = function() { - return tableName; - }; - return class_1; - }(constructor); - } - var inheritedProps = /* @__PURE__ */ new Set(); - for (var proto = constructor.prototype; proto; proto = getProto(proto)) { - Object.getOwnPropertyNames(proto).forEach(function(propName) { - return inheritedProps.add(propName); - }); - } - var readHook = function(obj) { - if (!obj) - return obj; - var res = Object.create(constructor.prototype); - for (var m in obj) - if (!inheritedProps.has(m)) - try { - res[m] = obj[m]; - } catch (_) { - } - return res; - }; - if (this.schema.readHook) { - this.hook.reading.unsubscribe(this.schema.readHook); - } - this.schema.readHook = readHook; - this.hook("reading", readHook); - return constructor; - }; - Table2.prototype.defineClass = function() { - function Class(content) { - extend(this, content); - } - return this.mapToClass(Class); - }; - Table2.prototype.add = function(obj, key) { - var _this = this; - var _a2 = this.schema.primKey, auto = _a2.auto, keyPath = _a2.keyPath; - var objToAdd = obj; - if (keyPath && auto) { - objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj); - } - return this._trans("readwrite", function(trans) { - return _this.core.mutate({ trans, type: "add", keys: key != null ? [key] : null, values: [objToAdd] }); - }).then(function(res) { - return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; - }).then(function(lastResult) { - if (keyPath) { - try { - setByKeyPath(obj, keyPath, lastResult); - } catch (_) { - } - } - return lastResult; - }); - }; - Table2.prototype.update = function(keyOrObject, modifications) { - if (typeof keyOrObject === "object" && !isArray(keyOrObject)) { - var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath); - if (key === void 0) - return rejection(new exceptions.InvalidArgument("Given object does not contain its primary key")); - return this.where(":id").equals(key).modify(modifications); - } else { - return this.where(":id").equals(keyOrObject).modify(modifications); - } - }; - Table2.prototype.put = function(obj, key) { - var _this = this; - var _a2 = this.schema.primKey, auto = _a2.auto, keyPath = _a2.keyPath; - var objToAdd = obj; - if (keyPath && auto) { - objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj); - } - return this._trans("readwrite", function(trans) { - return _this.core.mutate({ trans, type: "put", values: [objToAdd], keys: key != null ? [key] : null }); - }).then(function(res) { - return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; - }).then(function(lastResult) { - if (keyPath) { - try { - setByKeyPath(obj, keyPath, lastResult); - } catch (_) { - } - } - return lastResult; - }); - }; - Table2.prototype.delete = function(key) { - var _this = this; - return this._trans("readwrite", function(trans) { - return _this.core.mutate({ trans, type: "delete", keys: [key] }); - }).then(function(res) { - return res.numFailures ? DexiePromise.reject(res.failures[0]) : void 0; - }); - }; - Table2.prototype.clear = function() { - var _this = this; - return this._trans("readwrite", function(trans) { - return _this.core.mutate({ trans, type: "deleteRange", range: AnyRange }); - }).then(function(res) { - return res.numFailures ? DexiePromise.reject(res.failures[0]) : void 0; - }); - }; - Table2.prototype.bulkGet = function(keys2) { - var _this = this; - return this._trans("readonly", function(trans) { - return _this.core.getMany({ - keys: keys2, - trans - }).then(function(result) { - return result.map(function(res) { - return _this.hook.reading.fire(res); - }); - }); - }); - }; - Table2.prototype.bulkAdd = function(objects, keysOrOptions, options) { - var _this = this; - var keys2 = Array.isArray(keysOrOptions) ? keysOrOptions : void 0; - options = options || (keys2 ? void 0 : keysOrOptions); - var wantResults = options ? options.allKeys : void 0; - return this._trans("readwrite", function(trans) { - var _a2 = _this.schema.primKey, auto = _a2.auto, keyPath = _a2.keyPath; - if (keyPath && keys2) - throw new exceptions.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys"); - if (keys2 && keys2.length !== objects.length) - throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length"); - var numObjects = objects.length; - var objectsToAdd = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects; - return _this.core.mutate({ trans, type: "add", keys: keys2, values: objectsToAdd, wantResults }).then(function(_a3) { - var numFailures = _a3.numFailures, results = _a3.results, lastResult = _a3.lastResult, failures = _a3.failures; - var result = wantResults ? results : lastResult; - if (numFailures === 0) - return result; - throw new BulkError("".concat(_this.name, ".bulkAdd(): ").concat(numFailures, " of ").concat(numObjects, " operations failed"), failures); - }); - }); - }; - Table2.prototype.bulkPut = function(objects, keysOrOptions, options) { - var _this = this; - var keys2 = Array.isArray(keysOrOptions) ? keysOrOptions : void 0; - options = options || (keys2 ? void 0 : keysOrOptions); - var wantResults = options ? options.allKeys : void 0; - return this._trans("readwrite", function(trans) { - var _a2 = _this.schema.primKey, auto = _a2.auto, keyPath = _a2.keyPath; - if (keyPath && keys2) - throw new exceptions.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys"); - if (keys2 && keys2.length !== objects.length) - throw new exceptions.InvalidArgument("Arguments objects and keys must have the same length"); - var numObjects = objects.length; - var objectsToPut = keyPath && auto ? objects.map(workaroundForUndefinedPrimKey(keyPath)) : objects; - return _this.core.mutate({ trans, type: "put", keys: keys2, values: objectsToPut, wantResults }).then(function(_a3) { - var numFailures = _a3.numFailures, results = _a3.results, lastResult = _a3.lastResult, failures = _a3.failures; - var result = wantResults ? results : lastResult; - if (numFailures === 0) - return result; - throw new BulkError("".concat(_this.name, ".bulkPut(): ").concat(numFailures, " of ").concat(numObjects, " operations failed"), failures); - }); - }); - }; - Table2.prototype.bulkUpdate = function(keysAndChanges) { - var _this = this; - var coreTable = this.core; - var keys2 = keysAndChanges.map(function(entry) { - return entry.key; - }); - var changeSpecs = keysAndChanges.map(function(entry) { - return entry.changes; - }); - var offsetMap = []; - return this._trans("readwrite", function(trans) { - return coreTable.getMany({ trans, keys: keys2, cache: "clone" }).then(function(objs) { - var resultKeys = []; - var resultObjs = []; - keysAndChanges.forEach(function(_a2, idx) { - var key = _a2.key, changes = _a2.changes; - var obj = objs[idx]; - if (obj) { - for (var _i = 0, _b = Object.keys(changes); _i < _b.length; _i++) { - var keyPath = _b[_i]; - var value = changes[keyPath]; - if (keyPath === _this.schema.primKey.keyPath) { - if (cmp2(value, key) !== 0) { - throw new exceptions.Constraint("Cannot update primary key in bulkUpdate()"); - } - } else { - setByKeyPath(obj, keyPath, value); - } - } - offsetMap.push(idx); - resultKeys.push(key); - resultObjs.push(obj); - } - }); - var numEntries = resultKeys.length; - return coreTable.mutate({ - trans, - type: "put", - keys: resultKeys, - values: resultObjs, - updates: { - keys: keys2, - changeSpecs - } - }).then(function(_a2) { - var numFailures = _a2.numFailures, failures = _a2.failures; - if (numFailures === 0) - return numEntries; - for (var _i = 0, _b = Object.keys(failures); _i < _b.length; _i++) { - var offset = _b[_i]; - var mappedOffset = offsetMap[Number(offset)]; - if (mappedOffset != null) { - var failure = failures[offset]; - delete failures[offset]; - failures[mappedOffset] = failure; - } - } - throw new BulkError("".concat(_this.name, ".bulkUpdate(): ").concat(numFailures, " of ").concat(numEntries, " operations failed"), failures); - }); - }); - }); - }; - Table2.prototype.bulkDelete = function(keys2) { - var _this = this; - var numKeys = keys2.length; - return this._trans("readwrite", function(trans) { - return _this.core.mutate({ trans, type: "delete", keys: keys2 }); - }).then(function(_a2) { - var numFailures = _a2.numFailures, lastResult = _a2.lastResult, failures = _a2.failures; - if (numFailures === 0) - return lastResult; - throw new BulkError("".concat(_this.name, ".bulkDelete(): ").concat(numFailures, " of ").concat(numKeys, " operations failed"), failures); - }); - }; - return Table2; - }(); - function Events(ctx) { - var evs = {}; - var rv = function(eventName, subscriber) { - if (subscriber) { - var i2 = arguments.length, args = new Array(i2 - 1); - while (--i2) - args[i2 - 1] = arguments[i2]; - evs[eventName].subscribe.apply(null, args); - return ctx; - } else if (typeof eventName === "string") { - return evs[eventName]; - } - }; - rv.addEventType = add3; - for (var i = 1, l = arguments.length; i < l; ++i) { - add3(arguments[i]); - } - return rv; - function add3(eventName, chainFunction, defaultFunction) { - if (typeof eventName === "object") - return addConfiguredEvents(eventName); - if (!chainFunction) - chainFunction = reverseStoppableEventChain; - if (!defaultFunction) - defaultFunction = nop; - var context = { - subscribers: [], - fire: defaultFunction, - subscribe: function(cb) { - if (context.subscribers.indexOf(cb) === -1) { - context.subscribers.push(cb); - context.fire = chainFunction(context.fire, cb); - } - }, - unsubscribe: function(cb) { - context.subscribers = context.subscribers.filter(function(fn) { - return fn !== cb; - }); - context.fire = context.subscribers.reduce(chainFunction, defaultFunction); - } - }; - evs[eventName] = rv[eventName] = context; - return context; - } - function addConfiguredEvents(cfg) { - keys(cfg).forEach(function(eventName) { - var args = cfg[eventName]; - if (isArray(args)) { - add3(eventName, cfg[eventName][0], cfg[eventName][1]); - } else if (args === "asap") { - var context = add3(eventName, mirror, function fire() { - var i2 = arguments.length, args2 = new Array(i2); - while (i2--) - args2[i2] = arguments[i2]; - context.subscribers.forEach(function(fn) { - asap$1(function fireEvent() { - fn.apply(null, args2); - }); - }); - }); - } else - throw new exceptions.InvalidArgument("Invalid event config"); - }); - } - } - function makeClassConstructor(prototype, constructor) { - derive(constructor).from({ prototype }); - return constructor; - } - function createTableConstructor(db) { - return makeClassConstructor(Table.prototype, function Table2(name, tableSchema, trans) { - this.db = db; - this._tx = trans; - this.name = name; - this.schema = tableSchema; - this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, { - "creating": [hookCreatingChain, nop], - "reading": [pureFunctionChain, mirror], - "updating": [hookUpdatingChain, nop], - "deleting": [hookDeletingChain, nop] - }); - }); - } - function isPlainKeyRange(ctx, ignoreLimitFilter) { - return !(ctx.filter || ctx.algorithm || ctx.or) && (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter); - } - function addFilter(ctx, fn) { - ctx.filter = combine(ctx.filter, fn); - } - function addReplayFilter(ctx, factory, isLimitFilter) { - var curr = ctx.replayFilter; - ctx.replayFilter = curr ? function() { - return combine(curr(), factory()); - } : factory; - ctx.justLimit = isLimitFilter && !curr; - } - function addMatchFilter(ctx, fn) { - ctx.isMatch = combine(ctx.isMatch, fn); - } - function getIndexOrStore(ctx, coreSchema) { - if (ctx.isPrimKey) - return coreSchema.primaryKey; - var index = coreSchema.getIndexByKeyPath(ctx.index); - if (!index) - throw new exceptions.Schema("KeyPath " + ctx.index + " on object store " + coreSchema.name + " is not indexed"); - return index; - } - function openCursor(ctx, coreTable, trans) { - var index = getIndexOrStore(ctx, coreTable.schema); - return coreTable.openCursor({ - trans, - values: !ctx.keysOnly, - reverse: ctx.dir === "prev", - unique: !!ctx.unique, - query: { - index, - range: ctx.range - } - }); - } - function iter(ctx, fn, coreTrans, coreTable) { - var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter; - if (!ctx.or) { - return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper); - } else { - var set_1 = {}; - var union = function(item, cursor, advance) { - if (!filter || filter(cursor, advance, function(result) { - return cursor.stop(result); - }, function(err) { - return cursor.fail(err); - })) { - var primaryKey = cursor.primaryKey; - var key = "" + primaryKey; - if (key === "[object ArrayBuffer]") - key = "" + new Uint8Array(primaryKey); - if (!hasOwn(set_1, key)) { - set_1[key] = true; - fn(item, cursor, advance); - } - } - }; - return Promise.all([ - ctx.or._iterate(union, coreTrans), - iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper) - ]); - } - } - function iterate(cursorPromise, filter, fn, valueMapper) { - var mappedFn = valueMapper ? function(x, c, a) { - return fn(valueMapper(x), c, a); - } : fn; - var wrappedFn = wrap(mappedFn); - return cursorPromise.then(function(cursor) { - if (cursor) { - return cursor.start(function() { - var c = function() { - return cursor.continue(); - }; - if (!filter || filter(cursor, function(advancer) { - return c = advancer; - }, function(val) { - cursor.stop(val); - c = nop; - }, function(e) { - cursor.fail(e); - c = nop; - })) - wrappedFn(cursor.value, cursor, function(advancer) { - return c = advancer; - }); - c(); - }); - } - }); - } - var PropModification2 = function() { - function PropModification3(spec) { - this["@@propmod"] = spec; - } - PropModification3.prototype.execute = function(value) { - var _a2; - var spec = this["@@propmod"]; - if (spec.add !== void 0) { - var term = spec.add; - if (isArray(term)) { - return __spreadArray(__spreadArray([], isArray(value) ? value : [], true), term, true).sort(); - } - if (typeof term === "number") - return (Number(value) || 0) + term; - if (typeof term === "bigint") { - try { - return BigInt(value) + term; - } catch (_b) { - return BigInt(0) + term; - } - } - throw new TypeError("Invalid term ".concat(term)); - } - if (spec.remove !== void 0) { - var subtrahend_1 = spec.remove; - if (isArray(subtrahend_1)) { - return isArray(value) ? value.filter(function(item) { - return !subtrahend_1.includes(item); - }).sort() : []; - } - if (typeof subtrahend_1 === "number") - return Number(value) - subtrahend_1; - if (typeof subtrahend_1 === "bigint") { - try { - return BigInt(value) - subtrahend_1; - } catch (_c) { - return BigInt(0) - subtrahend_1; - } - } - throw new TypeError("Invalid subtrahend ".concat(subtrahend_1)); - } - var prefixToReplace = (_a2 = spec.replacePrefix) === null || _a2 === void 0 ? void 0 : _a2[0]; - if (prefixToReplace && typeof value === "string" && value.startsWith(prefixToReplace)) { - return spec.replacePrefix[1] + value.substring(prefixToReplace.length); - } - return value; - }; - return PropModification3; - }(); - var Collection = function() { - function Collection2() { - } - Collection2.prototype._read = function(fn, cb) { - var ctx = this._ctx; - return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans("readonly", fn).then(cb); - }; - Collection2.prototype._write = function(fn) { - var ctx = this._ctx; - return ctx.error ? ctx.table._trans(null, rejection.bind(null, ctx.error)) : ctx.table._trans("readwrite", fn, "locked"); - }; - Collection2.prototype._addAlgorithm = function(fn) { - var ctx = this._ctx; - ctx.algorithm = combine(ctx.algorithm, fn); - }; - Collection2.prototype._iterate = function(fn, coreTrans) { - return iter(this._ctx, fn, coreTrans, this._ctx.table.core); - }; - Collection2.prototype.clone = function(props2) { - var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx); - if (props2) - extend(ctx, props2); - rv._ctx = ctx; - return rv; - }; - Collection2.prototype.raw = function() { - this._ctx.valueMapper = null; - return this; - }; - Collection2.prototype.each = function(fn) { - var ctx = this._ctx; - return this._read(function(trans) { - return iter(ctx, fn, trans, ctx.table.core); - }); - }; - Collection2.prototype.count = function(cb) { - var _this = this; - return this._read(function(trans) { - var ctx = _this._ctx; - var coreTable = ctx.table.core; - if (isPlainKeyRange(ctx, true)) { - return coreTable.count({ - trans, - query: { - index: getIndexOrStore(ctx, coreTable.schema), - range: ctx.range - } - }).then(function(count2) { - return Math.min(count2, ctx.limit); - }); - } else { - var count = 0; - return iter(ctx, function() { - ++count; - return false; - }, trans, coreTable).then(function() { - return count; - }); - } - }).then(cb); - }; - Collection2.prototype.sortBy = function(keyPath, cb) { - var parts = keyPath.split(".").reverse(), lastPart = parts[0], lastIndex = parts.length - 1; - function getval(obj, i) { - if (i) - return getval(obj[parts[i]], i - 1); - return obj[lastPart]; - } - var order = this._ctx.dir === "next" ? 1 : -1; - function sorter(a, b) { - var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex); - return cmp2(aVal, bVal) * order; - } - return this.toArray(function(a) { - return a.sort(sorter); - }).then(cb); - }; - Collection2.prototype.toArray = function(cb) { - var _this = this; - return this._read(function(trans) { - var ctx = _this._ctx; - if (ctx.dir === "next" && isPlainKeyRange(ctx, true) && ctx.limit > 0) { - var valueMapper_1 = ctx.valueMapper; - var index = getIndexOrStore(ctx, ctx.table.core.schema); - return ctx.table.core.query({ - trans, - limit: ctx.limit, - values: true, - query: { - index, - range: ctx.range - } - }).then(function(_a2) { - var result = _a2.result; - return valueMapper_1 ? result.map(valueMapper_1) : result; - }); - } else { - var a_1 = []; - return iter(ctx, function(item) { - return a_1.push(item); - }, trans, ctx.table.core).then(function() { - return a_1; - }); - } - }, cb); - }; - Collection2.prototype.offset = function(offset) { - var ctx = this._ctx; - if (offset <= 0) - return this; - ctx.offset += offset; - if (isPlainKeyRange(ctx)) { - addReplayFilter(ctx, function() { - var offsetLeft = offset; - return function(cursor, advance) { - if (offsetLeft === 0) - return true; - if (offsetLeft === 1) { - --offsetLeft; - return false; - } - advance(function() { - cursor.advance(offsetLeft); - offsetLeft = 0; - }); - return false; - }; - }); - } else { - addReplayFilter(ctx, function() { - var offsetLeft = offset; - return function() { - return --offsetLeft < 0; - }; - }); - } - return this; - }; - Collection2.prototype.limit = function(numRows) { - this._ctx.limit = Math.min(this._ctx.limit, numRows); - addReplayFilter(this._ctx, function() { - var rowsLeft = numRows; - return function(cursor, advance, resolve) { - if (--rowsLeft <= 0) - advance(resolve); - return rowsLeft >= 0; - }; - }, true); - return this; - }; - Collection2.prototype.until = function(filterFunction, bIncludeStopEntry) { - addFilter(this._ctx, function(cursor, advance, resolve) { - if (filterFunction(cursor.value)) { - advance(resolve); - return bIncludeStopEntry; - } else { - return true; - } - }); - return this; - }; - Collection2.prototype.first = function(cb) { - return this.limit(1).toArray(function(a) { - return a[0]; - }).then(cb); - }; - Collection2.prototype.last = function(cb) { - return this.reverse().first(cb); - }; - Collection2.prototype.filter = function(filterFunction) { - addFilter(this._ctx, function(cursor) { - return filterFunction(cursor.value); - }); - addMatchFilter(this._ctx, filterFunction); - return this; - }; - Collection2.prototype.and = function(filter) { - return this.filter(filter); - }; - Collection2.prototype.or = function(indexName) { - return new this.db.WhereClause(this._ctx.table, indexName, this); - }; - Collection2.prototype.reverse = function() { - this._ctx.dir = this._ctx.dir === "prev" ? "next" : "prev"; - if (this._ondirectionchange) - this._ondirectionchange(this._ctx.dir); - return this; - }; - Collection2.prototype.desc = function() { - return this.reverse(); - }; - Collection2.prototype.eachKey = function(cb) { - var ctx = this._ctx; - ctx.keysOnly = !ctx.isMatch; - return this.each(function(val, cursor) { - cb(cursor.key, cursor); - }); - }; - Collection2.prototype.eachUniqueKey = function(cb) { - this._ctx.unique = "unique"; - return this.eachKey(cb); - }; - Collection2.prototype.eachPrimaryKey = function(cb) { - var ctx = this._ctx; - ctx.keysOnly = !ctx.isMatch; - return this.each(function(val, cursor) { - cb(cursor.primaryKey, cursor); - }); - }; - Collection2.prototype.keys = function(cb) { - var ctx = this._ctx; - ctx.keysOnly = !ctx.isMatch; - var a = []; - return this.each(function(item, cursor) { - a.push(cursor.key); - }).then(function() { - return a; - }).then(cb); - }; - Collection2.prototype.primaryKeys = function(cb) { - var ctx = this._ctx; - if (ctx.dir === "next" && isPlainKeyRange(ctx, true) && ctx.limit > 0) { - return this._read(function(trans) { - var index = getIndexOrStore(ctx, ctx.table.core.schema); - return ctx.table.core.query({ - trans, - values: false, - limit: ctx.limit, - query: { - index, - range: ctx.range - } - }); - }).then(function(_a2) { - var result = _a2.result; - return result; - }).then(cb); - } - ctx.keysOnly = !ctx.isMatch; - var a = []; - return this.each(function(item, cursor) { - a.push(cursor.primaryKey); - }).then(function() { - return a; - }).then(cb); - }; - Collection2.prototype.uniqueKeys = function(cb) { - this._ctx.unique = "unique"; - return this.keys(cb); - }; - Collection2.prototype.firstKey = function(cb) { - return this.limit(1).keys(function(a) { - return a[0]; - }).then(cb); - }; - Collection2.prototype.lastKey = function(cb) { - return this.reverse().firstKey(cb); - }; - Collection2.prototype.distinct = function() { - var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index]; - if (!idx || !idx.multi) - return this; - var set = {}; - addFilter(this._ctx, function(cursor) { - var strKey = cursor.primaryKey.toString(); - var found = hasOwn(set, strKey); - set[strKey] = true; - return !found; - }); - return this; - }; - Collection2.prototype.modify = function(changes) { - var _this = this; - var ctx = this._ctx; - return this._write(function(trans) { - var modifyer; - if (typeof changes === "function") { - modifyer = changes; - } else { - var keyPaths = keys(changes); - var numKeys = keyPaths.length; - modifyer = function(item) { - var anythingModified = false; - for (var i = 0; i < numKeys; ++i) { - var keyPath = keyPaths[i]; - var val = changes[keyPath]; - var origVal = getByKeyPath(item, keyPath); - if (val instanceof PropModification2) { - setByKeyPath(item, keyPath, val.execute(origVal)); - anythingModified = true; - } else if (origVal !== val) { - setByKeyPath(item, keyPath, val); - anythingModified = true; - } - } - return anythingModified; - }; - } - var coreTable = ctx.table.core; - var _a2 = coreTable.schema.primaryKey, outbound = _a2.outbound, extractKey = _a2.extractKey; - var limit = 200; - var modifyChunkSize = _this.db._options.modifyChunkSize; - if (modifyChunkSize) { - if (typeof modifyChunkSize == "object") { - limit = modifyChunkSize[coreTable.name] || modifyChunkSize["*"] || 200; - } else { - limit = modifyChunkSize; - } - } - var totalFailures = []; - var successCount = 0; - var failedKeys = []; - var applyMutateResult = function(expectedCount, res) { - var failures = res.failures, numFailures = res.numFailures; - successCount += expectedCount - numFailures; - for (var _i = 0, _a3 = keys(failures); _i < _a3.length; _i++) { - var pos = _a3[_i]; - totalFailures.push(failures[pos]); - } - }; - return _this.clone().primaryKeys().then(function(keys2) { - var criteria = isPlainKeyRange(ctx) && ctx.limit === Infinity && (typeof changes !== "function" || changes === deleteCallback) && { - index: ctx.index, - range: ctx.range - }; - var nextChunk = function(offset) { - var count = Math.min(limit, keys2.length - offset); - return coreTable.getMany({ - trans, - keys: keys2.slice(offset, offset + count), - cache: "immutable" - }).then(function(values) { - var addValues = []; - var putValues = []; - var putKeys = outbound ? [] : null; - var deleteKeys = []; - for (var i = 0; i < count; ++i) { - var origValue = values[i]; - var ctx_1 = { - value: deepClone(origValue), - primKey: keys2[offset + i] - }; - if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) { - if (ctx_1.value == null) { - deleteKeys.push(keys2[offset + i]); - } else if (!outbound && cmp2(extractKey(origValue), extractKey(ctx_1.value)) !== 0) { - deleteKeys.push(keys2[offset + i]); - addValues.push(ctx_1.value); - } else { - putValues.push(ctx_1.value); - if (outbound) - putKeys.push(keys2[offset + i]); - } - } - } - return Promise.resolve(addValues.length > 0 && coreTable.mutate({ trans, type: "add", values: addValues }).then(function(res) { - for (var pos in res.failures) { - deleteKeys.splice(parseInt(pos), 1); - } - applyMutateResult(addValues.length, res); - })).then(function() { - return (putValues.length > 0 || criteria && typeof changes === "object") && coreTable.mutate({ - trans, - type: "put", - keys: putKeys, - values: putValues, - criteria, - changeSpec: typeof changes !== "function" && changes, - isAdditionalChunk: offset > 0 - }).then(function(res) { - return applyMutateResult(putValues.length, res); - }); - }).then(function() { - return (deleteKeys.length > 0 || criteria && changes === deleteCallback) && coreTable.mutate({ - trans, - type: "delete", - keys: deleteKeys, - criteria, - isAdditionalChunk: offset > 0 - }).then(function(res) { - return applyMutateResult(deleteKeys.length, res); - }); - }).then(function() { - return keys2.length > offset + count && nextChunk(offset + limit); - }); - }); - }; - return nextChunk(0).then(function() { - if (totalFailures.length > 0) - throw new ModifyError("Error modifying one or more objects", totalFailures, successCount, failedKeys); - return keys2.length; - }); - }); - }); - }; - Collection2.prototype.delete = function() { - var ctx = this._ctx, range = ctx.range; - if (isPlainKeyRange(ctx) && (ctx.isPrimKey || range.type === 3)) { - return this._write(function(trans) { - var primaryKey = ctx.table.core.schema.primaryKey; - var coreRange = range; - return ctx.table.core.count({ trans, query: { index: primaryKey, range: coreRange } }).then(function(count) { - return ctx.table.core.mutate({ trans, type: "deleteRange", range: coreRange }).then(function(_a2) { - var failures = _a2.failures; - _a2.lastResult; - _a2.results; - var numFailures = _a2.numFailures; - if (numFailures) - throw new ModifyError("Could not delete some values", Object.keys(failures).map(function(pos) { - return failures[pos]; - }), count - numFailures); - return count - numFailures; - }); - }); - }); - } - return this.modify(deleteCallback); - }; - return Collection2; - }(); - var deleteCallback = function(value, ctx) { - return ctx.value = null; - }; - function createCollectionConstructor(db) { - return makeClassConstructor(Collection.prototype, function Collection2(whereClause, keyRangeGenerator) { - this.db = db; - var keyRange = AnyRange, error = null; - if (keyRangeGenerator) - try { - keyRange = keyRangeGenerator(); - } catch (ex) { - error = ex; - } - var whereCtx = whereClause._ctx; - var table = whereCtx.table; - var readingHook = table.hook.reading.fire; - this._ctx = { - table, - index: whereCtx.index, - isPrimKey: !whereCtx.index || table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name, - range: keyRange, - keysOnly: false, - dir: "next", - unique: "", - algorithm: null, - filter: null, - replayFilter: null, - justLimit: true, - isMatch: null, - offset: 0, - limit: Infinity, - error, - or: whereCtx.or, - valueMapper: readingHook !== mirror ? readingHook : null - }; - }); - } - function simpleCompare(a, b) { - return a < b ? -1 : a === b ? 0 : 1; - } - function simpleCompareReverse(a, b) { - return a > b ? -1 : a === b ? 0 : 1; - } - function fail(collectionOrWhereClause, err, T) { - var collection = collectionOrWhereClause instanceof WhereClause ? new collectionOrWhereClause.Collection(collectionOrWhereClause) : collectionOrWhereClause; - collection._ctx.error = T ? new T(err) : new TypeError(err); - return collection; - } - function emptyCollection(whereClause) { - return new whereClause.Collection(whereClause, function() { - return rangeEqual(""); - }).limit(0); - } - function upperFactory(dir) { - return dir === "next" ? function(s) { - return s.toUpperCase(); - } : function(s) { - return s.toLowerCase(); - }; - } - function lowerFactory(dir) { - return dir === "next" ? function(s) { - return s.toLowerCase(); - } : function(s) { - return s.toUpperCase(); - }; - } - function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp3, dir) { - var length = Math.min(key.length, lowerNeedle.length); - var llp = -1; - for (var i = 0; i < length; ++i) { - var lwrKeyChar = lowerKey[i]; - if (lwrKeyChar !== lowerNeedle[i]) { - if (cmp3(key[i], upperNeedle[i]) < 0) - return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1); - if (cmp3(key[i], lowerNeedle[i]) < 0) - return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1); - if (llp >= 0) - return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1); - return null; - } - if (cmp3(key[i], lwrKeyChar) < 0) - llp = i; - } - if (length < lowerNeedle.length && dir === "next") - return key + upperNeedle.substr(key.length); - if (length < key.length && dir === "prev") - return key.substr(0, upperNeedle.length); - return llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1); - } - function addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) { - var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length; - if (!needles.every(function(s) { - return typeof s === "string"; - })) { - return fail(whereClause, STRING_EXPECTED); - } - function initDirection(dir) { - upper = upperFactory(dir); - lower = lowerFactory(dir); - compare = dir === "next" ? simpleCompare : simpleCompareReverse; - var needleBounds = needles.map(function(needle) { - return { lower: lower(needle), upper: upper(needle) }; - }).sort(function(a, b) { - return compare(a.lower, b.lower); - }); - upperNeedles = needleBounds.map(function(nb) { - return nb.upper; - }); - lowerNeedles = needleBounds.map(function(nb) { - return nb.lower; - }); - direction = dir; - nextKeySuffix = dir === "next" ? "" : suffix; - } - initDirection("next"); - var c = new whereClause.Collection(whereClause, function() { - return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); - }); - c._ondirectionchange = function(direction2) { - initDirection(direction2); - }; - var firstPossibleNeedle = 0; - c._addAlgorithm(function(cursor, advance, resolve) { - var key = cursor.key; - if (typeof key !== "string") - return false; - var lowerKey = lower(key); - if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) { - return true; - } else { - var lowestPossibleCasing = null; - for (var i = firstPossibleNeedle; i < needlesLen; ++i) { - var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction); - if (casing === null && lowestPossibleCasing === null) - firstPossibleNeedle = i + 1; - else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) { - lowestPossibleCasing = casing; - } - } - if (lowestPossibleCasing !== null) { - advance(function() { - cursor.continue(lowestPossibleCasing + nextKeySuffix); - }); - } else { - advance(resolve); - } - return false; - } - }); - return c; - } - function createRange(lower, upper, lowerOpen, upperOpen) { - return { - type: 2, - lower, - upper, - lowerOpen, - upperOpen - }; - } - function rangeEqual(value) { - return { - type: 1, - lower: value, - upper: value - }; - } - var WhereClause = function() { - function WhereClause2() { - } - Object.defineProperty(WhereClause2.prototype, "Collection", { - get: function() { - return this._ctx.table.db.Collection; - }, - enumerable: false, - configurable: true - }); - WhereClause2.prototype.between = function(lower, upper, includeLower, includeUpper) { - includeLower = includeLower !== false; - includeUpper = includeUpper === true; - try { - if (this._cmp(lower, upper) > 0 || this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)) - return emptyCollection(this); - return new this.Collection(this, function() { - return createRange(lower, upper, !includeLower, !includeUpper); - }); - } catch (e) { - return fail(this, INVALID_KEY_ARGUMENT); - } - }; - WhereClause2.prototype.equals = function(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, function() { - return rangeEqual(value); - }); - }; - WhereClause2.prototype.above = function(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, function() { - return createRange(value, void 0, true); - }); - }; - WhereClause2.prototype.aboveOrEqual = function(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, function() { - return createRange(value, void 0, false); - }); - }; - WhereClause2.prototype.below = function(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, function() { - return createRange(void 0, value, false, true); - }); - }; - WhereClause2.prototype.belowOrEqual = function(value) { - if (value == null) - return fail(this, INVALID_KEY_ARGUMENT); - return new this.Collection(this, function() { - return createRange(void 0, value); - }); - }; - WhereClause2.prototype.startsWith = function(str) { - if (typeof str !== "string") - return fail(this, STRING_EXPECTED); - return this.between(str, str + maxString, true, true); - }; - WhereClause2.prototype.startsWithIgnoreCase = function(str) { - if (str === "") - return this.startsWith(str); - return addIgnoreCaseAlgorithm(this, function(x, a) { - return x.indexOf(a[0]) === 0; - }, [str], maxString); - }; - WhereClause2.prototype.equalsIgnoreCase = function(str) { - return addIgnoreCaseAlgorithm(this, function(x, a) { - return x === a[0]; - }, [str], ""); - }; - WhereClause2.prototype.anyOfIgnoreCase = function() { - var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (set.length === 0) - return emptyCollection(this); - return addIgnoreCaseAlgorithm(this, function(x, a) { - return a.indexOf(x) !== -1; - }, set, ""); - }; - WhereClause2.prototype.startsWithAnyOfIgnoreCase = function() { - var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (set.length === 0) - return emptyCollection(this); - return addIgnoreCaseAlgorithm(this, function(x, a) { - return a.some(function(n) { - return x.indexOf(n) === 0; - }); - }, set, maxString); - }; - WhereClause2.prototype.anyOf = function() { - var _this = this; - var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - var compare = this._cmp; - try { - set.sort(compare); - } catch (e) { - return fail(this, INVALID_KEY_ARGUMENT); - } - if (set.length === 0) - return emptyCollection(this); - var c = new this.Collection(this, function() { - return createRange(set[0], set[set.length - 1]); - }); - c._ondirectionchange = function(direction) { - compare = direction === "next" ? _this._ascending : _this._descending; - set.sort(compare); - }; - var i = 0; - c._addAlgorithm(function(cursor, advance, resolve) { - var key = cursor.key; - while (compare(key, set[i]) > 0) { - ++i; - if (i === set.length) { - advance(resolve); - return false; - } - } - if (compare(key, set[i]) === 0) { - return true; - } else { - advance(function() { - cursor.continue(set[i]); - }); - return false; - } - }); - return c; - }; - WhereClause2.prototype.notEqual = function(value) { - return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false }); - }; - WhereClause2.prototype.noneOf = function() { - var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (set.length === 0) - return new this.Collection(this); - try { - set.sort(this._ascending); - } catch (e) { - return fail(this, INVALID_KEY_ARGUMENT); - } - var ranges = set.reduce(function(res, val) { - return res ? res.concat([[res[res.length - 1][1], val]]) : [[minKey, val]]; - }, null); - ranges.push([set[set.length - 1], this.db._maxKey]); - return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false }); - }; - WhereClause2.prototype.inAnyRange = function(ranges, options) { - var _this = this; - var cmp3 = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max; - if (ranges.length === 0) - return emptyCollection(this); - if (!ranges.every(function(range) { - return range[0] !== void 0 && range[1] !== void 0 && ascending(range[0], range[1]) <= 0; - })) { - return fail(this, "First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower", exceptions.InvalidArgument); - } - var includeLowers = !options || options.includeLowers !== false; - var includeUppers = options && options.includeUppers === true; - function addRange2(ranges2, newRange) { - var i = 0, l = ranges2.length; - for (; i < l; ++i) { - var range = ranges2[i]; - if (cmp3(newRange[0], range[1]) < 0 && cmp3(newRange[1], range[0]) > 0) { - range[0] = min(range[0], newRange[0]); - range[1] = max(range[1], newRange[1]); - break; - } - } - if (i === l) - ranges2.push(newRange); - return ranges2; - } - var sortDirection = ascending; - function rangeSorter(a, b) { - return sortDirection(a[0], b[0]); - } - var set; - try { - set = ranges.reduce(addRange2, []); - set.sort(rangeSorter); - } catch (ex) { - return fail(this, INVALID_KEY_ARGUMENT); - } - var rangePos = 0; - var keyIsBeyondCurrentEntry = includeUppers ? function(key) { - return ascending(key, set[rangePos][1]) > 0; - } : function(key) { - return ascending(key, set[rangePos][1]) >= 0; - }; - var keyIsBeforeCurrentEntry = includeLowers ? function(key) { - return descending(key, set[rangePos][0]) > 0; - } : function(key) { - return descending(key, set[rangePos][0]) >= 0; - }; - function keyWithinCurrentRange(key) { - return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key); - } - var checkKey = keyIsBeyondCurrentEntry; - var c = new this.Collection(this, function() { - return createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers); - }); - c._ondirectionchange = function(direction) { - if (direction === "next") { - checkKey = keyIsBeyondCurrentEntry; - sortDirection = ascending; - } else { - checkKey = keyIsBeforeCurrentEntry; - sortDirection = descending; - } - set.sort(rangeSorter); - }; - c._addAlgorithm(function(cursor, advance, resolve) { - var key = cursor.key; - while (checkKey(key)) { - ++rangePos; - if (rangePos === set.length) { - advance(resolve); - return false; - } - } - if (keyWithinCurrentRange(key)) { - return true; - } else if (_this._cmp(key, set[rangePos][1]) === 0 || _this._cmp(key, set[rangePos][0]) === 0) { - return false; - } else { - advance(function() { - if (sortDirection === ascending) - cursor.continue(set[rangePos][0]); - else - cursor.continue(set[rangePos][1]); - }); - return false; - } - }); - return c; - }; - WhereClause2.prototype.startsWithAnyOf = function() { - var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments); - if (!set.every(function(s) { - return typeof s === "string"; - })) { - return fail(this, "startsWithAnyOf() only works with strings"); - } - if (set.length === 0) - return emptyCollection(this); - return this.inAnyRange(set.map(function(str) { - return [str, str + maxString]; - })); - }; - return WhereClause2; - }(); - function createWhereClauseConstructor(db) { - return makeClassConstructor(WhereClause.prototype, function WhereClause2(table, index, orCollection) { - this.db = db; - this._ctx = { - table, - index: index === ":id" ? null : index, - or: orCollection - }; - this._cmp = this._ascending = cmp2; - this._descending = function(a, b) { - return cmp2(b, a); - }; - this._max = function(a, b) { - return cmp2(a, b) > 0 ? a : b; - }; - this._min = function(a, b) { - return cmp2(a, b) < 0 ? a : b; - }; - this._IDBKeyRange = db._deps.IDBKeyRange; - if (!this._IDBKeyRange) - throw new exceptions.MissingAPI(); - }); - } - function eventRejectHandler(reject) { - return wrap(function(event) { - preventDefault(event); - reject(event.target.error); - return false; - }); - } - function preventDefault(event) { - if (event.stopPropagation) - event.stopPropagation(); - if (event.preventDefault) - event.preventDefault(); - } - var DEXIE_STORAGE_MUTATED_EVENT_NAME = "storagemutated"; - var STORAGE_MUTATED_DOM_EVENT_NAME = "x-storagemutated-1"; - var globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME); - var Transaction = function() { - function Transaction2() { - } - Transaction2.prototype._lock = function() { - assert(!PSD.global); - ++this._reculock; - if (this._reculock === 1 && !PSD.global) - PSD.lockOwnerFor = this; - return this; - }; - Transaction2.prototype._unlock = function() { - assert(!PSD.global); - if (--this._reculock === 0) { - if (!PSD.global) - PSD.lockOwnerFor = null; - while (this._blockedFuncs.length > 0 && !this._locked()) { - var fnAndPSD = this._blockedFuncs.shift(); - try { - usePSD(fnAndPSD[1], fnAndPSD[0]); - } catch (e) { - } - } - } - return this; - }; - Transaction2.prototype._locked = function() { - return this._reculock && PSD.lockOwnerFor !== this; - }; - Transaction2.prototype.create = function(idbtrans) { - var _this = this; - if (!this.mode) - return this; - var idbdb = this.db.idbdb; - var dbOpenError = this.db._state.dbOpenError; - assert(!this.idbtrans); - if (!idbtrans && !idbdb) { - switch (dbOpenError && dbOpenError.name) { - case "DatabaseClosedError": - throw new exceptions.DatabaseClosed(dbOpenError); - case "MissingAPIError": - throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError); - default: - throw new exceptions.OpenFailed(dbOpenError); - } - } - if (!this.active) - throw new exceptions.TransactionInactive(); - assert(this._completion._state === null); - idbtrans = this.idbtrans = idbtrans || (this.db.core ? this.db.core.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }) : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })); - idbtrans.onerror = wrap(function(ev) { - preventDefault(ev); - _this._reject(idbtrans.error); - }); - idbtrans.onabort = wrap(function(ev) { - preventDefault(ev); - _this.active && _this._reject(new exceptions.Abort(idbtrans.error)); - _this.active = false; - _this.on("abort").fire(ev); - }); - idbtrans.oncomplete = wrap(function() { - _this.active = false; - _this._resolve(); - if ("mutatedParts" in idbtrans) { - globalEvents.storagemutated.fire(idbtrans["mutatedParts"]); - } - }); - return this; - }; - Transaction2.prototype._promise = function(mode, fn, bWriteLock) { - var _this = this; - if (mode === "readwrite" && this.mode !== "readwrite") - return rejection(new exceptions.ReadOnly("Transaction is readonly")); - if (!this.active) - return rejection(new exceptions.TransactionInactive()); - if (this._locked()) { - return new DexiePromise(function(resolve, reject) { - _this._blockedFuncs.push([function() { - _this._promise(mode, fn, bWriteLock).then(resolve, reject); - }, PSD]); - }); - } else if (bWriteLock) { - return newScope(function() { - var p2 = new DexiePromise(function(resolve, reject) { - _this._lock(); - var rv = fn(resolve, reject, _this); - if (rv && rv.then) - rv.then(resolve, reject); - }); - p2.finally(function() { - return _this._unlock(); - }); - p2._lib = true; - return p2; - }); - } else { - var p = new DexiePromise(function(resolve, reject) { - var rv = fn(resolve, reject, _this); - if (rv && rv.then) - rv.then(resolve, reject); - }); - p._lib = true; - return p; - } - }; - Transaction2.prototype._root = function() { - return this.parent ? this.parent._root() : this; - }; - Transaction2.prototype.waitFor = function(promiseLike) { - var root = this._root(); - var promise = DexiePromise.resolve(promiseLike); - if (root._waitingFor) { - root._waitingFor = root._waitingFor.then(function() { - return promise; - }); - } else { - root._waitingFor = promise; - root._waitingQueue = []; - var store = root.idbtrans.objectStore(root.storeNames[0]); - (function spin() { - ++root._spinCount; - while (root._waitingQueue.length) - root._waitingQueue.shift()(); - if (root._waitingFor) - store.get(-Infinity).onsuccess = spin; - })(); - } - var currentWaitPromise = root._waitingFor; - return new DexiePromise(function(resolve, reject) { - promise.then(function(res) { - return root._waitingQueue.push(wrap(resolve.bind(null, res))); - }, function(err) { - return root._waitingQueue.push(wrap(reject.bind(null, err))); - }).finally(function() { - if (root._waitingFor === currentWaitPromise) { - root._waitingFor = null; - } - }); - }); - }; - Transaction2.prototype.abort = function() { - if (this.active) { - this.active = false; - if (this.idbtrans) - this.idbtrans.abort(); - this._reject(new exceptions.Abort()); - } - }; - Transaction2.prototype.table = function(tableName) { - var memoizedTables = this._memoizedTables || (this._memoizedTables = {}); - if (hasOwn(memoizedTables, tableName)) - return memoizedTables[tableName]; - var tableSchema = this.schema[tableName]; - if (!tableSchema) { - throw new exceptions.NotFound("Table " + tableName + " not part of transaction"); - } - var transactionBoundTable = new this.db.Table(tableName, tableSchema, this); - transactionBoundTable.core = this.db.core.table(tableName); - memoizedTables[tableName] = transactionBoundTable; - return transactionBoundTable; - }; - return Transaction2; - }(); - function createTransactionConstructor(db) { - return makeClassConstructor(Transaction.prototype, function Transaction2(mode, storeNames, dbschema, chromeTransactionDurability, parent) { - var _this = this; - this.db = db; - this.mode = mode; - this.storeNames = storeNames; - this.schema = dbschema; - this.chromeTransactionDurability = chromeTransactionDurability; - this.idbtrans = null; - this.on = Events(this, "complete", "error", "abort"); - this.parent = parent || null; - this.active = true; - this._reculock = 0; - this._blockedFuncs = []; - this._resolve = null; - this._reject = null; - this._waitingFor = null; - this._waitingQueue = null; - this._spinCount = 0; - this._completion = new DexiePromise(function(resolve, reject) { - _this._resolve = resolve; - _this._reject = reject; - }); - this._completion.then(function() { - _this.active = false; - _this.on.complete.fire(); - }, function(e) { - var wasActive = _this.active; - _this.active = false; - _this.on.error.fire(e); - _this.parent ? _this.parent._reject(e) : wasActive && _this.idbtrans && _this.idbtrans.abort(); - return rejection(e); - }); - }); - } - function createIndexSpec(name, keyPath, unique, multi, auto, compound, isPrimKey) { - return { - name, - keyPath, - unique, - multi, - auto, - compound, - src: (unique && !isPrimKey ? "&" : "") + (multi ? "*" : "") + (auto ? "++" : "") + nameFromKeyPath(keyPath) - }; - } - function nameFromKeyPath(keyPath) { - return typeof keyPath === "string" ? keyPath : keyPath ? "[" + [].join.call(keyPath, "+") + "]" : ""; - } - function createTableSchema(name, primKey, indexes) { - return { - name, - primKey, - indexes, - mappedClass: null, - idxByName: arrayToObject(indexes, function(index) { - return [index.name, index]; - }) - }; - } - function safariMultiStoreFix(storeNames) { - return storeNames.length === 1 ? storeNames[0] : storeNames; - } - var getMaxKey = function(IdbKeyRange) { - try { - IdbKeyRange.only([[]]); - getMaxKey = function() { - return [[]]; - }; - return [[]]; - } catch (e) { - getMaxKey = function() { - return maxString; - }; - return maxString; - } - }; - function getKeyExtractor(keyPath) { - if (keyPath == null) { - return function() { - return void 0; - }; - } else if (typeof keyPath === "string") { - return getSinglePathKeyExtractor(keyPath); - } else { - return function(obj) { - return getByKeyPath(obj, keyPath); - }; - } - } - function getSinglePathKeyExtractor(keyPath) { - var split = keyPath.split("."); - if (split.length === 1) { - return function(obj) { - return obj[keyPath]; - }; - } else { - return function(obj) { - return getByKeyPath(obj, keyPath); - }; - } - } - function arrayify(arrayLike) { - return [].slice.call(arrayLike); - } - var _id_counter = 0; - function getKeyPathAlias(keyPath) { - return keyPath == null ? ":id" : typeof keyPath === "string" ? keyPath : "[".concat(keyPath.join("+"), "]"); - } - function createDBCore(db, IdbKeyRange, tmpTrans) { - function extractSchema(db2, trans) { - var tables2 = arrayify(db2.objectStoreNames); - return { - schema: { - name: db2.name, - tables: tables2.map(function(table) { - return trans.objectStore(table); - }).map(function(store) { - var keyPath = store.keyPath, autoIncrement = store.autoIncrement; - var compound = isArray(keyPath); - var outbound = keyPath == null; - var indexByKeyPath = {}; - var result = { - name: store.name, - primaryKey: { - name: null, - isPrimaryKey: true, - outbound, - compound, - keyPath, - autoIncrement, - unique: true, - extractKey: getKeyExtractor(keyPath) - }, - indexes: arrayify(store.indexNames).map(function(indexName) { - return store.index(indexName); - }).map(function(index) { - var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath2 = index.keyPath; - var compound2 = isArray(keyPath2); - var result2 = { - name, - compound: compound2, - keyPath: keyPath2, - unique, - multiEntry, - extractKey: getKeyExtractor(keyPath2) - }; - indexByKeyPath[getKeyPathAlias(keyPath2)] = result2; - return result2; - }), - getIndexByKeyPath: function(keyPath2) { - return indexByKeyPath[getKeyPathAlias(keyPath2)]; - } - }; - indexByKeyPath[":id"] = result.primaryKey; - if (keyPath != null) { - indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey; - } - return result; - }) - }, - hasGetAll: tables2.length > 0 && "getAll" in trans.objectStore(tables2[0]) && !(typeof navigator !== "undefined" && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604) - }; - } - function makeIDBKeyRange(range) { - if (range.type === 3) - return null; - if (range.type === 4) - throw new Error("Cannot convert never type to IDBKeyRange"); - var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen; - var idbRange = lower === void 0 ? upper === void 0 ? null : IdbKeyRange.upperBound(upper, !!upperOpen) : upper === void 0 ? IdbKeyRange.lowerBound(lower, !!lowerOpen) : IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen); - return idbRange; - } - function createDbCoreTable(tableSchema) { - var tableName = tableSchema.name; - function mutate(_a3) { - var trans = _a3.trans, type2 = _a3.type, keys2 = _a3.keys, values = _a3.values, range = _a3.range; - return new Promise(function(resolve, reject) { - resolve = wrap(resolve); - var store = trans.objectStore(tableName); - var outbound = store.keyPath == null; - var isAddOrPut = type2 === "put" || type2 === "add"; - if (!isAddOrPut && type2 !== "delete" && type2 !== "deleteRange") - throw new Error("Invalid operation type: " + type2); - var length = (keys2 || values || { length: 1 }).length; - if (keys2 && values && keys2.length !== values.length) { - throw new Error("Given keys array must have same length as given values array."); - } - if (length === 0) - return resolve({ numFailures: 0, failures: {}, results: [], lastResult: void 0 }); - var req; - var reqs = []; - var failures = []; - var numFailures = 0; - var errorHandler = function(event) { - ++numFailures; - preventDefault(event); - }; - if (type2 === "deleteRange") { - if (range.type === 4) - return resolve({ numFailures, failures, results: [], lastResult: void 0 }); - if (range.type === 3) - reqs.push(req = store.clear()); - else - reqs.push(req = store.delete(makeIDBKeyRange(range))); - } else { - var _a4 = isAddOrPut ? outbound ? [values, keys2] : [values, null] : [keys2, null], args1 = _a4[0], args2 = _a4[1]; - if (isAddOrPut) { - for (var i = 0; i < length; ++i) { - reqs.push(req = args2 && args2[i] !== void 0 ? store[type2](args1[i], args2[i]) : store[type2](args1[i])); - req.onerror = errorHandler; - } - } else { - for (var i = 0; i < length; ++i) { - reqs.push(req = store[type2](args1[i])); - req.onerror = errorHandler; - } - } - } - var done = function(event) { - var lastResult = event.target.result; - reqs.forEach(function(req2, i2) { - return req2.error != null && (failures[i2] = req2.error); - }); - resolve({ - numFailures, - failures, - results: type2 === "delete" ? keys2 : reqs.map(function(req2) { - return req2.result; - }), - lastResult - }); - }; - req.onerror = function(event) { - errorHandler(event); - done(event); - }; - req.onsuccess = done; - }); - } - function openCursor2(_a3) { - var trans = _a3.trans, values = _a3.values, query2 = _a3.query, reverse = _a3.reverse, unique = _a3.unique; - return new Promise(function(resolve, reject) { - resolve = wrap(resolve); - var index = query2.index, range = query2.range; - var store = trans.objectStore(tableName); - var source = index.isPrimaryKey ? store : store.index(index.name); - var direction = reverse ? unique ? "prevunique" : "prev" : unique ? "nextunique" : "next"; - var req = values || !("openKeyCursor" in source) ? source.openCursor(makeIDBKeyRange(range), direction) : source.openKeyCursor(makeIDBKeyRange(range), direction); - req.onerror = eventRejectHandler(reject); - req.onsuccess = wrap(function(ev) { - var cursor = req.result; - if (!cursor) { - resolve(null); - return; - } - cursor.___id = ++_id_counter; - cursor.done = false; - var _cursorContinue = cursor.continue.bind(cursor); - var _cursorContinuePrimaryKey = cursor.continuePrimaryKey; - if (_cursorContinuePrimaryKey) - _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor); - var _cursorAdvance = cursor.advance.bind(cursor); - var doThrowCursorIsNotStarted = function() { - throw new Error("Cursor not started"); - }; - var doThrowCursorIsStopped = function() { - throw new Error("Cursor not stopped"); - }; - cursor.trans = trans; - cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted; - cursor.fail = wrap(reject); - cursor.next = function() { - var _this = this; - var gotOne = 1; - return this.start(function() { - return gotOne-- ? _this.continue() : _this.stop(); - }).then(function() { - return _this; - }); - }; - cursor.start = function(callback) { - var iterationPromise = new Promise(function(resolveIteration, rejectIteration) { - resolveIteration = wrap(resolveIteration); - req.onerror = eventRejectHandler(rejectIteration); - cursor.fail = rejectIteration; - cursor.stop = function(value) { - cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped; - resolveIteration(value); - }; - }); - var guardedCallback = function() { - if (req.result) { - try { - callback(); - } catch (err) { - cursor.fail(err); - } - } else { - cursor.done = true; - cursor.start = function() { - throw new Error("Cursor behind last entry"); - }; - cursor.stop(); - } - }; - req.onsuccess = wrap(function(ev2) { - req.onsuccess = guardedCallback; - guardedCallback(); - }); - cursor.continue = _cursorContinue; - cursor.continuePrimaryKey = _cursorContinuePrimaryKey; - cursor.advance = _cursorAdvance; - guardedCallback(); - return iterationPromise; - }; - resolve(cursor); - }, reject); - }); - } - function query(hasGetAll2) { - return function(request) { - return new Promise(function(resolve, reject) { - resolve = wrap(resolve); - var trans = request.trans, values = request.values, limit = request.limit, query2 = request.query; - var nonInfinitLimit = limit === Infinity ? void 0 : limit; - var index = query2.index, range = query2.range; - var store = trans.objectStore(tableName); - var source = index.isPrimaryKey ? store : store.index(index.name); - var idbKeyRange = makeIDBKeyRange(range); - if (limit === 0) - return resolve({ result: [] }); - if (hasGetAll2) { - var req = values ? source.getAll(idbKeyRange, nonInfinitLimit) : source.getAllKeys(idbKeyRange, nonInfinitLimit); - req.onsuccess = function(event) { - return resolve({ result: event.target.result }); - }; - req.onerror = eventRejectHandler(reject); - } else { - var count_1 = 0; - var req_1 = values || !("openKeyCursor" in source) ? source.openCursor(idbKeyRange) : source.openKeyCursor(idbKeyRange); - var result_1 = []; - req_1.onsuccess = function(event) { - var cursor = req_1.result; - if (!cursor) - return resolve({ result: result_1 }); - result_1.push(values ? cursor.value : cursor.primaryKey); - if (++count_1 === limit) - return resolve({ result: result_1 }); - cursor.continue(); - }; - req_1.onerror = eventRejectHandler(reject); - } - }); - }; - } - return { - name: tableName, - schema: tableSchema, - mutate, - getMany: function(_a3) { - var trans = _a3.trans, keys2 = _a3.keys; - return new Promise(function(resolve, reject) { - resolve = wrap(resolve); - var store = trans.objectStore(tableName); - var length = keys2.length; - var result = new Array(length); - var keyCount = 0; - var callbackCount = 0; - var req; - var successHandler = function(event) { - var req2 = event.target; - if ((result[req2._pos] = req2.result) != null) - ; - if (++callbackCount === keyCount) - resolve(result); - }; - var errorHandler = eventRejectHandler(reject); - for (var i = 0; i < length; ++i) { - var key = keys2[i]; - if (key != null) { - req = store.get(keys2[i]); - req._pos = i; - req.onsuccess = successHandler; - req.onerror = errorHandler; - ++keyCount; - } - } - if (keyCount === 0) - resolve(result); - }); - }, - get: function(_a3) { - var trans = _a3.trans, key = _a3.key; - return new Promise(function(resolve, reject) { - resolve = wrap(resolve); - var store = trans.objectStore(tableName); - var req = store.get(key); - req.onsuccess = function(event) { - return resolve(event.target.result); - }; - req.onerror = eventRejectHandler(reject); - }); - }, - query: query(hasGetAll), - openCursor: openCursor2, - count: function(_a3) { - var query2 = _a3.query, trans = _a3.trans; - var index = query2.index, range = query2.range; - return new Promise(function(resolve, reject) { - var store = trans.objectStore(tableName); - var source = index.isPrimaryKey ? store : store.index(index.name); - var idbKeyRange = makeIDBKeyRange(range); - var req = idbKeyRange ? source.count(idbKeyRange) : source.count(); - req.onsuccess = wrap(function(ev) { - return resolve(ev.target.result); - }); - req.onerror = eventRejectHandler(reject); - }); - } - }; - } - var _a2 = extractSchema(db, tmpTrans), schema = _a2.schema, hasGetAll = _a2.hasGetAll; - var tables = schema.tables.map(function(tableSchema) { - return createDbCoreTable(tableSchema); - }); - var tableMap = {}; - tables.forEach(function(table) { - return tableMap[table.name] = table; - }); - return { - stack: "dbcore", - transaction: db.transaction.bind(db), - table: function(name) { - var result = tableMap[name]; - if (!result) - throw new Error("Table '".concat(name, "' not found")); - return tableMap[name]; - }, - MIN_KEY: -Infinity, - MAX_KEY: getMaxKey(IdbKeyRange), - schema - }; - } - function createMiddlewareStack(stackImpl, middlewares) { - return middlewares.reduce(function(down, _a2) { - var create = _a2.create; - return __assign2(__assign2({}, down), create(down)); - }, stackImpl); - } - function createMiddlewareStacks(middlewares, idbdb, _a2, tmpTrans) { - var IDBKeyRange = _a2.IDBKeyRange; - _a2.indexedDB; - var dbcore = createMiddlewareStack(createDBCore(idbdb, IDBKeyRange, tmpTrans), middlewares.dbcore); - return { - dbcore - }; - } - function generateMiddlewareStacks(db, tmpTrans) { - var idbdb = tmpTrans.db; - var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans); - db.core = stacks.dbcore; - db.tables.forEach(function(table) { - var tableName = table.name; - if (db.core.schema.tables.some(function(tbl) { - return tbl.name === tableName; - })) { - table.core = db.core.table(tableName); - if (db[tableName] instanceof db.Table) { - db[tableName].core = table.core; - } - } - }); - } - function setApiOnPlace(db, objs, tableNames, dbschema) { - tableNames.forEach(function(tableName) { - var schema = dbschema[tableName]; - objs.forEach(function(obj) { - var propDesc = getPropertyDescriptor(obj, tableName); - if (!propDesc || "value" in propDesc && propDesc.value === void 0) { - if (obj === db.Transaction.prototype || obj instanceof db.Transaction) { - setProp(obj, tableName, { - get: function() { - return this.table(tableName); - }, - set: function(value) { - defineProperty(this, tableName, { value, writable: true, configurable: true, enumerable: true }); - } - }); - } else { - obj[tableName] = new db.Table(tableName, schema); - } - } - }); - }); - } - function removeTablesApi(db, objs) { - objs.forEach(function(obj) { - for (var key in obj) { - if (obj[key] instanceof db.Table) - delete obj[key]; - } - }); - } - function lowerVersionFirst(a, b) { - return a._cfg.version - b._cfg.version; - } - function runUpgraders(db, oldVersion, idbUpgradeTrans, reject) { - var globalSchema = db._dbSchema; - if (idbUpgradeTrans.objectStoreNames.contains("$meta") && !globalSchema.$meta) { - globalSchema.$meta = createTableSchema("$meta", parseIndexSyntax("")[0], []); - db._storeNames.push("$meta"); - } - var trans = db._createTransaction("readwrite", db._storeNames, globalSchema); - trans.create(idbUpgradeTrans); - trans._completion.catch(reject); - var rejectTransaction = trans._reject.bind(trans); - var transless = PSD.transless || PSD; - newScope(function() { - PSD.trans = trans; - PSD.transless = transless; - if (oldVersion === 0) { - keys(globalSchema).forEach(function(tableName) { - createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes); - }); - generateMiddlewareStacks(db, idbUpgradeTrans); - DexiePromise.follow(function() { - return db.on.populate.fire(trans); - }).catch(rejectTransaction); - } else { - generateMiddlewareStacks(db, idbUpgradeTrans); - return getExistingVersion(db, trans, oldVersion).then(function(oldVersion2) { - return updateTablesAndIndexes(db, oldVersion2, trans, idbUpgradeTrans); - }).catch(rejectTransaction); - } - }); - } - function patchCurrentVersion(db, idbUpgradeTrans) { - createMissingTables(db._dbSchema, idbUpgradeTrans); - if (idbUpgradeTrans.db.version % 10 === 0 && !idbUpgradeTrans.objectStoreNames.contains("$meta")) { - idbUpgradeTrans.db.createObjectStore("$meta").add(Math.ceil(idbUpgradeTrans.db.version / 10 - 1), "version"); - } - var globalSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans); - adjustToExistingIndexNames(db, db._dbSchema, idbUpgradeTrans); - var diff = getSchemaDiff(globalSchema, db._dbSchema); - var _loop_1 = function(tableChange2) { - if (tableChange2.change.length || tableChange2.recreate) { - console.warn("Unable to patch indexes of table ".concat(tableChange2.name, " because it has changes on the type of index or primary key.")); - return { value: void 0 }; - } - var store = idbUpgradeTrans.objectStore(tableChange2.name); - tableChange2.add.forEach(function(idx) { - if (debug) - console.debug("Dexie upgrade patch: Creating missing index ".concat(tableChange2.name, ".").concat(idx.src)); - addIndex(store, idx); - }); - }; - for (var _i = 0, _a2 = diff.change; _i < _a2.length; _i++) { - var tableChange = _a2[_i]; - var state_1 = _loop_1(tableChange); - if (typeof state_1 === "object") - return state_1.value; - } - } - function getExistingVersion(db, trans, oldVersion) { - if (trans.storeNames.includes("$meta")) { - return trans.table("$meta").get("version").then(function(metaVersion) { - return metaVersion != null ? metaVersion : oldVersion; - }); - } else { - return DexiePromise.resolve(oldVersion); - } - } - function updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) { - var queue = []; - var versions = db._versions; - var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans); - var versToRun = versions.filter(function(v) { - return v._cfg.version >= oldVersion; - }); - if (versToRun.length === 0) { - return DexiePromise.resolve(); - } - versToRun.forEach(function(version) { - queue.push(function() { - var oldSchema = globalSchema; - var newSchema = version._cfg.dbschema; - adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans); - adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans); - globalSchema = db._dbSchema = newSchema; - var diff = getSchemaDiff(oldSchema, newSchema); - diff.add.forEach(function(tuple) { - createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes); - }); - diff.change.forEach(function(change) { - if (change.recreate) { - throw new exceptions.Upgrade("Not yet support for changing primary key"); - } else { - var store_1 = idbUpgradeTrans.objectStore(change.name); - change.add.forEach(function(idx) { - return addIndex(store_1, idx); - }); - change.change.forEach(function(idx) { - store_1.deleteIndex(idx.name); - addIndex(store_1, idx); - }); - change.del.forEach(function(idxName) { - return store_1.deleteIndex(idxName); - }); - } - }); - var contentUpgrade = version._cfg.contentUpgrade; - if (contentUpgrade && version._cfg.version > oldVersion) { - generateMiddlewareStacks(db, idbUpgradeTrans); - trans._memoizedTables = {}; - var upgradeSchema_1 = shallowClone(newSchema); - diff.del.forEach(function(table) { - upgradeSchema_1[table] = oldSchema[table]; - }); - removeTablesApi(db, [db.Transaction.prototype]); - setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1); - trans.schema = upgradeSchema_1; - var contentUpgradeIsAsync_1 = isAsyncFunction(contentUpgrade); - if (contentUpgradeIsAsync_1) { - incrementExpectedAwaits(); - } - var returnValue_1; - var promiseFollowed = DexiePromise.follow(function() { - returnValue_1 = contentUpgrade(trans); - if (returnValue_1) { - if (contentUpgradeIsAsync_1) { - var decrementor = decrementExpectedAwaits.bind(null, null); - returnValue_1.then(decrementor, decrementor); - } - } - }); - return returnValue_1 && typeof returnValue_1.then === "function" ? DexiePromise.resolve(returnValue_1) : promiseFollowed.then(function() { - return returnValue_1; - }); - } - }); - queue.push(function(idbtrans) { - var newSchema = version._cfg.dbschema; - deleteRemovedTables(newSchema, idbtrans); - removeTablesApi(db, [db.Transaction.prototype]); - setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema); - trans.schema = db._dbSchema; - }); - queue.push(function(idbtrans) { - if (db.idbdb.objectStoreNames.contains("$meta")) { - if (Math.ceil(db.idbdb.version / 10) === version._cfg.version) { - db.idbdb.deleteObjectStore("$meta"); - delete db._dbSchema.$meta; - db._storeNames = db._storeNames.filter(function(name) { - return name !== "$meta"; - }); - } else { - idbtrans.objectStore("$meta").put(version._cfg.version, "version"); - } - } - }); - }); - function runQueue() { - return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) : DexiePromise.resolve(); - } - return runQueue().then(function() { - createMissingTables(globalSchema, idbUpgradeTrans); - }); - } - function getSchemaDiff(oldSchema, newSchema) { - var diff = { - del: [], - add: [], - change: [] - }; - var table; - for (table in oldSchema) { - if (!newSchema[table]) - diff.del.push(table); - } - for (table in newSchema) { - var oldDef = oldSchema[table], newDef = newSchema[table]; - if (!oldDef) { - diff.add.push([table, newDef]); - } else { - var change = { - name: table, - def: newDef, - recreate: false, - del: [], - add: [], - change: [] - }; - if ("" + (oldDef.primKey.keyPath || "") !== "" + (newDef.primKey.keyPath || "") || oldDef.primKey.auto !== newDef.primKey.auto) { - change.recreate = true; - diff.change.push(change); - } else { - var oldIndexes = oldDef.idxByName; - var newIndexes = newDef.idxByName; - var idxName = void 0; - for (idxName in oldIndexes) { - if (!newIndexes[idxName]) - change.del.push(idxName); - } - for (idxName in newIndexes) { - var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName]; - if (!oldIdx) - change.add.push(newIdx); - else if (oldIdx.src !== newIdx.src) - change.change.push(newIdx); - } - if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) { - diff.change.push(change); - } - } - } - } - return diff; - } - function createTable(idbtrans, tableName, primKey, indexes) { - var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ? { keyPath: primKey.keyPath, autoIncrement: primKey.auto } : { autoIncrement: primKey.auto }); - indexes.forEach(function(idx) { - return addIndex(store, idx); - }); - return store; - } - function createMissingTables(newSchema, idbtrans) { - keys(newSchema).forEach(function(tableName) { - if (!idbtrans.db.objectStoreNames.contains(tableName)) { - if (debug) - console.debug("Dexie: Creating missing table", tableName); - createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes); - } - }); - } - function deleteRemovedTables(newSchema, idbtrans) { - [].slice.call(idbtrans.db.objectStoreNames).forEach(function(storeName) { - return newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName); - }); - } - function addIndex(store, idx) { - store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi }); - } - function buildGlobalSchema(db, idbdb, tmpTrans) { - var globalSchema = {}; - var dbStoreNames = slice(idbdb.objectStoreNames, 0); - dbStoreNames.forEach(function(storeName) { - var store = tmpTrans.objectStore(storeName); - var keyPath = store.keyPath; - var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || "", true, false, !!store.autoIncrement, keyPath && typeof keyPath !== "string", true); - var indexes = []; - for (var j = 0; j < store.indexNames.length; ++j) { - var idbindex = store.index(store.indexNames[j]); - keyPath = idbindex.keyPath; - var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== "string", false); - indexes.push(index); - } - globalSchema[storeName] = createTableSchema(storeName, primKey, indexes); - }); - return globalSchema; - } - function readGlobalSchema(db, idbdb, tmpTrans) { - db.verno = idbdb.version / 10; - var globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans); - db._storeNames = slice(idbdb.objectStoreNames, 0); - setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema); - } - function verifyInstalledSchema(db, tmpTrans) { - var installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans); - var diff = getSchemaDiff(installedSchema, db._dbSchema); - return !(diff.add.length || diff.change.some(function(ch) { - return ch.add.length || ch.change.length; - })); - } - function adjustToExistingIndexNames(db, schema, idbtrans) { - var storeNames = idbtrans.db.objectStoreNames; - for (var i = 0; i < storeNames.length; ++i) { - var storeName = storeNames[i]; - var store = idbtrans.objectStore(storeName); - db._hasGetAll = "getAll" in store; - for (var j = 0; j < store.indexNames.length; ++j) { - var indexName = store.indexNames[j]; - var keyPath = store.index(indexName).keyPath; - var dexieName = typeof keyPath === "string" ? keyPath : "[" + slice(keyPath).join("+") + "]"; - if (schema[storeName]) { - var indexSpec = schema[storeName].idxByName[dexieName]; - if (indexSpec) { - indexSpec.name = indexName; - delete schema[storeName].idxByName[dexieName]; - schema[storeName].idxByName[indexName] = indexSpec; - } - } - } - } - if (typeof navigator !== "undefined" && /Safari/.test(navigator.userAgent) && !/(Chrome\/|Edge\/)/.test(navigator.userAgent) && _global2.WorkerGlobalScope && _global2 instanceof _global2.WorkerGlobalScope && [].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1] < 604) { - db._hasGetAll = false; - } - } - function parseIndexSyntax(primKeyAndIndexes) { - return primKeyAndIndexes.split(",").map(function(index, indexNum) { - index = index.trim(); - var name = index.replace(/([&*]|\+\+)/g, ""); - var keyPath = /^\[/.test(name) ? name.match(/^\[(.*)\]$/)[1].split("+") : name; - return createIndexSpec(name, keyPath || null, /\&/.test(index), /\*/.test(index), /\+\+/.test(index), isArray(keyPath), indexNum === 0); - }); - } - var Version = function() { - function Version2() { - } - Version2.prototype._parseStoresSpec = function(stores, outSchema) { - keys(stores).forEach(function(tableName) { - if (stores[tableName] !== null) { - var indexes = parseIndexSyntax(stores[tableName]); - var primKey = indexes.shift(); - primKey.unique = true; - if (primKey.multi) - throw new exceptions.Schema("Primary key cannot be multi-valued"); - indexes.forEach(function(idx) { - if (idx.auto) - throw new exceptions.Schema("Only primary key can be marked as autoIncrement (++)"); - if (!idx.keyPath) - throw new exceptions.Schema("Index must have a name and cannot be an empty string"); - }); - outSchema[tableName] = createTableSchema(tableName, primKey, indexes); - } - }); - }; - Version2.prototype.stores = function(stores) { - var db = this.db; - this._cfg.storesSource = this._cfg.storesSource ? extend(this._cfg.storesSource, stores) : stores; - var versions = db._versions; - var storesSpec = {}; - var dbschema = {}; - versions.forEach(function(version) { - extend(storesSpec, version._cfg.storesSource); - dbschema = version._cfg.dbschema = {}; - version._parseStoresSpec(storesSpec, dbschema); - }); - db._dbSchema = dbschema; - removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]); - setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema); - db._storeNames = keys(dbschema); - return this; - }; - Version2.prototype.upgrade = function(upgradeFunction) { - this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction); - return this; - }; - return Version2; - }(); - function createVersionConstructor(db) { - return makeClassConstructor(Version.prototype, function Version2(versionNumber) { - this.db = db; - this._cfg = { - version: versionNumber, - storesSource: null, - dbschema: {}, - tables: {}, - contentUpgrade: null - }; - }); - } - function getDbNamesTable(indexedDB2, IDBKeyRange) { - var dbNamesDB = indexedDB2["_dbNamesDB"]; - if (!dbNamesDB) { - dbNamesDB = indexedDB2["_dbNamesDB"] = new Dexie$1(DBNAMES_DB, { - addons: [], - indexedDB: indexedDB2, - IDBKeyRange - }); - dbNamesDB.version(1).stores({ dbnames: "name" }); - } - return dbNamesDB.table("dbnames"); - } - function hasDatabasesNative(indexedDB2) { - return indexedDB2 && typeof indexedDB2.databases === "function"; - } - function getDatabaseNames(_a2) { - var indexedDB2 = _a2.indexedDB, IDBKeyRange = _a2.IDBKeyRange; - return hasDatabasesNative(indexedDB2) ? Promise.resolve(indexedDB2.databases()).then(function(infos) { - return infos.map(function(info) { - return info.name; - }).filter(function(name) { - return name !== DBNAMES_DB; - }); - }) : getDbNamesTable(indexedDB2, IDBKeyRange).toCollection().primaryKeys(); - } - function _onDatabaseCreated(_a2, name) { - var indexedDB2 = _a2.indexedDB, IDBKeyRange = _a2.IDBKeyRange; - !hasDatabasesNative(indexedDB2) && name !== DBNAMES_DB && getDbNamesTable(indexedDB2, IDBKeyRange).put({ name }).catch(nop); - } - function _onDatabaseDeleted(_a2, name) { - var indexedDB2 = _a2.indexedDB, IDBKeyRange = _a2.IDBKeyRange; - !hasDatabasesNative(indexedDB2) && name !== DBNAMES_DB && getDbNamesTable(indexedDB2, IDBKeyRange).delete(name).catch(nop); - } - function vip(fn) { - return newScope(function() { - PSD.letThrough = true; - return fn(); - }); - } - function idbReady() { - var isSafari = !navigator.userAgentData && /Safari\//.test(navigator.userAgent) && !/Chrom(e|ium)\//.test(navigator.userAgent); - if (!isSafari || !indexedDB.databases) - return Promise.resolve(); - var intervalId; - return new Promise(function(resolve) { - var tryIdb = function() { - return indexedDB.databases().finally(resolve); - }; - intervalId = setInterval(tryIdb, 100); - tryIdb(); - }).finally(function() { - return clearInterval(intervalId); - }); - } - var _a; - function isEmptyRange(node) { - return !("from" in node); - } - var RangeSet2 = function(fromOrTree, to) { - if (this) { - extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 }); - } else { - var rv = new RangeSet2(); - if (fromOrTree && "d" in fromOrTree) { - extend(rv, fromOrTree); - } - return rv; - } - }; - props(RangeSet2.prototype, (_a = { - add: function(rangeSet) { - mergeRanges2(this, rangeSet); - return this; - }, - addKey: function(key) { - addRange(this, key, key); - return this; - }, - addKeys: function(keys2) { - var _this = this; - keys2.forEach(function(key) { - return addRange(_this, key, key); - }); - return this; - }, - hasKey: function(key) { - var node = getRangeSetIterator(this).next(key).value; - return node && cmp2(node.from, key) <= 0 && cmp2(node.to, key) >= 0; - } - }, _a[iteratorSymbol] = function() { - return getRangeSetIterator(this); - }, _a)); - function addRange(target, from, to) { - var diff = cmp2(from, to); - if (isNaN(diff)) - return; - if (diff > 0) - throw RangeError(); - if (isEmptyRange(target)) - return extend(target, { from, to, d: 1 }); - var left = target.l; - var right = target.r; - if (cmp2(to, target.from) < 0) { - left ? addRange(left, from, to) : target.l = { from, to, d: 1, l: null, r: null }; - return rebalance(target); - } - if (cmp2(from, target.to) > 0) { - right ? addRange(right, from, to) : target.r = { from, to, d: 1, l: null, r: null }; - return rebalance(target); - } - if (cmp2(from, target.from) < 0) { - target.from = from; - target.l = null; - target.d = right ? right.d + 1 : 1; - } - if (cmp2(to, target.to) > 0) { - target.to = to; - target.r = null; - target.d = target.l ? target.l.d + 1 : 1; - } - var rightWasCutOff = !target.r; - if (left && !target.l) { - mergeRanges2(target, left); - } - if (right && rightWasCutOff) { - mergeRanges2(target, right); - } - } - function mergeRanges2(target, newSet) { - function _addRangeSet(target2, _a2) { - var from = _a2.from, to = _a2.to, l = _a2.l, r = _a2.r; - addRange(target2, from, to); - if (l) - _addRangeSet(target2, l); - if (r) - _addRangeSet(target2, r); - } - if (!isEmptyRange(newSet)) - _addRangeSet(target, newSet); - } - function rangesOverlap2(rangeSet1, rangeSet2) { - var i1 = getRangeSetIterator(rangeSet2); - var nextResult1 = i1.next(); - if (nextResult1.done) - return false; - var a = nextResult1.value; - var i2 = getRangeSetIterator(rangeSet1); - var nextResult2 = i2.next(a.from); - var b = nextResult2.value; - while (!nextResult1.done && !nextResult2.done) { - if (cmp2(b.from, a.to) <= 0 && cmp2(b.to, a.from) >= 0) - return true; - cmp2(a.from, b.from) < 0 ? a = (nextResult1 = i1.next(b.from)).value : b = (nextResult2 = i2.next(a.from)).value; - } - return false; - } - function getRangeSetIterator(node) { - var state = isEmptyRange(node) ? null : { s: 0, n: node }; - return { - next: function(key) { - var keyProvided = arguments.length > 0; - while (state) { - switch (state.s) { - case 0: - state.s = 1; - if (keyProvided) { - while (state.n.l && cmp2(key, state.n.from) < 0) - state = { up: state, n: state.n.l, s: 1 }; - } else { - while (state.n.l) - state = { up: state, n: state.n.l, s: 1 }; - } - case 1: - state.s = 2; - if (!keyProvided || cmp2(key, state.n.to) <= 0) - return { value: state.n, done: false }; - case 2: - if (state.n.r) { - state.s = 3; - state = { up: state, n: state.n.r, s: 0 }; - continue; - } - case 3: - state = state.up; - } - } - return { done: true }; - } - }; - } - function rebalance(target) { - var _a2, _b; - var diff = (((_a2 = target.r) === null || _a2 === void 0 ? void 0 : _a2.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0); - var r = diff > 1 ? "r" : diff < -1 ? "l" : ""; - if (r) { - var l = r === "r" ? "l" : "r"; - var rootClone = __assign2({}, target); - var oldRootRight = target[r]; - target.from = oldRootRight.from; - target.to = oldRootRight.to; - target[r] = oldRootRight[r]; - rootClone[r] = oldRootRight[l]; - target[l] = rootClone; - rootClone.d = computeDepth(rootClone); - } - target.d = computeDepth(target); - } - function computeDepth(_a2) { - var r = _a2.r, l = _a2.l; - return (r ? l ? Math.max(r.d, l.d) : r.d : l ? l.d : 0) + 1; - } - function extendObservabilitySet(target, newSet) { - keys(newSet).forEach(function(part) { - if (target[part]) - mergeRanges2(target[part], newSet[part]); - else - target[part] = cloneSimpleObjectTree(newSet[part]); - }); - return target; - } - function obsSetsOverlap(os1, os2) { - return os1.all || os2.all || Object.keys(os1).some(function(key) { - return os2[key] && rangesOverlap2(os2[key], os1[key]); - }); - } - var cache = {}; - var unsignaledParts = {}; - var isTaskEnqueued = false; - function signalSubscribersLazily(part, optimistic) { - extendObservabilitySet(unsignaledParts, part); - if (!isTaskEnqueued) { - isTaskEnqueued = true; - setTimeout(function() { - isTaskEnqueued = false; - var parts = unsignaledParts; - unsignaledParts = {}; - signalSubscribersNow(parts, false); - }, 0); - } - } - function signalSubscribersNow(updatedParts, deleteAffectedCacheEntries) { - if (deleteAffectedCacheEntries === void 0) { - deleteAffectedCacheEntries = false; - } - var queriesToSignal = /* @__PURE__ */ new Set(); - if (updatedParts.all) { - for (var _i = 0, _a2 = Object.values(cache); _i < _a2.length; _i++) { - var tblCache = _a2[_i]; - collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries); - } - } else { - for (var key in updatedParts) { - var parts = /^idb\:\/\/(.*)\/(.*)\//.exec(key); - if (parts) { - var dbName = parts[1], tableName = parts[2]; - var tblCache = cache["idb://".concat(dbName, "/").concat(tableName)]; - if (tblCache) - collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries); - } - } - } - queriesToSignal.forEach(function(requery) { - return requery(); - }); - } - function collectTableSubscribers(tblCache, updatedParts, outQueriesToSignal, deleteAffectedCacheEntries) { - var updatedEntryLists = []; - for (var _i = 0, _a2 = Object.entries(tblCache.queries.query); _i < _a2.length; _i++) { - var _b = _a2[_i], indexName = _b[0], entries = _b[1]; - var filteredEntries = []; - for (var _c = 0, entries_1 = entries; _c < entries_1.length; _c++) { - var entry = entries_1[_c]; - if (obsSetsOverlap(updatedParts, entry.obsSet)) { - entry.subscribers.forEach(function(requery) { - return outQueriesToSignal.add(requery); - }); - } else if (deleteAffectedCacheEntries) { - filteredEntries.push(entry); - } - } - if (deleteAffectedCacheEntries) - updatedEntryLists.push([indexName, filteredEntries]); - } - if (deleteAffectedCacheEntries) { - for (var _d = 0, updatedEntryLists_1 = updatedEntryLists; _d < updatedEntryLists_1.length; _d++) { - var _e = updatedEntryLists_1[_d], indexName = _e[0], filteredEntries = _e[1]; - tblCache.queries.query[indexName] = filteredEntries; - } - } - } - function dexieOpen(db) { - var state = db._state; - var indexedDB2 = db._deps.indexedDB; - if (state.isBeingOpened || db.idbdb) - return state.dbReadyPromise.then(function() { - return state.dbOpenError ? rejection(state.dbOpenError) : db; - }); - state.isBeingOpened = true; - state.dbOpenError = null; - state.openComplete = false; - var openCanceller = state.openCanceller; - var nativeVerToOpen = Math.round(db.verno * 10); - var schemaPatchMode = false; - function throwIfCancelled() { - if (state.openCanceller !== openCanceller) - throw new exceptions.DatabaseClosed("db.open() was cancelled"); - } - var resolveDbReady = state.dbReadyResolve, upgradeTransaction = null, wasCreated = false; - var tryOpenDB = function() { - return new DexiePromise(function(resolve, reject) { - throwIfCancelled(); - if (!indexedDB2) - throw new exceptions.MissingAPI(); - var dbName = db.name; - var req = state.autoSchema || !nativeVerToOpen ? indexedDB2.open(dbName) : indexedDB2.open(dbName, nativeVerToOpen); - if (!req) - throw new exceptions.MissingAPI(); - req.onerror = eventRejectHandler(reject); - req.onblocked = wrap(db._fireOnBlocked); - req.onupgradeneeded = wrap(function(e) { - upgradeTransaction = req.transaction; - if (state.autoSchema && !db._options.allowEmptyDB) { - req.onerror = preventDefault; - upgradeTransaction.abort(); - req.result.close(); - var delreq = indexedDB2.deleteDatabase(dbName); - delreq.onsuccess = delreq.onerror = wrap(function() { - reject(new exceptions.NoSuchDatabase("Database ".concat(dbName, " doesnt exist"))); - }); - } else { - upgradeTransaction.onerror = eventRejectHandler(reject); - var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion; - wasCreated = oldVer < 1; - db.idbdb = req.result; - if (schemaPatchMode) { - patchCurrentVersion(db, upgradeTransaction); - } - runUpgraders(db, oldVer / 10, upgradeTransaction, reject); - } - }, reject); - req.onsuccess = wrap(function() { - upgradeTransaction = null; - var idbdb = db.idbdb = req.result; - var objectStoreNames = slice(idbdb.objectStoreNames); - if (objectStoreNames.length > 0) - try { - var tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), "readonly"); - if (state.autoSchema) - readGlobalSchema(db, idbdb, tmpTrans); - else { - adjustToExistingIndexNames(db, db._dbSchema, tmpTrans); - if (!verifyInstalledSchema(db, tmpTrans) && !schemaPatchMode) { - console.warn("Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this."); - idbdb.close(); - nativeVerToOpen = idbdb.version + 1; - schemaPatchMode = true; - return resolve(tryOpenDB()); - } - } - generateMiddlewareStacks(db, tmpTrans); - } catch (e) { - } - connections.push(db); - idbdb.onversionchange = wrap(function(ev) { - state.vcFired = true; - db.on("versionchange").fire(ev); - }); - idbdb.onclose = wrap(function(ev) { - db.on("close").fire(ev); - }); - if (wasCreated) - _onDatabaseCreated(db._deps, dbName); - resolve(); - }, reject); - }).catch(function(err) { - switch (err === null || err === void 0 ? void 0 : err.name) { - case "UnknownError": - if (state.PR1398_maxLoop > 0) { - state.PR1398_maxLoop--; - console.warn("Dexie: Workaround for Chrome UnknownError on open()"); - return tryOpenDB(); - } - break; - case "VersionError": - if (nativeVerToOpen > 0) { - nativeVerToOpen = 0; - return tryOpenDB(); - } - break; - } - return DexiePromise.reject(err); - }); - }; - return DexiePromise.race([ - openCanceller, - (typeof navigator === "undefined" ? DexiePromise.resolve() : idbReady()).then(tryOpenDB) - ]).then(function() { - throwIfCancelled(); - state.onReadyBeingFired = []; - return DexiePromise.resolve(vip(function() { - return db.on.ready.fire(db.vip); - })).then(function fireRemainders() { - if (state.onReadyBeingFired.length > 0) { - var remainders_1 = state.onReadyBeingFired.reduce(promisableChain, nop); - state.onReadyBeingFired = []; - return DexiePromise.resolve(vip(function() { - return remainders_1(db.vip); - })).then(fireRemainders); - } - }); - }).finally(function() { - if (state.openCanceller === openCanceller) { - state.onReadyBeingFired = null; - state.isBeingOpened = false; - } - }).catch(function(err) { - state.dbOpenError = err; - try { - upgradeTransaction && upgradeTransaction.abort(); - } catch (_a2) { - } - if (openCanceller === state.openCanceller) { - db._close(); - } - return rejection(err); - }).finally(function() { - state.openComplete = true; - resolveDbReady(); - }).then(function() { - if (wasCreated) { - var everything_1 = {}; - db.tables.forEach(function(table) { - table.schema.indexes.forEach(function(idx) { - if (idx.name) - everything_1["idb://".concat(db.name, "/").concat(table.name, "/").concat(idx.name)] = new RangeSet2(-Infinity, [[[]]]); - }); - everything_1["idb://".concat(db.name, "/").concat(table.name, "/")] = everything_1["idb://".concat(db.name, "/").concat(table.name, "/:dels")] = new RangeSet2(-Infinity, [[[]]]); - }); - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME).fire(everything_1); - signalSubscribersNow(everything_1, true); - } - return db; - }); - } - function awaitIterator(iterator) { - var callNext = function(result) { - return iterator.next(result); - }, doThrow = function(error) { - return iterator.throw(error); - }, onSuccess = step(callNext), onError = step(doThrow); - function step(getNext) { - return function(val) { - var next = getNext(val), value = next.value; - return next.done ? value : !value || typeof value.then !== "function" ? isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) : value.then(onSuccess, onError); - }; - } - return step(callNext)(); - } - function extractTransactionArgs(mode, _tableArgs_, scopeFunc) { - var i = arguments.length; - if (i < 2) - throw new exceptions.InvalidArgument("Too few arguments"); - var args = new Array(i - 1); - while (--i) - args[i - 1] = arguments[i]; - scopeFunc = args.pop(); - var tables = flatten(args); - return [mode, tables, scopeFunc]; - } - function enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) { - return DexiePromise.resolve().then(function() { - var transless = PSD.transless || PSD; - var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction); - trans.explicit = true; - var zoneProps = { - trans, - transless - }; - if (parentTransaction) { - trans.idbtrans = parentTransaction.idbtrans; - } else { - try { - trans.create(); - trans.idbtrans._explicit = true; - db._state.PR1398_maxLoop = 3; - } catch (ex) { - if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) { - console.warn("Dexie: Need to reopen db"); - db.close({ disableAutoOpen: false }); - return db.open().then(function() { - return enterTransactionScope(db, mode, storeNames, null, scopeFunc); - }); - } - return rejection(ex); - } - } - var scopeFuncIsAsync = isAsyncFunction(scopeFunc); - if (scopeFuncIsAsync) { - incrementExpectedAwaits(); - } - var returnValue; - var promiseFollowed = DexiePromise.follow(function() { - returnValue = scopeFunc.call(trans, trans); - if (returnValue) { - if (scopeFuncIsAsync) { - var decrementor = decrementExpectedAwaits.bind(null, null); - returnValue.then(decrementor, decrementor); - } else if (typeof returnValue.next === "function" && typeof returnValue.throw === "function") { - returnValue = awaitIterator(returnValue); - } - } - }, zoneProps); - return (returnValue && typeof returnValue.then === "function" ? DexiePromise.resolve(returnValue).then(function(x) { - return trans.active ? x : rejection(new exceptions.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn")); - }) : promiseFollowed.then(function() { - return returnValue; - })).then(function(x) { - if (parentTransaction) - trans._resolve(); - return trans._completion.then(function() { - return x; - }); - }).catch(function(e) { - trans._reject(e); - return rejection(e); - }); - }); - } - function pad(a, value, count) { - var result = isArray(a) ? a.slice() : [a]; - for (var i = 0; i < count; ++i) - result.push(value); - return result; - } - function createVirtualIndexMiddleware(down) { - return __assign2(__assign2({}, down), { table: function(tableName) { - var table = down.table(tableName); - var schema = table.schema; - var indexLookup = {}; - var allVirtualIndexes = []; - function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) { - var keyPathAlias = getKeyPathAlias(keyPath); - var indexList = indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || []; - var keyLength = keyPath == null ? 0 : typeof keyPath === "string" ? 1 : keyPath.length; - var isVirtual = keyTail > 0; - var virtualIndex = __assign2(__assign2({}, lowLevelIndex), { name: isVirtual ? "".concat(keyPathAlias, "(virtual-from:").concat(lowLevelIndex.name, ")") : lowLevelIndex.name, lowLevelIndex, isVirtual, keyTail, keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique }); - indexList.push(virtualIndex); - if (!virtualIndex.isPrimaryKey) { - allVirtualIndexes.push(virtualIndex); - } - if (keyLength > 1) { - var virtualKeyPath = keyLength === 2 ? keyPath[0] : keyPath.slice(0, keyLength - 1); - addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex); - } - indexList.sort(function(a, b) { - return a.keyTail - b.keyTail; - }); - return virtualIndex; - } - var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey); - indexLookup[":id"] = [primaryKey]; - for (var _i = 0, _a2 = schema.indexes; _i < _a2.length; _i++) { - var index = _a2[_i]; - addVirtualIndexes(index.keyPath, 0, index); - } - function findBestIndex(keyPath) { - var result2 = indexLookup[getKeyPathAlias(keyPath)]; - return result2 && result2[0]; - } - function translateRange(range, keyTail) { - return { - type: range.type === 1 ? 2 : range.type, - lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail), - lowerOpen: true, - upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail), - upperOpen: true - }; - } - function translateRequest(req) { - var index2 = req.query.index; - return index2.isVirtual ? __assign2(__assign2({}, req), { query: { - index: index2.lowLevelIndex, - range: translateRange(req.query.range, index2.keyTail) - } }) : req; - } - var result = __assign2(__assign2({}, table), { schema: __assign2(__assign2({}, schema), { primaryKey, indexes: allVirtualIndexes, getIndexByKeyPath: findBestIndex }), count: function(req) { - return table.count(translateRequest(req)); - }, query: function(req) { - return table.query(translateRequest(req)); - }, openCursor: function(req) { - var _a3 = req.query.index, keyTail = _a3.keyTail, isVirtual = _a3.isVirtual, keyLength = _a3.keyLength; - if (!isVirtual) - return table.openCursor(req); - function createVirtualCursor(cursor) { - function _continue(key) { - key != null ? cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) : req.unique ? cursor.continue(cursor.key.slice(0, keyLength).concat(req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) : cursor.continue(); - } - var virtualCursor = Object.create(cursor, { - continue: { value: _continue }, - continuePrimaryKey: { - value: function(key, primaryKey2) { - cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey2); - } - }, - primaryKey: { - get: function() { - return cursor.primaryKey; - } - }, - key: { - get: function() { - var key = cursor.key; - return keyLength === 1 ? key[0] : key.slice(0, keyLength); - } - }, - value: { - get: function() { - return cursor.value; - } - } - }); - return virtualCursor; - } - return table.openCursor(translateRequest(req)).then(function(cursor) { - return cursor && createVirtualCursor(cursor); - }); - } }); - return result; - } }); - } - var virtualIndexMiddleware = { - stack: "dbcore", - name: "VirtualIndexMiddleware", - level: 1, - create: createVirtualIndexMiddleware - }; - function getObjectDiff(a, b, rv, prfx) { - rv = rv || {}; - prfx = prfx || ""; - keys(a).forEach(function(prop) { - if (!hasOwn(b, prop)) { - rv[prfx + prop] = void 0; - } else { - var ap = a[prop], bp = b[prop]; - if (typeof ap === "object" && typeof bp === "object" && ap && bp) { - var apTypeName = toStringTag(ap); - var bpTypeName = toStringTag(bp); - if (apTypeName !== bpTypeName) { - rv[prfx + prop] = b[prop]; - } else if (apTypeName === "Object") { - getObjectDiff(ap, bp, rv, prfx + prop + "."); - } else if (ap !== bp) { - rv[prfx + prop] = b[prop]; - } - } else if (ap !== bp) - rv[prfx + prop] = b[prop]; - } - }); - keys(b).forEach(function(prop) { - if (!hasOwn(a, prop)) { - rv[prfx + prop] = b[prop]; - } - }); - return rv; - } - function getEffectiveKeys(primaryKey, req) { - if (req.type === "delete") - return req.keys; - return req.keys || req.values.map(primaryKey.extractKey); - } - var hooksMiddleware = { - stack: "dbcore", - name: "HooksMiddleware", - level: 2, - create: function(downCore) { - return __assign2(__assign2({}, downCore), { table: function(tableName) { - var downTable = downCore.table(tableName); - var primaryKey = downTable.schema.primaryKey; - var tableMiddleware = __assign2(__assign2({}, downTable), { mutate: function(req) { - var dxTrans = PSD.trans; - var _a2 = dxTrans.table(tableName).hook, deleting = _a2.deleting, creating = _a2.creating, updating = _a2.updating; - switch (req.type) { - case "add": - if (creating.fire === nop) - break; - return dxTrans._promise("readwrite", function() { - return addPutOrDelete(req); - }, true); - case "put": - if (creating.fire === nop && updating.fire === nop) - break; - return dxTrans._promise("readwrite", function() { - return addPutOrDelete(req); - }, true); - case "delete": - if (deleting.fire === nop) - break; - return dxTrans._promise("readwrite", function() { - return addPutOrDelete(req); - }, true); - case "deleteRange": - if (deleting.fire === nop) - break; - return dxTrans._promise("readwrite", function() { - return deleteRange(req); - }, true); - } - return downTable.mutate(req); - function addPutOrDelete(req2) { - var dxTrans2 = PSD.trans; - var keys2 = req2.keys || getEffectiveKeys(primaryKey, req2); - if (!keys2) - throw new Error("Keys missing"); - req2 = req2.type === "add" || req2.type === "put" ? __assign2(__assign2({}, req2), { keys: keys2 }) : __assign2({}, req2); - if (req2.type !== "delete") - req2.values = __spreadArray([], req2.values, true); - if (req2.keys) - req2.keys = __spreadArray([], req2.keys, true); - return getExistingValues(downTable, req2, keys2).then(function(existingValues) { - var contexts = keys2.map(function(key, i) { - var existingValue = existingValues[i]; - var ctx = { onerror: null, onsuccess: null }; - if (req2.type === "delete") { - deleting.fire.call(ctx, key, existingValue, dxTrans2); - } else if (req2.type === "add" || existingValue === void 0) { - var generatedPrimaryKey = creating.fire.call(ctx, key, req2.values[i], dxTrans2); - if (key == null && generatedPrimaryKey != null) { - key = generatedPrimaryKey; - req2.keys[i] = key; - if (!primaryKey.outbound) { - setByKeyPath(req2.values[i], primaryKey.keyPath, key); - } - } - } else { - var objectDiff = getObjectDiff(existingValue, req2.values[i]); - var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans2); - if (additionalChanges_1) { - var requestedValue_1 = req2.values[i]; - Object.keys(additionalChanges_1).forEach(function(keyPath) { - if (hasOwn(requestedValue_1, keyPath)) { - requestedValue_1[keyPath] = additionalChanges_1[keyPath]; - } else { - setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]); - } - }); - } - } - return ctx; - }); - return downTable.mutate(req2).then(function(_a3) { - var failures = _a3.failures, results = _a3.results, numFailures = _a3.numFailures, lastResult = _a3.lastResult; - for (var i = 0; i < keys2.length; ++i) { - var primKey = results ? results[i] : keys2[i]; - var ctx = contexts[i]; - if (primKey == null) { - ctx.onerror && ctx.onerror(failures[i]); - } else { - ctx.onsuccess && ctx.onsuccess( - req2.type === "put" && existingValues[i] ? req2.values[i] : primKey - ); - } - } - return { failures, results, numFailures, lastResult }; - }).catch(function(error) { - contexts.forEach(function(ctx) { - return ctx.onerror && ctx.onerror(error); - }); - return Promise.reject(error); - }); - }); - } - function deleteRange(req2) { - return deleteNextChunk(req2.trans, req2.range, 1e4); - } - function deleteNextChunk(trans, range, limit) { - return downTable.query({ trans, values: false, query: { index: primaryKey, range }, limit }).then(function(_a3) { - var result = _a3.result; - return addPutOrDelete({ type: "delete", keys: result, trans }).then(function(res) { - if (res.numFailures > 0) - return Promise.reject(res.failures[0]); - if (result.length < limit) { - return { failures: [], numFailures: 0, lastResult: void 0 }; - } else { - return deleteNextChunk(trans, __assign2(__assign2({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit); - } - }); - }); - } - } }); - return tableMiddleware; - } }); - } - }; - function getExistingValues(table, req, effectiveKeys) { - return req.type === "add" ? Promise.resolve([]) : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: "immutable" }); - } - function getFromTransactionCache(keys2, cache2, clone) { - try { - if (!cache2) - return null; - if (cache2.keys.length < keys2.length) - return null; - var result = []; - for (var i = 0, j = 0; i < cache2.keys.length && j < keys2.length; ++i) { - if (cmp2(cache2.keys[i], keys2[j]) !== 0) - continue; - result.push(clone ? deepClone(cache2.values[i]) : cache2.values[i]); - ++j; - } - return result.length === keys2.length ? result : null; - } catch (_a2) { - return null; - } - } - var cacheExistingValuesMiddleware = { - stack: "dbcore", - level: -1, - create: function(core) { - return { - table: function(tableName) { - var table = core.table(tableName); - return __assign2(__assign2({}, table), { getMany: function(req) { - if (!req.cache) { - return table.getMany(req); - } - var cachedResult = getFromTransactionCache(req.keys, req.trans["_cache"], req.cache === "clone"); - if (cachedResult) { - return DexiePromise.resolve(cachedResult); - } - return table.getMany(req).then(function(res) { - req.trans["_cache"] = { - keys: req.keys, - values: req.cache === "clone" ? deepClone(res) : res - }; - return res; - }); - }, mutate: function(req) { - if (req.type !== "add") - req.trans["_cache"] = null; - return table.mutate(req); - } }); - } - }; - } - }; - function isCachableContext(ctx, table) { - return ctx.trans.mode === "readonly" && !!ctx.subscr && !ctx.trans.explicit && ctx.trans.db._options.cache !== "disabled" && !table.schema.primaryKey.outbound; - } - function isCachableRequest(type2, req) { - switch (type2) { - case "query": - return req.values && !req.unique; - case "get": - return false; - case "getMany": - return false; - case "count": - return false; - case "openCursor": - return false; - } - } - var observabilityMiddleware = { - stack: "dbcore", - level: 0, - name: "Observability", - create: function(core) { - var dbName = core.schema.name; - var FULL_RANGE = new RangeSet2(core.MIN_KEY, core.MAX_KEY); - return __assign2(__assign2({}, core), { transaction: function(stores, mode, options) { - if (PSD.subscr && mode !== "readonly") { - throw new exceptions.ReadOnly("Readwrite transaction in liveQuery context. Querier source: ".concat(PSD.querier)); - } - return core.transaction(stores, mode, options); - }, table: function(tableName) { - var table = core.table(tableName); - var schema = table.schema; - var primaryKey = schema.primaryKey, indexes = schema.indexes; - var extractKey = primaryKey.extractKey, outbound = primaryKey.outbound; - var indexesWithAutoIncPK = primaryKey.autoIncrement && indexes.filter(function(index) { - return index.compound && index.keyPath.includes(primaryKey.keyPath); - }); - var tableClone = __assign2(__assign2({}, table), { mutate: function(req) { - var _a2, _b; - var trans = req.trans; - var mutatedParts = req.mutatedParts || (req.mutatedParts = {}); - var getRangeSet = function(indexName) { - var part = "idb://".concat(dbName, "/").concat(tableName, "/").concat(indexName); - return mutatedParts[part] || (mutatedParts[part] = new RangeSet2()); - }; - var pkRangeSet = getRangeSet(""); - var delsRangeSet = getRangeSet(":dels"); - var type2 = req.type; - var _c = req.type === "deleteRange" ? [req.range] : req.type === "delete" ? [req.keys] : req.values.length < 50 ? [getEffectiveKeys(primaryKey, req).filter(function(id) { - return id; - }), req.values] : [], keys2 = _c[0], newObjs = _c[1]; - var oldCache = req.trans["_cache"]; - if (isArray(keys2)) { - pkRangeSet.addKeys(keys2); - var oldObjs = type2 === "delete" || keys2.length === newObjs.length ? getFromTransactionCache(keys2, oldCache) : null; - if (!oldObjs) { - delsRangeSet.addKeys(keys2); - } - if (oldObjs || newObjs) { - trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs); - } - } else if (keys2) { - var range = { - from: (_a2 = keys2.lower) !== null && _a2 !== void 0 ? _a2 : core.MIN_KEY, - to: (_b = keys2.upper) !== null && _b !== void 0 ? _b : core.MAX_KEY - }; - delsRangeSet.add(range); - pkRangeSet.add(range); - } else { - pkRangeSet.add(FULL_RANGE); - delsRangeSet.add(FULL_RANGE); - schema.indexes.forEach(function(idx) { - return getRangeSet(idx.name).add(FULL_RANGE); - }); - } - return table.mutate(req).then(function(res) { - if (keys2 && (req.type === "add" || req.type === "put")) { - pkRangeSet.addKeys(res.results); - if (indexesWithAutoIncPK) { - indexesWithAutoIncPK.forEach(function(idx) { - var idxVals = req.values.map(function(v) { - return idx.extractKey(v); - }); - var pkPos = idx.keyPath.findIndex(function(prop) { - return prop === primaryKey.keyPath; - }); - for (var i = 0, len = res.results.length; i < len; ++i) { - idxVals[i][pkPos] = res.results[i]; - } - getRangeSet(idx.name).addKeys(idxVals); - }); - } - } - trans.mutatedParts = extendObservabilitySet(trans.mutatedParts || {}, mutatedParts); - return res; - }); - } }); - var getRange = function(_a2) { - var _b, _c; - var _d = _a2.query, index = _d.index, range = _d.range; - return [ - index, - new RangeSet2((_b = range.lower) !== null && _b !== void 0 ? _b : core.MIN_KEY, (_c = range.upper) !== null && _c !== void 0 ? _c : core.MAX_KEY) - ]; - }; - var readSubscribers = { - get: function(req) { - return [primaryKey, new RangeSet2(req.key)]; - }, - getMany: function(req) { - return [primaryKey, new RangeSet2().addKeys(req.keys)]; - }, - count: getRange, - query: getRange, - openCursor: getRange - }; - keys(readSubscribers).forEach(function(method) { - tableClone[method] = function(req) { - var subscr = PSD.subscr; - var isLiveQuery = !!subscr; - var cachable = isCachableContext(PSD, table) && isCachableRequest(method, req); - var obsSet = cachable ? req.obsSet = {} : subscr; - if (isLiveQuery) { - var getRangeSet = function(indexName) { - var part = "idb://".concat(dbName, "/").concat(tableName, "/").concat(indexName); - return obsSet[part] || (obsSet[part] = new RangeSet2()); - }; - var pkRangeSet_1 = getRangeSet(""); - var delsRangeSet_1 = getRangeSet(":dels"); - var _a2 = readSubscribers[method](req), queriedIndex = _a2[0], queriedRanges = _a2[1]; - if (method === "query" && queriedIndex.isPrimaryKey && !req.values) { - delsRangeSet_1.add(queriedRanges); - } else { - getRangeSet(queriedIndex.name || "").add(queriedRanges); - } - if (!queriedIndex.isPrimaryKey) { - if (method === "count") { - delsRangeSet_1.add(FULL_RANGE); - } else { - var keysPromise_1 = method === "query" && outbound && req.values && table.query(__assign2(__assign2({}, req), { values: false })); - return table[method].apply(this, arguments).then(function(res) { - if (method === "query") { - if (outbound && req.values) { - return keysPromise_1.then(function(_a3) { - var resultingKeys = _a3.result; - pkRangeSet_1.addKeys(resultingKeys); - return res; - }); - } - var pKeys = req.values ? res.result.map(extractKey) : res.result; - if (req.values) { - pkRangeSet_1.addKeys(pKeys); - } else { - delsRangeSet_1.addKeys(pKeys); - } - } else if (method === "openCursor") { - var cursor_1 = res; - var wantValues_1 = req.values; - return cursor_1 && Object.create(cursor_1, { - key: { - get: function() { - delsRangeSet_1.addKey(cursor_1.primaryKey); - return cursor_1.key; - } - }, - primaryKey: { - get: function() { - var pkey = cursor_1.primaryKey; - delsRangeSet_1.addKey(pkey); - return pkey; - } - }, - value: { - get: function() { - wantValues_1 && pkRangeSet_1.addKey(cursor_1.primaryKey); - return cursor_1.value; - } - } - }); - } - return res; - }); - } - } - } - return table[method].apply(this, arguments); - }; - }); - return tableClone; - } }); - } - }; - function trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) { - function addAffectedIndex(ix) { - var rangeSet = getRangeSet(ix.name || ""); - function extractKey(obj) { - return obj != null ? ix.extractKey(obj) : null; - } - var addKeyOrKeys = function(key) { - return ix.multiEntry && isArray(key) ? key.forEach(function(key2) { - return rangeSet.addKey(key2); - }) : rangeSet.addKey(key); - }; - (oldObjs || newObjs).forEach(function(_, i) { - var oldKey = oldObjs && extractKey(oldObjs[i]); - var newKey = newObjs && extractKey(newObjs[i]); - if (cmp2(oldKey, newKey) !== 0) { - if (oldKey != null) - addKeyOrKeys(oldKey); - if (newKey != null) - addKeyOrKeys(newKey); - } - }); - } - schema.indexes.forEach(addAffectedIndex); - } - function adjustOptimisticFromFailures(tblCache, req, res) { - if (res.numFailures === 0) - return req; - if (req.type === "deleteRange") { - return null; - } - var numBulkOps = req.keys ? req.keys.length : "values" in req && req.values ? req.values.length : 1; - if (res.numFailures === numBulkOps) { - return null; - } - var clone = __assign2({}, req); - if (isArray(clone.keys)) { - clone.keys = clone.keys.filter(function(_, i) { - return !(i in res.failures); - }); - } - if ("values" in clone && isArray(clone.values)) { - clone.values = clone.values.filter(function(_, i) { - return !(i in res.failures); - }); - } - return clone; - } - function isAboveLower(key, range) { - return range.lower === void 0 ? true : range.lowerOpen ? cmp2(key, range.lower) > 0 : cmp2(key, range.lower) >= 0; - } - function isBelowUpper(key, range) { - return range.upper === void 0 ? true : range.upperOpen ? cmp2(key, range.upper) < 0 : cmp2(key, range.upper) <= 0; - } - function isWithinRange(key, range) { - return isAboveLower(key, range) && isBelowUpper(key, range); - } - function applyOptimisticOps(result, req, ops, table, cacheEntry, immutable) { - if (!ops || ops.length === 0) - return result; - var index = req.query.index; - var multiEntry = index.multiEntry; - var queryRange = req.query.range; - var primaryKey = table.schema.primaryKey; - var extractPrimKey = primaryKey.extractKey; - var extractIndex = index.extractKey; - var extractLowLevelIndex = (index.lowLevelIndex || index).extractKey; - var finalResult = ops.reduce(function(result2, op) { - var modifedResult = result2; - var includedValues = []; - if (op.type === "add" || op.type === "put") { - var includedPKs = new RangeSet2(); - for (var i = op.values.length - 1; i >= 0; --i) { - var value = op.values[i]; - var pk = extractPrimKey(value); - if (includedPKs.hasKey(pk)) - continue; - var key = extractIndex(value); - if (multiEntry && isArray(key) ? key.some(function(k) { - return isWithinRange(k, queryRange); - }) : isWithinRange(key, queryRange)) { - includedPKs.addKey(pk); - includedValues.push(value); - } - } - } - switch (op.type) { - case "add": { - var existingKeys_1 = new RangeSet2().addKeys(req.values ? result2.map(function(v) { - return extractPrimKey(v); - }) : result2); - modifedResult = result2.concat(req.values ? includedValues.filter(function(v) { - var key2 = extractPrimKey(v); - if (existingKeys_1.hasKey(key2)) - return false; - existingKeys_1.addKey(key2); - return true; - }) : includedValues.map(function(v) { - return extractPrimKey(v); - }).filter(function(k) { - if (existingKeys_1.hasKey(k)) - return false; - existingKeys_1.addKey(k); - return true; - })); - break; - } - case "put": { - var keySet_1 = new RangeSet2().addKeys(op.values.map(function(v) { - return extractPrimKey(v); - })); - modifedResult = result2.filter( - function(item) { - return !keySet_1.hasKey(req.values ? extractPrimKey(item) : item); - } - ).concat( - req.values ? includedValues : includedValues.map(function(v) { - return extractPrimKey(v); - }) - ); - break; - } - case "delete": - var keysToDelete_1 = new RangeSet2().addKeys(op.keys); - modifedResult = result2.filter(function(item) { - return !keysToDelete_1.hasKey(req.values ? extractPrimKey(item) : item); - }); - break; - case "deleteRange": - var range_1 = op.range; - modifedResult = result2.filter(function(item) { - return !isWithinRange(extractPrimKey(item), range_1); - }); - break; - } - return modifedResult; - }, result); - if (finalResult === result) - return result; - finalResult.sort(function(a, b) { - return cmp2(extractLowLevelIndex(a), extractLowLevelIndex(b)) || cmp2(extractPrimKey(a), extractPrimKey(b)); - }); - if (req.limit && req.limit < Infinity) { - if (finalResult.length > req.limit) { - finalResult.length = req.limit; - } else if (result.length === req.limit && finalResult.length < req.limit) { - cacheEntry.dirty = true; - } - } - return immutable ? Object.freeze(finalResult) : finalResult; - } - function areRangesEqual(r1, r2) { - return cmp2(r1.lower, r2.lower) === 0 && cmp2(r1.upper, r2.upper) === 0 && !!r1.lowerOpen === !!r2.lowerOpen && !!r1.upperOpen === !!r2.upperOpen; - } - function compareLowers(lower1, lower2, lowerOpen1, lowerOpen2) { - if (lower1 === void 0) - return lower2 !== void 0 ? -1 : 0; - if (lower2 === void 0) - return 1; - var c = cmp2(lower1, lower2); - if (c === 0) { - if (lowerOpen1 && lowerOpen2) - return 0; - if (lowerOpen1) - return 1; - if (lowerOpen2) - return -1; - } - return c; - } - function compareUppers(upper1, upper2, upperOpen1, upperOpen2) { - if (upper1 === void 0) - return upper2 !== void 0 ? 1 : 0; - if (upper2 === void 0) - return -1; - var c = cmp2(upper1, upper2); - if (c === 0) { - if (upperOpen1 && upperOpen2) - return 0; - if (upperOpen1) - return -1; - if (upperOpen2) - return 1; - } - return c; - } - function isSuperRange(r1, r2) { - return compareLowers(r1.lower, r2.lower, r1.lowerOpen, r2.lowerOpen) <= 0 && compareUppers(r1.upper, r2.upper, r1.upperOpen, r2.upperOpen) >= 0; - } - function findCompatibleQuery(dbName, tableName, type2, req) { - var tblCache = cache["idb://".concat(dbName, "/").concat(tableName)]; - if (!tblCache) - return []; - var queries = tblCache.queries[type2]; - if (!queries) - return [null, false, tblCache, null]; - var indexName = req.query ? req.query.index.name : null; - var entries = queries[indexName || ""]; - if (!entries) - return [null, false, tblCache, null]; - switch (type2) { - case "query": - var equalEntry = entries.find(function(entry) { - return entry.req.limit === req.limit && entry.req.values === req.values && areRangesEqual(entry.req.query.range, req.query.range); - }); - if (equalEntry) - return [ - equalEntry, - true, - tblCache, - entries - ]; - var superEntry = entries.find(function(entry) { - var limit = "limit" in entry.req ? entry.req.limit : Infinity; - return limit >= req.limit && (req.values ? entry.req.values : true) && isSuperRange(entry.req.query.range, req.query.range); - }); - return [superEntry, false, tblCache, entries]; - case "count": - var countQuery = entries.find(function(entry) { - return areRangesEqual(entry.req.query.range, req.query.range); - }); - return [countQuery, !!countQuery, tblCache, entries]; - } - } - function subscribeToCacheEntry(cacheEntry, container, requery, signal) { - cacheEntry.subscribers.add(requery); - signal.addEventListener("abort", function() { - cacheEntry.subscribers.delete(requery); - if (cacheEntry.subscribers.size === 0) { - enqueForDeletion(cacheEntry, container); - } - }); - } - function enqueForDeletion(cacheEntry, container) { - setTimeout(function() { - if (cacheEntry.subscribers.size === 0) { - delArrayItem(container, cacheEntry); - } - }, 3e3); - } - var cacheMiddleware = { - stack: "dbcore", - level: 0, - name: "Cache", - create: function(core) { - var dbName = core.schema.name; - var coreMW = __assign2(__assign2({}, core), { transaction: function(stores, mode, options) { - var idbtrans = core.transaction(stores, mode, options); - if (mode === "readwrite") { - var ac_1 = new AbortController(); - var signal = ac_1.signal; - var endTransaction = function(wasCommitted) { - return function() { - ac_1.abort(); - if (mode === "readwrite") { - var affectedSubscribers_1 = /* @__PURE__ */ new Set(); - for (var _i = 0, stores_1 = stores; _i < stores_1.length; _i++) { - var storeName = stores_1[_i]; - var tblCache = cache["idb://".concat(dbName, "/").concat(storeName)]; - if (tblCache) { - var table = core.table(storeName); - var ops = tblCache.optimisticOps.filter(function(op) { - return op.trans === idbtrans; - }); - if (idbtrans._explicit && wasCommitted && idbtrans.mutatedParts) { - for (var _a2 = 0, _b = Object.values(tblCache.queries.query); _a2 < _b.length; _a2++) { - var entries = _b[_a2]; - for (var _c = 0, _d = entries.slice(); _c < _d.length; _c++) { - var entry = _d[_c]; - if (obsSetsOverlap(entry.obsSet, idbtrans.mutatedParts)) { - delArrayItem(entries, entry); - entry.subscribers.forEach(function(requery) { - return affectedSubscribers_1.add(requery); - }); - } - } - } - } else if (ops.length > 0) { - tblCache.optimisticOps = tblCache.optimisticOps.filter(function(op) { - return op.trans !== idbtrans; - }); - for (var _e = 0, _f = Object.values(tblCache.queries.query); _e < _f.length; _e++) { - var entries = _f[_e]; - for (var _g = 0, _h = entries.slice(); _g < _h.length; _g++) { - var entry = _h[_g]; - if (entry.res != null && idbtrans.mutatedParts) { - if (wasCommitted && !entry.dirty) { - var freezeResults = Object.isFrozen(entry.res); - var modRes = applyOptimisticOps(entry.res, entry.req, ops, table, entry, freezeResults); - if (entry.dirty) { - delArrayItem(entries, entry); - entry.subscribers.forEach(function(requery) { - return affectedSubscribers_1.add(requery); - }); - } else if (modRes !== entry.res) { - entry.res = modRes; - entry.promise = DexiePromise.resolve({ result: modRes }); - } - } else { - if (entry.dirty) { - delArrayItem(entries, entry); - } - entry.subscribers.forEach(function(requery) { - return affectedSubscribers_1.add(requery); - }); - } - } - } - } - } - } - } - affectedSubscribers_1.forEach(function(requery) { - return requery(); - }); - } - }; - }; - idbtrans.addEventListener("abort", endTransaction(false), { - signal - }); - idbtrans.addEventListener("error", endTransaction(false), { - signal - }); - idbtrans.addEventListener("complete", endTransaction(true), { - signal - }); - } - return idbtrans; - }, table: function(tableName) { - var downTable = core.table(tableName); - var primKey = downTable.schema.primaryKey; - var tableMW = __assign2(__assign2({}, downTable), { mutate: function(req) { - var trans = PSD.trans; - if (primKey.outbound || trans.db._options.cache === "disabled" || trans.explicit || trans.idbtrans.mode !== "readwrite") { - return downTable.mutate(req); - } - var tblCache = cache["idb://".concat(dbName, "/").concat(tableName)]; - if (!tblCache) - return downTable.mutate(req); - var promise = downTable.mutate(req); - if ((req.type === "add" || req.type === "put") && (req.values.length >= 50 || getEffectiveKeys(primKey, req).some(function(key) { - return key == null; - }))) { - promise.then(function(res) { - var reqWithResolvedKeys = __assign2(__assign2({}, req), { values: req.values.map(function(value, i) { - var _a2; - if (res.failures[i]) - return value; - var valueWithKey = ((_a2 = primKey.keyPath) === null || _a2 === void 0 ? void 0 : _a2.includes(".")) ? deepClone(value) : __assign2({}, value); - setByKeyPath(valueWithKey, primKey.keyPath, res.results[i]); - return valueWithKey; - }) }); - var adjustedReq = adjustOptimisticFromFailures(tblCache, reqWithResolvedKeys, res); - tblCache.optimisticOps.push(adjustedReq); - queueMicrotask(function() { - return req.mutatedParts && signalSubscribersLazily(req.mutatedParts); - }); - }); - } else { - tblCache.optimisticOps.push(req); - req.mutatedParts && signalSubscribersLazily(req.mutatedParts); - promise.then(function(res) { - if (res.numFailures > 0) { - delArrayItem(tblCache.optimisticOps, req); - var adjustedReq = adjustOptimisticFromFailures(tblCache, req, res); - if (adjustedReq) { - tblCache.optimisticOps.push(adjustedReq); - } - req.mutatedParts && signalSubscribersLazily(req.mutatedParts); - } - }); - promise.catch(function() { - delArrayItem(tblCache.optimisticOps, req); - req.mutatedParts && signalSubscribersLazily(req.mutatedParts); - }); - } - return promise; - }, query: function(req) { - var _a2; - if (!isCachableContext(PSD, downTable) || !isCachableRequest("query", req)) - return downTable.query(req); - var freezeResults = ((_a2 = PSD.trans) === null || _a2 === void 0 ? void 0 : _a2.db._options.cache) === "immutable"; - var _b = PSD, requery = _b.requery, signal = _b.signal; - var _c = findCompatibleQuery(dbName, tableName, "query", req), cacheEntry = _c[0], exactMatch = _c[1], tblCache = _c[2], container = _c[3]; - if (cacheEntry && exactMatch) { - cacheEntry.obsSet = req.obsSet; - } else { - var promise = downTable.query(req).then(function(res) { - var result = res.result; - if (cacheEntry) - cacheEntry.res = result; - if (freezeResults) { - for (var i = 0, l = result.length; i < l; ++i) { - Object.freeze(result[i]); - } - Object.freeze(result); - } else { - res.result = deepClone(result); - } - return res; - }).catch(function(error) { - if (container && cacheEntry) - delArrayItem(container, cacheEntry); - return Promise.reject(error); - }); - cacheEntry = { - obsSet: req.obsSet, - promise, - subscribers: /* @__PURE__ */ new Set(), - type: "query", - req, - dirty: false - }; - if (container) { - container.push(cacheEntry); - } else { - container = [cacheEntry]; - if (!tblCache) { - tblCache = cache["idb://".concat(dbName, "/").concat(tableName)] = { - queries: { - query: {}, - count: {} - }, - objs: /* @__PURE__ */ new Map(), - optimisticOps: [], - unsignaledParts: {} - }; - } - tblCache.queries.query[req.query.index.name || ""] = container; - } - } - subscribeToCacheEntry(cacheEntry, container, requery, signal); - return cacheEntry.promise.then(function(res) { - return { - result: applyOptimisticOps(res.result, req, tblCache === null || tblCache === void 0 ? void 0 : tblCache.optimisticOps, downTable, cacheEntry, freezeResults) - }; - }); - } }); - return tableMW; - } }); - return coreMW; - } - }; - function vipify(target, vipDb) { - return new Proxy(target, { - get: function(target2, prop, receiver) { - if (prop === "db") - return vipDb; - return Reflect.get(target2, prop, receiver); - } - }); - } - var Dexie$1 = function() { - function Dexie3(name, options) { - var _this = this; - this._middlewares = {}; - this.verno = 0; - var deps = Dexie3.dependencies; - this._options = options = __assign2({ - addons: Dexie3.addons, - autoOpen: true, - indexedDB: deps.indexedDB, - IDBKeyRange: deps.IDBKeyRange, - cache: "cloned" - }, options); - this._deps = { - indexedDB: options.indexedDB, - IDBKeyRange: options.IDBKeyRange - }; - var addons = options.addons; - this._dbSchema = {}; - this._versions = []; - this._storeNames = []; - this._allTables = {}; - this.idbdb = null; - this._novip = this; - var state = { - dbOpenError: null, - isBeingOpened: false, - onReadyBeingFired: null, - openComplete: false, - dbReadyResolve: nop, - dbReadyPromise: null, - cancelOpen: nop, - openCanceller: null, - autoSchema: true, - PR1398_maxLoop: 3, - autoOpen: options.autoOpen - }; - state.dbReadyPromise = new DexiePromise(function(resolve) { - state.dbReadyResolve = resolve; - }); - state.openCanceller = new DexiePromise(function(_, reject) { - state.cancelOpen = reject; - }); - this._state = state; - this.name = name; - this.on = Events(this, "populate", "blocked", "versionchange", "close", { ready: [promisableChain, nop] }); - this.on.ready.subscribe = override(this.on.ready.subscribe, function(subscribe) { - return function(subscriber, bSticky) { - Dexie3.vip(function() { - var state2 = _this._state; - if (state2.openComplete) { - if (!state2.dbOpenError) - DexiePromise.resolve().then(subscriber); - if (bSticky) - subscribe(subscriber); - } else if (state2.onReadyBeingFired) { - state2.onReadyBeingFired.push(subscriber); - if (bSticky) - subscribe(subscriber); - } else { - subscribe(subscriber); - var db_1 = _this; - if (!bSticky) - subscribe(function unsubscribe() { - db_1.on.ready.unsubscribe(subscriber); - db_1.on.ready.unsubscribe(unsubscribe); - }); - } - }); - }; - }); - this.Collection = createCollectionConstructor(this); - this.Table = createTableConstructor(this); - this.Transaction = createTransactionConstructor(this); - this.Version = createVersionConstructor(this); - this.WhereClause = createWhereClauseConstructor(this); - this.on("versionchange", function(ev) { - if (ev.newVersion > 0) - console.warn("Another connection wants to upgrade database '".concat(_this.name, "'. Closing db now to resume the upgrade.")); - else - console.warn("Another connection wants to delete database '".concat(_this.name, "'. Closing db now to resume the delete request.")); - _this.close({ disableAutoOpen: false }); - }); - this.on("blocked", function(ev) { - if (!ev.newVersion || ev.newVersion < ev.oldVersion) - console.warn("Dexie.delete('".concat(_this.name, "') was blocked")); - else - console.warn("Upgrade '".concat(_this.name, "' blocked by other connection holding version ").concat(ev.oldVersion / 10)); - }); - this._maxKey = getMaxKey(options.IDBKeyRange); - this._createTransaction = function(mode, storeNames, dbschema, parentTransaction) { - return new _this.Transaction(mode, storeNames, dbschema, _this._options.chromeTransactionDurability, parentTransaction); - }; - this._fireOnBlocked = function(ev) { - _this.on("blocked").fire(ev); - connections.filter(function(c) { - return c.name === _this.name && c !== _this && !c._state.vcFired; - }).map(function(c) { - return c.on("versionchange").fire(ev); - }); - }; - this.use(cacheExistingValuesMiddleware); - this.use(cacheMiddleware); - this.use(observabilityMiddleware); - this.use(virtualIndexMiddleware); - this.use(hooksMiddleware); - var vipDB = new Proxy(this, { - get: function(_, prop, receiver) { - if (prop === "_vip") - return true; - if (prop === "table") - return function(tableName) { - return vipify(_this.table(tableName), vipDB); - }; - var rv = Reflect.get(_, prop, receiver); - if (rv instanceof Table) - return vipify(rv, vipDB); - if (prop === "tables") - return rv.map(function(t) { - return vipify(t, vipDB); - }); - if (prop === "_createTransaction") - return function() { - var tx = rv.apply(this, arguments); - return vipify(tx, vipDB); - }; - return rv; - } - }); - this.vip = vipDB; - addons.forEach(function(addon) { - return addon(_this); - }); - } - Dexie3.prototype.version = function(versionNumber) { - if (isNaN(versionNumber) || versionNumber < 0.1) - throw new exceptions.Type("Given version is not a positive number"); - versionNumber = Math.round(versionNumber * 10) / 10; - if (this.idbdb || this._state.isBeingOpened) - throw new exceptions.Schema("Cannot add version when database is open"); - this.verno = Math.max(this.verno, versionNumber); - var versions = this._versions; - var versionInstance = versions.filter(function(v) { - return v._cfg.version === versionNumber; - })[0]; - if (versionInstance) - return versionInstance; - versionInstance = new this.Version(versionNumber); - versions.push(versionInstance); - versions.sort(lowerVersionFirst); - versionInstance.stores({}); - this._state.autoSchema = false; - return versionInstance; - }; - Dexie3.prototype._whenReady = function(fn) { - var _this = this; - return this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip) ? fn() : new DexiePromise(function(resolve, reject) { - if (_this._state.openComplete) { - return reject(new exceptions.DatabaseClosed(_this._state.dbOpenError)); - } - if (!_this._state.isBeingOpened) { - if (!_this._state.autoOpen) { - reject(new exceptions.DatabaseClosed()); - return; - } - _this.open().catch(nop); - } - _this._state.dbReadyPromise.then(resolve, reject); - }).then(fn); - }; - Dexie3.prototype.use = function(_a2) { - var stack = _a2.stack, create = _a2.create, level = _a2.level, name = _a2.name; - if (name) - this.unuse({ stack, name }); - var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []); - middlewares.push({ stack, create, level: level == null ? 10 : level, name }); - middlewares.sort(function(a, b) { - return a.level - b.level; - }); - return this; - }; - Dexie3.prototype.unuse = function(_a2) { - var stack = _a2.stack, name = _a2.name, create = _a2.create; - if (stack && this._middlewares[stack]) { - this._middlewares[stack] = this._middlewares[stack].filter(function(mw) { - return create ? mw.create !== create : name ? mw.name !== name : false; - }); - } - return this; - }; - Dexie3.prototype.open = function() { - var _this = this; - return usePSD( - globalPSD, - function() { - return dexieOpen(_this); - } - ); - }; - Dexie3.prototype._close = function() { - var state = this._state; - var idx = connections.indexOf(this); - if (idx >= 0) - connections.splice(idx, 1); - if (this.idbdb) { - try { - this.idbdb.close(); - } catch (e) { - } - this.idbdb = null; - } - if (!state.isBeingOpened) { - state.dbReadyPromise = new DexiePromise(function(resolve) { - state.dbReadyResolve = resolve; - }); - state.openCanceller = new DexiePromise(function(_, reject) { - state.cancelOpen = reject; - }); - } - }; - Dexie3.prototype.close = function(_a2) { - var _b = _a2 === void 0 ? { disableAutoOpen: true } : _a2, disableAutoOpen = _b.disableAutoOpen; - var state = this._state; - if (disableAutoOpen) { - if (state.isBeingOpened) { - state.cancelOpen(new exceptions.DatabaseClosed()); - } - this._close(); - state.autoOpen = false; - state.dbOpenError = new exceptions.DatabaseClosed(); - } else { - this._close(); - state.autoOpen = this._options.autoOpen || state.isBeingOpened; - state.openComplete = false; - state.dbOpenError = null; - } - }; - Dexie3.prototype.delete = function(closeOptions) { - var _this = this; - if (closeOptions === void 0) { - closeOptions = { disableAutoOpen: true }; - } - var hasInvalidArguments = arguments.length > 0 && typeof arguments[0] !== "object"; - var state = this._state; - return new DexiePromise(function(resolve, reject) { - var doDelete = function() { - _this.close(closeOptions); - var req = _this._deps.indexedDB.deleteDatabase(_this.name); - req.onsuccess = wrap(function() { - _onDatabaseDeleted(_this._deps, _this.name); - resolve(); - }); - req.onerror = eventRejectHandler(reject); - req.onblocked = _this._fireOnBlocked; - }; - if (hasInvalidArguments) - throw new exceptions.InvalidArgument("Invalid closeOptions argument to db.delete()"); - if (state.isBeingOpened) { - state.dbReadyPromise.then(doDelete); - } else { - doDelete(); - } - }); - }; - Dexie3.prototype.backendDB = function() { - return this.idbdb; - }; - Dexie3.prototype.isOpen = function() { - return this.idbdb !== null; - }; - Dexie3.prototype.hasBeenClosed = function() { - var dbOpenError = this._state.dbOpenError; - return dbOpenError && dbOpenError.name === "DatabaseClosed"; - }; - Dexie3.prototype.hasFailed = function() { - return this._state.dbOpenError !== null; - }; - Dexie3.prototype.dynamicallyOpened = function() { - return this._state.autoSchema; - }; - Object.defineProperty(Dexie3.prototype, "tables", { - get: function() { - var _this = this; - return keys(this._allTables).map(function(name) { - return _this._allTables[name]; - }); - }, - enumerable: false, - configurable: true - }); - Dexie3.prototype.transaction = function() { - var args = extractTransactionArgs.apply(this, arguments); - return this._transaction.apply(this, args); - }; - Dexie3.prototype._transaction = function(mode, tables, scopeFunc) { - var _this = this; - var parentTransaction = PSD.trans; - if (!parentTransaction || parentTransaction.db !== this || mode.indexOf("!") !== -1) - parentTransaction = null; - var onlyIfCompatible = mode.indexOf("?") !== -1; - mode = mode.replace("!", "").replace("?", ""); - var idbMode, storeNames; - try { - storeNames = tables.map(function(table) { - var storeName = table instanceof _this.Table ? table.name : table; - if (typeof storeName !== "string") - throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed"); - return storeName; - }); - if (mode == "r" || mode === READONLY) - idbMode = READONLY; - else if (mode == "rw" || mode == READWRITE) - idbMode = READWRITE; - else - throw new exceptions.InvalidArgument("Invalid transaction mode: " + mode); - if (parentTransaction) { - if (parentTransaction.mode === READONLY && idbMode === READWRITE) { - if (onlyIfCompatible) { - parentTransaction = null; - } else - throw new exceptions.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY"); - } - if (parentTransaction) { - storeNames.forEach(function(storeName) { - if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) { - if (onlyIfCompatible) { - parentTransaction = null; - } else - throw new exceptions.SubTransaction("Table " + storeName + " not included in parent transaction."); - } - }); - } - if (onlyIfCompatible && parentTransaction && !parentTransaction.active) { - parentTransaction = null; - } - } - } catch (e) { - return parentTransaction ? parentTransaction._promise(null, function(_, reject) { - reject(e); - }) : rejection(e); - } - var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc); - return parentTransaction ? parentTransaction._promise(idbMode, enterTransaction, "lock") : PSD.trans ? usePSD(PSD.transless, function() { - return _this._whenReady(enterTransaction); - }) : this._whenReady(enterTransaction); - }; - Dexie3.prototype.table = function(tableName) { - if (!hasOwn(this._allTables, tableName)) { - throw new exceptions.InvalidTable("Table ".concat(tableName, " does not exist")); - } - return this._allTables[tableName]; - }; - return Dexie3; - }(); - var symbolObservable = typeof Symbol !== "undefined" && "observable" in Symbol ? Symbol.observable : "@@observable"; - var Observable = function() { - function Observable2(subscribe) { - this._subscribe = subscribe; - } - Observable2.prototype.subscribe = function(x, error, complete) { - return this._subscribe(!x || typeof x === "function" ? { next: x, error, complete } : x); - }; - Observable2.prototype[symbolObservable] = function() { - return this; - }; - return Observable2; - }(); - var domDeps; - try { - domDeps = { - indexedDB: _global2.indexedDB || _global2.mozIndexedDB || _global2.webkitIndexedDB || _global2.msIndexedDB, - IDBKeyRange: _global2.IDBKeyRange || _global2.webkitIDBKeyRange - }; - } catch (e) { - domDeps = { indexedDB: null, IDBKeyRange: null }; - } - function liveQuery2(querier) { - var hasValue = false; - var currentValue; - var observable = new Observable(function(observer) { - var scopeFuncIsAsync = isAsyncFunction(querier); - function execute(ctx) { - var wasRootExec = beginMicroTickScope(); - try { - if (scopeFuncIsAsync) { - incrementExpectedAwaits(); - } - var rv = newScope(querier, ctx); - if (scopeFuncIsAsync) { - rv = rv.finally(decrementExpectedAwaits); - } - return rv; - } finally { - wasRootExec && endMicroTickScope(); - } - } - var closed = false; - var abortController; - var accumMuts = {}; - var currentObs = {}; - var subscription = { - get closed() { - return closed; - }, - unsubscribe: function() { - if (closed) - return; - closed = true; - if (abortController) - abortController.abort(); - if (startedListening) - globalEvents.storagemutated.unsubscribe(mutationListener); - } - }; - observer.start && observer.start(subscription); - var startedListening = false; - var doQuery = function() { - return execInGlobalContext(_doQuery); - }; - function shouldNotify() { - return obsSetsOverlap(currentObs, accumMuts); - } - var mutationListener = function(parts) { - extendObservabilitySet(accumMuts, parts); - if (shouldNotify()) { - doQuery(); - } - }; - var _doQuery = function() { - if (closed || !domDeps.indexedDB) { - return; - } - accumMuts = {}; - var subscr = {}; - if (abortController) - abortController.abort(); - abortController = new AbortController(); - var ctx = { - subscr, - signal: abortController.signal, - requery: doQuery, - querier, - trans: null - }; - var ret = execute(ctx); - Promise.resolve(ret).then(function(result) { - hasValue = true; - currentValue = result; - if (closed || ctx.signal.aborted) { - return; - } - accumMuts = {}; - currentObs = subscr; - if (!objectIsEmpty(currentObs) && !startedListening) { - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener); - startedListening = true; - } - execInGlobalContext(function() { - return !closed && observer.next && observer.next(result); - }); - }, function(err) { - hasValue = false; - if (!["DatabaseClosedError", "AbortError"].includes(err === null || err === void 0 ? void 0 : err.name)) { - if (!closed) - execInGlobalContext(function() { - if (closed) - return; - observer.error && observer.error(err); - }); - } - }); - }; - setTimeout(doQuery, 0); - return subscription; - }); - observable.hasValue = function() { - return hasValue; - }; - observable.getValue = function() { - return currentValue; - }; - return observable; - } - var Dexie2 = Dexie$1; - props(Dexie2, __assign2(__assign2({}, fullNameExceptions), { - delete: function(databaseName) { - var db = new Dexie2(databaseName, { addons: [] }); - return db.delete(); - }, - exists: function(name) { - return new Dexie2(name, { addons: [] }).open().then(function(db) { - db.close(); - return true; - }).catch("NoSuchDatabaseError", function() { - return false; - }); - }, - getDatabaseNames: function(cb) { - try { - return getDatabaseNames(Dexie2.dependencies).then(cb); - } catch (_a2) { - return rejection(new exceptions.MissingAPI()); - } - }, - defineClass: function() { - function Class(content) { - extend(this, content); - } - return Class; - }, - ignoreTransaction: function(scopeFunc) { - return PSD.trans ? usePSD(PSD.transless, scopeFunc) : scopeFunc(); - }, - vip, - async: function(generatorFn) { - return function() { - try { - var rv = awaitIterator(generatorFn.apply(this, arguments)); - if (!rv || typeof rv.then !== "function") - return DexiePromise.resolve(rv); - return rv; - } catch (e) { - return rejection(e); - } - }; - }, - spawn: function(generatorFn, args, thiz) { - try { - var rv = awaitIterator(generatorFn.apply(thiz, args || [])); - if (!rv || typeof rv.then !== "function") - return DexiePromise.resolve(rv); - return rv; - } catch (e) { - return rejection(e); - } - }, - currentTransaction: { - get: function() { - return PSD.trans || null; - } - }, - waitFor: function(promiseOrFunction, optionalTimeout) { - var promise = DexiePromise.resolve(typeof promiseOrFunction === "function" ? Dexie2.ignoreTransaction(promiseOrFunction) : promiseOrFunction).timeout(optionalTimeout || 6e4); - return PSD.trans ? PSD.trans.waitFor(promise) : promise; - }, - Promise: DexiePromise, - debug: { - get: function() { - return debug; - }, - set: function(value) { - setDebug(value); - } - }, - derive, - extend, - props, - override, - Events, - on: globalEvents, - liveQuery: liveQuery2, - extendObservabilitySet, - getByKeyPath, - setByKeyPath, - delByKeyPath, - shallowClone, - deepClone, - getObjectDiff, - cmp: cmp2, - asap: asap$1, - minKey, - addons: [], - connections, - errnames, - dependencies: domDeps, - cache, - semVer: DEXIE_VERSION, - version: DEXIE_VERSION.split(".").map(function(n) { - return parseInt(n); - }).reduce(function(p, c, i) { - return p + c / Math.pow(10, i * 2); - }) - })); - Dexie2.maxKey = getMaxKey(Dexie2.dependencies.IDBKeyRange); - if (typeof dispatchEvent !== "undefined" && typeof addEventListener !== "undefined") { - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function(updatedParts) { - if (!propagatingLocally) { - var event_1; - event_1 = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, { - detail: updatedParts - }); - propagatingLocally = true; - dispatchEvent(event_1); - propagatingLocally = false; - } - }); - addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, function(_a2) { - var detail = _a2.detail; - if (!propagatingLocally) { - propagateLocally(detail); - } - }); - } - function propagateLocally(updateParts) { - var wasMe = propagatingLocally; - try { - propagatingLocally = true; - globalEvents.storagemutated.fire(updateParts); - signalSubscribersNow(updateParts, true); - } finally { - propagatingLocally = wasMe; - } - } - var propagatingLocally = false; - var bc; - var createBC = function() { - }; - if (typeof BroadcastChannel !== "undefined") { - createBC = function() { - bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME); - bc.onmessage = function(ev) { - return ev.data && propagateLocally(ev.data); - }; - }; - createBC(); - if (typeof bc.unref === "function") { - bc.unref(); - } - globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function(changedParts) { - if (!propagatingLocally) { - bc.postMessage(changedParts); - } - }); - } - if (typeof addEventListener !== "undefined") { - addEventListener("pagehide", function(event) { - if (!Dexie$1.disableBfCache && event.persisted) { - if (debug) - console.debug("Dexie: handling persisted pagehide"); - bc === null || bc === void 0 ? void 0 : bc.close(); - for (var _i = 0, connections_1 = connections; _i < connections_1.length; _i++) { - var db = connections_1[_i]; - db.close({ disableAutoOpen: false }); - } - } - }); - addEventListener("pageshow", function(event) { - if (!Dexie$1.disableBfCache && event.persisted) { - if (debug) - console.debug("Dexie: handling persisted pageshow"); - createBC(); - propagateLocally({ all: new RangeSet2(-Infinity, [[]]) }); - } - }); - } - function add2(value) { - return new PropModification2({ add: value }); - } - function remove2(value) { - return new PropModification2({ remove: value }); - } - function replacePrefix2(a, b) { - return new PropModification2({ replacePrefix: [a, b] }); - } - DexiePromise.rejectionMapper = mapError; - setDebug(debug); - var namedExports = /* @__PURE__ */ Object.freeze({ - __proto__: null, - Dexie: Dexie$1, - liveQuery: liveQuery2, - Entity: Entity2, - cmp: cmp2, - PropModification: PropModification2, - replacePrefix: replacePrefix2, - add: add2, - remove: remove2, - "default": Dexie$1, - RangeSet: RangeSet2, - mergeRanges: mergeRanges2, - rangesOverlap: rangesOverlap2 - }); - __assign2(Dexie$1, namedExports, { default: Dexie$1 }); - return Dexie$1; - }); - } -}); - -// node_modules/dexie/import-wrapper.mjs -var import_dexie = __toESM(require_dexie(), 1); -var DexieSymbol = Symbol.for("Dexie"); -var Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = import_dexie.default); -if (import_dexie.default.semVer !== Dexie.semVer) { - throw new Error(`Two different versions of Dexie loaded in the same app: ${import_dexie.default.semVer} and ${Dexie.semVer}`); -} -var { - liveQuery, - mergeRanges, - rangesOverlap, - RangeSet, - cmp, - Entity, - PropModification, - replacePrefix, - add, - remove -} = Dexie; -var import_wrapper_default = Dexie; - -// node_modules/dexie-export-import/dist/dexie-export-import.mjs -var __assign = function() { - __assign = Object.assign || function __assign2(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { - if (t[0] & 1) throw t[1]; - return t[1]; - }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { - return this; - }), g; - function verb(n) { - return function(v) { - return step([n, v]); - }; - } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return { value: op[1], done: false }; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) _.ops.pop(); - _.trys.pop(); - continue; - } - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - if (op[0] & 5) throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; - } -} -function getSchemaString(table) { - var primKeyAndIndexes = [table.schema.primKey].concat(table.schema.indexes); - return primKeyAndIndexes.map(function(index) { - return index.src; - }).join(","); -} -function extractDbSchema(exportedDb) { - var schema = {}; - for (var _i = 0, _a = exportedDb.tables; _i < _a.length; _i++) { - var table = _a[_i]; - schema[table.name] = table.schema; - } - return schema; -} -function readBlobAsync(blob, type) { - return new Promise(function(resolve, reject) { - var reader = new FileReader(); - reader.onabort = function(ev) { - return reject(new Error("file read aborted")); - }; - reader.onerror = function(ev) { - return reject(ev.target.error); - }; - reader.onload = function(ev) { - return resolve(ev.target.result); - }; - if (type === "binary") - reader.readAsArrayBuffer(blob); - else - reader.readAsText(blob); - }); -} -function readBlobSync(blob, type) { - if (typeof FileReaderSync === "undefined") { - throw new Error("FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread."); - } - var reader = new FileReaderSync(); - var data = type === "binary" ? reader.readAsArrayBuffer(blob) : reader.readAsText(blob); - return data; -} -var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} -var typeson = createCommonjsModule(function(module, exports) { - (function(global2, factory) { - module.exports = factory(); - })(commonjsGlobal, function() { - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function(obj2) { - return typeof obj2; - }; - } else { - _typeof = function(obj2) { - return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; - }; - } - return _typeof(obj); - } - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - function _asyncToGenerator(fn) { - return function() { - var self2 = this, args = arguments; - return new Promise(function(resolve, reject) { - var gen = fn.apply(self2, args); - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - _next(void 0); - }); - }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - function ownKeys(object, enumerableOnly) { - var keys2 = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function(sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys2.push.apply(keys2, symbols); - } - return keys2; - } - function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - if (i % 2) { - ownKeys(Object(source), true).forEach(function(key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function(key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - return target; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - return arr2; - } - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); - } - function _iterableToArrayLimit(arr, i) { - if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { - return; - } - var _arr = []; - var _n = true; - var _d = false; - var _e = void 0; - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); - } - var TypesonPromise = function TypesonPromise2(f) { - _classCallCheck(this, TypesonPromise2); - this.p = new Promise(f); - }; - TypesonPromise.__typeson__type__ = "TypesonPromise"; - if (typeof Symbol !== "undefined") { - TypesonPromise.prototype[Symbol.toStringTag] = "TypesonPromise"; - } - TypesonPromise.prototype.then = function(onFulfilled, onRejected) { - var _this = this; - return new TypesonPromise(function(typesonResolve, typesonReject) { - _this.p.then(function(res) { - typesonResolve(onFulfilled ? onFulfilled(res) : res); - })["catch"](function(res) { - return onRejected ? onRejected(res) : Promise.reject(res); - }).then(typesonResolve, typesonReject); - }); - }; - TypesonPromise.prototype["catch"] = function(onRejected) { - return this.then(null, onRejected); - }; - TypesonPromise.resolve = function(v) { - return new TypesonPromise(function(typesonResolve) { - typesonResolve(v); - }); - }; - TypesonPromise.reject = function(v) { - return new TypesonPromise(function(typesonResolve, typesonReject) { - typesonReject(v); - }); - }; - ["all", "race"].forEach(function(meth) { - TypesonPromise[meth] = function(promArr) { - return new TypesonPromise(function(typesonResolve, typesonReject) { - Promise[meth](promArr.map(function(prom) { - return prom && prom.constructor && prom.constructor.__typeson__type__ === "TypesonPromise" ? prom.p : prom; - })).then(typesonResolve, typesonReject); - }); - }; - }); - var _ref = {}, toStr = _ref.toString, hasOwn = {}.hasOwnProperty, getProto = Object.getPrototypeOf, fnToString = hasOwn.toString; - function isThenable(v, catchCheck) { - return isObject(v) && typeof v.then === "function" && (!catchCheck || typeof v["catch"] === "function"); - } - function toStringTag(val) { - return toStr.call(val).slice(8, -1); - } - function hasConstructorOf(a, b) { - if (!a || _typeof(a) !== "object") { - return false; - } - var proto = getProto(a); - if (!proto) { - return b === null; - } - var Ctor = hasOwn.call(proto, "constructor") && proto.constructor; - if (typeof Ctor !== "function") { - return b === null; - } - if (b === Ctor) { - return true; - } - if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) { - return true; - } - if (typeof b === "function" && typeof Ctor.__typeson__type__ === "string" && Ctor.__typeson__type__ === b.__typeson__type__) { - return true; - } - return false; - } - function isPlainObject(val) { - if (!val || toStringTag(val) !== "Object") { - return false; - } - var proto = getProto(val); - if (!proto) { - return true; - } - return hasConstructorOf(val, Object); - } - function isUserObject(val) { - if (!val || toStringTag(val) !== "Object") { - return false; - } - var proto = getProto(val); - if (!proto) { - return true; - } - return hasConstructorOf(val, Object) || isUserObject(proto); - } - function isObject(v) { - return v && _typeof(v) === "object"; - } - function escapeKeyPathComponent(keyPathComponent) { - return keyPathComponent.replace(/~/g, "~0").replace(/\./g, "~1"); - } - function unescapeKeyPathComponent(keyPathComponent) { - return keyPathComponent.replace(/~1/g, ".").replace(/~0/g, "~"); - } - function getByKeyPath(obj, keyPath) { - if (keyPath === "") { - return obj; - } - var period = keyPath.indexOf("."); - if (period > -1) { - var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))]; - return innerObj === void 0 ? void 0 : getByKeyPath(innerObj, keyPath.slice(period + 1)); - } - return obj[unescapeKeyPathComponent(keyPath)]; - } - function setAtKeyPath(obj, keyPath, value) { - if (keyPath === "") { - return value; - } - var period = keyPath.indexOf("."); - if (period > -1) { - var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))]; - return setAtKeyPath(innerObj, keyPath.slice(period + 1), value); - } - obj[unescapeKeyPathComponent(keyPath)] = value; - return obj; - } - function getJSONType(value) { - return value === null ? "null" : Array.isArray(value) ? "array" : _typeof(value); - } - var keys = Object.keys, isArray = Array.isArray, hasOwn$1 = {}.hasOwnProperty, internalStateObjPropsToIgnore = ["type", "replaced", "iterateIn", "iterateUnsetNumeric"]; - function nestedPathsFirst(a, b) { - if (a.keypath === "") { - return -1; - } - var as = a.keypath.match(/\./g) || 0; - var bs = b.keypath.match(/\./g) || 0; - if (as) { - as = as.length; - } - if (bs) { - bs = bs.length; - } - return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath; - } - var Typeson = /* @__PURE__ */ function() { - function Typeson2(options) { - _classCallCheck(this, Typeson2); - this.options = options; - this.plainObjectReplacers = []; - this.nonplainObjectReplacers = []; - this.revivers = {}; - this.types = {}; - } - _createClass(Typeson2, [{ - key: "stringify", - value: function stringify(obj, replacer, space, opts) { - opts = _objectSpread2({}, this.options, {}, opts, { - stringification: true - }); - var encapsulated = this.encapsulate(obj, null, opts); - if (isArray(encapsulated)) { - return JSON.stringify(encapsulated[0], replacer, space); - } - return encapsulated.then(function(res) { - return JSON.stringify(res, replacer, space); - }); - } - /** - * Also sync but throws on non-sync result. - * @param {Any} obj - * @param {JSONReplacer|string[]} replacer - * @param {number|string} space - * @param {object} opts - * @returns {string} - */ - }, { - key: "stringifySync", - value: function stringifySync(obj, replacer, space, opts) { - return this.stringify(obj, replacer, space, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * - * @param {Any} obj - * @param {JSONReplacer|string[]} replacer - * @param {number|string} space - * @param {object} opts - * @returns {Promise} - */ - }, { - key: "stringifyAsync", - value: function stringifyAsync(obj, replacer, space, opts) { - return this.stringify(obj, replacer, space, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Parse Typeson back into an obejct. - * Initial arguments works identical to those of `JSON.parse()`. - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {external:JSON} - */ - }, { - key: "parse", - value: function parse(text, reviver, opts) { - opts = _objectSpread2({}, this.options, {}, opts, { - parse: true - }); - return this.revive(JSON.parse(text, reviver), opts); - } - /** - * Also sync but throws on non-sync result. - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {external:JSON} - */ - }, { - key: "parseSync", - value: function parseSync(text, reviver, opts) { - return this.parse(text, reviver, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {string} text - * @param {function} reviver This JSON reviver has nothing to do with - * our revivers. - * @param {object} opts - * @returns {Promise} Resolves to `external:JSON` - */ - }, { - key: "parseAsync", - value: function parseAsync(text, reviver, opts) { - return this.parse(text, reviver, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * - * @param {Any} obj - * @param {object} stateObj - * @param {object} [opts={}] - * @returns {string[]|false} - */ - }, { - key: "specialTypeNames", - value: function specialTypeNames(obj, stateObj) { - var opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - opts.returnTypeNames = true; - return this.encapsulate(obj, stateObj, opts); - } - /** - * - * @param {Any} obj - * @param {PlainObject} stateObj - * @param {PlainObject} [opts={}] - * @returns {Promise|GenericArray|PlainObject|string|false} - */ - }, { - key: "rootTypeName", - value: function rootTypeName(obj, stateObj) { - var opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - opts.iterateNone = true; - return this.encapsulate(obj, stateObj, opts); - } - /** - * Encapsulate a complex object into a plain Object by replacing - * registered types with plain objects representing the types data. - * - * This method is used internally by `Typeson.stringify()`. - * @param {Any} obj - Object to encapsulate. - * @param {PlainObject} stateObj - * @param {PlainObject} opts - * @returns {Promise|GenericArray|PlainObject|string|false} - */ - }, { - key: "encapsulate", - value: function encapsulate(obj, stateObj, opts) { - opts = _objectSpread2({ - sync: true - }, this.options, {}, opts); - var _opts = opts, sync = _opts.sync; - var that = this, types = {}, refObjs = [], refKeys = [], promisesDataRoot = []; - var cyclic = "cyclic" in opts ? opts.cyclic : true; - var _opts2 = opts, encapsulateObserver = _opts2.encapsulateObserver; - var ret = _encapsulate("", obj, cyclic, stateObj || {}, promisesDataRoot); - function finish(ret2) { - var typeNames = Object.values(types); - if (opts.iterateNone) { - if (typeNames.length) { - return typeNames[0]; - } - return Typeson2.getJSONType(ret2); - } - if (typeNames.length) { - if (opts.returnTypeNames) { - return _toConsumableArray(new Set(typeNames)); - } - if (!ret2 || !isPlainObject(ret2) || // Also need to handle if this is an object with its - // own `$types` property (to avoid ambiguity) - hasOwn$1.call(ret2, "$types")) { - ret2 = { - $: ret2, - $types: { - $: types - } - }; - } else { - ret2.$types = types; - } - } else if (isObject(ret2) && hasOwn$1.call(ret2, "$types")) { - ret2 = { - $: ret2, - $types: true - }; - } - if (opts.returnTypeNames) { - return false; - } - return ret2; - } - function checkPromises(_x, _x2) { - return _checkPromises.apply(this, arguments); - } - function _checkPromises() { - _checkPromises = _asyncToGenerator( - /* @__PURE__ */ regeneratorRuntime.mark(function _callee2(ret2, promisesData) { - var promResults; - return regeneratorRuntime.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - _context2.next = 2; - return Promise.all(promisesData.map(function(pd) { - return pd[1].p; - })); - case 2: - promResults = _context2.sent; - _context2.next = 5; - return Promise.all(promResults.map( - /* @__PURE__ */ function() { - var _ref2 = _asyncToGenerator( - /* @__PURE__ */ regeneratorRuntime.mark(function _callee(promResult) { - var newPromisesData, _promisesData$splice, _promisesData$splice2, prData, _prData, keyPath, cyclic2, stateObj2, parentObj, key, detectedType, encaps, isTypesonPromise, encaps2; - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - newPromisesData = []; - _promisesData$splice = promisesData.splice(0, 1), _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1), prData = _promisesData$splice2[0]; - _prData = _slicedToArray(prData, 7), keyPath = _prData[0], cyclic2 = _prData[2], stateObj2 = _prData[3], parentObj = _prData[4], key = _prData[5], detectedType = _prData[6]; - encaps = _encapsulate(keyPath, promResult, cyclic2, stateObj2, newPromisesData, true, detectedType); - isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); - if (!(keyPath && isTypesonPromise)) { - _context.next = 11; - break; - } - _context.next = 8; - return encaps.p; - case 8: - encaps2 = _context.sent; - parentObj[key] = encaps2; - return _context.abrupt("return", checkPromises(ret2, newPromisesData)); - case 11: - if (keyPath) { - parentObj[key] = encaps; - } else if (isTypesonPromise) { - ret2 = encaps.p; - } else { - ret2 = encaps; - } - return _context.abrupt("return", checkPromises(ret2, newPromisesData)); - case 13: - case "end": - return _context.stop(); - } - } - }, _callee); - }) - ); - return function(_x3) { - return _ref2.apply(this, arguments); - }; - }() - )); - case 5: - return _context2.abrupt("return", ret2); - case 6: - case "end": - return _context2.stop(); - } - } - }, _callee2); - }) - ); - return _checkPromises.apply(this, arguments); - } - function _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, cb) { - Object.assign(stateObj2, ownKeysObj); - var vals = internalStateObjPropsToIgnore.map(function(prop) { - var tmp = stateObj2[prop]; - delete stateObj2[prop]; - return tmp; - }); - cb(); - internalStateObjPropsToIgnore.forEach(function(prop, i) { - stateObj2[prop] = vals[i]; - }); - } - function _encapsulate(keypath, value, cyclic2, stateObj2, promisesData, resolvingTypesonPromise, detectedType) { - var ret2; - var observerData = {}; - var $typeof = _typeof(value); - var runObserver = encapsulateObserver ? function(obj2) { - var type = detectedType || stateObj2.type || Typeson2.getJSONType(value); - encapsulateObserver(Object.assign(obj2 || observerData, { - keypath, - value, - cyclic: cyclic2, - stateObj: stateObj2, - promisesData, - resolvingTypesonPromise, - awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise) - }, { - type - })); - } : null; - if (["string", "boolean", "number", "undefined"].includes($typeof)) { - if (value === void 0 || $typeof === "number" && (isNaN(value) || value === -Infinity || value === Infinity)) { - if (stateObj2.replaced) { - ret2 = value; - } else { - ret2 = replace(keypath, value, stateObj2, promisesData, false, resolvingTypesonPromise, runObserver); - } - if (ret2 !== value) { - observerData = { - replaced: ret2 - }; - } - } else { - ret2 = value; - } - if (runObserver) { - runObserver(); - } - return ret2; - } - if (value === null) { - if (runObserver) { - runObserver(); - } - return value; - } - if (cyclic2 && !stateObj2.iterateIn && !stateObj2.iterateUnsetNumeric && value && _typeof(value) === "object") { - var refIndex = refObjs.indexOf(value); - if (refIndex < 0) { - if (cyclic2 === true) { - refObjs.push(value); - refKeys.push(keypath); - } - } else { - types[keypath] = "#"; - if (runObserver) { - runObserver({ - cyclicKeypath: refKeys[refIndex] - }); - } - return "#" + refKeys[refIndex]; - } - } - var isPlainObj = isPlainObject(value); - var isArr = isArray(value); - var replaced = ( - // Running replace will cause infinite loop as will test - // positive again - (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj2.replaced) || stateObj2.iterateIn ? ( - // Optimization: if plain object and no plain-object - // replacers, don't try finding a replacer - value - ) : replace(keypath, value, stateObj2, promisesData, isPlainObj || isArr, null, runObserver) - ); - var clone; - if (replaced !== value) { - ret2 = replaced; - observerData = { - replaced - }; - } else { - if (keypath === "" && hasConstructorOf(value, TypesonPromise)) { - promisesData.push([keypath, value, cyclic2, stateObj2, void 0, void 0, stateObj2.type]); - ret2 = value; - } else if (isArr && stateObj2.iterateIn !== "object" || stateObj2.iterateIn === "array") { - clone = new Array(value.length); - observerData = { - clone - }; - } else if (!["function", "symbol"].includes(_typeof(value)) && !("toJSON" in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj2.iterateIn === "object") { - clone = {}; - if (stateObj2.addLength) { - clone.length = value.length; - } - observerData = { - clone - }; - } else { - ret2 = value; - } - } - if (runObserver) { - runObserver(); - } - if (opts.iterateNone) { - return clone || ret2; - } - if (!clone) { - return ret2; - } - if (stateObj2.iterateIn) { - var _loop = function _loop3(key2) { - var ownKeysObj = { - ownKeys: hasOwn$1.call(value, key2) - }; - _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, function() { - var kp = keypath + (keypath ? "." : "") + escapeKeyPathComponent(key2); - var val = _encapsulate(kp, value[key2], Boolean(cyclic2), stateObj2, promisesData, resolvingTypesonPromise); - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic2), stateObj2, clone, key2, stateObj2.type]); - } else if (val !== void 0) { - clone[key2] = val; - } - }); - }; - for (var key in value) { - _loop(key); - } - if (runObserver) { - runObserver({ - endIterateIn: true, - end: true - }); - } - } else { - keys(value).forEach(function(key2) { - var kp = keypath + (keypath ? "." : "") + escapeKeyPathComponent(key2); - var ownKeysObj = { - ownKeys: true - }; - _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, function() { - var val = _encapsulate(kp, value[key2], Boolean(cyclic2), stateObj2, promisesData, resolvingTypesonPromise); - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic2), stateObj2, clone, key2, stateObj2.type]); - } else if (val !== void 0) { - clone[key2] = val; - } - }); - }); - if (runObserver) { - runObserver({ - endIterateOwn: true, - end: true - }); - } - } - if (stateObj2.iterateUnsetNumeric) { - var vl = value.length; - var _loop2 = function _loop22(i2) { - if (!(i2 in value)) { - var kp = keypath + (keypath ? "." : "") + i2; - var ownKeysObj = { - ownKeys: false - }; - _adaptBuiltinStateObjectProperties(stateObj2, ownKeysObj, function() { - var val = _encapsulate(kp, void 0, Boolean(cyclic2), stateObj2, promisesData, resolvingTypesonPromise); - if (hasConstructorOf(val, TypesonPromise)) { - promisesData.push([kp, val, Boolean(cyclic2), stateObj2, clone, i2, stateObj2.type]); - } else if (val !== void 0) { - clone[i2] = val; - } - }); - } - }; - for (var i = 0; i < vl; i++) { - _loop2(i); - } - if (runObserver) { - runObserver({ - endIterateUnsetNumeric: true, - end: true - }); - } - } - return clone; - } - function replace(keypath, value, stateObj2, promisesData, plainObject, resolvingTypesonPromise, runObserver) { - var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers; - var i = replacers.length; - while (i--) { - var replacer = replacers[i]; - if (replacer.test(value, stateObj2)) { - var type = replacer.type; - if (that.revivers[type]) { - var existing = types[keypath]; - types[keypath] = existing ? [type].concat(existing) : type; - } - Object.assign(stateObj2, { - type, - replaced: true - }); - if ((sync || !replacer.replaceAsync) && !replacer.replace) { - if (runObserver) { - runObserver({ - typeDetected: true - }); - } - return _encapsulate(keypath, value, cyclic && "readonly", stateObj2, promisesData, resolvingTypesonPromise, type); - } - if (runObserver) { - runObserver({ - replacing: true - }); - } - var replaceMethod = sync || !replacer.replaceAsync ? "replace" : "replaceAsync"; - return _encapsulate(keypath, replacer[replaceMethod](value, stateObj2), cyclic && "readonly", stateObj2, promisesData, resolvingTypesonPromise, type); - } - } - return value; - } - return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret)); - } - /** - * Also sync but throws on non-sync result. - * @param {*} obj - * @param {object} stateObj - * @param {object} opts - * @returns {*} - */ - }, { - key: "encapsulateSync", - value: function encapsulateSync(obj, stateObj, opts) { - return this.encapsulate(obj, stateObj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {*} obj - * @param {object} stateObj - * @param {object} opts - * @returns {*} - */ - }, { - key: "encapsulateAsync", - value: function encapsulateAsync(obj, stateObj, opts) { - return this.encapsulate(obj, stateObj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Revive an encapsulated object. - * This method is used internally by `Typeson.parse()`. - * @param {object} obj - Object to revive. If it has `$types` member, the - * properties that are listed there will be replaced with its true type - * instead of just plain objects. - * @param {object} opts - * @throws TypeError If mismatch between sync/async type and result - * @returns {Promise|*} If async, returns a Promise that resolves to `*` - */ - }, { - key: "revive", - value: function revive(obj, opts) { - var types = obj && obj.$types; - if (!types) { - return obj; - } - if (types === true) { - return obj.$; - } - opts = _objectSpread2({ - sync: true - }, this.options, {}, opts); - var _opts3 = opts, sync = _opts3.sync; - var keyPathResolutions = []; - var stateObj = {}; - var ignore$Types = true; - if (types.$ && isPlainObject(types.$)) { - obj = obj.$; - types = types.$; - ignore$Types = false; - } - var that = this; - function executeReviver(type, val) { - var _ref2 = that.revivers[type] || [], _ref3 = _slicedToArray(_ref2, 1), reviver = _ref3[0]; - if (!reviver) { - throw new Error("Unregistered type: " + type); - } - if (sync && !("revive" in reviver)) { - return val; - } - return reviver[sync && reviver.revive ? "revive" : !sync && reviver.reviveAsync ? "reviveAsync" : "revive"](val, stateObj); - } - function revivePlainObjects() { - var plainObjectTypes = []; - Object.entries(types).forEach(function(_ref4) { - var _ref5 = _slicedToArray(_ref4, 2), keypath = _ref5[0], type = _ref5[1]; - if (type === "#") { - return; - } - [].concat(type).forEach(function(type2) { - var _ref6 = that.revivers[type2] || [null, {}], _ref7 = _slicedToArray(_ref6, 2), plain = _ref7[1].plain; - if (!plain) { - return; - } - plainObjectTypes.push({ - keypath, - type: type2 - }); - delete types[keypath]; - }); - }); - if (!plainObjectTypes.length) { - return void 0; - } - return plainObjectTypes.sort(nestedPathsFirst).reduce( - function reducer(possibleTypesonPromise2, _ref8) { - var keypath = _ref8.keypath, type = _ref8.type; - if (isThenable(possibleTypesonPromise2)) { - return possibleTypesonPromise2.then(function(val2) { - return reducer(val2, { - keypath, - type - }); - }); - } - var val = getByKeyPath(obj, keypath); - val = executeReviver(type, val); - if (hasConstructorOf(val, TypesonPromise)) { - return val.then(function(v) { - var newVal2 = setAtKeyPath(obj, keypath, v); - if (newVal2 === v) { - obj = newVal2; - } - return void 0; - }); - } - var newVal = setAtKeyPath(obj, keypath, val); - if (newVal === val) { - obj = newVal; - } - return void 0; - }, - void 0 - // This argument must be explicit - ); - } - var revivalPromises = []; - function _revive(keypath, value, target, clone, key) { - if (ignore$Types && keypath === "$types") { - return void 0; - } - var type = types[keypath]; - var isArr = isArray(value); - if (isArr || isPlainObject(value)) { - var _clone = isArr ? new Array(value.length) : {}; - keys(value).forEach(function(k2) { - var val2 = _revive(keypath + (keypath ? "." : "") + escapeKeyPathComponent(k2), value[k2], target || _clone, _clone, k2); - var set = function set2(v) { - if (hasConstructorOf(v, Undefined)) { - _clone[k2] = void 0; - } else if (v !== void 0) { - _clone[k2] = v; - } - return v; - }; - if (hasConstructorOf(val2, TypesonPromise)) { - revivalPromises.push(val2.then(function(ret2) { - return set(ret2); - })); - } else { - set(val2); - } - }); - value = _clone; - while (keyPathResolutions.length) { - var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4), _target = _keyPathResolutions$[0], keyPath = _keyPathResolutions$[1], _clone2 = _keyPathResolutions$[2], k = _keyPathResolutions$[3]; - var val = getByKeyPath(_target, keyPath); - if (val !== void 0) { - _clone2[k] = val; - } else { - break; - } - keyPathResolutions.splice(0, 1); - } - } - if (!type) { - return value; - } - if (type === "#") { - var _ret = getByKeyPath(target, value.slice(1)); - if (_ret === void 0) { - keyPathResolutions.push([target, value.slice(1), clone, key]); - } - return _ret; - } - return [].concat(type).reduce(function reducer(val2, typ) { - if (hasConstructorOf(val2, TypesonPromise)) { - return val2.then(function(v) { - return reducer(v, typ); - }); - } - return executeReviver(typ, val2); - }, value); - } - function checkUndefined(retrn) { - return hasConstructorOf(retrn, Undefined) ? void 0 : retrn; - } - var possibleTypesonPromise = revivePlainObjects(); - var ret; - if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) { - ret = possibleTypesonPromise.then(function() { - return obj; - }); - } else { - ret = _revive("", obj, null); - if (revivalPromises.length) { - ret = TypesonPromise.resolve(ret).then(function(r) { - return TypesonPromise.all([ - // May be a TypesonPromise or not - r - ].concat(revivalPromises)); - }).then(function(_ref9) { - var _ref10 = _slicedToArray(_ref9, 1), r = _ref10[0]; - return r; - }); - } - } - return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret)); - } - /** - * Also sync but throws on non-sync result. - * @param {Any} obj - * @param {object} opts - * @returns {Any} - */ - }, { - key: "reviveSync", - value: function reviveSync(obj, opts) { - return this.revive(obj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: true - })); - } - /** - * @param {Any} obj - * @param {object} opts - * @returns {Promise} Resolves to `*` - */ - }, { - key: "reviveAsync", - value: function reviveAsync(obj, opts) { - return this.revive(obj, _objectSpread2({ - throwOnBadSyncType: true - }, opts, { - sync: false - })); - } - /** - * Register types. - * For examples on how to use this method, see - * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}. - * @param {object.[]} typeSpecSets - Types and - * their functions [test, encapsulate, revive]; - * @param {object} opts - * @returns {Typeson} - */ - }, { - key: "register", - value: function register(typeSpecSets, opts) { - opts = opts || {}; - [].concat(typeSpecSets).forEach(function R(typeSpec) { - var _this = this; - if (isArray(typeSpec)) { - return typeSpec.map(function(typSpec) { - return R.call(_this, typSpec); - }); - } - typeSpec && keys(typeSpec).forEach(function(typeId) { - if (typeId === "#") { - throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects"); - } else if (Typeson2.JSON_TYPES.includes(typeId)) { - throw new TypeError("Plain JSON object types are reserved as type names"); - } - var spec = typeSpec[typeId]; - var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers; - var existingReplacer = replacers.filter(function(r) { - return r.type === typeId; - }); - if (existingReplacer.length) { - replacers.splice(replacers.indexOf(existingReplacer[0]), 1); - delete this.revivers[typeId]; - delete this.types[typeId]; - } - if (typeof spec === "function") { - var Class = spec; - spec = { - test: function test2(x) { - return x && x.constructor === Class; - }, - replace: function replace2(x) { - return _objectSpread2({}, x); - }, - revive: function revive2(x) { - return Object.assign(Object.create(Class.prototype), x); - } - }; - } else if (isArray(spec)) { - var _spec = spec, _spec2 = _slicedToArray(_spec, 3), test = _spec2[0], replace = _spec2[1], revive = _spec2[2]; - spec = { - test, - replace, - revive - }; - } - if (!spec || !spec.test) { - return; - } - var replacerObj = { - type: typeId, - test: spec.test.bind(spec) - }; - if (spec.replace) { - replacerObj.replace = spec.replace.bind(spec); - } - if (spec.replaceAsync) { - replacerObj.replaceAsync = spec.replaceAsync.bind(spec); - } - var start = typeof opts.fallback === "number" ? opts.fallback : opts.fallback ? 0 : Infinity; - if (spec.testPlainObjects) { - this.plainObjectReplacers.splice(start, 0, replacerObj); - } else { - this.nonplainObjectReplacers.splice(start, 0, replacerObj); - } - if (spec.revive || spec.reviveAsync) { - var reviverObj = {}; - if (spec.revive) { - reviverObj.revive = spec.revive.bind(spec); - } - if (spec.reviveAsync) { - reviverObj.reviveAsync = spec.reviveAsync.bind(spec); - } - this.revivers[typeId] = [reviverObj, { - plain: spec.testPlainObjects - }]; - } - this.types[typeId] = spec; - }, this); - }, this); - return this; - } - }]); - return Typeson2; - }(); - var Undefined = function Undefined2() { - _classCallCheck(this, Undefined2); - }; - Undefined.__typeson__type__ = "TypesonUndefined"; - Typeson.Undefined = Undefined; - Typeson.Promise = TypesonPromise; - Typeson.isThenable = isThenable; - Typeson.toStringTag = toStringTag; - Typeson.hasConstructorOf = hasConstructorOf; - Typeson.isObject = isObject; - Typeson.isPlainObject = isPlainObject; - Typeson.isUserObject = isUserObject; - Typeson.escapeKeyPathComponent = escapeKeyPathComponent; - Typeson.unescapeKeyPathComponent = unescapeKeyPathComponent; - Typeson.getByKeyPath = getByKeyPath; - Typeson.getJSONType = getJSONType; - Typeson.JSON_TYPES = ["null", "boolean", "number", "string", "array", "object"]; - return Typeson; - }); -}); -var structuredCloning = createCommonjsModule(function(module, exports) { - !function(e, t) { - module.exports = t(); - }(commonjsGlobal, function() { - function _typeof$1(e2) { - return (_typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e3) { - return typeof e3; - } : function(e3) { - return e3 && "function" == typeof Symbol && e3.constructor === Symbol && e3 !== Symbol.prototype ? "symbol" : typeof e3; - })(e2); - } - function _classCallCheck$1(e2, t2) { - if (!(e2 instanceof t2)) throw new TypeError("Cannot call a class as a function"); - } - function _defineProperties$1(e2, t2) { - for (var r2 = 0; r2 < t2.length; r2++) { - var n2 = t2[r2]; - n2.enumerable = n2.enumerable || false, n2.configurable = true, "value" in n2 && (n2.writable = true), Object.defineProperty(e2, n2.key, n2); - } - } - function _defineProperty$1(e2, t2, r2) { - return t2 in e2 ? Object.defineProperty(e2, t2, { value: r2, enumerable: true, configurable: true, writable: true }) : e2[t2] = r2, e2; - } - function ownKeys$1(e2, t2) { - var r2 = Object.keys(e2); - if (Object.getOwnPropertySymbols) { - var n2 = Object.getOwnPropertySymbols(e2); - t2 && (n2 = n2.filter(function(t3) { - return Object.getOwnPropertyDescriptor(e2, t3).enumerable; - })), r2.push.apply(r2, n2); - } - return r2; - } - function _toConsumableArray$1(e2) { - return function _arrayWithoutHoles$1(e3) { - if (Array.isArray(e3)) return _arrayLikeToArray$1(e3); - }(e2) || function _iterableToArray$1(e3) { - if ("undefined" != typeof Symbol && Symbol.iterator in Object(e3)) return Array.from(e3); - }(e2) || function _unsupportedIterableToArray$1(e3, t2) { - if (!e3) return; - if ("string" == typeof e3) return _arrayLikeToArray$1(e3, t2); - var r2 = Object.prototype.toString.call(e3).slice(8, -1); - "Object" === r2 && e3.constructor && (r2 = e3.constructor.name); - if ("Map" === r2 || "Set" === r2) return Array.from(e3); - if ("Arguments" === r2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r2)) return _arrayLikeToArray$1(e3, t2); - }(e2) || function _nonIterableSpread$1() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function _arrayLikeToArray$1(e2, t2) { - (null == t2 || t2 > e2.length) && (t2 = e2.length); - for (var r2 = 0, n2 = new Array(t2); r2 < t2; r2++) n2[r2] = e2[r2]; - return n2; - } - function _typeof(e2) { - return (_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function _typeof2(e3) { - return typeof e3; - } : function _typeof2(e3) { - return e3 && "function" == typeof Symbol && e3.constructor === Symbol && e3 !== Symbol.prototype ? "symbol" : typeof e3; - })(e2); - } - function _classCallCheck(e2, t2) { - if (!(e2 instanceof t2)) throw new TypeError("Cannot call a class as a function"); - } - function _defineProperties(e2, t2) { - for (var r2 = 0; r2 < t2.length; r2++) { - var n2 = t2[r2]; - n2.enumerable = n2.enumerable || false, n2.configurable = true, "value" in n2 && (n2.writable = true), Object.defineProperty(e2, n2.key, n2); - } - } - function _defineProperty(e2, t2, r2) { - return t2 in e2 ? Object.defineProperty(e2, t2, { value: r2, enumerable: true, configurable: true, writable: true }) : e2[t2] = r2, e2; - } - function ownKeys(e2, t2) { - var r2 = Object.keys(e2); - if (Object.getOwnPropertySymbols) { - var n2 = Object.getOwnPropertySymbols(e2); - t2 && (n2 = n2.filter(function(t3) { - return Object.getOwnPropertyDescriptor(e2, t3).enumerable; - })), r2.push.apply(r2, n2); - } - return r2; - } - function _objectSpread2(e2) { - for (var t2 = 1; t2 < arguments.length; t2++) { - var r2 = null != arguments[t2] ? arguments[t2] : {}; - t2 % 2 ? ownKeys(Object(r2), true).forEach(function(t3) { - _defineProperty(e2, t3, r2[t3]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(r2)) : ownKeys(Object(r2)).forEach(function(t3) { - Object.defineProperty(e2, t3, Object.getOwnPropertyDescriptor(r2, t3)); - }); - } - return e2; - } - function _slicedToArray(e2, t2) { - return function _arrayWithHoles(e3) { - if (Array.isArray(e3)) return e3; - }(e2) || function _iterableToArrayLimit(e3, t3) { - if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e3))) return; - var r2 = [], n2 = true, i2 = false, o2 = void 0; - try { - for (var a2, c2 = e3[Symbol.iterator](); !(n2 = (a2 = c2.next()).done) && (r2.push(a2.value), !t3 || r2.length !== t3); n2 = true) ; - } catch (e4) { - i2 = true, o2 = e4; - } finally { - try { - n2 || null == c2.return || c2.return(); - } finally { - if (i2) throw o2; - } - } - return r2; - }(e2, t2) || _unsupportedIterableToArray(e2, t2) || function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function _toConsumableArray(e2) { - return function _arrayWithoutHoles(e3) { - if (Array.isArray(e3)) return _arrayLikeToArray(e3); - }(e2) || function _iterableToArray(e3) { - if ("undefined" != typeof Symbol && Symbol.iterator in Object(e3)) return Array.from(e3); - }(e2) || _unsupportedIterableToArray(e2) || function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - }(); - } - function _unsupportedIterableToArray(e2, t2) { - if (e2) { - if ("string" == typeof e2) return _arrayLikeToArray(e2, t2); - var r2 = Object.prototype.toString.call(e2).slice(8, -1); - return "Object" === r2 && e2.constructor && (r2 = e2.constructor.name), "Map" === r2 || "Set" === r2 ? Array.from(e2) : "Arguments" === r2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r2) ? _arrayLikeToArray(e2, t2) : void 0; - } - } - function _arrayLikeToArray(e2, t2) { - (null == t2 || t2 > e2.length) && (t2 = e2.length); - for (var r2 = 0, n2 = new Array(t2); r2 < t2; r2++) n2[r2] = e2[r2]; - return n2; - } - var e = function TypesonPromise(e2) { - _classCallCheck(this, TypesonPromise), this.p = new Promise(e2); - }; - e.__typeson__type__ = "TypesonPromise", "undefined" != typeof Symbol && (e.prototype[Symbol.toStringTag] = "TypesonPromise"), e.prototype.then = function(t2, r2) { - var n2 = this; - return new e(function(e2, i2) { - n2.p.then(function(r3) { - e2(t2 ? t2(r3) : r3); - }).catch(function(e3) { - return r2 ? r2(e3) : Promise.reject(e3); - }).then(e2, i2); - }); - }, e.prototype.catch = function(e2) { - return this.then(null, e2); - }, e.resolve = function(t2) { - return new e(function(e2) { - e2(t2); - }); - }, e.reject = function(t2) { - return new e(function(e2, r2) { - r2(t2); - }); - }, ["all", "race"].forEach(function(t2) { - e[t2] = function(r2) { - return new e(function(e2, n2) { - Promise[t2](r2.map(function(e3) { - return e3 && e3.constructor && "TypesonPromise" === e3.constructor.__typeson__type__ ? e3.p : e3; - })).then(e2, n2); - }); - }; - }); - var t = {}.toString, r = {}.hasOwnProperty, n = Object.getPrototypeOf, i = r.toString; - function isThenable(e2, t2) { - return isObject(e2) && "function" == typeof e2.then && (!t2 || "function" == typeof e2.catch); - } - function toStringTag(e2) { - return t.call(e2).slice(8, -1); - } - function hasConstructorOf(e2, t2) { - if (!e2 || "object" !== _typeof(e2)) return false; - var o2 = n(e2); - if (!o2) return null === t2; - var a2 = r.call(o2, "constructor") && o2.constructor; - return "function" != typeof a2 ? null === t2 : t2 === a2 || (null !== t2 && i.call(a2) === i.call(t2) || "function" == typeof t2 && "string" == typeof a2.__typeson__type__ && a2.__typeson__type__ === t2.__typeson__type__); - } - function isPlainObject(e2) { - return !(!e2 || "Object" !== toStringTag(e2)) && (!n(e2) || hasConstructorOf(e2, Object)); - } - function isObject(e2) { - return e2 && "object" === _typeof(e2); - } - function escapeKeyPathComponent(e2) { - return e2.replace(/~/g, "~0").replace(/\./g, "~1"); - } - function unescapeKeyPathComponent(e2) { - return e2.replace(/~1/g, ".").replace(/~0/g, "~"); - } - function getByKeyPath(e2, t2) { - if ("" === t2) return e2; - var r2 = t2.indexOf("."); - if (r2 > -1) { - var n2 = e2[unescapeKeyPathComponent(t2.slice(0, r2))]; - return void 0 === n2 ? void 0 : getByKeyPath(n2, t2.slice(r2 + 1)); - } - return e2[unescapeKeyPathComponent(t2)]; - } - function setAtKeyPath(e2, t2, r2) { - if ("" === t2) return r2; - var n2 = t2.indexOf("."); - return n2 > -1 ? setAtKeyPath(e2[unescapeKeyPathComponent(t2.slice(0, n2))], t2.slice(n2 + 1), r2) : (e2[unescapeKeyPathComponent(t2)] = r2, e2); - } - function _await(e2, t2, r2) { - return r2 ? t2 ? t2(e2) : e2 : (e2 && e2.then || (e2 = Promise.resolve(e2)), t2 ? e2.then(t2) : e2); - } - var o = Object.keys, a = Array.isArray, c = {}.hasOwnProperty, u = ["type", "replaced", "iterateIn", "iterateUnsetNumeric"]; - function _async(e2) { - return function() { - for (var t2 = [], r2 = 0; r2 < arguments.length; r2++) t2[r2] = arguments[r2]; - try { - return Promise.resolve(e2.apply(this, t2)); - } catch (e3) { - return Promise.reject(e3); - } - }; - } - function nestedPathsFirst(e2, t2) { - if ("" === e2.keypath) return -1; - var r2 = e2.keypath.match(/\./g) || 0, n2 = t2.keypath.match(/\./g) || 0; - return r2 && (r2 = r2.length), n2 && (n2 = n2.length), r2 > n2 ? -1 : r2 < n2 ? 1 : e2.keypath < t2.keypath ? -1 : e2.keypath > t2.keypath; - } - var s = function() { - function Typeson(e2) { - _classCallCheck(this, Typeson), this.options = e2, this.plainObjectReplacers = [], this.nonplainObjectReplacers = [], this.revivers = {}, this.types = {}; - } - return function _createClass(e2, t2, r2) { - return t2 && _defineProperties(e2.prototype, t2), r2 && _defineProperties(e2, r2), e2; - }(Typeson, [{ key: "stringify", value: function stringify(e2, t2, r2, n2) { - n2 = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), n2), {}, { stringification: true }); - var i2 = this.encapsulate(e2, null, n2); - return a(i2) ? JSON.stringify(i2[0], t2, r2) : i2.then(function(e3) { - return JSON.stringify(e3, t2, r2); - }); - } }, { key: "stringifySync", value: function stringifySync(e2, t2, r2, n2) { - return this.stringify(e2, t2, r2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, n2), {}, { sync: true })); - } }, { key: "stringifyAsync", value: function stringifyAsync(e2, t2, r2, n2) { - return this.stringify(e2, t2, r2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, n2), {}, { sync: false })); - } }, { key: "parse", value: function parse(e2, t2, r2) { - return r2 = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), r2), {}, { parse: true }), this.revive(JSON.parse(e2, t2), r2); - } }, { key: "parseSync", value: function parseSync(e2, t2, r2) { - return this.parse(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: true })); - } }, { key: "parseAsync", value: function parseAsync(e2, t2, r2) { - return this.parse(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: false })); - } }, { key: "specialTypeNames", value: function specialTypeNames(e2, t2) { - var r2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; - return r2.returnTypeNames = true, this.encapsulate(e2, t2, r2); - } }, { key: "rootTypeName", value: function rootTypeName(e2, t2) { - var r2 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; - return r2.iterateNone = true, this.encapsulate(e2, t2, r2); - } }, { key: "encapsulate", value: function encapsulate(t2, r2, n2) { - var i2 = _async(function(t3, r3) { - return _await(Promise.all(r3.map(function(e2) { - return e2[1].p; - })), function(n3) { - return _await(Promise.all(n3.map(_async(function(n4) { - var o2 = false, a2 = [], c2 = _slicedToArray(r3.splice(0, 1), 1), u2 = _slicedToArray(c2[0], 7), s3 = u2[0], f3 = u2[2], l3 = u2[3], p3 = u2[4], y3 = u2[5], v3 = u2[6], b3 = _encapsulate(s3, n4, f3, l3, a2, true, v3), d3 = hasConstructorOf(b3, e); - return function _invoke(e2, t4) { - var r4 = e2(); - return r4 && r4.then ? r4.then(t4) : t4(r4); - }(function() { - if (s3 && d3) return _await(b3.p, function(e2) { - return p3[y3] = e2, o2 = true, i2(t3, a2); - }); - }, function(e2) { - return o2 ? e2 : (s3 ? p3[y3] = b3 : t3 = d3 ? b3.p : b3, i2(t3, a2)); - }); - }))), function() { - return t3; - }); - }); - }), s2 = (n2 = _objectSpread2(_objectSpread2({ sync: true }, this.options), n2)).sync, f2 = this, l2 = {}, p2 = [], y2 = [], v2 = [], b2 = !("cyclic" in n2) || n2.cyclic, d2 = n2.encapsulateObserver, h2 = _encapsulate("", t2, b2, r2 || {}, v2); - function finish(e2) { - var t3 = Object.values(l2); - if (n2.iterateNone) return t3.length ? t3[0] : Typeson.getJSONType(e2); - if (t3.length) { - if (n2.returnTypeNames) return _toConsumableArray(new Set(t3)); - e2 && isPlainObject(e2) && !c.call(e2, "$types") ? e2.$types = l2 : e2 = { $: e2, $types: { $: l2 } }; - } else isObject(e2) && c.call(e2, "$types") && (e2 = { $: e2, $types: true }); - return !n2.returnTypeNames && e2; - } - function _adaptBuiltinStateObjectProperties(e2, t3, r3) { - Object.assign(e2, t3); - var n3 = u.map(function(t4) { - var r4 = e2[t4]; - return delete e2[t4], r4; - }); - r3(), u.forEach(function(t4, r4) { - e2[t4] = n3[r4]; - }); - } - function _encapsulate(t3, r3, i3, u2, s3, v3, b3) { - var h3, g2 = {}, m2 = _typeof(r3), O2 = d2 ? function(n3) { - var o2 = b3 || u2.type || Typeson.getJSONType(r3); - d2(Object.assign(n3 || g2, { keypath: t3, value: r3, cyclic: i3, stateObj: u2, promisesData: s3, resolvingTypesonPromise: v3, awaitingTypesonPromise: hasConstructorOf(r3, e) }, { type: o2 })); - } : null; - if (["string", "boolean", "number", "undefined"].includes(m2)) return void 0 === r3 || Number.isNaN(r3) || r3 === Number.NEGATIVE_INFINITY || r3 === Number.POSITIVE_INFINITY ? (h3 = u2.replaced ? r3 : replace(t3, r3, u2, s3, false, v3, O2)) !== r3 && (g2 = { replaced: h3 }) : h3 = r3, O2 && O2(), h3; - if (null === r3) return O2 && O2(), r3; - if (i3 && !u2.iterateIn && !u2.iterateUnsetNumeric && r3 && "object" === _typeof(r3)) { - var _2 = p2.indexOf(r3); - if (!(_2 < 0)) return l2[t3] = "#", O2 && O2({ cyclicKeypath: y2[_2] }), "#" + y2[_2]; - true === i3 && (p2.push(r3), y2.push(t3)); - } - var j2, S2 = isPlainObject(r3), T2 = a(r3), w2 = (S2 || T2) && (!f2.plainObjectReplacers.length || u2.replaced) || u2.iterateIn ? r3 : replace(t3, r3, u2, s3, S2 || T2, null, O2); - if (w2 !== r3 ? (h3 = w2, g2 = { replaced: w2 }) : "" === t3 && hasConstructorOf(r3, e) ? (s3.push([t3, r3, i3, u2, void 0, void 0, u2.type]), h3 = r3) : T2 && "object" !== u2.iterateIn || "array" === u2.iterateIn ? (j2 = new Array(r3.length), g2 = { clone: j2 }) : (["function", "symbol"].includes(_typeof(r3)) || "toJSON" in r3 || hasConstructorOf(r3, e) || hasConstructorOf(r3, Promise) || hasConstructorOf(r3, ArrayBuffer)) && !S2 && "object" !== u2.iterateIn ? h3 = r3 : (j2 = {}, u2.addLength && (j2.length = r3.length), g2 = { clone: j2 }), O2 && O2(), n2.iterateNone) return j2 || h3; - if (!j2) return h3; - if (u2.iterateIn) { - var A2 = function _loop(n3) { - var o2 = { ownKeys: c.call(r3, n3) }; - _adaptBuiltinStateObjectProperties(u2, o2, function() { - var o3 = t3 + (t3 ? "." : "") + escapeKeyPathComponent(n3), a2 = _encapsulate(o3, r3[n3], Boolean(i3), u2, s3, v3); - hasConstructorOf(a2, e) ? s3.push([o3, a2, Boolean(i3), u2, j2, n3, u2.type]) : void 0 !== a2 && (j2[n3] = a2); - }); - }; - for (var P2 in r3) A2(P2); - O2 && O2({ endIterateIn: true, end: true }); - } else o(r3).forEach(function(n3) { - var o2 = t3 + (t3 ? "." : "") + escapeKeyPathComponent(n3); - _adaptBuiltinStateObjectProperties(u2, { ownKeys: true }, function() { - var t4 = _encapsulate(o2, r3[n3], Boolean(i3), u2, s3, v3); - hasConstructorOf(t4, e) ? s3.push([o2, t4, Boolean(i3), u2, j2, n3, u2.type]) : void 0 !== t4 && (j2[n3] = t4); - }); - }), O2 && O2({ endIterateOwn: true, end: true }); - if (u2.iterateUnsetNumeric) { - for (var I2 = r3.length, C2 = function _loop2(n3) { - if (!(n3 in r3)) { - var o2 = t3 + (t3 ? "." : "") + n3; - _adaptBuiltinStateObjectProperties(u2, { ownKeys: false }, function() { - var t4 = _encapsulate(o2, void 0, Boolean(i3), u2, s3, v3); - hasConstructorOf(t4, e) ? s3.push([o2, t4, Boolean(i3), u2, j2, n3, u2.type]) : void 0 !== t4 && (j2[n3] = t4); - }); - } - }, N2 = 0; N2 < I2; N2++) C2(N2); - O2 && O2({ endIterateUnsetNumeric: true, end: true }); - } - return j2; - } - function replace(e2, t3, r3, n3, i3, o2, a2) { - for (var c2 = i3 ? f2.plainObjectReplacers : f2.nonplainObjectReplacers, u2 = c2.length; u2--; ) { - var p3 = c2[u2]; - if (p3.test(t3, r3)) { - var y3 = p3.type; - if (f2.revivers[y3]) { - var v3 = l2[e2]; - l2[e2] = v3 ? [y3].concat(v3) : y3; - } - return Object.assign(r3, { type: y3, replaced: true }), !s2 && p3.replaceAsync || p3.replace ? (a2 && a2({ replacing: true }), _encapsulate(e2, p3[s2 || !p3.replaceAsync ? "replace" : "replaceAsync"](t3, r3), b2 && "readonly", r3, n3, o2, y3)) : (a2 && a2({ typeDetected: true }), _encapsulate(e2, t3, b2 && "readonly", r3, n3, o2, y3)); - } - } - return t3; - } - return v2.length ? s2 && n2.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : Promise.resolve(i2(h2, v2)).then(finish) : !s2 && n2.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : n2.stringification && s2 ? [finish(h2)] : s2 ? finish(h2) : Promise.resolve(finish(h2)); - } }, { key: "encapsulateSync", value: function encapsulateSync(e2, t2, r2) { - return this.encapsulate(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: true })); - } }, { key: "encapsulateAsync", value: function encapsulateAsync(e2, t2, r2) { - return this.encapsulate(e2, t2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, r2), {}, { sync: false })); - } }, { key: "revive", value: function revive(t2, r2) { - var n2 = t2 && t2.$types; - if (!n2) return t2; - if (true === n2) return t2.$; - var i2 = (r2 = _objectSpread2(_objectSpread2({ sync: true }, this.options), r2)).sync, c2 = [], u2 = {}, s2 = true; - n2.$ && isPlainObject(n2.$) && (t2 = t2.$, n2 = n2.$, s2 = false); - var l2 = this; - function executeReviver(e2, t3) { - var r3 = _slicedToArray(l2.revivers[e2] || [], 1)[0]; - if (!r3) throw new Error("Unregistered type: " + e2); - return i2 && !("revive" in r3) ? t3 : r3[i2 && r3.revive ? "revive" : !i2 && r3.reviveAsync ? "reviveAsync" : "revive"](t3, u2); - } - var p2 = []; - function checkUndefined(e2) { - return hasConstructorOf(e2, f) ? void 0 : e2; - } - var y2, v2 = function revivePlainObjects() { - var r3 = []; - if (Object.entries(n2).forEach(function(e2) { - var t3 = _slicedToArray(e2, 2), i3 = t3[0], o2 = t3[1]; - "#" !== o2 && [].concat(o2).forEach(function(e3) { - _slicedToArray(l2.revivers[e3] || [null, {}], 2)[1].plain && (r3.push({ keypath: i3, type: e3 }), delete n2[i3]); - }); - }), r3.length) return r3.sort(nestedPathsFirst).reduce(function reducer(r4, n3) { - var i3 = n3.keypath, o2 = n3.type; - if (isThenable(r4)) return r4.then(function(e2) { - return reducer(e2, { keypath: i3, type: o2 }); - }); - var a2 = getByKeyPath(t2, i3); - if (hasConstructorOf(a2 = executeReviver(o2, a2), e)) return a2.then(function(e2) { - var r5 = setAtKeyPath(t2, i3, e2); - r5 === e2 && (t2 = r5); - }); - var c3 = setAtKeyPath(t2, i3, a2); - c3 === a2 && (t2 = c3); - }, void 0); - }(); - return hasConstructorOf(v2, e) ? y2 = v2.then(function() { - return t2; - }) : (y2 = function _revive(t3, r3, i3, u3, l3) { - if (!s2 || "$types" !== t3) { - var y3 = n2[t3], v3 = a(r3); - if (v3 || isPlainObject(r3)) { - var b2 = v3 ? new Array(r3.length) : {}; - for (o(r3).forEach(function(n3) { - var o2 = _revive(t3 + (t3 ? "." : "") + escapeKeyPathComponent(n3), r3[n3], i3 || b2, b2, n3), a2 = function set(e2) { - return hasConstructorOf(e2, f) ? b2[n3] = void 0 : void 0 !== e2 && (b2[n3] = e2), e2; - }; - hasConstructorOf(o2, e) ? p2.push(o2.then(function(e2) { - return a2(e2); - })) : a2(o2); - }), r3 = b2; c2.length; ) { - var d2 = _slicedToArray(c2[0], 4), h2 = d2[0], g2 = d2[1], m2 = d2[2], O2 = d2[3], _2 = getByKeyPath(h2, g2); - if (void 0 === _2) break; - m2[O2] = _2, c2.splice(0, 1); - } - } - if (!y3) return r3; - if ("#" === y3) { - var j2 = getByKeyPath(i3, r3.slice(1)); - return void 0 === j2 && c2.push([i3, r3.slice(1), u3, l3]), j2; - } - return [].concat(y3).reduce(function reducer(t4, r4) { - return hasConstructorOf(t4, e) ? t4.then(function(e2) { - return reducer(e2, r4); - }) : executeReviver(r4, t4); - }, r3); - } - }("", t2, null), p2.length && (y2 = e.resolve(y2).then(function(t3) { - return e.all([t3].concat(p2)); - }).then(function(e2) { - return _slicedToArray(e2, 1)[0]; - }))), isThenable(y2) ? i2 && r2.throwOnBadSyncType ? function() { - throw new TypeError("Sync method requested but async result obtained"); - }() : hasConstructorOf(y2, e) ? y2.p.then(checkUndefined) : y2 : !i2 && r2.throwOnBadSyncType ? function() { - throw new TypeError("Async method requested but sync result obtained"); - }() : i2 ? checkUndefined(y2) : Promise.resolve(checkUndefined(y2)); - } }, { key: "reviveSync", value: function reviveSync(e2, t2) { - return this.revive(e2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, t2), {}, { sync: true })); - } }, { key: "reviveAsync", value: function reviveAsync(e2, t2) { - return this.revive(e2, _objectSpread2(_objectSpread2({ throwOnBadSyncType: true }, t2), {}, { sync: false })); - } }, { key: "register", value: function register(e2, t2) { - return t2 = t2 || {}, [].concat(e2).forEach(function R(e3) { - var r2 = this; - if (a(e3)) return e3.map(function(e4) { - return R.call(r2, e4); - }); - e3 && o(e3).forEach(function(r3) { - if ("#" === r3) throw new TypeError("# cannot be used as a type name as it is reserved for cyclic objects"); - if (Typeson.JSON_TYPES.includes(r3)) throw new TypeError("Plain JSON object types are reserved as type names"); - var n2 = e3[r3], i2 = n2 && n2.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers, o2 = i2.filter(function(e4) { - return e4.type === r3; - }); - if (o2.length && (i2.splice(i2.indexOf(o2[0]), 1), delete this.revivers[r3], delete this.types[r3]), "function" == typeof n2) { - var c2 = n2; - n2 = { test: function test(e4) { - return e4 && e4.constructor === c2; - }, replace: function replace(e4) { - return _objectSpread2({}, e4); - }, revive: function revive(e4) { - return Object.assign(Object.create(c2.prototype), e4); - } }; - } else if (a(n2)) { - var u2 = _slicedToArray(n2, 3); - n2 = { test: u2[0], replace: u2[1], revive: u2[2] }; - } - if (n2 && n2.test) { - var s2 = { type: r3, test: n2.test.bind(n2) }; - n2.replace && (s2.replace = n2.replace.bind(n2)), n2.replaceAsync && (s2.replaceAsync = n2.replaceAsync.bind(n2)); - var f2 = "number" == typeof t2.fallback ? t2.fallback : t2.fallback ? 0 : Number.POSITIVE_INFINITY; - if (n2.testPlainObjects ? this.plainObjectReplacers.splice(f2, 0, s2) : this.nonplainObjectReplacers.splice(f2, 0, s2), n2.revive || n2.reviveAsync) { - var l2 = {}; - n2.revive && (l2.revive = n2.revive.bind(n2)), n2.reviveAsync && (l2.reviveAsync = n2.reviveAsync.bind(n2)), this.revivers[r3] = [l2, { plain: n2.testPlainObjects }]; - } - this.types[r3] = n2; - } - }, this); - }, this), this; - } }]), Typeson; - }(), f = function Undefined() { - _classCallCheck(this, Undefined); - }; - f.__typeson__type__ = "TypesonUndefined", s.Undefined = f, s.Promise = e, s.isThenable = isThenable, s.toStringTag = toStringTag, s.hasConstructorOf = hasConstructorOf, s.isObject = isObject, s.isPlainObject = isPlainObject, s.isUserObject = function isUserObject(e2) { - if (!e2 || "Object" !== toStringTag(e2)) return false; - var t2 = n(e2); - return !t2 || (hasConstructorOf(e2, Object) || isUserObject(t2)); - }, s.escapeKeyPathComponent = escapeKeyPathComponent, s.unescapeKeyPathComponent = unescapeKeyPathComponent, s.getByKeyPath = getByKeyPath, s.getJSONType = function getJSONType(e2) { - return null === e2 ? "null" : Array.isArray(e2) ? "array" : _typeof(e2); - }, s.JSON_TYPES = ["null", "boolean", "number", "string", "array", "object"]; - for (var l = { userObject: { test: function test(e2, t2) { - return s.isUserObject(e2); - }, replace: function replace(e2) { - return function _objectSpread2$1(e3) { - for (var t2 = 1; t2 < arguments.length; t2++) { - var r2 = null != arguments[t2] ? arguments[t2] : {}; - t2 % 2 ? ownKeys$1(Object(r2), true).forEach(function(t3) { - _defineProperty$1(e3, t3, r2[t3]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e3, Object.getOwnPropertyDescriptors(r2)) : ownKeys$1(Object(r2)).forEach(function(t3) { - Object.defineProperty(e3, t3, Object.getOwnPropertyDescriptor(r2, t3)); - }); - } - return e3; - }({}, e2); - }, revive: function revive(e2) { - return e2; - } } }, p = [{ arrayNonindexKeys: { testPlainObjects: true, test: function test(e2, t2) { - return !!Array.isArray(e2) && (Object.keys(e2).some(function(e3) { - return String(Number.parseInt(e3)) !== e3; - }) && (t2.iterateIn = "object", t2.addLength = true), true); - }, replace: function replace(e2, t2) { - return t2.iterateUnsetNumeric = true, e2; - }, revive: function revive(e2) { - if (Array.isArray(e2)) return e2; - var t2 = []; - return Object.keys(e2).forEach(function(r2) { - var n2 = e2[r2]; - t2[r2] = n2; - }), t2; - } } }, { sparseUndefined: { test: function test(e2, t2) { - return void 0 === e2 && false === t2.ownKeys; - }, replace: function replace(e2) { - return 0; - }, revive: function revive(e2) { - } } }], y = { undef: { test: function test(e2, t2) { - return void 0 === e2 && (t2.ownKeys || !("ownKeys" in t2)); - }, replace: function replace(e2) { - return 0; - }, revive: function revive(e2) { - return new s.Undefined(); - } } }, v = { StringObject: { test: function test(e2) { - return "String" === s.toStringTag(e2) && "object" === _typeof$1(e2); - }, replace: function replace(e2) { - return String(e2); - }, revive: function revive(e2) { - return new String(e2); - } }, BooleanObject: { test: function test(e2) { - return "Boolean" === s.toStringTag(e2) && "object" === _typeof$1(e2); - }, replace: function replace(e2) { - return Boolean(e2); - }, revive: function revive(e2) { - return new Boolean(e2); - } }, NumberObject: { test: function test(e2) { - return "Number" === s.toStringTag(e2) && "object" === _typeof$1(e2); - }, replace: function replace(e2) { - return Number(e2); - }, revive: function revive(e2) { - return new Number(e2); - } } }, b = [{ nan: { test: function test(e2) { - return Number.isNaN(e2); - }, replace: function replace(e2) { - return "NaN"; - }, revive: function revive(e2) { - return Number.NaN; - } } }, { infinity: { test: function test(e2) { - return e2 === Number.POSITIVE_INFINITY; - }, replace: function replace(e2) { - return "Infinity"; - }, revive: function revive(e2) { - return Number.POSITIVE_INFINITY; - } } }, { negativeInfinity: { test: function test(e2) { - return e2 === Number.NEGATIVE_INFINITY; - }, replace: function replace(e2) { - return "-Infinity"; - }, revive: function revive(e2) { - return Number.NEGATIVE_INFINITY; - } } }], d = { date: { test: function test(e2) { - return "Date" === s.toStringTag(e2); - }, replace: function replace(e2) { - var t2 = e2.getTime(); - return Number.isNaN(t2) ? "NaN" : t2; - }, revive: function revive(e2) { - return "NaN" === e2 ? new Date(Number.NaN) : new Date(e2); - } } }, h = { regexp: { test: function test(e2) { - return "RegExp" === s.toStringTag(e2); - }, replace: function replace(e2) { - return { source: e2.source, flags: (e2.global ? "g" : "") + (e2.ignoreCase ? "i" : "") + (e2.multiline ? "m" : "") + (e2.sticky ? "y" : "") + (e2.unicode ? "u" : "") }; - }, revive: function revive(e2) { - var t2 = e2.source, r2 = e2.flags; - return new RegExp(t2, r2); - } } }, g = { map: { test: function test(e2) { - return "Map" === s.toStringTag(e2); - }, replace: function replace(e2) { - return _toConsumableArray$1(e2.entries()); - }, revive: function revive(e2) { - return new Map(e2); - } } }, m = { set: { test: function test(e2) { - return "Set" === s.toStringTag(e2); - }, replace: function replace(e2) { - return _toConsumableArray$1(e2.values()); - }, revive: function revive(e2) { - return new Set(e2); - } } }, O = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", _ = new Uint8Array(256), j = 0; j < O.length; j++) _[O.charCodeAt(j)] = j; - var S = function encode3(e2, t2, r2) { - null == r2 && (r2 = e2.byteLength); - for (var n2 = new Uint8Array(e2, t2 || 0, r2), i2 = n2.length, o2 = "", a2 = 0; a2 < i2; a2 += 3) o2 += O[n2[a2] >> 2], o2 += O[(3 & n2[a2]) << 4 | n2[a2 + 1] >> 4], o2 += O[(15 & n2[a2 + 1]) << 2 | n2[a2 + 2] >> 6], o2 += O[63 & n2[a2 + 2]]; - return i2 % 3 == 2 ? o2 = o2.slice(0, -1) + "=" : i2 % 3 == 1 && (o2 = o2.slice(0, -2) + "=="), o2; - }, T = function decode3(e2) { - var t2, r2, n2, i2, o2 = e2.length, a2 = 0.75 * e2.length, c2 = 0; - "=" === e2[e2.length - 1] && (a2--, "=" === e2[e2.length - 2] && a2--); - for (var u2 = new ArrayBuffer(a2), s2 = new Uint8Array(u2), f2 = 0; f2 < o2; f2 += 4) t2 = _[e2.charCodeAt(f2)], r2 = _[e2.charCodeAt(f2 + 1)], n2 = _[e2.charCodeAt(f2 + 2)], i2 = _[e2.charCodeAt(f2 + 3)], s2[c2++] = t2 << 2 | r2 >> 4, s2[c2++] = (15 & r2) << 4 | n2 >> 2, s2[c2++] = (3 & n2) << 6 | 63 & i2; - return u2; - }, w = { arraybuffer: { test: function test(e2) { - return "ArrayBuffer" === s.toStringTag(e2); - }, replace: function replace(e2, t2) { - t2.buffers || (t2.buffers = []); - var r2 = t2.buffers.indexOf(e2); - return r2 > -1 ? { index: r2 } : (t2.buffers.push(e2), S(e2)); - }, revive: function revive(e2, t2) { - if (t2.buffers || (t2.buffers = []), "object" === _typeof$1(e2)) return t2.buffers[e2.index]; - var r2 = T(e2); - return t2.buffers.push(r2), r2; - } } }, A = "undefined" == typeof self ? commonjsGlobal : self, P = {}; - ["Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "Float32Array", "Float64Array"].forEach(function(e2) { - var t2 = e2, r2 = A[t2]; - r2 && (P[e2.toLowerCase()] = { test: function test(e3) { - return s.toStringTag(e3) === t2; - }, replace: function replace(e3, t3) { - var r3 = e3.buffer, n2 = e3.byteOffset, i2 = e3.length; - t3.buffers || (t3.buffers = []); - var o2 = t3.buffers.indexOf(r3); - return o2 > -1 ? { index: o2, byteOffset: n2, length: i2 } : (t3.buffers.push(r3), { encoded: S(r3), byteOffset: n2, length: i2 }); - }, revive: function revive(e3, t3) { - t3.buffers || (t3.buffers = []); - var n2, i2 = e3.byteOffset, o2 = e3.length, a2 = e3.encoded, c2 = e3.index; - return "index" in e3 ? n2 = t3.buffers[c2] : (n2 = T(a2), t3.buffers.push(n2)), new r2(n2, i2, o2); - } }); - }); - var I = { dataview: { test: function test(e2) { - return "DataView" === s.toStringTag(e2); - }, replace: function replace(e2, t2) { - var r2 = e2.buffer, n2 = e2.byteOffset, i2 = e2.byteLength; - t2.buffers || (t2.buffers = []); - var o2 = t2.buffers.indexOf(r2); - return o2 > -1 ? { index: o2, byteOffset: n2, byteLength: i2 } : (t2.buffers.push(r2), { encoded: S(r2), byteOffset: n2, byteLength: i2 }); - }, revive: function revive(e2, t2) { - t2.buffers || (t2.buffers = []); - var r2, n2 = e2.byteOffset, i2 = e2.byteLength, o2 = e2.encoded, a2 = e2.index; - return "index" in e2 ? r2 = t2.buffers[a2] : (r2 = T(o2), t2.buffers.push(r2)), new DataView(r2, n2, i2); - } } }, C = { IntlCollator: { test: function test(e2) { - return s.hasConstructorOf(e2, Intl.Collator); - }, replace: function replace(e2) { - return e2.resolvedOptions(); - }, revive: function revive(e2) { - return new Intl.Collator(e2.locale, e2); - } }, IntlDateTimeFormat: { test: function test(e2) { - return s.hasConstructorOf(e2, Intl.DateTimeFormat); - }, replace: function replace(e2) { - return e2.resolvedOptions(); - }, revive: function revive(e2) { - return new Intl.DateTimeFormat(e2.locale, e2); - } }, IntlNumberFormat: { test: function test(e2) { - return s.hasConstructorOf(e2, Intl.NumberFormat); - }, replace: function replace(e2) { - return e2.resolvedOptions(); - }, revive: function revive(e2) { - return new Intl.NumberFormat(e2.locale, e2); - } } }; - function string2arraybuffer(e2) { - for (var t2 = new Uint8Array(e2.length), r2 = 0; r2 < e2.length; r2++) t2[r2] = e2.charCodeAt(r2); - return t2.buffer; - } - var N = { file: { test: function test(e2) { - return "File" === s.toStringTag(e2); - }, replace: function replace(e2) { - var t2 = new XMLHttpRequest(); - if (t2.overrideMimeType("text/plain; charset=x-user-defined"), t2.open("GET", URL.createObjectURL(e2), false), t2.send(), 200 !== t2.status && 0 !== t2.status) throw new Error("Bad File access: " + t2.status); - return { type: e2.type, stringContents: t2.responseText, name: e2.name, lastModified: e2.lastModified }; - }, revive: function revive(e2) { - var t2 = e2.name, r2 = e2.type, n2 = e2.stringContents, i2 = e2.lastModified; - return new File([string2arraybuffer(n2)], t2, { type: r2, lastModified: i2 }); - }, replaceAsync: function replaceAsync(e2) { - return new s.Promise(function(t2, r2) { - var n2 = new FileReader(); - n2.addEventListener("load", function() { - t2({ type: e2.type, stringContents: n2.result, name: e2.name, lastModified: e2.lastModified }); - }), n2.addEventListener("error", function() { - r2(n2.error); - }), n2.readAsBinaryString(e2); - }); - } } }, k = { bigint: { test: function test(e2) { - return "bigint" == typeof e2; - }, replace: function replace(e2) { - return String(e2); - }, revive: function revive(e2) { - return BigInt(e2); - } } }, E = { bigintObject: { test: function test(e2) { - return "object" === _typeof$1(e2) && s.hasConstructorOf(e2, BigInt); - }, replace: function replace(e2) { - return String(e2); - }, revive: function revive(e2) { - return new Object(BigInt(e2)); - } } }, B = { cryptokey: { test: function test(e2) { - return "CryptoKey" === s.toStringTag(e2) && e2.extractable; - }, replaceAsync: function replaceAsync(e2) { - return new s.Promise(function(t2, r2) { - crypto.subtle.exportKey("jwk", e2).catch(function(e3) { - r2(e3); - }).then(function(r3) { - t2({ jwk: r3, algorithm: e2.algorithm, usages: e2.usages }); - }); - }); - }, revive: function revive(e2) { - var t2 = e2.jwk, r2 = e2.algorithm, n2 = e2.usages; - return crypto.subtle.importKey("jwk", t2, r2, true, n2); - } } }; - return [l, y, p, v, b, d, h, { imagedata: { test: function test(e2) { - return "ImageData" === s.toStringTag(e2); - }, replace: function replace(e2) { - return { array: _toConsumableArray$1(e2.data), width: e2.width, height: e2.height }; - }, revive: function revive(e2) { - return new ImageData(new Uint8ClampedArray(e2.array), e2.width, e2.height); - } } }, { imagebitmap: { test: function test(e2) { - return "ImageBitmap" === s.toStringTag(e2) || e2 && e2.dataset && "ImageBitmap" === e2.dataset.toStringTag; - }, replace: function replace(e2) { - var t2 = document.createElement("canvas"); - return t2.getContext("2d").drawImage(e2, 0, 0), t2.toDataURL(); - }, revive: function revive(e2) { - var t2 = document.createElement("canvas"), r2 = t2.getContext("2d"), n2 = document.createElement("img"); - return n2.addEventListener("load", function() { - r2.drawImage(n2, 0, 0); - }), n2.src = e2, t2; - }, reviveAsync: function reviveAsync(e2) { - var t2 = document.createElement("canvas"), r2 = t2.getContext("2d"), n2 = document.createElement("img"); - return n2.addEventListener("load", function() { - r2.drawImage(n2, 0, 0); - }), n2.src = e2, createImageBitmap(t2); - } } }, N, { file: N.file, filelist: { test: function test(e2) { - return "FileList" === s.toStringTag(e2); - }, replace: function replace(e2) { - for (var t2 = [], r2 = 0; r2 < e2.length; r2++) t2[r2] = e2.item(r2); - return t2; - }, revive: function revive(e2) { - return new (function() { - function FileList() { - _classCallCheck$1(this, FileList), this._files = arguments[0], this.length = this._files.length; - } - return function _createClass$1(e3, t2, r2) { - return t2 && _defineProperties$1(e3.prototype, t2), r2 && _defineProperties$1(e3, r2), e3; - }(FileList, [{ key: "item", value: function item(e3) { - return this._files[e3]; - } }, { key: Symbol.toStringTag, get: function get() { - return "FileList"; - } }]), FileList; - }())(e2); - } } }, { blob: { test: function test(e2) { - return "Blob" === s.toStringTag(e2); - }, replace: function replace(e2) { - var t2 = new XMLHttpRequest(); - if (t2.overrideMimeType("text/plain; charset=x-user-defined"), t2.open("GET", URL.createObjectURL(e2), false), t2.send(), 200 !== t2.status && 0 !== t2.status) throw new Error("Bad Blob access: " + t2.status); - return { type: e2.type, stringContents: t2.responseText }; - }, revive: function revive(e2) { - var t2 = e2.type, r2 = e2.stringContents; - return new Blob([string2arraybuffer(r2)], { type: t2 }); - }, replaceAsync: function replaceAsync(e2) { - return new s.Promise(function(t2, r2) { - var n2 = new FileReader(); - n2.addEventListener("load", function() { - t2({ type: e2.type, stringContents: n2.result }); - }), n2.addEventListener("error", function() { - r2(n2.error); - }), n2.readAsBinaryString(e2); - }); - } } }].concat("function" == typeof Map ? g : [], "function" == typeof Set ? m : [], "function" == typeof ArrayBuffer ? w : [], "function" == typeof Uint8Array ? P : [], "function" == typeof DataView ? I : [], "undefined" != typeof Intl ? C : [], "undefined" != typeof crypto ? B : [], "undefined" != typeof BigInt ? [k, E] : []); - }); -}); -var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -var lookup = new Uint8Array(256); -for (i = 0; i < chars.length; i++) { - lookup[chars.codePointAt(i)] = i; -} -var i; -var encode = function encode2(arraybuffer, byteOffset, lngth) { - if (lngth === null || lngth === void 0) { - lngth = arraybuffer.byteLength; - } - var bytes = new Uint8Array( - arraybuffer, - byteOffset || 0, - // Default needed for Safari - lngth - ); - var len = bytes.length; - var base64 = ""; - for (var _i = 0; _i < len; _i += 3) { - base64 += chars[bytes[_i] >> 2]; - base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4]; - base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6]; - base64 += chars[bytes[_i + 2] & 63]; - } - if (len % 3 === 2) { - base64 = base64.slice(0, -1) + "="; - } else if (len % 3 === 1) { - base64 = base64.slice(0, -2) + "=="; - } - return base64; -}; -var decode = function decode2(base64) { - var len = base64.length; - var bufferLength = base64.length * 0.75; - var p = 0; - var encoded1, encoded2, encoded3, encoded4; - if (base64[base64.length - 1] === "=") { - bufferLength--; - if (base64[base64.length - 2] === "=") { - bufferLength--; - } - } - var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer); - for (var _i2 = 0; _i2 < len; _i2 += 4) { - encoded1 = lookup[base64.codePointAt(_i2)]; - encoded2 = lookup[base64.codePointAt(_i2 + 1)]; - encoded3 = lookup[base64.codePointAt(_i2 + 2)]; - encoded4 = lookup[base64.codePointAt(_i2 + 3)]; - bytes[p++] = encoded1 << 2 | encoded2 >> 4; - bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; - bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; - } - return arraybuffer; -}; -var _global = typeof self === "undefined" ? global : self; -var exportObj = {}; -[ - "Int8Array", - "Uint8Array", - "Uint8ClampedArray", - "Int16Array", - "Uint16Array", - "Int32Array", - "Uint32Array", - "Float32Array", - "Float64Array" -].forEach(function(typeName) { - var arrType = typeName; - var TypedArray = _global[arrType]; - if (TypedArray) { - exportObj[typeName.toLowerCase() + "2"] = { - test: function(x) { - return typeson.toStringTag(x) === arrType; - }, - replace: function(_a) { - var buffer = _a.buffer, byteOffset = _a.byteOffset, length = _a.length; - return { - buffer, - byteOffset, - length - }; - }, - revive: function(b64Obj) { - var buffer = b64Obj.buffer, byteOffset = b64Obj.byteOffset, length = b64Obj.length; - return new TypedArray(buffer, byteOffset, length); - } - }; - } -}); -var arrayBuffer = { - arraybuffer: { - test: function(x) { - return typeson.toStringTag(x) === "ArrayBuffer"; - }, - replace: function(b) { - return encode(b, 0, b.byteLength); - }, - revive: function(b64) { - var buffer = decode(b64); - return buffer; - } - } -}; -var TSON = new typeson().register(structuredCloning); -var readBlobsSynchronously = "FileReaderSync" in self; -var blobsToAwait = []; -var blobsToAwaitPos = 0; -TSON.register([ - arrayBuffer, - exportObj, - { - blob2: { - test: function(x) { - return typeson.toStringTag(x) === "Blob"; - }, - replace: function(b) { - if (b.isClosed) { - throw new Error("The Blob is closed"); - } - if (readBlobsSynchronously) { - var data = readBlobSync(b, "binary"); - var base64 = encode(data, 0, data.byteLength); - return { - type: b.type, - data: base64 - }; - } else { - blobsToAwait.push(b); - var result = { - type: b.type, - data: { start: blobsToAwaitPos, end: blobsToAwaitPos + b.size } - }; - blobsToAwaitPos += b.size; - return result; - } - }, - finalize: function(b, ba) { - b.data = encode(ba, 0, ba.byteLength); - }, - revive: function(_a) { - var type = _a.type, data = _a.data; - return new Blob([decode(data)], { type }); - } - } - } -]); -TSON.mustFinalize = function() { - return blobsToAwait.length > 0; -}; -TSON.finalize = function(items) { - return __awaiter(void 0, void 0, void 0, function() { - var allChunks, _i, items_1, item, types, arrayType, keyPath, typeName, typeSpec, b; - var _a, _b; - return __generator(this, function(_c) { - switch (_c.label) { - case 0: - return [4, readBlobAsync(new Blob(blobsToAwait), "binary")]; - case 1: - allChunks = _c.sent(); - if (items) { - for (_i = 0, items_1 = items; _i < items_1.length; _i++) { - item = items_1[_i]; - if (item.$types) { - types = item.$types; - arrayType = types.$; - if (arrayType) - types = types.$; - for (keyPath in types) { - typeName = types[keyPath]; - typeSpec = TSON.types[typeName]; - if (typeSpec && typeSpec.finalize) { - b = import_wrapper_default.getByKeyPath(item, arrayType ? "$." + keyPath : keyPath); - typeSpec.finalize(b, allChunks.slice((_a = b.data) === null || _a === void 0 ? void 0 : _a.start, (_b = b.data) === null || _b === void 0 ? void 0 : _b.end)); - } - } - } - } - } - blobsToAwait = []; - blobsToAwaitPos = 0; - return [ - 2 - /*return*/ - ]; - } - }); - }); -}; -var DEFAULT_ROWS_PER_CHUNK = 2e3; -function exportDB(db, options) { - return __awaiter(this, void 0, void 0, function() { - function exportAll() { - return __awaiter(this, void 0, void 0, function() { - var tablesRowCounts, emptyExportJson, posEndDataArray, firstJsonSlice, filter, transform, _loop_1, _i, tables_1, tableName; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - return [4, Promise.all(targetTables.map(function(table) { - return table.count(); - }))]; - case 1: - tablesRowCounts = _a.sent(); - tablesRowCounts.forEach(function(rowCount, i) { - return tables[i].rowCount = rowCount; - }); - progress.totalRows = tablesRowCounts.reduce(function(p, c) { - return p + c; - }); - emptyExportJson = JSON.stringify(emptyExport, void 0, prettyJson ? 2 : void 0); - posEndDataArray = emptyExportJson.lastIndexOf("]"); - firstJsonSlice = emptyExportJson.substring(0, posEndDataArray); - slices.push(firstJsonSlice); - filter = options.filter; - transform = options.transform; - _loop_1 = function(tableName2) { - var table, primKey, inbound, LIMIT, emptyTableExport, emptyTableExportJson, posEndRowsArray, lastKey, lastNumRows, mayHaveMoreRows, _loop_2, state_1; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - table = db.table(tableName2); - primKey = table.schema.primKey; - inbound = !!primKey.keyPath; - LIMIT = options.numRowsPerChunk || DEFAULT_ROWS_PER_CHUNK; - emptyTableExport = inbound ? { - tableName: table.name, - inbound: true, - rows: [] - } : { - tableName: table.name, - inbound: false, - rows: [] - }; - emptyTableExportJson = JSON.stringify(emptyTableExport, void 0, prettyJson ? 2 : void 0); - if (prettyJson) { - emptyTableExportJson = emptyTableExportJson.split("\n").join("\n "); - } - posEndRowsArray = emptyTableExportJson.lastIndexOf("]"); - slices.push(emptyTableExportJson.substring(0, posEndRowsArray)); - lastKey = null; - lastNumRows = 0; - mayHaveMoreRows = true; - _loop_2 = function() { - var chunkedCollection, values, filteredValues, transformedValues, tsonValues, json, keys, keyvals, tsonTuples, json; - return __generator(this, function(_c) { - switch (_c.label) { - case 0: - if (progressCallback) { - import_wrapper_default.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - chunkedCollection = lastKey == null ? table.limit(LIMIT) : table.where(":id").above(lastKey).limit(LIMIT); - return [4, chunkedCollection.toArray()]; - case 1: - values = _c.sent(); - if (values.length === 0) - return [2, "break"]; - if (lastKey != null && lastNumRows > 0) { - slices.push(","); - if (prettyJson) { - slices.push("\n "); - } - } - mayHaveMoreRows = values.length === LIMIT; - if (!inbound) return [3, 4]; - filteredValues = filter ? values.filter(function(value) { - return filter(tableName2, value); - }) : values; - transformedValues = transform ? filteredValues.map(function(value) { - return transform(tableName2, value).value; - }) : filteredValues; - tsonValues = transformedValues.map(function(value) { - return TSON.encapsulate(value); - }); - if (!TSON.mustFinalize()) return [3, 3]; - return [4, import_wrapper_default.waitFor(TSON.finalize(tsonValues))]; - case 2: - _c.sent(); - _c.label = 3; - case 3: - json = JSON.stringify(tsonValues, void 0, prettyJson ? 2 : void 0); - if (prettyJson) - json = json.split("\n").join("\n "); - slices.push(new Blob([json.substring(1, json.length - 1)])); - lastNumRows = transformedValues.length; - lastKey = values.length > 0 ? import_wrapper_default.getByKeyPath(values[values.length - 1], primKey.keyPath) : null; - return [3, 8]; - case 4: - return [4, chunkedCollection.primaryKeys()]; - case 5: - keys = _c.sent(); - keyvals = keys.map(function(key, i) { - return [key, values[i]]; - }); - if (filter) - keyvals = keyvals.filter(function(_a2) { - var key = _a2[0], value = _a2[1]; - return filter(tableName2, value, key); - }); - if (transform) - keyvals = keyvals.map(function(_a2) { - var key = _a2[0], value = _a2[1]; - var transformResult = transform(tableName2, value, key); - return [transformResult.key, transformResult.value]; - }); - tsonTuples = keyvals.map(function(tuple) { - return TSON.encapsulate(tuple); - }); - if (!TSON.mustFinalize()) return [3, 7]; - return [4, import_wrapper_default.waitFor(TSON.finalize(tsonTuples))]; - case 6: - _c.sent(); - _c.label = 7; - case 7: - json = JSON.stringify(tsonTuples, void 0, prettyJson ? 2 : void 0); - if (prettyJson) - json = json.split("\n").join("\n "); - slices.push(new Blob([json.substring(1, json.length - 1)])); - lastNumRows = keyvals.length; - lastKey = keys.length > 0 ? keys[keys.length - 1] : null; - _c.label = 8; - case 8: - progress.completedRows += values.length; - return [ - 2 - /*return*/ - ]; - } - }); - }; - _b.label = 1; - case 1: - if (!mayHaveMoreRows) return [3, 3]; - return [5, _loop_2()]; - case 2: - state_1 = _b.sent(); - if (state_1 === "break") - return [3, 3]; - return [3, 1]; - case 3: - slices.push(emptyTableExportJson.substr(posEndRowsArray)); - progress.completedTables += 1; - if (progress.completedTables < progress.totalTables) { - slices.push(","); - } - return [ - 2 - /*return*/ - ]; - } - }); - }; - _i = 0, tables_1 = tables; - _a.label = 2; - case 2: - if (!(_i < tables_1.length)) return [3, 5]; - tableName = tables_1[_i].name; - return [5, _loop_1(tableName)]; - case 3: - _a.sent(); - _a.label = 4; - case 4: - _i++; - return [3, 2]; - case 5: - slices.push(emptyExportJson.substr(posEndDataArray)); - progress.done = true; - if (progressCallback) { - import_wrapper_default.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - return [ - 2 - /*return*/ - ]; - } - }); - }); - } - var skipTables, targetTables, slices, tables, prettyJson, emptyExport, progressCallback, progress; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - options = options || {}; - skipTables = options.skipTables ? options.skipTables : []; - targetTables = db.tables.filter(function(x) { - return !skipTables.includes(x.name); - }); - slices = []; - tables = targetTables.map(function(table) { - return { - name: table.name, - schema: getSchemaString(table), - rowCount: 0 - }; - }); - prettyJson = options.prettyJson; - emptyExport = { - formatName: "dexie", - formatVersion: 1, - data: { - databaseName: db.name, - databaseVersion: db.verno, - tables, - data: [] - } - }; - progressCallback = options.progressCallback; - progress = { - done: false, - completedRows: 0, - completedTables: 0, - totalRows: NaN, - totalTables: tables.length - }; - _a.label = 1; - case 1: - _a.trys.push([1, , 6, 7]); - if (!options.noTransaction) return [3, 3]; - return [4, exportAll()]; - case 2: - _a.sent(); - return [3, 5]; - case 3: - return [4, db.transaction("r", db.tables, exportAll)]; - case 4: - _a.sent(); - _a.label = 5; - case 5: - return [3, 7]; - case 6: - TSON.finalize(); - return [ - 7 - /*endfinally*/ - ]; - case 7: - return [2, new Blob(slices, { type: "text/json" })]; - } - }); - }); -} -var VERSION = 1; -var fakeStream = { Stream: function() { -} }; -var clarinet_1 = createCommonjsModule(function(module, exports) { - (function(clarinet) { - var env = typeof process === "object" && process.env ? process.env : self; - clarinet.parser = function(opt) { - return new CParser(opt); - }; - clarinet.CParser = CParser; - clarinet.CStream = CStream; - clarinet.createStream = createStream; - clarinet.MAX_BUFFER_LENGTH = 10 * 1024 * 1024; - clarinet.DEBUG = env.CDEBUG === "debug"; - clarinet.INFO = env.CDEBUG === "debug" || env.CDEBUG === "info"; - clarinet.EVENTS = [ - "value", - "string", - "key", - "openobject", - "closeobject", - "openarray", - "closearray", - "error", - "end", - "ready" - ]; - var buffers = { - textNode: void 0, - numberNode: "" - }, streamWraps = clarinet.EVENTS.filter(function(ev) { - return ev !== "error" && ev !== "end"; - }), S = 0, Stream; - clarinet.STATE = { - BEGIN: S++, - VALUE: S++, - OPEN_OBJECT: S++, - CLOSE_OBJECT: S++, - OPEN_ARRAY: S++, - CLOSE_ARRAY: S++, - TEXT_ESCAPE: S++, - STRING: S++, - BACKSLASH: S++, - END: S++, - OPEN_KEY: S++, - CLOSE_KEY: S++, - TRUE: S++, - TRUE2: S++, - TRUE3: S++, - FALSE: S++, - FALSE2: S++, - FALSE3: S++, - FALSE4: S++, - NULL: S++, - NULL2: S++, - NULL3: S++, - NUMBER_DECIMAL_POINT: S++, - NUMBER_DIGIT: S++ - // [0-9] - }; - for (var s_ in clarinet.STATE) clarinet.STATE[clarinet.STATE[s_]] = s_; - S = clarinet.STATE; - const Char = { - tab: 9, - // \t - lineFeed: 10, - // \n - carriageReturn: 13, - // \r - space: 32, - // " " - doubleQuote: 34, - // " - plus: 43, - // + - comma: 44, - // , - minus: 45, - // - - period: 46, - // . - _0: 48, - // 0 - _9: 57, - // 9 - colon: 58, - // : - E: 69, - // E - openBracket: 91, - // [ - backslash: 92, - // \ - closeBracket: 93, - // ] - a: 97, - // a - b: 98, - // b - e: 101, - // e - f: 102, - // f - l: 108, - // l - n: 110, - // n - r: 114, - // r - s: 115, - // s - t: 116, - // t - u: 117, - // u - openBrace: 123, - // { - closeBrace: 125 - // } - }; - if (!Object.create) { - Object.create = function(o) { - function f() { - this["__proto__"] = o; - } - f.prototype = o; - return new f(); - }; - } - if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function(o) { - return o["__proto__"]; - }; - } - if (!Object.keys) { - Object.keys = function(o) { - var a = []; - for (var i in o) if (o.hasOwnProperty(i)) a.push(i); - return a; - }; - } - function checkBufferLength(parser) { - var maxAllowed = Math.max(clarinet.MAX_BUFFER_LENGTH, 10), maxActual = 0; - for (var buffer in buffers) { - var len = parser[buffer] === void 0 ? 0 : parser[buffer].length; - if (len > maxAllowed) { - switch (buffer) { - case "text": - closeText(parser); - break; - default: - error(parser, "Max buffer length exceeded: " + buffer); - } - } - maxActual = Math.max(maxActual, len); - } - parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH - maxActual + parser.position; - } - function clearBuffers(parser) { - for (var buffer in buffers) { - parser[buffer] = buffers[buffer]; - } - } - var stringTokenPattern = /[\\"\n]/g; - function CParser(opt) { - if (!(this instanceof CParser)) return new CParser(opt); - var parser = this; - clearBuffers(parser); - parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH; - parser.q = parser.c = parser.p = ""; - parser.opt = opt || {}; - parser.closed = parser.closedRoot = parser.sawRoot = false; - parser.tag = parser.error = null; - parser.state = S.BEGIN; - parser.stack = new Array(); - parser.position = parser.column = 0; - parser.line = 1; - parser.slashed = false; - parser.unicodeI = 0; - parser.unicodeS = null; - parser.depth = 0; - emit(parser, "onready"); - } - CParser.prototype = { - end: function() { - end(this); - }, - write, - resume: function() { - this.error = null; - return this; - }, - close: function() { - return this.write(null); - } - }; - try { - Stream = fakeStream.Stream; - } catch (ex) { - Stream = function() { - }; - } - function createStream(opt) { - return new CStream(opt); - } - function CStream(opt) { - if (!(this instanceof CStream)) return new CStream(opt); - this._parser = new CParser(opt); - this.writable = true; - this.readable = true; - this.bytes_remaining = 0; - this.bytes_in_sequence = 0; - this.temp_buffs = { "2": new Buffer(2), "3": new Buffer(3), "4": new Buffer(4) }; - this.string = ""; - var me = this; - Stream.apply(me); - this._parser.onend = function() { - me.emit("end"); - }; - this._parser.onerror = function(er) { - me.emit("error", er); - me._parser.error = null; - }; - streamWraps.forEach(function(ev) { - Object.defineProperty( - me, - "on" + ev, - { - get: function() { - return me._parser["on" + ev]; - }, - set: function(h) { - if (!h) { - me.removeAllListeners(ev); - me._parser["on" + ev] = h; - return h; - } - me.on(ev, h); - }, - enumerable: true, - configurable: false - } - ); - }); - } - CStream.prototype = Object.create( - Stream.prototype, - { constructor: { value: CStream } } - ); - CStream.prototype.write = function(data) { - data = new Buffer(data); - for (var i = 0; i < data.length; i++) { - var n = data[i]; - if (this.bytes_remaining > 0) { - for (var j = 0; j < this.bytes_remaining; j++) { - this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = data[j]; - } - this.string = this.temp_buffs[this.bytes_in_sequence].toString(); - this.bytes_in_sequence = this.bytes_remaining = 0; - i = i + j - 1; - this._parser.write(this.string); - this.emit("data", this.string); - continue; - } - if (this.bytes_remaining === 0 && n >= 128) { - if (n >= 194 && n <= 223) this.bytes_in_sequence = 2; - if (n >= 224 && n <= 239) this.bytes_in_sequence = 3; - if (n >= 240 && n <= 244) this.bytes_in_sequence = 4; - if (this.bytes_in_sequence + i > data.length) { - for (var k = 0; k <= data.length - 1 - i; k++) { - this.temp_buffs[this.bytes_in_sequence][k] = data[i + k]; - } - this.bytes_remaining = i + this.bytes_in_sequence - data.length; - return true; - } else { - this.string = data.slice(i, i + this.bytes_in_sequence).toString(); - i = i + this.bytes_in_sequence - 1; - this._parser.write(this.string); - this.emit("data", this.string); - continue; - } - } - for (var p = i; p < data.length; p++) { - if (data[p] >= 128) break; - } - this.string = data.slice(i, p).toString(); - this._parser.write(this.string); - this.emit("data", this.string); - i = p - 1; - continue; - } - }; - CStream.prototype.end = function(chunk) { - if (chunk && chunk.length) this._parser.write(chunk.toString()); - this._parser.end(); - return true; - }; - CStream.prototype.on = function(ev, handler) { - var me = this; - if (!me._parser["on" + ev] && streamWraps.indexOf(ev) !== -1) { - me._parser["on" + ev] = function() { - var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments); - args.splice(0, 0, ev); - me.emit.apply(me, args); - }; - } - return Stream.prototype.on.call(me, ev, handler); - }; - CStream.prototype.destroy = function() { - clearBuffers(this._parser); - this.emit("close"); - }; - function emit(parser, event, data) { - if (clarinet.INFO) console.log("-- emit", event, data); - if (parser[event]) parser[event](data); - } - function emitNode(parser, event, data) { - closeValue(parser); - emit(parser, event, data); - } - function closeValue(parser, event) { - parser.textNode = textopts(parser.opt, parser.textNode); - if (parser.textNode !== void 0) { - emit(parser, event ? event : "onvalue", parser.textNode); - } - parser.textNode = void 0; - } - function closeNumber(parser) { - if (parser.numberNode) - emit(parser, "onvalue", parseFloat(parser.numberNode)); - parser.numberNode = ""; - } - function textopts(opt, text) { - if (text === void 0) { - return text; - } - if (opt.trim) text = text.trim(); - if (opt.normalize) text = text.replace(/\s+/g, " "); - return text; - } - function error(parser, er) { - closeValue(parser); - er += "\nLine: " + parser.line + "\nColumn: " + parser.column + "\nChar: " + parser.c; - er = new Error(er); - parser.error = er; - emit(parser, "onerror", er); - return parser; - } - function end(parser) { - if (parser.state !== S.VALUE || parser.depth !== 0) - error(parser, "Unexpected end"); - closeValue(parser); - parser.c = ""; - parser.closed = true; - emit(parser, "onend"); - CParser.call(parser, parser.opt); - return parser; - } - function isWhitespace(c) { - return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab; - } - function write(chunk) { - var parser = this; - if (this.error) throw this.error; - if (parser.closed) return error( - parser, - "Cannot write after close. Assign an onready handler." - ); - if (chunk === null) return end(parser); - var i = 0, c = chunk.charCodeAt(0), p = parser.p; - if (clarinet.DEBUG) console.log("write -> [" + chunk + "]"); - while (c) { - p = c; - parser.c = c = chunk.charCodeAt(i++); - if (p !== c) parser.p = p; - else p = parser.p; - if (!c) break; - if (clarinet.DEBUG) console.log(i, c, clarinet.STATE[parser.state]); - parser.position++; - if (c === Char.lineFeed) { - parser.line++; - parser.column = 0; - } else parser.column++; - switch (parser.state) { - case S.BEGIN: - if (c === Char.openBrace) parser.state = S.OPEN_OBJECT; - else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY; - else if (!isWhitespace(c)) - error(parser, "Non-whitespace before {[."); - continue; - case S.OPEN_KEY: - case S.OPEN_OBJECT: - if (isWhitespace(c)) continue; - if (parser.state === S.OPEN_KEY) parser.stack.push(S.CLOSE_KEY); - else { - if (c === Char.closeBrace) { - emit(parser, "onopenobject"); - this.depth++; - emit(parser, "oncloseobject"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - continue; - } else parser.stack.push(S.CLOSE_OBJECT); - } - if (c === Char.doubleQuote) parser.state = S.STRING; - else error(parser, 'Malformed object key should start with "'); - continue; - case S.CLOSE_KEY: - case S.CLOSE_OBJECT: - if (isWhitespace(c)) continue; - parser.state === S.CLOSE_KEY ? "key" : "object"; - if (c === Char.colon) { - if (parser.state === S.CLOSE_OBJECT) { - parser.stack.push(S.CLOSE_OBJECT); - closeValue(parser, "onopenobject"); - this.depth++; - } else closeValue(parser, "onkey"); - parser.state = S.VALUE; - } else if (c === Char.closeBrace) { - emitNode(parser, "oncloseobject"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - } else if (c === Char.comma) { - if (parser.state === S.CLOSE_OBJECT) - parser.stack.push(S.CLOSE_OBJECT); - closeValue(parser); - parser.state = S.OPEN_KEY; - } else error(parser, "Bad object"); - continue; - case S.OPEN_ARRAY: - // after an array there always a value - case S.VALUE: - if (isWhitespace(c)) continue; - if (parser.state === S.OPEN_ARRAY) { - emit(parser, "onopenarray"); - this.depth++; - parser.state = S.VALUE; - if (c === Char.closeBracket) { - emit(parser, "onclosearray"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - continue; - } else { - parser.stack.push(S.CLOSE_ARRAY); - } - } - if (c === Char.doubleQuote) parser.state = S.STRING; - else if (c === Char.openBrace) parser.state = S.OPEN_OBJECT; - else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY; - else if (c === Char.t) parser.state = S.TRUE; - else if (c === Char.f) parser.state = S.FALSE; - else if (c === Char.n) parser.state = S.NULL; - else if (c === Char.minus) { - parser.numberNode += "-"; - } else if (Char._0 <= c && c <= Char._9) { - parser.numberNode += String.fromCharCode(c); - parser.state = S.NUMBER_DIGIT; - } else error(parser, "Bad value"); - continue; - case S.CLOSE_ARRAY: - if (c === Char.comma) { - parser.stack.push(S.CLOSE_ARRAY); - closeValue(parser, "onvalue"); - parser.state = S.VALUE; - } else if (c === Char.closeBracket) { - emitNode(parser, "onclosearray"); - this.depth--; - parser.state = parser.stack.pop() || S.VALUE; - } else if (isWhitespace(c)) - continue; - else error(parser, "Bad array"); - continue; - case S.STRING: - if (parser.textNode === void 0) { - parser.textNode = ""; - } - var starti = i - 1, slashed = parser.slashed, unicodeI = parser.unicodeI; - STRING_BIGLOOP: while (true) { - if (clarinet.DEBUG) - console.log( - i, - c, - clarinet.STATE[parser.state], - slashed - ); - while (unicodeI > 0) { - parser.unicodeS += String.fromCharCode(c); - c = chunk.charCodeAt(i++); - parser.position++; - if (unicodeI === 4) { - parser.textNode += String.fromCharCode(parseInt(parser.unicodeS, 16)); - unicodeI = 0; - starti = i - 1; - } else { - unicodeI++; - } - if (!c) break STRING_BIGLOOP; - } - if (c === Char.doubleQuote && !slashed) { - parser.state = parser.stack.pop() || S.VALUE; - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - break; - } - if (c === Char.backslash && !slashed) { - slashed = true; - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - c = chunk.charCodeAt(i++); - parser.position++; - if (!c) break; - } - if (slashed) { - slashed = false; - if (c === Char.n) { - parser.textNode += "\n"; - } else if (c === Char.r) { - parser.textNode += "\r"; - } else if (c === Char.t) { - parser.textNode += " "; - } else if (c === Char.f) { - parser.textNode += "\f"; - } else if (c === Char.b) { - parser.textNode += "\b"; - } else if (c === Char.u) { - unicodeI = 1; - parser.unicodeS = ""; - } else { - parser.textNode += String.fromCharCode(c); - } - c = chunk.charCodeAt(i++); - parser.position++; - starti = i - 1; - if (!c) break; - else continue; - } - stringTokenPattern.lastIndex = i; - var reResult = stringTokenPattern.exec(chunk); - if (reResult === null) { - i = chunk.length + 1; - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - break; - } - i = reResult.index + 1; - c = chunk.charCodeAt(reResult.index); - if (!c) { - parser.textNode += chunk.substring(starti, i - 1); - parser.position += i - 1 - starti; - break; - } - } - parser.slashed = slashed; - parser.unicodeI = unicodeI; - continue; - case S.TRUE: - if (c === Char.r) parser.state = S.TRUE2; - else error(parser, "Invalid true started with t" + c); - continue; - case S.TRUE2: - if (c === Char.u) parser.state = S.TRUE3; - else error(parser, "Invalid true started with tr" + c); - continue; - case S.TRUE3: - if (c === Char.e) { - emit(parser, "onvalue", true); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, "Invalid true started with tru" + c); - continue; - case S.FALSE: - if (c === Char.a) parser.state = S.FALSE2; - else error(parser, "Invalid false started with f" + c); - continue; - case S.FALSE2: - if (c === Char.l) parser.state = S.FALSE3; - else error(parser, "Invalid false started with fa" + c); - continue; - case S.FALSE3: - if (c === Char.s) parser.state = S.FALSE4; - else error(parser, "Invalid false started with fal" + c); - continue; - case S.FALSE4: - if (c === Char.e) { - emit(parser, "onvalue", false); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, "Invalid false started with fals" + c); - continue; - case S.NULL: - if (c === Char.u) parser.state = S.NULL2; - else error(parser, "Invalid null started with n" + c); - continue; - case S.NULL2: - if (c === Char.l) parser.state = S.NULL3; - else error(parser, "Invalid null started with nu" + c); - continue; - case S.NULL3: - if (c === Char.l) { - emit(parser, "onvalue", null); - parser.state = parser.stack.pop() || S.VALUE; - } else error(parser, "Invalid null started with nul" + c); - continue; - case S.NUMBER_DECIMAL_POINT: - if (c === Char.period) { - parser.numberNode += "."; - parser.state = S.NUMBER_DIGIT; - } else error(parser, "Leading zero not followed by ."); - continue; - case S.NUMBER_DIGIT: - if (Char._0 <= c && c <= Char._9) parser.numberNode += String.fromCharCode(c); - else if (c === Char.period) { - if (parser.numberNode.indexOf(".") !== -1) - error(parser, "Invalid number has two dots"); - parser.numberNode += "."; - } else if (c === Char.e || c === Char.E) { - if (parser.numberNode.indexOf("e") !== -1 || parser.numberNode.indexOf("E") !== -1) - error(parser, "Invalid number has two exponential"); - parser.numberNode += "e"; - } else if (c === Char.plus || c === Char.minus) { - if (!(p === Char.e || p === Char.E)) - error(parser, "Invalid symbol in number"); - parser.numberNode += String.fromCharCode(c); - } else { - closeNumber(parser); - i--; - parser.state = parser.stack.pop() || S.VALUE; - } - continue; - default: - error(parser, "Unknown state: " + parser.state); - } - } - if (parser.position >= parser.bufferCheckPosition) - checkBufferLength(parser); - return parser; - } - })(exports); -}); -function JsonStream(blob) { - var pos = 0; - var parser = JsonParser(true); - var rv = { - pullAsync: function(numBytes) { - return __awaiter(this, void 0, void 0, function() { - var slize, jsonPart, result; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - slize = blob.slice(pos, pos + numBytes); - pos += numBytes; - return [4, readBlobAsync(slize, "text")]; - case 1: - jsonPart = _a.sent(); - result = parser.write(jsonPart); - rv.result = result || {}; - return [2, result]; - } - }); - }); - }, - pullSync: function(numBytes) { - var slize = blob.slice(pos, pos + numBytes); - pos += numBytes; - var jsonPart = readBlobSync(slize, "text"); - var result = parser.write(jsonPart); - rv.result = result || {}; - return result; - }, - done: function() { - return parser.done(); - }, - eof: function() { - return pos >= blob.size; - }, - result: {} - }; - return rv; -} -function JsonParser(allowPartial) { - var parser = clarinet_1.parser(); - var level = 0; - var result; - var stack = []; - var obj; - var key; - var done = false; - var array = false; - parser.onopenobject = function(newKey) { - var newObj = {}; - newObj.incomplete = true; - if (!result) - result = newObj; - if (obj) { - stack.push([key, obj, array]); - if (allowPartial) { - if (array) { - obj.push(newObj); - } else { - obj[key] = newObj; - } - } - } - obj = newObj; - key = newKey; - array = false; - ++level; - }; - parser.onkey = function(newKey) { - return key = newKey; - }; - parser.onvalue = function(value) { - return array ? obj.push(value) : obj[key] = value; - }; - parser.oncloseobject = function() { - var _a; - delete obj.incomplete; - key = null; - if (--level === 0) { - done = true; - } else { - var completedObj = obj; - _a = stack.pop(), key = _a[0], obj = _a[1], array = _a[2]; - if (!allowPartial) { - if (array) { - obj.push(completedObj); - } else { - obj[key] = completedObj; - } - } - } - }; - parser.onopenarray = function() { - var newObj = []; - newObj.incomplete = true; - if (!result) - result = newObj; - if (obj) { - stack.push([key, obj, array]); - if (allowPartial) { - if (array) { - obj.push(newObj); - } else { - obj[key] = newObj; - } - } - } - obj = newObj; - array = true; - key = null; - ++level; - }; - parser.onclosearray = function() { - var _a; - delete obj.incomplete; - key = null; - if (--level === 0) { - done = true; - } else { - var completedObj = obj; - _a = stack.pop(), key = _a[0], obj = _a[1], array = _a[2]; - if (!allowPartial) { - if (array) { - obj.push(completedObj); - } else { - obj[key] = completedObj; - } - } - } - }; - return { - write: function(jsonPart) { - parser.write(jsonPart); - return result; - }, - done: function() { - return done; - } - }; -} -var DEFAULT_KILOBYTES_PER_CHUNK = 1024; -function importDB(exportedData, options) { - return __awaiter(this, void 0, void 0, function() { - var CHUNK_SIZE, stream, dbExport, db; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - options = options || {}; - CHUNK_SIZE = options.chunkSizeBytes || DEFAULT_KILOBYTES_PER_CHUNK * 1024; - return [4, loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE)]; - case 1: - stream = _a.sent(); - dbExport = stream.result.data; - db = new import_wrapper_default(options.name !== void 0 ? options.name : dbExport.databaseName); - db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport)); - return [4, importInto(db, stream, options.name !== void 0 ? __assign(__assign({}, options), { acceptNameDiff: true }) : options)]; - case 2: - _a.sent(); - return [2, db]; - } - }); - }); -} -function importInto(db, exportedData, options) { - return __awaiter(this, void 0, void 0, function() { - function importAll() { - return __awaiter(this, void 0, void 0, function() { - var _loop_1, _i2, _a2, tableExport, state_1; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - _loop_1 = function(tableExport2) { - var tableName, table2, tableSchemaStr, sourceRows, rows, i, obj, filter, transform, filteredRows, _c, keys, values; - return __generator(this, function(_d) { - switch (_d.label) { - case 0: - if (skipTables.includes(tableExport2.tableName)) - return [2, "continue"]; - if (!tableExport2.rows) - return [2, "break"]; - if (!tableExport2.rows.incomplete && tableExport2.rows.length === 0) - return [2, "continue"]; - if (progressCallback) { - import_wrapper_default.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - tableName = tableExport2.tableName; - table2 = db.table(tableName); - tableSchemaStr = dbExport.tables.filter(function(t) { - return t.name === tableName; - })[0].schema; - if (!table2) { - if (!options.acceptMissingTables) - throw new Error("Exported table ".concat(tableExport2.tableName, " is missing in installed database")); - else - return [2, "continue"]; - } - if (!options.acceptChangedPrimaryKey && tableSchemaStr.split(",")[0] != table2.schema.primKey.src) { - throw new Error("Primary key differs for table ".concat(tableExport2.tableName, ". ")); - } - sourceRows = tableExport2.rows; - rows = []; - for (i = 0; i < sourceRows.length; i++) { - obj = sourceRows[i]; - if (!obj.incomplete) { - rows.push(TSON.revive(obj)); - } else { - break; - } - } - filter = options.filter; - transform = options.transform; - filteredRows = filter ? tableExport2.inbound ? rows.filter(function(value) { - return filter(tableName, value); - }) : rows.filter(function(_a3) { - var key = _a3[0], value = _a3[1]; - return filter(tableName, value, key); - }) : rows; - if (transform) { - filteredRows = filteredRows.map(tableExport2.inbound ? function(value) { - return transform(tableName, value).value; - } : function(_a3) { - var key = _a3[0], value = _a3[1]; - var res = transform(tableName, value, key); - return [res.key, res.value]; - }); - } - _c = tableExport2.inbound ? [void 0, filteredRows] : [filteredRows.map(function(row) { - return row[0]; - }), rows.map(function(row) { - return row[1]; - })], keys = _c[0], values = _c[1]; - if (!options.overwriteValues) return [3, 2]; - return [4, table2.bulkPut(values, keys)]; - case 1: - _d.sent(); - return [3, 4]; - case 2: - return [4, table2.bulkAdd(values, keys)]; - case 3: - _d.sent(); - _d.label = 4; - case 4: - progress.completedRows += rows.length; - if (!rows.incomplete) { - progress.completedTables += 1; - } - sourceRows.splice(0, rows.length); - return [ - 2 - /*return*/ - ]; - } - }); - }; - _i2 = 0, _a2 = dbExport.data; - _b.label = 1; - case 1: - if (!(_i2 < _a2.length)) return [3, 4]; - tableExport = _a2[_i2]; - return [5, _loop_1(tableExport)]; - case 2: - state_1 = _b.sent(); - if (state_1 === "break") - return [3, 4]; - _b.label = 3; - case 3: - _i2++; - return [3, 1]; - case 4: - while (dbExport.data.length > 0 && dbExport.data[0].rows && !dbExport.data[0].rows.incomplete) { - dbExport.data.splice(0, 1); - } - if (!(!jsonStream.done() && !jsonStream.eof())) return [3, 8]; - if (!readBlobsSynchronously2) return [3, 5]; - jsonStream.pullSync(CHUNK_SIZE); - return [3, 7]; - case 5: - return [4, import_wrapper_default.waitFor(jsonStream.pullAsync(CHUNK_SIZE))]; - case 6: - _b.sent(); - _b.label = 7; - case 7: - return [3, 9]; - case 8: - return [3, 10]; - case 9: - return [3, 0]; - case 10: - return [ - 2 - /*return*/ - ]; - } - }); - }); - } - var CHUNK_SIZE, jsonStream, dbExportFile, readBlobsSynchronously2, dbExport, skipTables, progressCallback, progress, _i, _a, table; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - options = options || {}; - CHUNK_SIZE = options.chunkSizeBytes || DEFAULT_KILOBYTES_PER_CHUNK * 1024; - return [4, loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE)]; - case 1: - jsonStream = _b.sent(); - dbExportFile = jsonStream.result; - readBlobsSynchronously2 = "FileReaderSync" in self; - dbExport = dbExportFile.data; - skipTables = options.skipTables ? options.skipTables : []; - if (!options.acceptNameDiff && db.name !== dbExport.databaseName) - throw new Error("Name differs. Current database name is ".concat(db.name, " but export is ").concat(dbExport.databaseName)); - if (!options.acceptVersionDiff && db.verno !== dbExport.databaseVersion) { - throw new Error("Database version differs. Current database is in version ".concat(db.verno, " but export is ").concat(dbExport.databaseVersion)); - } - progressCallback = options.progressCallback; - progress = { - done: false, - completedRows: 0, - completedTables: 0, - totalRows: dbExport.tables.reduce(function(p, c) { - return p + c.rowCount; - }, 0), - totalTables: dbExport.tables.length - }; - if (progressCallback) { - import_wrapper_default.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - if (!options.clearTablesBeforeImport) return [3, 5]; - _i = 0, _a = db.tables; - _b.label = 2; - case 2: - if (!(_i < _a.length)) return [3, 5]; - table = _a[_i]; - if (skipTables.includes(table.name)) - return [3, 4]; - return [4, table.clear()]; - case 3: - _b.sent(); - _b.label = 4; - case 4: - _i++; - return [3, 2]; - case 5: - if (!options.noTransaction) return [3, 7]; - return [4, importAll()]; - case 6: - _b.sent(); - return [3, 9]; - case 7: - return [4, db.transaction("rw", db.tables, importAll)]; - case 8: - _b.sent(); - _b.label = 9; - case 9: - progress.done = true; - if (progressCallback) { - import_wrapper_default.ignoreTransaction(function() { - return progressCallback(progress); - }); - } - return [ - 2 - /*return*/ - ]; - } - }); - }); -} -function loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE) { - return __awaiter(this, void 0, void 0, function() { - var stream, dbExportFile; - return __generator(this, function(_a) { - switch (_a.label) { - case 0: - stream = "slice" in exportedData ? JsonStream(exportedData) : exportedData; - _a.label = 1; - case 1: - if (!!stream.eof()) return [3, 3]; - return [4, stream.pullAsync(CHUNK_SIZE)]; - case 2: - _a.sent(); - if (stream.result.data && stream.result.data.data) - return [3, 3]; - return [3, 1]; - case 3: - dbExportFile = stream.result; - if (!dbExportFile || dbExportFile.formatName != "dexie") - throw new Error("Given file is not a dexie export"); - if (dbExportFile.formatVersion > VERSION) { - throw new Error("Format version ".concat(dbExportFile.formatVersion, " not supported")); - } - if (!dbExportFile.data) { - throw new Error("No data in export file"); - } - if (!dbExportFile.data.databaseName) { - throw new Error("Missing databaseName in export file"); - } - if (!dbExportFile.data.databaseVersion) { - throw new Error("Missing databaseVersion in export file"); - } - if (!dbExportFile.data.tables) { - throw new Error("Missing tables in export file"); - } - return [2, stream]; - } - }); - }); -} -import_wrapper_default.prototype.export = function(options) { - return exportDB(this, options); -}; -import_wrapper_default.prototype.import = function(blob, options) { - return importInto(this, blob, options); -}; -import_wrapper_default.import = function(blob, options) { - return importDB(blob, options); -}; -export { - import_wrapper_default as Dexie -}; -/*! Bundled license information: - -dexie/dist/dexie.js: - (*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** *) - -dexie-export-import/dist/dexie-export-import.mjs: - (*! ***************************************************************************** - Copyright (c) Microsoft Corporation. - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** *) -*/ -//# sourceMappingURL=dexie.js.map diff --git a/vendor/yomitan/lib/dexie.js.map b/vendor/yomitan/lib/dexie.js.map deleted file mode 100644 index 442a0c40..00000000 --- a/vendor/yomitan/lib/dexie.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/dexie/node_modules/.pnpm/tslib@2.3.1/node_modules/tslib/tslib.es6.js", "../../node_modules/dexie/src/globals/global.ts", "../../node_modules/dexie/src/functions/utils.ts", "../../node_modules/dexie/src/errors/errors.js", "../../node_modules/dexie/src/functions/chaining-functions.js", "../../node_modules/dexie/src/helpers/debug.ts", "../../node_modules/dexie/src/helpers/promise.js", "../../node_modules/dexie/src/functions/temp-transaction.ts", "../../node_modules/dexie/src/globals/constants.ts", "../../node_modules/dexie/src/functions/combine.ts", "../../node_modules/dexie/src/dbcore/keyrange.ts", "../../node_modules/dexie/src/functions/workaround-undefined-primkey.ts", "../../node_modules/dexie/src/classes/entity/Entity.ts", "../../node_modules/dexie/src/functions/cmp.ts", "../../node_modules/dexie/src/classes/table/table.ts", "../../node_modules/dexie/src/helpers/Events.js", "../../node_modules/dexie/src/functions/make-class-constructor.ts", "../../node_modules/dexie/src/classes/table/table-constructor.ts", "../../node_modules/dexie/src/classes/collection/collection-helpers.ts", "../../node_modules/dexie/src/helpers/prop-modification.ts", "../../node_modules/dexie/src/classes/collection/collection.ts", "../../node_modules/dexie/src/classes/collection/collection-constructor.ts", "../../node_modules/dexie/src/functions/compare-functions.ts", "../../node_modules/dexie/src/classes/where-clause/where-clause-helpers.ts", "../../node_modules/dexie/src/classes/where-clause/where-clause.ts", "../../node_modules/dexie/src/classes/where-clause/where-clause-constructor.ts", "../../node_modules/dexie/src/functions/event-wrappers.ts", "../../node_modules/dexie/src/globals/global-events.ts", "../../node_modules/dexie/src/classes/transaction/transaction.ts", "../../node_modules/dexie/src/classes/transaction/transaction-constructor.ts", "../../node_modules/dexie/src/helpers/index-spec.ts", "../../node_modules/dexie/src/helpers/table-schema.ts", "../../node_modules/dexie/src/functions/quirks.ts", "../../node_modules/dexie/src/dbcore/get-key-extractor.ts", "../../node_modules/dexie/src/dbcore/dbcore-indexeddb.ts", "../../node_modules/dexie/src/classes/dexie/generate-middleware-stacks.ts", "../../node_modules/dexie/src/classes/version/schema-helpers.ts", "../../node_modules/dexie/src/classes/version/version.ts", "../../node_modules/dexie/src/classes/version/version-constructor.ts", "../../node_modules/dexie/src/helpers/database-enumerator.ts", "../../node_modules/dexie/src/classes/dexie/vip.ts", "../../node_modules/dexie/node_modules/.pnpm/safari-14-idb-fix@3.0.0/node_modules/safari-14-idb-fix/dist/index.js", "../../node_modules/dexie/src/helpers/rangeset.ts", "../../node_modules/dexie/src/live-query/extend-observability-set.ts", "../../node_modules/dexie/src/live-query/obs-sets-overlap.ts", "../../node_modules/dexie/src/live-query/cache/cache.ts", "../../node_modules/dexie/src/live-query/cache/signalSubscribers.ts", "../../node_modules/dexie/src/classes/dexie/dexie-open.ts", "../../node_modules/dexie/src/helpers/yield-support.ts", "../../node_modules/dexie/src/classes/dexie/transaction-helpers.ts", "../../node_modules/dexie/src/dbcore/virtual-index-middleware.ts", "../../node_modules/dexie/src/functions/get-object-diff.ts", "../../node_modules/dexie/src/dbcore/get-effective-keys.ts", "../../node_modules/dexie/src/hooks/hooks-middleware.ts", "../../node_modules/dexie/src/dbcore/cache-existing-values-middleware.ts", "../../node_modules/dexie/src/live-query/cache/is-cachable-context.ts", "../../node_modules/dexie/src/live-query/cache/is-cachable-request.ts", "../../node_modules/dexie/src/live-query/observability-middleware.ts", "../../node_modules/dexie/src/live-query/cache/adjust-optimistic-request-from-failures.ts", "../../node_modules/dexie/src/live-query/cache/is-within-range.ts", "../../node_modules/dexie/src/live-query/cache/apply-optimistic-ops.ts", "../../node_modules/dexie/src/live-query/cache/are-ranges-equal.ts", "../../node_modules/dexie/src/live-query/cache/is-super-range.ts", "../../node_modules/dexie/src/live-query/cache/find-compatible-query.ts", "../../node_modules/dexie/src/live-query/cache/subscribe-cachentry.ts", "../../node_modules/dexie/src/live-query/cache/cache-middleware.ts", "../../node_modules/dexie/src/helpers/vipify.ts", "../../node_modules/dexie/src/classes/dexie/dexie.ts", "../../node_modules/dexie/src/classes/observable/observable.ts", "../../node_modules/dexie/src/classes/dexie/dexie-dom-dependencies.ts", "../../node_modules/dexie/src/live-query/live-query.ts", "../../node_modules/dexie/src/classes/dexie/dexie-static-props.ts", "../../node_modules/dexie/src/live-query/propagate-locally.ts", "../../node_modules/dexie/src/live-query/enable-broadcast.ts", "../../node_modules/dexie/src/support-bfcache.ts", "../../node_modules/dexie/src/functions/propmods/add.ts", "../../node_modules/dexie/src/functions/propmods/remove.ts", "../../node_modules/dexie/src/functions/propmods/replace-prefix.ts", "../../node_modules/dexie/src/index.ts", "../../node_modules/dexie/src/index-umd.ts", "../../node_modules/dexie/import-wrapper.mjs", "../../node_modules/.pnpm/tslib@2.3.1/node_modules/tslib/tslib.es6.js", "../../node_modules/dexie-export-import/src/helpers.ts", "../../node_modules/.pnpm/typeson@5.18.2_core-js-bundle@3.34.0_regenerator-runtime@0.13.11/node_modules/typeson/dist/typeson.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/typeson/dist/typeson-esm.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/user-object.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/array-nonindex-keys.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/undef.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/primitive-objects.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/special-numbers.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/nan.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/infinity.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/negative-infinity.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/date.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/regexp.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/map.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/set.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/arraybuffer.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/typed-arrays.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/dataview.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/intl-types.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/utils/stringArrayBuffer.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/file.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/bigint-object.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/cryptokey.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/presets/structured-cloning.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagedata.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/imagebitmap.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/filelist.js", "../../node_modules/.pnpm/typeson-registry@1.0.0-alpha.39/node_modules/typeson-registry/types/blob.js", "../../node_modules/.pnpm/base64-arraybuffer-es6@1.0.0/node_modules/base64-arraybuffer-es6/dist/base64-arraybuffer-es.js", "../../node_modules/dexie-export-import/src/tson-typed-array.ts", "../../node_modules/dexie-export-import/src/tson-arraybuffer.ts", "../../node_modules/dexie-export-import/src/tson.ts", "../../node_modules/dexie-export-import/src/export.ts", "../../node_modules/dexie-export-import/src/json-structure.ts", "../../node_modules/dexie-export-import/tools/build-configs/fake-stream.js", "../../node_modules/.pnpm/clarinet@https+++codeload.github.com+dfahlander+clarinet+tar.gz+d1dc89f7e67488b16ad98b2464d29a9b3bc6f5ef/node_modules/clarinet/clarinet.js", "../../node_modules/dexie-export-import/src/json-stream.ts", "../../node_modules/dexie-export-import/src/import.ts", "../../node_modules/dexie-export-import/src/dexie-export-import.ts"], - "sourcesContent": ["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "declare var global;\nexport const _global: any =\n typeof globalThis !== 'undefined' ? globalThis :\n typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\n", "import { _global } from \"../globals/global\";\nexport const keys = Object.keys;\nexport const isArray = Array.isArray;\nif (typeof Promise !== 'undefined' && !_global.Promise){\n // In jsdom, this it can be the case that Promise is not put on the global object.\n // If so, we need to patch the global object for the rest of the code to work as expected.\n // Other dexie code expects Promise to be on the global object (like normal browser environments)\n _global.Promise = Promise;\n}\nexport { _global }\n\nexport function extend(obj: T, extension: X): T & X {\n if (typeof extension !== 'object') return obj as T & X;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj as T & X;\n}\n\nexport const getProto = Object.getPrototypeOf;\nexport const _hasOwn = {}.hasOwnProperty;\nexport function hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n}\n\nexport function props (proto, extension) {\n if (typeof extension === 'function') extension = extension(getProto(proto));\n (typeof Reflect === \"undefined\" ? keys : Reflect.ownKeys)(extension).forEach(key => {\n setProp(proto, key, extension[key]);\n });\n}\n\nexport const defineProperty = Object.defineProperty;\n\nexport function setProp(obj, prop, functionOrGetSet, options?) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n {get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true} :\n {value: functionOrGetSet, configurable: true, writable: true}, options));\n}\n\nexport function derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n}\n\nexport const getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexport function getPropertyDescriptor(obj, prop) {\n const pd = getOwnPropertyDescriptor(obj, prop);\n let proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor (proto, prop);\n}\n\nconst _slice = [].slice;\nexport function slice(args, start?, end?) {\n return _slice.call(args, start, end);\n}\n\nexport function override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n}\n\nexport function assert (b) {\n if (!b) throw new Error(\"Assertion Failed\");\n}\n\nexport function asap(fn) {\n // @ts-ignore\n if (_global.setImmediate) setImmediate(fn); else setTimeout(fn, 0);\n}\n\nexport function getUniqueArray(a) {\n return a.filter((value, index, self) => self.indexOf(value) === index);\n}\n\n/** Generate an object (hash map) based on given array.\n * @param extractor Function taking an array item and its index and returning an array of 2 items ([key, value]) to\n * instert on the resulting object for each item in the array. If this function returns a falsy value, the\n * current item wont affect the resulting object.\n */\nexport function arrayToObject (array: T[], extractor: (x:T, idx: number)=>[string, R]): {[name: string]: R} {\n return array.reduce((result, item, i) => {\n var nameAndValue = extractor(item, i);\n if (nameAndValue) result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n}\n\nexport function trycatcher(fn, reject) {\n return function () {\n try {\n fn.apply(this, arguments);\n } catch (e) {\n reject(e);\n }\n };\n}\n\nexport function tryCatch(fn: (...args: any[])=>void, onerror, args?) : void {\n try {\n fn.apply(null, args);\n } catch (ex) {\n onerror && onerror(ex);\n }\n}\n\nexport function getByKeyPath(obj, keyPath) {\n // http://www.w3.org/TR/IndexedDB/#steps-for-extracting-a-key-from-a-value-using-a-key-path\n if (typeof keyPath === 'string' && hasOwn(obj, keyPath)) return obj[keyPath]; // This line is moved from last to first for optimization purpose.\n if (!keyPath) return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj == null ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n}\n\nexport function setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined) return;\n if ('isFrozen' in Object && Object.isFrozen(obj)) return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n } else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath))) obj.splice(currentKeyPath, 1);\n else delete obj[currentKeyPath];\n } else obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj || !hasOwn(obj, currentKeyPath)) innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n } else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath))) obj.splice(keyPath, 1);\n else delete obj[keyPath];\n } else obj[keyPath] = value;\n }\n }\n}\n\nexport function delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function(kp) {\n setByKeyPath(obj, kp, undefined);\n });\n}\n\nexport function shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m)) rv[m] = obj[m];\n }\n return rv;\n}\n\nconst concat = [].concat;\nexport function flatten (a: (T | T[])[]) : T[] {\n return concat.apply([], a);\n}\n\n//https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm\nconst intrinsicTypeNames =\n \"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\"\n .split(',').concat(\n flatten([8,16,32,64].map(num=>[\"Int\",\"Uint\",\"Float\"].map(t=>t+num+\"Array\")))\n ).filter(t=>_global[t]);\nconst intrinsicTypes = new Set(intrinsicTypeNames.map(t=>_global[t]));\n\n/** Deep clone a simple object tree.\n * \n * Copies object tree deeply, but does not deep-copy arrays,\n * typed arrays, Dates or other intrinsic types.\n * \n * Does not check for cyclic references.\n * \n * This function is 6 times faster than structuredClone() on chromium 111.\n * \n * This function can safely be used for cloning ObservabilitySets and RangeSets.\n * \n * @param o Object to clone\n * @returns Cloned object\n */\nexport function cloneSimpleObjectTree(o: T): T {\n const rv = {} as T;\n for (const k in o) if (hasOwn(o, k)) {\n const v = o[k];\n rv[k] = !v || typeof v !== 'object' || intrinsicTypes.has(v.constructor) ? v : cloneSimpleObjectTree(v);\n }\n return rv;\n}\n\nexport function objectIsEmpty(o: object) {\n for (const k in o) if (hasOwn(o, k)) return false;\n return true;\n}\n\nlet circularRefs: null | WeakMap = null;\n\n/** Deep clone an object or array.\n * \n * \n * @param any \n * @returns \n */\nexport function deepClone(any: T): T {\n circularRefs = new WeakMap();\n const rv = innerDeepClone(any);\n circularRefs = null;\n return rv;\n}\n\nfunction innerDeepClone(x: T): T {\n if (!x || typeof x !== 'object') return x;\n let rv = circularRefs.get(x); // Resolve circular references\n if (rv) return rv;\n if (isArray(x)) {\n rv = [];\n circularRefs.set(x, rv);\n for (var i = 0, l = x.length; i < l; ++i) {\n rv.push(innerDeepClone(x[i]));\n }\n } else if (intrinsicTypes.has(x.constructor)) {\n // For performance, we're less strict than structuredClone - we're only\n // cloning arrays and custom objects.\n // Typed arrays, Dates etc are not cloned.\n rv = x;\n } else {\n // We're nicer to custom classes than what structuredClone() is -\n // we preserve the proto of each object.\n const proto = getProto(x);\n rv = proto === Object.prototype ? {} : Object.create(proto);\n circularRefs.set(x, rv);\n for (var prop in x) {\n if (hasOwn(x, prop)) {\n rv[prop] = innerDeepClone(x[prop]);\n }\n }\n }\n return rv;\n}\n\nconst {toString} = {};\nexport function toStringTag(o: Object) {\n return toString.call(o).slice(8, -1);\n}\n\n// If first argument is iterable or array-like, return it as an array\nexport const iteratorSymbol = typeof Symbol !== 'undefined' ?\n Symbol.iterator :\n '@@iterator';\nexport const getIteratorOf = typeof iteratorSymbol === \"symbol\" ? function(x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nexport const asyncIteratorSymbol = typeof Symbol !== 'undefined'\n ? Symbol.asyncIterator || Symbol.for(\"Symbol.asyncIterator\")\n : '@asyncIterator';\n\nexport function delArrayItem(a: any[], x: any) {\n const i = a.indexOf(x);\n if (i >= 0) a.splice(i, 1);\n return i >= 0;\n}\n\nexport const NO_CHAR_ARRAY = {};\n// Takes one or several arguments and returns an array based on the following criteras:\n// * If several arguments provided, return arguments converted to an array in a way that\n// still allows javascript engine to optimize the code.\n// * If single argument is an array, return a clone of it.\n// * If this-pointer equals NO_CHAR_ARRAY, don't accept strings as valid iterables as a special\n// case to the two bullets below.\n// * If single argument is an iterable, convert it to an array and return the resulting array.\n// * If single argument is array-like (has length of type number), convert it to an array.\nexport function getArrayOf (arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike)) return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string') return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while ((x = it.next()), !x.done) a.push(x.value);\n return a;\n }\n if (arrayLike == null) return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--) a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--) a[i] = arguments[i];\n return a;\n}\nexport const isAsyncFunction = typeof Symbol !== 'undefined'\n ? (fn: Function) => fn[Symbol.toStringTag] === 'AsyncFunction'\n : ()=>false;\n", "import { derive, setProp } from '../functions/utils';\n\nvar dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n];\n\nvar idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n];\n\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\n\nvar defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\",\n MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"\n};\n\n//\n// DexieError - base class of all out exceptions.\n//\nexport function DexieError (name, msg) {\n // Reason we don't use ES6 classes is because:\n // 1. It bloats transpiled code and increases size of minified code.\n // 2. It doesn't give us much in this case.\n // 3. It would require sub classes to call super(), which\n // is not needed when deriving from Error.\n this.name = name;\n this.message = msg;\n}\n\nderive(DexieError).from(Error).extend({\n toString: function(){ return this.name + \": \" + this.message; }\n});\n\nfunction getMultiErrorMessage (msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(key=>failures[key].toString())\n .filter((v,i,s)=>s.indexOf(v) === i) // Only unique error strings\n .join('\\n');\n}\n\n//\n// ModifyError - thrown in Collection.modify()\n// Specific constructor because it contains members failures and failedKeys.\n//\nexport function ModifyError (msg, failures, successCount, failedKeys) {\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\n\nexport function BulkError (msg, failures) {\n this.name = \"BulkError\";\n this.failures = Object.keys(failures).map(pos => failures[pos]);\n this.failuresByPos = failures;\n this.message = getMultiErrorMessage(msg, this.failures);\n}\nderive(BulkError).from(DexieError);\n\n//\n//\n// Dynamically generate error names and exception classes based\n// on the names in errorList.\n//\n//\n\n// Map of {ErrorName -> ErrorName + \"Error\"}\nexport var errnames = errorList.reduce((obj,name)=>(obj[name]=name+\"Error\",obj),{});\n\n// Need an alias for DexieError because we're gonna create subclasses with the same name.\nconst BaseException = DexieError;\n// Map of {ErrorName -> exception constructor}\nexport var exceptions = errorList.reduce((obj,name)=>{\n // Let the name be \"DexieError\" because this name may\n // be shown in call stack and when debugging. DexieError is\n // the most true name because it derives from DexieError,\n // and we cannot change Function.name programatically without\n // dynamically create a Function object, which would be considered\n // 'eval-evil'.\n var fullName = name + \"Error\";\n function DexieError (msgOrInner, inner){\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n } else if (typeof msgOrInner === 'string') {\n this.message = `${msgOrInner}${!inner ? '' : '\\n ' + inner}`;\n this.inner = inner || null;\n } else if (typeof msgOrInner === 'object') {\n this.message = `${msgOrInner.name} ${msgOrInner.message}`;\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name]=DexieError;\n return obj;\n},{});\n\n// Use ECMASCRIPT standard exceptions where applicable:\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\n\nexport var exceptionMap = idbDomErrorNames.reduce((obj, name)=>{\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\n\nexport function mapError (domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n // Derive stack from inner exception if it has a stack\n setProp(rv, \"stack\", {get: function(){\n return this.inner.stack;\n }});\n }\n return rv;\n}\n\nexport var fullNameExceptions = errorList.reduce((obj, name)=>{\n if ([\"Syntax\",\"Type\",\"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\n\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n", "import {extend} from './utils';\n\nexport function nop() { }\nexport function mirror(val) { return val; }\nexport function pureFunctionChain(f1, f2) {\n // Enables chained events that takes ONE argument and returns it to the next function in chain.\n // This pattern is used in the hook(\"reading\") event.\n if (f1 == null || f1 === mirror) return f2;\n return function (val) {\n return f2(f1(val));\n };\n}\n\nexport function callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n}\n\nexport function hookCreatingChain(f1, f2) {\n // Enables chained events that takes several arguments and may modify first argument by making a modification and then returning the same instance.\n // This pattern is used in the hook(\"creating\") event.\n if (f1 === nop) return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined) arguments[0] = res;\n var onsuccess = this.onsuccess, // In case event listener has set this.onsuccess\n onerror = this.onerror; // In case event listener has set this.onerror\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n}\n\nexport function hookDeletingChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess, // In case event listener has set this.onsuccess\n onerror = this.onerror; // In case event listener has set this.onerror\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n}\n\nexport function hookUpdatingChain(f1, f2) {\n if (f1 === nop) return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res); // If f1 returns new modifications, extend caller's modifications with the result before calling next in chain.\n var onsuccess = this.onsuccess, // In case event listener has set this.onsuccess\n onerror = this.onerror; // In case event listener has set this.onerror\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess) this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror) this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n}\n\nexport function reverseStoppableEventChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n if (f2.apply(this, arguments) === false) return false;\n return f1.apply(this, arguments);\n };\n}\n\nexport function nonStoppableEventChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n f1.apply(this, arguments);\n f2.apply(this, arguments);\n };\n}\n\nexport function promisableChain(f1, f2) {\n if (f1 === nop) return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this,\n i = arguments.length,\n args = new Array(i);\n while (i--) args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n}\n", "// By default, debug will be true only if platform is a web platform and its page is served from localhost.\n// When debug = true, error's stacks will contain asyncronic long stacks.\nexport var debug = typeof location !== 'undefined' &&\n // By default, use debug mode if served from localhost.\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\n\nexport function setDebug(value, filter) {\n debug = value;\n}\n\nexport function deprecated (what: string, fn: (...args)=>T) {\n return function () {\n console.warn(`${what} is deprecated. See https://dexie.org/docs/Deprecations}`);\n return fn.apply(this, arguments);\n } as (...args)=>T\n}\n", "/*\n * Copyright (c) 2014-2017 David Fahlander\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/LICENSE-2.0\n */\nimport { _global } from '../globals/global';\nimport {tryCatch, props, setProp,\n getPropertyDescriptor, getArrayOf, extend, getProto} from '../functions/utils';\nimport {nop, callBoth, mirror} from '../functions/chaining-functions';\nimport {debug} from './debug';\nimport {exceptions} from '../errors';\n\n//\n// Promise and Zone (PSD) for Dexie library\n//\n// I started out writing this Promise class by copying promise-light (https://github.com/taylorhakes/promise-light) by\n// https://github.com/taylorhakes - an A+ and ECMASCRIPT 6 compliant Promise implementation.\n//\n// In previous versions this was fixed by not calling setTimeout when knowing that the resolve() or reject() came from another\n// tick. In Dexie v1.4.0, I've rewritten the Promise class entirely. Just some fragments of promise-light is left. I use\n// another strategy now that simplifies everything a lot: to always execute callbacks in a new micro-task, but have an own micro-task\n// engine that is indexedDB compliant across all browsers.\n// Promise class has also been optimized a lot with inspiration from bluebird - to avoid closures as much as possible.\n//\n// Specific non-standard features of this Promise class:\n// * Custom zone support (a.k.a. PSD) with ability to keep zones also when using native promises as well as\n// native async / await.\n// * Promise.follow() method built upon the custom zone engine, that allows user to track all promises created from current stack frame\n// and below + all promises that those promises creates or awaits.\n// * Detect any unhandled promise in a PSD-scope (PSD.onunhandled). \n//\n// David Fahlander, https://github.com/dfahlander\n//\n\n// Just a pointer that only this module knows about.\n// Used in Promise constructor to emulate a private constructor.\nvar INTERNAL = {};\n\nconst\n ZONE_ECHO_LIMIT = 100,\n [resolvedNativePromise, nativePromiseProto, resolvedGlobalPromise] = typeof Promise === 'undefined' ?\n [] :\n (()=>{\n let globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, getProto(globalP), globalP];\n // Generate a native promise (as window.Promise may have been patched)\n const nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n getProto(nativeP),\n globalP\n ];\n })(),\n nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\n\nexport const NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nconst patchGlobalPromise = !!resolvedGlobalPromise;\n\n/* The default function used only for the very first promise in a promise chain.\n As soon as then promise is resolved or rejected, all next tasks will be executed in micro ticks\n emulated in this module. For indexedDB compatibility, this means that every method needs to \n execute at least one promise before doing an indexedDB operation. Dexie will always call \n db.ready().then() for every operation to make sure the indexedDB event is started in an\n indexedDB-compatible emulated micro task loop.\n*/\nfunction schedulePhysicalTick() {\n queueMicrotask(physicalTick);\n}\n\n// Configurable through Promise.scheduler.\n// Don't export because it would be unsafe to let unknown\n// code call it unless they do try..catch within their callback.\n// This function can be retrieved through getter of Promise.scheduler though,\n// but users must not do Promise.scheduler = myFuncThatThrowsException\nvar asap = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\n\nvar isOutsideMicroTick = true, // True when NOT in a virtual microTick.\n needsNewPhysicalTick = true, // True when a push to microtickQueue must also schedulePhysicalTick()\n unhandledErrors = [], // Rejected promises that has occured. Used for triggering 'unhandledrejection'.\n rejectingErrors = [], // Tracks if errors are being re-rejected during onRejected callback.\n rejectionMapper = mirror; // Remove in next major when removing error mapping of DOMErrors and DOMExceptions\n \nexport var globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: nop,\n pgp: false,\n env: {},\n finalize: nop\n};\n\nexport var PSD = globalPSD;\n\nexport var microtickQueue = []; // Callbacks to call in this or next physical tick.\nexport var numScheduledCalls = 0; // Number of listener-calls left to do in this physical tick.\nexport var tickFinalizers = []; // Finalizers to call when there are no more async calls scheduled within current physical tick.\n\nexport default function DexiePromise(fn) {\n if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new'); \n this._listeners = [];\n \n // A library may set `promise._lib = true;` after promise is created to make resolve() or reject()\n // execute the microtask engine implicitely within the call to resolve() or reject().\n // To remain A+ compliant, a library must only set `_lib=true` if it can guarantee that the stack\n // only contains library code when calling resolve() or reject().\n // RULE OF THUMB: ONLY set _lib = true for promises explicitely resolving/rejecting directly from\n // global scope (event handler, timer etc)!\n this._lib = false;\n // Current async scope\n var psd = (this._PSD = PSD);\n \n if (typeof fn !== 'function') {\n if (fn !== INTERNAL) throw new TypeError('Not a function');\n // Private constructor (INTERNAL, state, value).\n // Used internally by Promise.resolve() and Promise.reject().\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value); // Map error, set stack and addPossiblyUnhandledError().\n return;\n }\n \n this._state = null; // null (=pending), false (=rejected) or true (=resolved)\n this._value = null; // error or result\n ++psd.ref; // Refcounting current scope\n executePromiseTask(this, fn);\n}\n\n// Prepare a property descriptor to put onto Promise.prototype.then\nconst thenProp = {\n get: function() {\n var psd = PSD, microTaskId = totalEchoes;\n\n function then (onFulfilled, onRejected) {\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n const cleanup = possibleAwait && !decrementExpectedAwaits();\n var rv = new DexiePromise((resolve, reject) => {\n propagateToListener(this, new Listener(\n nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup),\n nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup),\n resolve,\n reject,\n psd));\n });\n if (this._consoleTask) rv._consoleTask = this._consoleTask;\n return rv;\n }\n\n then.prototype = INTERNAL; // For idempotense, see setter below.\n\n return then;\n },\n // Be idempotent and allow another framework (such as zone.js or another instance of a Dexie.Promise module) to replace Promise.prototype.then\n // and when that framework wants to restore the original property, we must identify that and restore the original property descriptor.\n set: function (value) {\n setProp (this, 'then', value && value.prototype === INTERNAL ?\n thenProp : // Restore to original property descriptor.\n {\n get: function(){\n return value; // Getter returning provided value (behaves like value is just changed)\n },\n set: thenProp.set // Keep a setter that is prepared to restore original.\n }\n );\n }\n};\n\nprops(DexiePromise.prototype, {\n then: thenProp, // Defined above.\n _then: function (onFulfilled, onRejected) {\n // A little tinier version of then() that don't have to create a resulting promise.\n propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD)); \n },\n\n catch: function (onRejected) {\n if (arguments.length === 1) return this.then(null, onRejected);\n // First argument is the Error type to catch\n var type = arguments[0],\n handler = arguments[1];\n return typeof type === 'function' ? this.then(null, err =>\n // Catching errors by its constructor type (similar to java / c++ / c#)\n // Sample: promise.catch(TypeError, function (e) { ... });\n err instanceof type ? handler(err) : PromiseReject(err))\n : this.then(null, err =>\n // Catching errors by the error.name property. Makes sense for indexedDB where error type\n // is always DOMError but where e.name tells the actual error type.\n // Sample: promise.catch('ConstraintError', function (e) { ... });\n err && err.name === type ? handler(err) : PromiseReject(err));\n },\n\n finally: function (onFinally) {\n return this.then(value => {\n return DexiePromise.resolve(onFinally()).then(()=>value);\n }, err => {\n return DexiePromise.resolve(onFinally()).then(()=>PromiseReject(err));\n });\n },\n \n timeout: function (ms, msg) {\n return ms < Infinity ?\n new DexiePromise((resolve, reject) => {\n var handle = setTimeout(() => reject(new exceptions.Timeout(msg)), ms);\n this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n }) : this;\n }\n});\n\nif (typeof Symbol !== 'undefined' && Symbol.toStringTag)\n setProp(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.Promise');\n\n// Now that Promise.prototype is defined, we have all it takes to set globalPSD.env.\n// Environment globals snapshotted on leaving global zone\nglobalPSD.env = snapShot();\n\nfunction Listener(onFulfilled, onRejected, resolve, reject, zone) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n this.psd = zone;\n}\n\n// Promise Static Properties\nprops (DexiePromise, {\n all: function () {\n var values = getArrayOf.apply(null, arguments) // Supports iterables, implicit arguments and array-like.\n .map(onPossibleParallellAsync); // Handle parallell async/awaits \n return new DexiePromise(function (resolve, reject) {\n if (values.length === 0) resolve([]);\n var remaining = values.length;\n values.forEach((a,i) => DexiePromise.resolve(a).then(x => {\n values[i] = x;\n if (!--remaining) resolve(values);\n }, reject));\n });\n },\n \n resolve: value => {\n if (value instanceof DexiePromise) return value;\n if (value && typeof value.then === 'function') return new DexiePromise((resolve, reject)=>{\n value.then(resolve, reject);\n });\n var rv = new DexiePromise(INTERNAL, true, value);\n return rv;\n },\n \n reject: PromiseReject,\n \n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise((resolve, reject) => {\n values.map(value => DexiePromise.resolve(value).then(resolve, reject));\n });\n },\n\n PSD: {\n get: ()=>PSD,\n set: value => PSD = value\n },\n\n totalEchoes: {get: ()=>totalEchoes},\n\n //task: {get: ()=>task},\n \n newPSD: newScope,\n \n usePSD: usePSD,\n \n scheduler: {\n get: () => asap,\n set: value => {asap = value}\n },\n \n rejectionMapper: {\n get: () => rejectionMapper,\n set: value => {rejectionMapper = value;} // Map reject failures\n },\n \n follow: (fn, zoneProps) => {\n return new DexiePromise((resolve, reject) => {\n return newScope((resolve, reject) => {\n var psd = PSD;\n psd.unhandleds = []; // For unhandled standard- or 3rd party Promises. Checked at psd.finalize()\n psd.onunhandled = reject; // Triggered directly on unhandled promises of this library.\n psd.finalize = callBoth(function () {\n // Unhandled standard or 3rd part promises are put in PSD.unhandleds and\n // examined upon scope completion while unhandled rejections in this Promise\n // will trigger directly through psd.onunhandled\n run_at_end_of_this_or_next_physical_tick(()=>{\n this.unhandleds.length === 0 ? resolve() : reject(this.unhandleds[0]);\n });\n }, psd.finalize);\n fn();\n }, zoneProps, resolve, reject);\n });\n }\n});\n\nif (NativePromise) {\n if (NativePromise.allSettled) setProp (DexiePromise, \"allSettled\", function() {\n const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(resolve => {\n if (possiblePromises.length === 0) resolve([]);\n let remaining = possiblePromises.length;\n const results = new Array(remaining);\n possiblePromises.forEach((p, i) => DexiePromise.resolve(p).then(\n value => results[i] = {status: \"fulfilled\", value},\n reason => results[i] = {status: \"rejected\", reason})\n .then(()=>--remaining || resolve(results)));\n });\n });\n if (NativePromise.any && typeof AggregateError !== 'undefined') setProp(DexiePromise, \"any\", function() {\n const possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise((resolve, reject) => {\n if (possiblePromises.length === 0) reject(new AggregateError([]));\n let remaining = possiblePromises.length;\n const failures = new Array(remaining);\n possiblePromises.forEach((p, i) => DexiePromise.resolve(p).then(\n value => resolve(value),\n failure => {\n failures[i] = failure;\n if (!--remaining) reject(new AggregateError(failures));\n }));\n });\n });\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n if (NativePromise.withResolvers) DexiePromise.withResolvers = NativePromise.withResolvers;\n}\n\n/**\n* Take a potentially misbehaving resolver function and make sure\n* onFulfilled and onRejected are only called once.\n*\n* Makes no guarantees about asynchrony.\n*/\nfunction executePromiseTask (promise, fn) {\n // Promise Resolution Procedure:\n // https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n try {\n fn(value => {\n if (promise._state !== null) return; // Already settled\n if (value === promise) throw new TypeError('A promise cannot be resolved with itself.');\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n if (value && typeof value.then === 'function') {\n executePromiseTask(promise, (resolve, reject) => {\n value instanceof DexiePromise ?\n value._then(resolve, reject) :\n value.then(resolve, reject);\n });\n } else {\n promise._state = true;\n promise._value = value;\n propagateAllListeners(promise);\n }\n if (shouldExecuteTick) endMicroTickScope();\n }, handleRejection.bind(null, promise)); // If Function.bind is not supported. Exception is handled in catch below\n } catch (ex) {\n handleRejection(promise, ex);\n }\n}\n\nfunction handleRejection (promise, reason) {\n rejectingErrors.push(reason);\n if (promise._state !== null) return;\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n reason = rejectionMapper(reason);\n promise._state = false;\n promise._value = reason;\n // Add the failure to a list of possibly uncaught errors\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick) endMicroTickScope();\n}\n\nfunction propagateAllListeners (promise) {\n //debug && linkToPreviousPromise(promise);\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize(); // if psd.ref reaches zero, call psd.finalize();\n if (numScheduledCalls === 0) {\n // If numScheduledCalls is 0, it means that our stack is not in a callback of a scheduled call,\n // and that no deferreds where listening to this rejection or success.\n // Since there is a risk that our stack can contain application code that may\n // do stuff after this code is finished that may generate new calls, we cannot\n // call finalizers here.\n ++numScheduledCalls;\n asap(()=>{\n if (--numScheduledCalls === 0) finalizePhysicalTick(); // Will detect unhandled errors\n }, []);\n }\n}\n\nfunction propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n // This Listener doesnt have a listener for the event being triggered (onFulfilled or onReject) so lets forward the event to any eventual listeners on the Promise instance returned by then() or catch()\n return (promise._state ? listener.resolve : listener.reject) (promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap (callListener, [cb, promise, listener]);\n}\n\nfunction callListener (cb, promise, listener) {\n try {\n // Call callback and resolve our listener with it's return value.\n var ret, value = promise._value;\n \n if (!promise._state && rejectingErrors.length) rejectingErrors = [];\n // cb is onResolved\n ret = debug && promise._consoleTask ? promise._consoleTask.run(()=>cb (value)) : cb (value);\n if (!promise._state && rejectingErrors.indexOf(value) === -1) {\n markErrorAsHandled(promise); // Callback didnt do Promise.reject(err) nor reject(err) onto another promise.\n }\n listener.resolve(ret);\n } catch (e) {\n // Exception thrown in callback. Reject our listener.\n listener.reject(e);\n } finally {\n if (--numScheduledCalls === 0) finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\n\n/* The callback to schedule with queueMicrotask().\n It runs a virtual microtick and executes any callback registered in microtickQueue.\n */\nfunction physicalTick() {\n usePSD(globalPSD, ()=>{\n // Make sure to reset the async context to globalPSD before\n // executing any of the microtick subscribers.\n beginMicroTickScope() && endMicroTickScope();\n });\n}\n\nexport function beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n}\n\n/* Executes micro-ticks without doing try..catch.\n This can be possible because we only use this internally and\n the registered functions are exception-safe (they do try..catch\n internally before calling any external method). If registering\n functions in the microtickQueue that are not exception-safe, this\n would destroy the framework and make it instable. So we don't export\n our asap method.\n*/\nexport function endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n}\n\nfunction finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(p => {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0); // Clone first because finalizer may remove itself from list.\n var i = finalizers.length;\n while (i) finalizers[--i](); \n}\n\nfunction run_at_end_of_this_or_next_physical_tick (fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap(()=>{\n if (--numScheduledCalls === 0) finalizePhysicalTick();\n }, []);\n}\n\nfunction addPossiblyUnhandledError(promise) {\n // Only add to unhandledErrors if not already there. The first one to add to this list\n // will be upon the first rejection so that the root cause (first promise in the\n // rejection chain) is the one listed.\n if (!unhandledErrors.some(p => p._value === promise._value))\n unhandledErrors.push(promise);\n}\n\nfunction markErrorAsHandled(promise) {\n // Called when a reject handled is actually being called.\n // Search in unhandledErrors for any promise whos _value is this promise_value (list\n // contains only rejected promises, and only one item per error)\n var i = unhandledErrors.length;\n while (i) if (unhandledErrors[--i]._value === promise._value) {\n // Found a promise that failed with this same error object pointer,\n // Remove that since there is a listener that actually takes care of it.\n unhandledErrors.splice(i, 1);\n return;\n }\n}\n\nfunction PromiseReject (reason) {\n return new DexiePromise(INTERNAL, false, reason);\n}\n\nexport function wrap (fn, errorCatcher) {\n var psd = PSD;\n return function() {\n var wasRootExec = beginMicroTickScope(),\n outerScope = PSD;\n\n try {\n switchToZone(psd, true);\n return fn.apply(this, arguments);\n } catch (e) {\n errorCatcher && errorCatcher(e);\n } finally {\n switchToZone(outerScope, false);\n if (wasRootExec) endMicroTickScope();\n }\n };\n}\n\n\n//\n// variables used for native await support\n//\nconst task = { awaits: 0, echoes: 0, id: 0}; // The ongoing macro-task when using zone-echoing.\nvar taskCounter = 0; // ID counter for macro tasks.\nvar zoneStack = []; // Stack of left zones to restore asynchronically.\nvar zoneEchoes = 0; // When > 0, zoneLeaveEcho is queued. When 0 and task.echoes is also 0, nothing is queued.\nvar totalEchoes = 0; // ID counter for micro-tasks. Used to detect possible native await in our Promise.prototype.then.\n\n\nvar zone_id_counter = 0;\nexport function newScope (fn, props, a1, a2) {\n var parent = PSD,\n psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n // Prepare for promise patching (done in usePSD):\n var globalEnv = globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: DexiePromise, // Changing window.Promise could be omitted for Chrome and Edge, where IDB+Promise plays well!\n PromiseProp: {value: DexiePromise, configurable: true, writable: true},\n all: DexiePromise.all,\n race: DexiePromise.race,\n allSettled: DexiePromise.allSettled,\n any: DexiePromise.any,\n resolve: DexiePromise.resolve,\n reject: DexiePromise.reject,\n } : {};\n if (props) extend(psd, props);\n \n // unhandleds and onunhandled should not be specifically set here.\n // Leave them on parent prototype.\n // unhandleds.push(err) will push to parent's prototype\n // onunhandled() will call parents onunhandled (with this scope's this-pointer though!)\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n }\n var rv = usePSD (psd, fn, a1, a2);\n if (psd.ref === 0) psd.finalize();\n return rv;\n}\n\n// Function to call if scopeFunc returns NativePromise\n// Also for each NativePromise in the arguments to Promise.all()\nexport function incrementExpectedAwaits() {\n if (!task.id) task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n}\n\n// Function to call when 'then' calls back on a native promise where onAwaitExpected() had been called.\n// Also call this when a native await calls then method on a promise. In that case, don't supply\n// sourceTaskId because we already know it refers to current task.\nexport function decrementExpectedAwaits() {\n if (!task.awaits) return false;\n if (--task.awaits === 0) task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT; // Will reset echoes to 0 if awaits is 0.\n return true;\n}\n\nif ((''+nativePromiseThen).indexOf('[native code]') === -1) {\n // If the native promise' prototype is patched, we cannot rely on zone echoing.\n // Disable that here:\n incrementExpectedAwaits = decrementExpectedAwaits = nop;\n}\n\n// Call from Promise.all() and Promise.race()\nexport function onPossibleParallellAsync (possiblePromise) {\n if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n incrementExpectedAwaits(); \n return possiblePromise.then(x => {\n decrementExpectedAwaits();\n return x;\n }, e => {\n decrementExpectedAwaits();\n return rejection(e);\n });\n }\n return possiblePromise;\n}\n\nfunction zoneEnterEcho(targetZone) {\n ++totalEchoes;\n //console.log(\"Total echoes \", totalEchoes);\n //if (task.echoes === 1) console.warn(\"Cancelling echoing of async context.\");\n if (!task.echoes || --task.echoes === 0) {\n task.echoes = task.awaits = task.id = 0; // Cancel echoing.\n }\n\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n}\n\nfunction zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length-1];\n zoneStack.pop();\n switchToZone(zone, false);\n}\n\nfunction switchToZone (targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n // Enter or leave zone asynchronically as well, so that tasks initiated during current tick\n // will be surrounded by the zone when they are invoked.\n queueMicrotask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD) return;\n\n PSD = targetZone; // The actual zone switch occurs at this line.\n\n // Snapshot on every leave from global zone.\n if (currentZone === globalPSD) globalPSD.env = snapShot();\n\n if (patchGlobalPromise) {\n // Let's patch the global and native Promises (may be same or may be different)\n var GlobalPromise = globalPSD.env.Promise;\n // Swich environments (may be PSD-zone or the global zone. Both apply.)\n var targetEnv = targetZone.env;\n\n if (currentZone.global || targetZone.global) {\n // Leaving or entering global zone. It's time to patch / restore global Promise.\n\n // Set this Promise to window.Promise so that transiled async functions will work on Firefox, Safari and IE, as well as with Zonejs and angular.\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n\n // Support Promise.all() etc to work indexedDB-safe also when people are including es6-promise as a module (they might\n // not be accessing global.Promise but a local reference to it)\n GlobalPromise.all = targetEnv.all;\n GlobalPromise.race = targetEnv.race;\n GlobalPromise.resolve = targetEnv.resolve;\n GlobalPromise.reject = targetEnv.reject;\n if (targetEnv.allSettled) GlobalPromise.allSettled = targetEnv.allSettled;\n if (targetEnv.any) GlobalPromise.any = targetEnv.any;\n }\n }\n}\n\nfunction snapShot () {\n var GlobalPromise = _global.Promise;\n return patchGlobalPromise ? {\n Promise: GlobalPromise,\n PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n all: GlobalPromise.all,\n race: GlobalPromise.race,\n allSettled: GlobalPromise.allSettled,\n any: GlobalPromise.any,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject,\n } : {};\n}\n\nexport function usePSD (psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n } finally {\n switchToZone(outerScope, false);\n }\n}\n\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\n return typeof fn !== 'function' ? fn : function () {\n var outerZone = PSD;\n if (possibleAwait) incrementExpectedAwaits();\n switchToZone(zone, true);\n try {\n return fn.apply(this, arguments);\n } finally {\n switchToZone(outerZone, false);\n if (cleanup) queueMicrotask(decrementExpectedAwaits);\n }\n };\n}\n\n/** Execute callback in global context */\nexport function execInGlobalContext(cb) {\n if (Promise === NativePromise && task.echoes === 0) {\n if (zoneEchoes === 0) {\n cb();\n } else {\n enqueueNativeMicroTask(cb);\n }\n } else {\n setTimeout(cb, 0);\n }\n}\n\nexport var rejection = DexiePromise.reject;\n\nexport {DexiePromise};\n", "import { PSD, rejection, newScope } from \"../helpers/promise\";\nimport { DexieOptions } from \"../public/types/dexie-constructor\";\nimport { errnames, exceptions } from \"../errors\";\nimport { nop } from \"./chaining-functions\";\nimport { Transaction } from \"../classes/transaction\";\nimport { Dexie } from '../classes/dexie';\n\n/* Generate a temporary transaction when db operations are done outside a transaction scope.\n*/\nexport function tempTransaction (\n db: Dexie,\n mode: IDBTransactionMode,\n storeNames: string[],\n fn: (resolve, reject, trans: Transaction) => any)\n // Last argument is \"writeLocked\". But this doesnt apply to oneshot direct db operations, so we ignore it.\n{\n if (!db.idbdb || (!db._state.openComplete && (!PSD.letThrough && !db._vip))) {\n if (db._state.openComplete) {\n // db.idbdb is falsy but openComplete is true. Must have been an exception durin open.\n // Don't wait for openComplete as it would lead to infinite loop.\n return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));\n }\n if (!db._state.isBeingOpened) {\n if (!db._state.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop); // Open in background. If if fails, it will be catched by the final promise anyway.\n }\n return db._state.dbReadyPromise.then(() => tempTransaction(db, mode, storeNames, fn));\n } else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n db._state.PR1398_maxLoop = 3;\n } catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({disableAutoOpen: false});\n return db.open().then(()=>tempTransaction(db, mode, storeNames, fn));\n }\n return rejection(ex);\n }\n return trans._promise(mode, (resolve, reject) => {\n return newScope(() => { // OPTIMIZATION POSSIBLE? newScope() not needed because it's already done in _promise.\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(result => {\n // Instead of resolving value directly, wait with resolving it until transaction has completed.\n // Otherwise the data would not be in the DB if requesting it in the then() operation.\n // Specifically, to ensure that the following expression will work:\n //\n // db.friends.put({name: \"Arne\"}).then(function () {\n // db.friends.where(\"name\").equals(\"Arne\").count(function(count) {\n // assert (count === 1);\n // });\n // });\n //\n if (mode === 'readwrite') try {trans.idbtrans.commit();} catch {}\n return mode === 'readonly' ? result : trans._completion.then(() => result);\n });/*.catch(err => { // Don't do this as of now. If would affect bulk- and modify methods in a way that could be more intuitive. But wait! Maybe change in next major.\n trans._reject(err);\n return rejection(err);\n });*/\n }\n}\n", "import { Dexie } from \"../classes/dexie\";\n\nexport const DEXIE_VERSION = '{version}'; // Replaced by build-script.\nexport const maxString = String.fromCharCode(65535);\nexport const minKey = -Infinity; // minKey can be constant. maxKey must be a prop of Dexie (_maxKey)\nexport const INVALID_KEY_ARGUMENT =\n \"Invalid key provided. Keys must be of type string, number, Date or Array.\";\nexport const STRING_EXPECTED = \"String expected.\";\nexport const connections: Dexie[] = [];\nexport const dexieStackFrameFilter = frame => !/(dexie\\.js|dexie\\.min\\.js)/.test(frame);\nexport const DBNAMES_DB = '__dbnames';\nexport const READONLY = 'readonly';\nexport const READWRITE = 'readwrite';\n", "export function combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n}\n", "import { DBCoreKeyRange, DBCoreRangeType } from '../public/types/dbcore';\n\nexport const AnyRange: DBCoreKeyRange = {\n type: DBCoreRangeType.Any,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n}\n\nexport const NeverRange: DBCoreKeyRange = {\n type: DBCoreRangeType.Never,\n lower: -Infinity,\n lowerOpen: true,\n upper: -Infinity,\n upperOpen: true\n}\n", "import { deepClone, delByKeyPath, getByKeyPath } from './utils';\n\n// This workaround is needed since obj could be a custom-class instance with an\n// uninitialized keyPath. See the following comment for more context:\n// https://github.com/dfahlander/Dexie.js/issues/1280#issuecomment-823557881\nexport function workaroundForUndefinedPrimKey(keyPath: string | ArrayLike) {\n // Workaround only needed for plain non-dotted keyPaths\n return typeof keyPath === \"string\" && !/\\./.test(keyPath) \n ? (obj: object) => {\n if (obj[keyPath] === undefined && (keyPath in obj)) {\n // property exists but is undefined. This will not be liked by Indexeddb.\n // Need to remove the property before adding it but we need to clone it before\n // doing that to not be intrusive.\n obj = deepClone(obj);\n delete obj[keyPath];\n }\n return obj;\n }\n : (obj: object) => obj;\n}", "import { exceptions } from \"../../errors\";\n\nexport function Entity(){\n throw exceptions.Type();\n}\n", "// Implementation of https://www.w3.org/TR/IndexedDB-3/#compare-two-keys\n\nimport { toStringTag } from './utils';\n\n// ... with the adjustment to return NaN instead of throwing.\nexport function cmp(a: any, b: any): number {\n try {\n const ta = type(a);\n const tb = type(b);\n if (ta !== tb) {\n if (ta === 'Array') return 1;\n if (tb === 'Array') return -1;\n if (ta === 'binary') return 1;\n if (tb === 'binary') return -1;\n if (ta === 'string') return 1;\n if (tb === 'string') return -1;\n if (ta === 'Date') return 1;\n if (tb !== 'Date') return NaN;\n return -1;\n }\n switch (ta) {\n case 'number':\n case 'Date':\n case 'string':\n return a > b ? 1 : a < b ? -1 : 0;\n case 'binary': {\n return compareUint8Arrays(getUint8Array(a), getUint8Array(b));\n }\n case 'Array':\n return compareArrays(a, b);\n }\n } catch {}\n return NaN; // Return value if any given args are valid keys.\n}\n\nexport function compareArrays(a: any[], b: any[]): number {\n const al = a.length;\n const bl = b.length;\n const l = al < bl ? al : bl;\n for (let i = 0; i < l; ++i) {\n const res = cmp(a[i], b[i]);\n if (res !== 0) return res;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\n\nexport function compareUint8Arrays(\n a: Uint8Array,\n b: Uint8Array\n) {\n const al = a.length;\n const bl = b.length;\n const l = al < bl ? al : bl;\n for (let i = 0; i < l; ++i) {\n if (a[i] !== b[i]) return a[i] < b[i] ? -1 : 1;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\n\n// Implementation of https://www.w3.org/TR/IndexedDB-3/#key-type\nfunction type(x: any) {\n const t = typeof x;\n if (t !== 'object') return t;\n if (ArrayBuffer.isView(x)) return 'binary';\n const tsTag = toStringTag(x); // Cannot use instanceof in Safari\n return tsTag === 'ArrayBuffer' ? 'binary' : (tsTag as 'Array' | 'Date');\n}\n\ntype BinaryType =\n | ArrayBuffer\n | DataView\n | Uint8ClampedArray\n | ArrayBufferView\n | Uint8Array\n | Int8Array\n | Uint16Array\n | Int16Array\n | Uint32Array\n | Int32Array\n | Float32Array\n | Float64Array\n | BigInt64Array \n | BigUint64Array;\n\nfunction getUint8Array(a: BinaryType): Uint8Array {\n if (a instanceof Uint8Array) return a;\n if (ArrayBuffer.isView(a))\n // TypedArray or DataView\n return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return new Uint8Array(a); // ArrayBuffer\n}\n", "import { BulkError, exceptions } from '../../errors';\nimport { Table as ITable } from '../../public/types/table';\nimport { TableSchema } from '../../public/types/table-schema';\nimport { TableHooks } from '../../public/types/table-hooks';\nimport { DexiePromise as Promise, PSD, newScope, rejection, beginMicroTickScope, endMicroTickScope } from '../../helpers/promise';\nimport { Transaction } from '../transaction';\nimport { Dexie } from '../dexie';\nimport { tempTransaction } from '../../functions/temp-transaction';\nimport { Collection } from '../collection';\nimport { isArray, keys, getByKeyPath, setByKeyPath, extend, getProto } from '../../functions/utils';\nimport { maxString } from '../../globals/constants';\nimport { combine } from '../../functions/combine';\nimport { PromiseExtended } from \"../../public/types/promise-extended\";\nimport { IndexableType } from '../../public/types/indexable-type';\nimport { debug } from '../../helpers/debug';\nimport { DBCoreTable } from '../../public/types/dbcore';\nimport { AnyRange } from '../../dbcore/keyrange';\nimport { workaroundForUndefinedPrimKey } from '../../functions/workaround-undefined-primkey';\nimport { Entity } from '../entity/Entity';\nimport { UpdateSpec } from '../../public';\nimport { cmp } from '../../functions/cmp';\n\n/** class Table\n * \n * https://dexie.org/docs/Table/Table\n */\nexport class Table implements ITable {\n db: Dexie;\n _tx?: Transaction;\n name: string;\n schema: TableSchema;\n hook: TableHooks;\n core: DBCoreTable;\n\n _trans(\n mode: IDBTransactionMode,\n fn: (idbtrans: IDBTransaction, dxTrans: Transaction) => PromiseLike | void,\n writeLocked?: boolean | string) : PromiseExtended\n {\n const trans: Transaction = this._tx || PSD.trans;\n const tableName = this.name;\n // @ts-ignore: Use Chrome's Async Stack Tagging API to allow tracing and simplify debugging for dexie users.\n const task = debug && typeof console !== 'undefined' && console.createTask && console.createTask(`Dexie: ${mode === 'readonly' ? 'read' : 'write' } ${this.name}`);\n \n function checkTableInTransaction(resolve, reject, trans: Transaction) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans) as Promise;\n }\n // Surround all in a microtick scope.\n // Reason: Browsers (modern Safari + older others)\n // still as of 2018-10-10 has problems keeping a transaction\n // alive between micro ticks. Safari because if transaction\n // is created but not used in same microtick, it will go\n // away. That specific issue could be solved in DBCore\n // by opening the transaction just before using it instead.\n // But older Firefoxes and IE11 (with Promise polyfills)\n // will still have probs.\n // The beginMicrotickScope()/endMicrotickScope() works\n // in cooperation with Dexie.Promise to orchestrate\n // the micro-ticks in endMicrotickScope() rather than\n // in native engine.\n const wasRootExec = beginMicroTickScope();\n try {\n let p = trans && trans.db._novip === this.db._novip ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(() => trans._promise(mode, checkTableInTransaction, writeLocked), { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n if (task) { // Dexie.debug = true so we trace errors\n p._consoleTask = task;\n p = p.catch(err => {\n console.trace(err);\n return rejection(err);\n });\n }\n return p; \n } finally {\n if (wasRootExec) endMicroTickScope();\n }\n }\n\n /** Table.get()\n * \n * https://dexie.org/docs/Table/Table.get()\n * \n **/\n get(keyOrCrit, cb?) {\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit as { [key: string]: IndexableType }).first(cb);\n if (keyOrCrit == null) return rejection(new exceptions.Type(`Invalid argument to Table.get()`));\n\n return this._trans('readonly', (trans) => {\n return this.core.get({trans, key: keyOrCrit})\n .then(res => this.hook.reading.fire(res));\n }).then(cb);\n }\n\n /** Table.where()\n * \n * https://dexie.org/docs/Table/Table.where()\n * \n **/\n where(indexOrCrit: string | string[] | { [key: string]: IndexableType }) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, `[${indexOrCrit.join('+')}]`);\n // indexOrCrit is an object map of {[keyPath]:value} \n const keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n // Only one critera. This was the easy case:\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n\n // Multiple criterias.\n // Let's try finding a compound index that matches all keyPaths in\n // arbritary order:\n const compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(ix => {\n if (\n ix.compound &&\n keyPaths.every(keyPath => ix.keyPath.indexOf(keyPath) >= 0)) {\n for (let i=0; i a.keyPath.length - b.keyPath.length)[0];\n \n if (compoundIndex && this.db._maxKey !== maxString) {\n // Cool! We found such compound index\n // and this browser supports compound indexes (maxKey !== maxString)!\n const keyPathsInValidOrder = (compoundIndex.keyPath as string[]).slice(0, keyPaths.length);\n return this\n .where(keyPathsInValidOrder)\n .equals(keyPathsInValidOrder.map(kp => indexOrCrit[kp]));\n }\n\n if (!compoundIndex && debug) console.warn(\n `The query ${JSON.stringify(indexOrCrit)} on ${this.name} would benefit from a ` +\n `compound index [${keyPaths.join('+')}]`);\n\n // Ok, now let's fallback to finding at least one matching index\n // and filter the rest.\n const { idxByName } = this.schema;\n\n function equals(a, b) {\n return cmp(a, b) === 0; // Works with all indexable types including binary keys.\n }\n\n const [idx, filterFunction] = keyPaths.reduce(([prevIndex, prevFilterFn], keyPath) => {\n const index = idxByName[keyPath];\n const value = indexOrCrit[keyPath];\n return [\n prevIndex || index, // idx::=Pick index of first matching keypath\n prevIndex || !index ? // filter::=null if not needed, otherwise combine function filter\n combine(\n prevFilterFn,\n index && index.multi ?\n x => {\n const prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(item => equals(value, item));\n } : x => equals(value, getByKeyPath(x, keyPath)))\n : prevFilterFn\n ];\n }, [null, null]);\n\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) : // Has compound but browser bad. Allow filter.\n this.where(keyPaths).equals(''); // No index at all. Fail lazily with \"[a+b+c] is not indexed\"\n }\n\n /** Table.filter()\n * \n * https://dexie.org/docs/Table/Table.filter()\n * \n **/\n filter(filterFunction: (obj: any) => boolean) {\n return this.toCollection().and(filterFunction);\n }\n\n /** Table.count()\n * \n * https://dexie.org/docs/Table/Table.count()\n * \n **/\n count(thenShortcut?: any) {\n return this.toCollection().count(thenShortcut);\n }\n\n /** Table.offset()\n * \n * https://dexie.org/docs/Table/Table.offset()\n * \n **/\n offset(offset: number) {\n return this.toCollection().offset(offset);\n }\n\n /** Table.limit()\n * \n * https://dexie.org/docs/Table/Table.limit()\n * \n **/\n limit(numRows: number) {\n return this.toCollection().limit(numRows);\n }\n\n /** Table.each()\n * \n * https://dexie.org/docs/Table/Table.each()\n * \n **/\n each(callback: (obj: any, cursor: { key: IndexableType, primaryKey: IndexableType }) => any) {\n return this.toCollection().each(callback);\n }\n\n /** Table.toArray()\n * \n * https://dexie.org/docs/Table/Table.toArray()\n * \n **/\n toArray(thenShortcut?: any) {\n return this.toCollection().toArray(thenShortcut);\n }\n\n /** Table.toCollection()\n * \n * https://dexie.org/docs/Table/Table.toCollection()\n * \n **/\n toCollection() {\n return new this.db.Collection(new this.db.WhereClause(this));\n }\n\n /** Table.orderBy()\n * \n * https://dexie.org/docs/Table/Table.orderBy()\n * \n **/\n orderBy(index: string | string[]) {\n return new this.db.Collection(\n new this.db.WhereClause(this, isArray(index) ?\n `[${index.join('+')}]` :\n index));\n }\n\n /** Table.reverse()\n * \n * https://dexie.org/docs/Table/Table.reverse()\n * \n **/\n reverse(): Collection {\n return this.toCollection().reverse();\n }\n\n /** Table.mapToClass()\n * \n * https://dexie.org/docs/Table/Table.mapToClass()\n * \n **/\n mapToClass(constructor: Function) {\n const {db, name: tableName} = this;\n this.schema.mappedClass = constructor;\n if (constructor.prototype instanceof Entity) {\n constructor = class extends (constructor as any) {\n get db () { return db; }\n table() { return tableName; }\n }\n }\n // Collect all inherited property names (including method names) by\n // walking the prototype chain. This is to avoid overwriting them from\n // database data - so application code can rely on inherited props never\n // becoming shadowed by database object props.\n const inheritedProps = new Set();\n for (let proto = constructor.prototype; proto; proto = getProto(proto)) {\n Object.getOwnPropertyNames(proto).forEach(propName => inheritedProps.add(propName));\n }\n \n // Now, subscribe to the when(\"reading\") event to make all objects that come out from this table inherit from given class\n // no matter which method to use for reading (Table.get() or Table.where(...)... )\n const readHook = (obj: Object) => {\n if (!obj) return obj; // No valid object. (Value is null or undefined). Return as is.\n // Create a new object that derives from constructor:\n const res = Object.create(constructor.prototype);\n // Clone members (but never those that collide with a property in the prototype\n // hierchary (MUST BE ABLE TO RELY ON Entity methods and props!)):\n for (let m in obj) if (!inheritedProps.has(m)) try { res[m] = obj[m]; } catch (_) { }\n return res;\n };\n\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n }\n\n /** @deprecated */\n defineClass() {\n function Class (content){\n extend(this, content);\n };\n return this.mapToClass(Class);\n }\n\n /** Table.add()\n * \n * https://dexie.org/docs/Table/Table.add()\n * \n **/\n add(obj, key?: IndexableType): PromiseExtended {\n const {auto, keyPath} = this.schema.primKey;\n let objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', trans => {\n return this.core.mutate({trans, type: 'add', keys: key != null ? [key] : null, values: [objToAdd]});\n }).then(res => res.numFailures ? Promise.reject(res.failures[0]) : res.lastResult)\n .then(lastResult => {\n if (keyPath) {\n // This part should be here for backward compatibility.\n // If ever feeling too bad about this, please wait to a new major before removing it,\n // and document the change thoroughly.\n try{setByKeyPath(obj, keyPath, lastResult);}catch(_){};\n }\n return lastResult;\n });\n }\n\n /** Table.update()\n * \n * https://dexie.org/docs/Table/Table.update()\n * \n **/\n update(keyOrObject, modifications: { [keyPath: string]: any; } | ((obj: any, ctx:{value: any, primKey: IndexableType}) => void | boolean)): PromiseExtended {\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n const key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined) return rejection(new exceptions.InvalidArgument(\n \"Given object does not contain its primary key\"));\n /*// object to modify. Also modify given object with the modifications:\n // This part should be here for backward compatibility.\n // If ever feeling too bad about mutating given object, please wait to a new major before removing it,\n // and document the change thoroughly. TODO: Document this change!\n if (!Object.isFrozen(keyOrObject)) try {\n if (typeof modifications !== \"function\") {\n keys(modifications).forEach(keyPath => {\n setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n });\n } else {\n // Now since we support function argument, we should have a similar behavior here as well\n // (as long as we do this mutability stuff on the given object)\n modifications(keyOrObject, {value: keyOrObject, primKey: key});\n }\n } catch {\n // Maybe given object was frozen.\n // This part is not essential. Just move on as nothing happened...\n }*/\n return this.where(\":id\").equals(key).modify(modifications);\n } else {\n // key to modify\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n }\n\n /** Table.put()\n * \n * https://dexie.org/docs/Table/Table.put()\n * \n **/\n put(obj, key?: IndexableType): PromiseExtended {\n const {auto, keyPath} = this.schema.primKey;\n let objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans(\n 'readwrite',\n trans => this.core.mutate({trans, type: 'put', values: [objToAdd], keys: key != null ? [key] : null}))\n .then(res => res.numFailures ? Promise.reject(res.failures[0]) : res.lastResult)\n .then(lastResult => {\n if (keyPath) {\n // This part should be here for backward compatibility.\n // If ever feeling too bad about this, please wait to a new major before removing it,\n // and document the change thoroughly.\n try{setByKeyPath(obj, keyPath, lastResult);}catch(_){};\n }\n return lastResult;\n });\n }\n\n /** Table.delete()\n * \n * https://dexie.org/docs/Table/Table.delete()\n * \n **/\n delete(key: IndexableType): PromiseExtended {\n return this._trans('readwrite',\n trans => this.core.mutate({trans, type: 'delete', keys: [key]}))\n .then(res => res.numFailures ? Promise.reject(res.failures[0]) : undefined);\n }\n\n /** Table.clear()\n * \n * https://dexie.org/docs/Table/Table.clear()\n * \n **/\n clear() {\n return this._trans('readwrite',\n trans => this.core.mutate({trans, type: 'deleteRange', range: AnyRange}))\n .then(res => res.numFailures ? Promise.reject(res.failures[0]) : undefined);\n }\n\n /** Table.bulkGet()\n * \n * https://dexie.org/docs/Table/Table.bulkGet()\n * \n * @param keys \n */\n bulkGet(keys: IndexableType[]) {\n return this._trans('readonly', trans => {\n return this.core.getMany({\n keys,\n trans\n }).then(result => result.map(res => this.hook.reading.fire(res)));\n });\n }\n\n /** Table.bulkAdd()\n * \n * https://dexie.org/docs/Table/Table.bulkAdd()\n * \n **/\n bulkAdd(\n objects: readonly any[],\n keysOrOptions?: ReadonlyArray | { allKeys?: boolean },\n options?: { allKeys?: boolean }\n ) { \n const keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions as { allKeys?: boolean });\n const wantResults = options ? options.allKeys : undefined;\n\n return this._trans('readwrite', trans => {\n const {auto, keyPath} = this.schema.primKey;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n\n const numObjects = objects.length; // Pick length here to allow garbage collection of objects later\n let objectsToAdd = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return this.core.mutate(\n {trans, type: 'add', keys: keys as IndexableType[], values: objectsToAdd, wantResults}\n )\n .then(({numFailures, results,lastResult, failures}) => {\n const result = wantResults ? results : lastResult;\n if (numFailures === 0) return result;\n throw new BulkError(\n `${this.name}.bulkAdd(): ${numFailures} of ${numObjects} operations failed`, failures);\n });\n });\n }\n\n /** Table.bulkPut()\n * \n * https://dexie.org/docs/Table/Table.bulkPut()\n * \n **/\n bulkPut(\n objects: readonly any[],\n keysOrOptions?: ReadonlyArray | { allKeys?: boolean },\n options?: { allKeys?: boolean }\n ) { \n const keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions as { allKeys?: boolean });\n const wantResults = options ? options.allKeys : undefined;\n\n return this._trans('readwrite', trans => {\n const {auto, keyPath} = this.schema.primKey;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n\n const numObjects = objects.length; // Pick length here to allow garbage collection of objects later\n let objectsToPut = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n\n return this.core.mutate(\n {trans, type: 'put', keys: keys as IndexableType[], values: objectsToPut, wantResults}\n )\n .then(({numFailures, results, lastResult, failures}) => {\n const result = wantResults ? results : lastResult;\n if (numFailures === 0) return result;\n throw new BulkError(\n `${this.name}.bulkPut(): ${numFailures} of ${numObjects} operations failed`, failures);\n });\n });\n }\n\n /** Table.bulkUpdate()\n *\n * https://dexie.org/docs/Table.Table.bulkUpdate()\n */\n bulkUpdate(\n keysAndChanges: readonly { key: any; changes: UpdateSpec }[]\n ): PromiseExtended {\n const coreTable = this.core;\n const keys = keysAndChanges.map((entry) => entry.key);\n const changeSpecs = keysAndChanges.map((entry) => entry.changes);\n const offsetMap: number[] = [];\n return this._trans('readwrite', (trans) => {\n return coreTable.getMany({ trans, keys, cache: 'clone' }).then((objs) => {\n const resultKeys: any[] = [];\n const resultObjs: any[] = [];\n keysAndChanges.forEach(({ key, changes }, idx) => {\n const obj = objs[idx];\n if (obj) {\n for (const keyPath of Object.keys(changes)) {\n const value = changes[keyPath];\n if (keyPath === this.schema.primKey.keyPath) {\n if (cmp(value, key) !== 0) {\n throw new exceptions.Constraint(\n `Cannot update primary key in bulkUpdate()`\n );\n }\n } else {\n setByKeyPath(obj, keyPath, value);\n }\n }\n offsetMap.push(idx);\n resultKeys.push(key);\n resultObjs.push(obj);\n }\n });\n const numEntries = resultKeys.length;\n return coreTable\n .mutate({\n trans,\n type: 'put',\n keys: resultKeys,\n values: resultObjs,\n updates: {\n keys,\n changeSpecs\n }\n })\n .then(({ numFailures, failures }) => {\n if (numFailures === 0) return numEntries;\n // Failure. bulkPut() may have a subset of keys\n // so we must translate returned 'failutes' into the offsets of given argument:\n for (const offset of Object.keys(failures)) {\n const mappedOffset = offsetMap[Number(offset)];\n if (mappedOffset != null) {\n const failure = failures[offset];\n delete failures[offset];\n failures[mappedOffset] = failure;\n }\n }\n throw new BulkError(\n `${this.name}.bulkUpdate(): ${numFailures} of ${numEntries} operations failed`,\n failures\n );\n });\n });\n });\n }\n\n /** Table.bulkDelete()\n * \n * https://dexie.org/docs/Table/Table.bulkDelete()\n * \n **/\n bulkDelete(keys: ReadonlyArray): PromiseExtended {\n const numKeys = keys.length;\n return this._trans('readwrite', trans => {\n return this.core.mutate({trans, type: 'delete', keys: keys as IndexableType[]});\n }).then(({numFailures, lastResult, failures}) => {\n if (numFailures === 0) return lastResult;\n throw new BulkError(\n `${this.name}.bulkDelete(): ${numFailures} of ${numKeys} operations failed`, failures);\n });\n }\n}\n", "import {keys, isArray, asap} from '../functions/utils';\nimport {nop, mirror, reverseStoppableEventChain} from '../functions/chaining-functions';\nimport {exceptions} from '../errors';\n\nexport default function Events(ctx) {\n var evs = {};\n var rv = function (eventName, subscriber) {\n if (subscriber) {\n // Subscribe. If additional arguments than just the subscriber was provided, forward them as well.\n var i = arguments.length, args = new Array(i - 1);\n while (--i) args[i - 1] = arguments[i];\n evs[eventName].subscribe.apply(null, args);\n return ctx;\n } else if (typeof (eventName) === 'string') {\n // Return interface allowing to fire or unsubscribe from event\n return evs[eventName];\n }\n };\n rv.addEventType = add;\n \n for (var i = 1, l = arguments.length; i < l; ++i) {\n add(arguments[i]);\n }\n \n return rv;\n\n function add(eventName, chainFunction, defaultFunction) {\n if (typeof eventName === 'object') return addConfiguredEvents(eventName);\n if (!chainFunction) chainFunction = reverseStoppableEventChain;\n if (!defaultFunction) defaultFunction = nop;\n\n var context = {\n subscribers: [],\n fire: defaultFunction,\n subscribe: function (cb) {\n if (context.subscribers.indexOf(cb) === -1) {\n context.subscribers.push(cb);\n context.fire = chainFunction(context.fire, cb);\n }\n },\n unsubscribe: function (cb) {\n context.subscribers = context.subscribers.filter(function (fn) { return fn !== cb; });\n context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n }\n };\n evs[eventName] = rv[eventName] = context;\n return context;\n }\n\n function addConfiguredEvents(cfg) {\n // events(this, {reading: [functionChain, nop]});\n keys(cfg).forEach(function (eventName) {\n var args = cfg[eventName];\n if (isArray(args)) {\n add(eventName, cfg[eventName][0], cfg[eventName][1]);\n } else if (args === 'asap') {\n // Rather than approaching event subscription using a functional approach, we here do it in a for-loop where subscriber is executed in its own stack\n // enabling that any exception that occur wont disturb the initiator and also not nescessary be catched and forgotten.\n var context = add(eventName, mirror, function fire() {\n // Optimazation-safe cloning of arguments into args.\n var i = arguments.length, args = new Array(i);\n while (i--) args[i] = arguments[i];\n // All each subscriber:\n context.subscribers.forEach(function (fn) {\n asap(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n } else throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n}\n", "import { arrayToObject, derive } from './utils';\n\n\nexport function makeClassConstructor (prototype: Object, constructor: Function) {\n /*const propertyDescriptorMap = arrayToObject(\n Object.getOwnPropertyNames(prototype),\n propKey => [propKey, Object.getOwnPropertyDescriptor(prototype, propKey)]);\n\n // Both derive and clone the prototype.\n // derive: So that x instanceof T returns true when T is the class template.\n // clone: Optimizes method access a bit (but actually not nescessary)\n const derivedPrototypeClone = Object.create(prototype, propertyDescriptorMap);\n derivedPrototypeClone.constructor = constructor;\n constructor.prototype = derivedPrototypeClone;\n return constructor as any as TConstructor;*/\n\n // Keep the above code in case we want to clone AND derive the parent prototype.\n // Reason would be optimization of property access.\n // The code below will only create a prototypal inheritance from given constructor function\n // to given prototype.\n derive(constructor).from({prototype});\n return constructor as any as TConstructor; \n}\n", "import { Dexie } from '../dexie';\nimport { TableSchema } from '../../public/types/table-schema';\nimport { Transaction } from '../transaction/transaction';\nimport { hookCreatingChain, pureFunctionChain, nop, mirror, hookUpdatingChain, hookDeletingChain } from '../../functions/chaining-functions';\nimport { TableHooks } from '../../public/types/table-hooks';\nimport { Table } from './table';\nimport Events from '../../helpers/Events';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\n\nexport interface TableConstructor {\n new (name: string, tableSchema: TableSchema, optionalTrans?: Transaction) : Table;\n prototype: Table;\n}\n\n/** Generates a Table constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createTableConstructor (db: Dexie) {\n return makeClassConstructor(\n Table.prototype,\n\n function Table (this: Table, name: string, tableSchema: TableSchema, trans?: Transaction) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n }) as TableHooks;\n }\n\n );\n}\n", "import { combine } from \"../../functions/combine\";\nimport { exceptions } from \"../../errors\";\nimport { hasOwn } from \"../../functions/utils\";\nimport { wrap } from \"../../helpers/promise\";\nimport { Collection } from './';\nimport { DBCoreCursor, DBCoreTable, DBCoreTransaction, DBCoreTableSchema, DBCoreRangeType } from '../../public/types/dbcore';\nimport { nop } from '../../functions/chaining-functions';\n\ntype CollectionContext = Collection[\"_ctx\"];\n\nexport function isPlainKeyRange (ctx: CollectionContext, ignoreLimitFilter?: boolean) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n} \n\nexport function addFilter(ctx: CollectionContext, fn: Function) {\n ctx.filter = combine(ctx.filter, fn);\n}\n\nexport function addReplayFilter (ctx: CollectionContext, factory, isLimitFilter?) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? ()=>combine(curr(), factory()) : factory;\n ctx.justLimit = isLimitFilter && !curr;\n}\n\nexport function addMatchFilter(ctx: CollectionContext, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n}\n\nexport function getIndexOrStore(ctx: CollectionContext, coreSchema: DBCoreTableSchema) {\n // TODO: Rewrite this. No need to know ctx.isPrimKey. ctx.index should hold the keypath.\n // Still, throw if not found!\n if (ctx.isPrimKey) return coreSchema.primaryKey;\n const index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index) throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n}\n\nexport function openCursor(ctx: CollectionContext, coreTable: DBCoreTable, trans: DBCoreTransaction) {\n const index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index, \n range: ctx.range\n }\n });\n}\n\nexport function iter (\n ctx: CollectionContext, \n fn: (item, cursor: DBCoreCursor, advance: Function)=>void,\n coreTrans: DBCoreTransaction,\n coreTable: DBCoreTable): Promise\n{\n const filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(\n openCursor(ctx, coreTable, coreTrans),\n combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n } else {\n const set = {};\n\n const union = (item: any, cursor: DBCoreCursor, advance) => {\n if (!filter || filter(cursor, advance, result=>cursor.stop(result), err => cursor.fail(err))) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]') key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set, key)) {\n set[key] = true;\n fn(item, cursor, advance);\n }\n }\n }\n\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n}\n\nfunction iterate(cursorPromise: Promise, filter, fn, valueMapper): Promise {\n \n // Apply valueMapper (hook('reading') or mappped class)\n var mappedFn = valueMapper ? (x,c,a) => fn(valueMapper(x),c,a) : fn;\n // Wrap fn with PSD and microtick stuff from Promise.\n var wrappedFn = wrap(mappedFn);\n \n return cursorPromise.then(cursor => {\n if (cursor) {\n return cursor.start(()=>{\n var c = ()=>cursor.continue();\n if (!filter || filter(cursor, advancer => c = advancer, val=>{cursor.stop(val);c=nop}, e => {cursor.fail(e);c = nop;}))\n wrappedFn(cursor.value, cursor, advancer => c = advancer);\n c();\n });\n }\n });\n}\n", "import { isArray } from \"../functions/utils\";\nimport { PropModSpec } from \"../public/types/prop-modification\";\n\n/** Consistent change propagation across offline synced data.\n * \n * This class is executed client- and server side on sync, making\n * an operation consistent across sync for full consistency and accuracy.\n * \n * Example: An object represents a bank account with a balance.\n * One offline user adds $ 1.00 to the balance.\n * Another user (online) adds $ 2.00 to the balance.\n * When first user syncs, the balance becomes the sum of every operation (3.00).\n * \n * -- initial: balance is 0\n * 1. db.bankAccounts.update(1, { balance: new ProdModification({add: 100})}) // user 1 (offline)\n * 2. db.bankAccounts.update(1, { balance: new ProdModification({add: 200})}) // user 2 (online)\n * -- before user 1 syncs, balance is 200 (representing money with integers * 100 to avoid rounding issues)\n * \n * -- balance is 300\n * \n * When new operations are added, they need to be added to:\n * 1. PropModSpec interface\n * 2. Here in PropModification with the logic they represent\n * 3. (Optionally) a sugar function for it, such as const mathAdd = (amount: number | BigInt) => new PropModification({mathAdd: amount})\n */\nexport class PropModification {\n [\"@@propmod\"]: PropModSpec;\n execute(value: any): any {\n const spec = this[\"@@propmod\"]\n // add (mathematical or set-wise)\n if (spec.add !== undefined) {\n const term = spec.add;\n // Set-addition on array representing a set of primitive types (strings, numbers)\n if (isArray(term)) {\n return [...(isArray(value) ? value : []), ...term].sort();\n }\n // Mathematical addition:\n if (typeof term === 'number') return (Number(value) || 0) + term; // if value is not convertible to number, return 0 + term\n if (typeof term === 'bigint') {\n try {\n return BigInt(value) + term;\n } catch {\n return BigInt(0) + term; // Unlike Number(value) that can return NaN, BigInt(value) throws if value is not BigInt, Number or numeric string\n }\n }\n throw new TypeError(`Invalid term ${term}`);\n }\n\n // remove (mathematical or set-wise)\n if (spec.remove !== undefined) {\n const subtrahend = spec.remove;\n // Set-addition on array representing a set of primitive types (strings, numbers)\n if (isArray(subtrahend)) {\n return isArray(value) ? value.filter(item => !subtrahend.includes(item)).sort() : [];\n } \n // Mathematical addition:\n if (typeof subtrahend === 'number') return Number(value) - subtrahend;\n if (typeof subtrahend === 'bigint') {\n try {\n return BigInt(value) - subtrahend;\n } catch {\n return BigInt(0) - subtrahend; // Unlike Number(value) that can return NaN, BigInt(value) throws if value is not BigInt, Number or numeric string\n }\n }\n throw new TypeError(`Invalid subtrahend ${subtrahend}`);\n }\n\n // Replace a prefix:\n const prefixToReplace = spec.replacePrefix?.[0];\n if (prefixToReplace && typeof value === 'string' && value.startsWith(prefixToReplace)) {\n return spec.replacePrefix[1] + value.substring(prefixToReplace.length);\n }\n return value;\n }\n\n constructor(spec: PropModSpec) {\n this[\"@@propmod\"] = spec;\n }\n}\n", "import { Collection as ICollection } from \"../../public/types/collection\";\nimport { Dexie } from \"../dexie\";\nimport { Table } from \"../table\";\nimport { IndexableType, IndexableTypeArrayReadonly } from \"../../public/types/indexable-type\";\nimport { PromiseExtended } from \"../../public/types/promise-extended\";\nimport { iter, isPlainKeyRange, getIndexOrStore, addReplayFilter, addFilter, addMatchFilter } from \"./collection-helpers\";\nimport { rejection } from \"../../helpers/promise\";\nimport { combine } from \"../../functions/combine\";\nimport { extend, hasOwn, deepClone, keys, setByKeyPath, getByKeyPath } from \"../../functions/utils\";\nimport { ModifyError } from \"../../errors\";\nimport { ThenShortcut } from \"../../public/types/then-shortcut\";\nimport { Transaction } from '../transaction';\nimport { DBCoreCursor, DBCoreTransaction, DBCoreRangeType, DBCoreMutateResponse, DBCoreKeyRange } from '../../public/types/dbcore';\nimport { cmp } from \"../../functions/cmp\";\nimport { PropModification } from \"../../helpers/prop-modification\";\nimport { UpdateSpec } from \"../../public/types/update-spec\";\n\n/** class Collection\n * \n * https://dexie.org/docs/Collection/Collection\n */\nexport class Collection implements ICollection {\n db: Dexie;\n _ctx: {\n table: Table;\n index?: string | null;\n isPrimKey?: boolean;\n range: DBCoreKeyRange;\n keysOnly: boolean;\n dir: \"next\" | \"prev\";\n unique: \"\" | \"unique\";\n algorithm?: Function | null;\n filter?: Function | null;\n replayFilter: Function | null;\n justLimit: boolean; // True if a replayFilter is just a filter that performs a \"limit\" operation (or none at all)\n isMatch: Function | null;\n offset: number,\n limit: number,\n error: any, // If set, any promise must be rejected with this error\n or: Collection,\n valueMapper: (any) => any\n }\n \n _ondirectionchange?: Function;\n\n _read(fn: (idbtrans: IDBTransaction, dxTrans: Transaction) => PromiseLike, cb?): PromiseExtended {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n }\n\n _write(fn: (idbtrans: IDBTransaction, dxTrans: Transaction) => PromiseLike): PromiseExtended {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\"); // When doing write operations on collections, always lock the operation so that upcoming operations gets queued.\n }\n\n _addAlgorithm(fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n }\n\n _iterate(\n fn: (item, cursor: DBCoreCursor, advance: Function) => void,\n coreTrans: DBCoreTransaction) : Promise\n {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n }\n\n /** Collection.clone()\n * \n * https://dexie.org/docs/Collection/Collection.clone()\n * \n **/\n clone(props?): this {\n var rv = Object.create(this.constructor.prototype),\n ctx = Object.create(this._ctx);\n if (props) extend(ctx, props);\n rv._ctx = ctx;\n return rv;\n }\n\n /** Collection.raw()\n * \n * https://dexie.org/docs/Collection/Collection.raw()\n * \n **/\n raw(): this {\n this._ctx.valueMapper = null;\n return this;\n }\n\n /** Collection.each()\n * \n * https://dexie.org/docs/Collection/Collection.each()\n * \n **/\n each(fn: (obj, cursor: DBCoreCursor) => any): PromiseExtended {\n var ctx = this._ctx;\n\n return this._read(trans => iter(ctx, fn, trans, ctx.table.core));\n }\n\n /** Collection.count()\n * \n * https://dexie.org/docs/Collection/Collection.count()\n * \n **/\n count(cb?) {\n return this._read(trans => {\n const ctx = this._ctx;\n const coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n // This is a plain key range. We can use the count() method if the index.\n return coreTable.count({\n trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(count => Math.min(count, ctx.limit));\n } else {\n // Algorithms, filters or expressions are applied. Need to count manually.\n var count = 0;\n return iter(ctx, () => { ++count; return false; }, trans, coreTable)\n .then(()=>count);\n }\n }).then(cb);\n }\n\n /** Collection.sortBy()\n * \n * https://dexie.org/docs/Collection/Collection.sortBy()\n * \n **/\n sortBy(keyPath: string): PromiseExtended;\n sortBy(keyPath: string, thenShortcut: ThenShortcut) : PromiseExtended;\n sortBy(keyPath: string, cb?: ThenShortcut) {\n const parts = keyPath.split('.').reverse(),\n lastPart = parts[0],\n lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i) return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n\n function sorter(a, b) {\n var aVal = getval(a, lastIndex),\n bVal = getval(b, lastIndex);\n return cmp(aVal, bVal) * order;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n }\n\n /** Collection.toArray()\n * \n * https://dexie.org/docs/Collection/Collection.toArray()\n * \n **/\n toArray(cb?): PromiseExtended {\n return this._read(trans => {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n // Special optimation if we could use IDBObjectStore.getAll() or\n // IDBKeyRange.getAll():\n const {valueMapper} = ctx;\n const index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans,\n limit: ctx.limit,\n values: true,\n query: {\n index,\n range: ctx.range\n }\n }).then(({result}) => valueMapper ? result.map(valueMapper) : result);\n } else {\n // Getting array through a cursor.\n const a = [];\n return iter(ctx, item => a.push(item), trans, ctx.table.core).then(()=>a);\n }\n }, cb);\n }\n\n /** Collection.offset()\n * \n * https://dexie.org/docs/Collection/Collection.offset()\n * \n **/\n offset(offset: number) : Collection{\n var ctx = this._ctx;\n if (offset <= 0) return this;\n ctx.offset += offset; // For count()\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, () => {\n var offsetLeft = offset;\n return (cursor, advance) => {\n if (offsetLeft === 0) return true;\n if (offsetLeft === 1) { --offsetLeft; return false; }\n advance(() => {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n } else {\n addReplayFilter(ctx, () => {\n var offsetLeft = offset;\n return () => (--offsetLeft < 0);\n });\n }\n return this;\n }\n\n /** Collection.limit()\n * \n * https://dexie.org/docs/Collection/Collection.limit()\n * \n **/\n limit(numRows: number) : Collection {\n this._ctx.limit = Math.min(this._ctx.limit, numRows); // For count()\n addReplayFilter(this._ctx, () => {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0) advance(resolve); // Stop after this item has been included\n return rowsLeft >= 0; // If numRows is already below 0, return false because then 0 was passed to numRows initially. Otherwise we wouldnt come here.\n };\n }, true);\n return this;\n }\n\n /** Collection.until()\n * \n * https://dexie.org/docs/Collection/Collection.until()\n * \n **/\n until(filterFunction: (x) => boolean, bIncludeStopEntry?) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n } else {\n return true;\n }\n });\n return this;\n }\n\n /** Collection.first()\n * \n * https://dexie.org/docs/Collection/Collection.first()\n * \n **/\n first(cb?) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n }\n\n /** Collection.last()\n * \n * https://dexie.org/docs/Collection/Collection.last()\n * \n **/\n last(cb?) {\n return this.reverse().first(cb);\n }\n\n /** Collection.filter()\n * \n * https://dexie.org/docs/Collection/Collection.filter()\n * \n **/\n filter(filterFunction: (x) => boolean): Collection {\n /// function(val){return true/false}\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n // match filters not used in Dexie.js but can be used by 3rd part libraries to test a\n // collection for a match without querying DB. Used by Dexie.Observable.\n addMatchFilter(this._ctx, filterFunction);\n return this;\n }\n\n /** Collection.and()\n * \n * https://dexie.org/docs/Collection/Collection.and()\n * \n **/\n and(filter: (x) => boolean) {\n return this.filter(filter);\n }\n\n /** Collection.or()\n * \n * https://dexie.org/docs/Collection/Collection.or()\n * \n **/\n or(indexName: string) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n }\n\n /** Collection.reverse()\n * \n * https://dexie.org/docs/Collection/Collection.reverse()\n * \n **/\n reverse() {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange) this._ondirectionchange(this._ctx.dir);\n return this;\n }\n\n /** Collection.desc()\n * \n * https://dexie.org/docs/Collection/Collection.desc()\n * \n **/\n desc() {\n return this.reverse();\n }\n\n /** Collection.eachKey()\n * \n * https://dexie.org/docs/Collection/Collection.eachKey()\n * \n **/\n eachKey(cb?) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n }\n\n /** Collection.eachUniqueKey()\n * \n * https://dexie.org/docs/Collection/Collection.eachUniqueKey()\n * \n **/\n eachUniqueKey(cb?) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n }\n\n /** Collection.eachPrimaryKey()\n * \n * https://dexie.org/docs/Collection/Collection.eachPrimaryKey()\n * \n **/\n eachPrimaryKey(cb?) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n }\n\n /** Collection.keys()\n * \n * https://dexie.org/docs/Collection/Collection.keys()\n * \n **/\n keys(cb?) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n }\n\n /** Collection.primaryKeys()\n * \n * https://dexie.org/docs/Collection/Collection.primaryKeys()\n * \n **/\n primaryKeys(cb?) : PromiseExtended {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n // Special optimation if we could use IDBObjectStore.getAllKeys() or\n // IDBKeyRange.getAllKeys():\n return this._read(trans => {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans,\n values: false,\n limit: ctx.limit,\n query: {\n index,\n range: ctx.range\n }});\n }).then(({result})=>result).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n }\n\n /** Collection.uniqueKeys()\n * \n * https://dexie.org/docs/Collection/Collection.uniqueKeys()\n * \n **/\n uniqueKeys(cb?) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n }\n\n /** Collection.firstKey()\n * \n * https://dexie.org/docs/Collection/Collection.firstKey()\n * \n **/\n firstKey(cb?) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n }\n\n /** Collection.lastKey()\n * \n * https://dexie.org/docs/Collection/Collection.lastKey()\n * \n **/\n lastKey(cb?) {\n return this.reverse().firstKey(cb);\n }\n\n /** Collection.distinct()\n * \n * https://dexie.org/docs/Collection/Collection.distinct()\n * \n **/\n distinct() {\n var ctx = this._ctx,\n idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi) return this; // distinct() only makes differencies on multiEntry indexes.\n var set = {};\n addFilter(this._ctx, function (cursor: DBCoreCursor) {\n var strKey = cursor.primaryKey.toString(); // Converts any Date to String, String to String, Number to String and Array to comma-separated string\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n }\n\n //\n // Methods that mutate storage\n //\n\n /** Collection.modify()\n * \n * https://dexie.org/docs/Collection/Collection.modify()\n * \n **/\n modify(changes: UpdateSpec | ((obj: any, ctx:{value: any, primKey: IndexableType}) => void | boolean)): PromiseExtended {\n var ctx = this._ctx;\n return this._write(trans => {\n var modifyer: (obj: any, ctx:{value: any, primKey: IndexableType}) => void | boolean\n if (typeof changes === 'function') {\n // Changes is a function that may update, add or delete propterties or even require a deletion the object itself (delete this.item)\n modifyer = changes as (obj: any, ctx:{value: any, primKey: IndexableType}) => void | boolean;\n } else {\n // changes is a set of {keyPath: value} and no one is listening to the updating hook.\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n let anythingModified = false;\n for (let i = 0; i < numKeys; ++i) {\n let keyPath = keyPaths[i];\n let val = changes[keyPath];\n let origVal = getByKeyPath(item, keyPath);\n\n if (val instanceof PropModification) {\n setByKeyPath(item, keyPath, val.execute(origVal));\n anythingModified = true;\n } else if (origVal !== val) {\n setByKeyPath(item, keyPath, val); // Adding {keyPath: undefined} means that the keyPath should be deleted. Handled by setByKeyPath\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n\n const coreTable = ctx.table.core;\n const {outbound, extractKey} = coreTable.schema.primaryKey;\n let limit = 200;\n const modifyChunkSize = this.db._options.modifyChunkSize;\n if (modifyChunkSize) {\n if (typeof modifyChunkSize == 'object') {\n limit = modifyChunkSize[coreTable.name] || modifyChunkSize['*'] || 200;\n } else {\n limit = modifyChunkSize;\n }\n }\n const totalFailures = [];\n let successCount = 0;\n const failedKeys: IndexableType[] = [];\n const applyMutateResult = (expectedCount: number, res: DBCoreMutateResponse) => {\n const {failures, numFailures} = res;\n successCount += expectedCount - numFailures;\n for (let pos of keys(failures)) {\n totalFailures.push(failures[pos]);\n }\n }\n return this.clone().primaryKeys().then(keys => {\n const criteria = isPlainKeyRange(ctx) &&\n ctx.limit === Infinity &&\n (typeof changes !== 'function' || changes === deleteCallback) && {\n index: ctx.index,\n range: ctx.range\n };\n\n const nextChunk = (offset: number) => {\n const count = Math.min(limit, keys.length - offset);\n return coreTable.getMany({\n trans,\n keys: keys.slice(offset, offset + count),\n cache: \"immutable\" // Optimize for 2 things:\n // 1) observability-middleware can track changes better.\n // 2) hooks middleware don't have to query the existing values again when tracking changes.\n // We can use \"immutable\" because we promise to not touch the values we retrieve here!\n }).then(values => {\n const addValues = [];\n const putValues = [];\n const putKeys = outbound ? [] : null;\n const deleteKeys = [];\n for (let i=0; i 0 &&\n coreTable.mutate({trans, type: 'add', values: addValues})\n .then(res => {\n for (let pos in res.failures) {\n // Remove from deleteKeys the key of the object that failed to change its primary key\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })\n ).then(()=>(putValues.length > 0 || (criteria && typeof changes === 'object')) &&\n coreTable.mutate({\n trans,\n type: 'put',\n keys: putKeys,\n values: putValues,\n criteria,\n changeSpec: typeof changes !== 'function'\n && changes,\n isAdditionalChunk: offset > 0\n }).then(res=>applyMutateResult(putValues.length, res))\n ).then(()=>(deleteKeys.length > 0 || (criteria && changes === deleteCallback)) &&\n coreTable.mutate({\n trans,\n type: 'delete',\n keys: deleteKeys,\n criteria,\n isAdditionalChunk: offset > 0\n }).then(res=>applyMutateResult(deleteKeys.length, res))\n ).then(()=>{\n return keys.length > offset + count && nextChunk(offset + limit);\n });\n });\n }\n\n return nextChunk(0).then(()=>{\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys as IndexableTypeArrayReadonly);\n\n return keys.length;\n });\n });\n\n });\n }\n\n /** Collection.delete()\n * \n * https://dexie.org/docs/Collection/Collection.delete()\n * \n **/\n delete() : PromiseExtended {\n var ctx = this._ctx,\n range = ctx.range;\n //deletingHook = ctx.table.hook.deleting.fire,\n //hasDeleteHook = deletingHook !== nop;\n if (isPlainKeyRange(ctx) &&\n (ctx.isPrimKey || range.type === DBCoreRangeType.Any)) // if no range, we'll use clear().\n {\n // May use IDBObjectStore.delete(IDBKeyRange) in this case (Issue #208)\n // For chromium, this is the way most optimized version.\n // For IE/Edge, this could hang the indexedDB engine and make operating system instable\n // (https://gist.github.com/dfahlander/5a39328f029de18222cf2125d56c38f7)\n return this._write(trans => {\n // Our API contract is to return a count of deleted items, so we have to count() before delete().\n const {primaryKey} = ctx.table.core.schema;\n const coreRange = range;\n return ctx.table.core.count({trans, query: {index: primaryKey, range: coreRange}}).then(count => {\n return ctx.table.core.mutate({trans, type: 'deleteRange', range: coreRange})\n .then(({failures, lastResult, results, numFailures}) => {\n if (numFailures) throw new ModifyError(\"Could not delete some values\",\n Object.keys(failures).map(pos => failures[pos]),\n count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n\n return this.modify(deleteCallback);\n }\n}\n\nconst deleteCallback = (value, ctx) => ctx.value = null;\n", "import { Dexie } from '../../classes/dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { Collection } from './collection';\nimport { WhereClause } from '../where-clause/where-clause';\nimport { AnyRange } from '../../dbcore/keyrange';\nimport { DBCoreKeyRange } from '../../public/types/dbcore';\nimport { mirror } from '../../functions/chaining-functions';\n\n/** Constructs a Collection instance. */\nexport interface CollectionConstructor {\n new(whereClause?: WhereClause | null, keyRangeGenerator?: () => DBCoreKeyRange): Collection;\n prototype: Collection;\n}\n\n/** Generates a Collection constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createCollectionConstructor(db: Dexie) {\n return makeClassConstructor(\n Collection.prototype,\n\n function Collection(\n this: Collection,\n whereClause?: WhereClause | null,\n keyRangeGenerator?: () => DBCoreKeyRange)\n {\n this.db = db;\n let keyRange = AnyRange, error = null;\n if (keyRangeGenerator) try {\n keyRange = keyRangeGenerator();\n } catch (ex) {\n error = ex;\n }\n\n const whereCtx = whereClause._ctx;\n const table = whereCtx.table;\n const readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true, // True if a replayFilter is just a filter that performs a \"limit\" operation (or none at all)\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error, // If set, any promise must be rejected with this error\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n }\n );\n}\n", "import { IndexableType } from '../public/types/indexable-type';\n\nexport function simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n}\n\nexport function simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n}\n", "import { WhereClause } from './where-clause';\nimport { Collection } from '../collection';\nimport { STRING_EXPECTED } from '../../globals/constants';\nimport { simpleCompare, simpleCompareReverse } from '../../functions/compare-functions';\nimport { IndexableType } from '../../public';\nimport { DBCoreKeyRange, DBCoreRangeType } from '../../public/types/dbcore';\n\nexport function fail(collectionOrWhereClause: Collection | WhereClause, err, T?) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection (collectionOrWhereClause) :\n collectionOrWhereClause;\n \n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n}\n\nexport function emptyCollection(whereClause: WhereClause) {\n return new whereClause.Collection (whereClause, () => rangeEqual(\"\")).limit(0);\n}\n\nexport function upperFactory(dir: 'next' | 'prev') {\n return dir === \"next\" ?\n (s: string) => s.toUpperCase() :\n (s: string) => s.toLowerCase();\n}\n\nexport function lowerFactory(dir: 'next' | 'prev') {\n return dir === \"next\" ?\n (s: string) => s.toLowerCase() :\n (s: string) => s.toUpperCase();\n}\n\nexport function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0) return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0) return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0) return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0) llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\") return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\") return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\n\nexport function addIgnoreCaseAlgorithm(whereClause: WhereClause, match, needles, suffix) {\n /// \n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix,\n needlesLen = needles.length;\n if (!needles.every(s => typeof s === 'string')) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle){\n return {lower: lower(needle), upper: upper(needle)};\n }).sort(function(a,b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb){ return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb){ return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n\n var c = new whereClause.Collection (\n whereClause,\n ()=>createRange(upperNeedles[0], lowerNeedles[needlesLen-1] + suffix)\n );\n\n c._ondirectionchange = function (direction) {\n // This event onlys occur before filter is called the first time.\n initDirection(direction);\n };\n\n var firstPossibleNeedle = 0;\n\n c._addAlgorithm(function (cursor, advance, resolve) {\n /// \n /// \n /// \n var key = cursor.key;\n if (typeof key !== 'string') return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n } else {\n var lowestPossibleCasing = null;\n for (var i=firstPossibleNeedle; i 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n } else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n}\n\nexport function createRange (lower: IndexableType, upper: IndexableType, lowerOpen?: boolean, upperOpen?: boolean): DBCoreKeyRange {\n return {\n type: DBCoreRangeType.Range,\n lower,\n upper,\n lowerOpen,\n upperOpen\n };\n}\n\nexport function rangeEqual (value: IndexableType) : DBCoreKeyRange {\n return {\n type: DBCoreRangeType.Equal,\n lower: value,\n upper: value\n };\n}\n", "import { WhereClause as IWhereClause } from \"../../public/types/where-clause\";\nimport { Collection } from \"../collection\";\nimport { Table } from \"../table\";\nimport { IndexableType } from \"../../public/types/indexable-type\";\nimport { emptyCollection, fail, addIgnoreCaseAlgorithm, createRange, rangeEqual } from './where-clause-helpers';\nimport { INVALID_KEY_ARGUMENT, STRING_EXPECTED, maxString, minKey } from '../../globals/constants';\nimport { getArrayOf, NO_CHAR_ARRAY } from '../../functions/utils';\nimport { exceptions } from '../../errors';\nimport { Dexie } from '../dexie';\nimport { Collection as ICollection} from \"../../public/types/collection\";\n\n/** class WhereClause\n * \n * https://dexie.org/docs/WhereClause/WhereClause\n */\nexport class WhereClause implements IWhereClause {\n db: Dexie;\n _IDBKeyRange: typeof IDBKeyRange;\n _ctx: {\n table: Table;\n index: string;\n or: Collection;\n }\n _cmp: (a: IndexableType, b: IndexableType) => number;\n _ascending: (a: IndexableType, b: IndexableType) => number;\n _descending: (a: IndexableType, b: IndexableType) => number;\n _min: (a: IndexableType, b: IndexableType) => IndexableType;\n _max: (a: IndexableType, b: IndexableType) => IndexableType;\n\n get Collection() {\n return this._ctx.table.db.Collection;\n }\n\n /** WhereClause.between()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.between()\n * \n **/\n between(lower: IndexableType, upper: IndexableType, includeLower?: boolean, includeUpper?: boolean) {\n includeLower = includeLower !== false; // Default to true\n includeUpper = includeUpper === true; // Default to false\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this); // Workaround for idiotic W3C Specification that DataError must be thrown if lower > upper. The natural result would be to return an empty collection.\n return new this.Collection(this, ()=>createRange(lower, upper, !includeLower, !includeUpper));\n } catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n }\n\n /** WhereClause.equals()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.equals()\n * \n **/\n equals(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => rangeEqual(value)) as ICollection;\n }\n\n /** WhereClause.above()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.above()\n * \n **/\n above(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(value, undefined, true));\n }\n\n /** WhereClause.aboveOrEqual()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.aboveOrEqual()\n * \n **/\n aboveOrEqual(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(value, undefined, false));\n }\n\n /** WhereClause.below()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.below()\n * \n **/\n below(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(undefined, value, false, true));\n }\n\n /** WhereClause.belowOrEqual()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.belowOrEqual()\n * \n **/\n belowOrEqual(value: IndexableType) {\n if (value == null) return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, () => createRange(undefined, value));\n }\n\n /** WhereClause.startsWith()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWith()\n * \n **/\n startsWith(str: string) {\n if (typeof str !== 'string') return fail(this, STRING_EXPECTED);\n return this.between(str, str + maxString, true, true);\n }\n\n /** WhereClause.startsWithIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWithIgnoreCase()\n * \n **/\n startsWithIgnoreCase(str: string) {\n if (str === \"\") return this.startsWith(str);\n return addIgnoreCaseAlgorithm(this, (x, a) => x.indexOf(a[0]) === 0, [str], maxString);\n }\n\n /** WhereClause.equalsIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.equalsIgnoreCase()\n * \n **/\n equalsIgnoreCase(str: string) {\n return addIgnoreCaseAlgorithm(this, (x, a) => x === a[0], [str], \"\");\n }\n\n /** WhereClause.anyOfIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.anyOfIgnoreCase()\n * \n **/\n anyOfIgnoreCase(...values: string[]): Collection;\n anyOfIgnoreCase(values: string[]): Collection;\n anyOfIgnoreCase() {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, (x, a) => a.indexOf(x) !== -1, set, \"\");\n }\n\n /** WhereClause.startsWithAnyOfIgnoreCase()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWithAnyOfIgnoreCase()\n * \n **/\n startsWithAnyOfIgnoreCase(...values: string[]): Collection;\n startsWithAnyOfIgnoreCase(values: string[]): Collection;\n startsWithAnyOfIgnoreCase() {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, (x, a) => a.some(n => x.indexOf(n) === 0), set, maxString);\n }\n\n /** WhereClause.anyOf()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.anyOf()\n * \n **/\n anyOf(...values: string[]): Collection;\n anyOf(values: string[]): Collection;\n anyOf() {\n const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n let compare = this._cmp;\n try { set.sort(compare); } catch (e) { return fail(this, INVALID_KEY_ARGUMENT); }\n if (set.length === 0) return emptyCollection(this);\n const c = new this.Collection(this, () => createRange(set[0], set[set.length - 1]));\n\n c._ondirectionchange = direction => {\n compare = (direction === \"next\" ?\n this._ascending :\n this._descending);\n set.sort(compare);\n };\n\n let i = 0;\n c._addAlgorithm((cursor, advance, resolve) => {\n const key = cursor.key;\n while (compare(key, set[i]) > 0) {\n // The cursor has passed beyond this key. Check next.\n ++i;\n if (i === set.length) {\n // There is no next. Stop searching.\n advance(resolve);\n return false;\n }\n }\n if (compare(key, set[i]) === 0) {\n // The current cursor value should be included and we should continue a single step in case next item has the same key or possibly our next key in set.\n return true;\n } else {\n // cursor.key not yet at set[i]. Forward cursor to the next key to hunt for.\n advance(() => { cursor.continue(set[i]); });\n return false;\n }\n });\n return c;\n }\n\n /** WhereClause.notEqual()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.notEqual()\n * \n **/\n notEqual(value: IndexableType) {\n return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });\n }\n\n /** WhereClause.noneOf()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.noneOf()\n * \n **/\n noneOf(...values: string[]): Collection;\n noneOf(values: string[]): Collection;\n noneOf() {\n const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0) return new this.Collection(this); // Return entire collection.\n try { set.sort(this._ascending); } catch (e) { return fail(this, INVALID_KEY_ARGUMENT); }\n // Transform [\"a\",\"b\",\"c\"] to a set of ranges for between/above/below: [[minKey,\"a\"], [\"a\",\"b\"], [\"b\",\"c\"], [\"c\",maxKey]]\n const ranges = set.reduce(\n (res, val) => res ?\n res.concat([[res[res.length - 1][1], val]]) :\n [[minKey, val]],\n null);\n ranges.push([set[set.length - 1], this.db._maxKey]);\n return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });\n }\n\n /** WhereClause.inAnyRange()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.inAnyRange()\n * \n **/\n inAnyRange(\n ranges: ReadonlyArray<{ 0: IndexableType, 1: IndexableType }>,\n options?: { includeLowers?: boolean, includeUppers?: boolean })\n {\n const cmp = this._cmp,\n ascending = this._ascending,\n descending = this._descending,\n min = this._min,\n max = this._max;\n\n if (ranges.length === 0) return emptyCollection(this);\n if (!ranges.every(range =>\n range[0] !== undefined &&\n range[1] !== undefined &&\n ascending(range[0], range[1]) <= 0)) {\n return fail(\n this,\n \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\",\n exceptions.InvalidArgument);\n }\n const includeLowers = !options || options.includeLowers !== false; // Default to true\n const includeUppers = options && options.includeUppers === true; // Default to false\n\n function addRange(ranges, newRange) {\n let i = 0, l = ranges.length;\n for (; i < l; ++i) {\n const range = ranges[i];\n if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n range[0] = min(range[0], newRange[0]);\n range[1] = max(range[1], newRange[1]);\n break;\n }\n }\n if (i === l)\n ranges.push(newRange);\n return ranges;\n }\n\n let sortDirection = ascending;\n function rangeSorter(a, b) { return sortDirection(a[0], b[0]); }\n\n // Join overlapping ranges\n let set;\n try {\n set = ranges.reduce(addRange, []);\n set.sort(rangeSorter);\n } catch (ex) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n\n let rangePos = 0;\n const keyIsBeyondCurrentEntry = includeUppers ?\n key => ascending(key, set[rangePos][1]) > 0 :\n key => ascending(key, set[rangePos][1]) >= 0;\n\n const keyIsBeforeCurrentEntry = includeLowers ?\n key => descending(key, set[rangePos][0]) > 0 :\n key => descending(key, set[rangePos][0]) >= 0;\n\n function keyWithinCurrentRange(key) {\n return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n }\n\n let checkKey = keyIsBeyondCurrentEntry;\n\n const c = new this.Collection(\n this,\n () => createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers));\n\n c._ondirectionchange = direction => {\n if (direction === \"next\") {\n checkKey = keyIsBeyondCurrentEntry;\n sortDirection = ascending;\n } else {\n checkKey = keyIsBeforeCurrentEntry;\n sortDirection = descending;\n }\n set.sort(rangeSorter);\n };\n\n c._addAlgorithm((cursor, advance, resolve) => {\n var key = cursor.key;\n while (checkKey(key)) {\n // The cursor has passed beyond this key. Check next.\n ++rangePos;\n if (rangePos === set.length) {\n // There is no next. Stop searching.\n advance(resolve);\n return false;\n }\n }\n if (keyWithinCurrentRange(key)) {\n // The current cursor value should be included and we should continue a single step in case next item has the same key or possibly our next key in set.\n return true;\n } else if (this._cmp(key, set[rangePos][1]) === 0 || this._cmp(key, set[rangePos][0]) === 0) {\n // includeUpper or includeLower is false so keyWithinCurrentRange() returns false even though we are at range border.\n // Continue to next key but don't include this one.\n return false;\n } else {\n // cursor.key not yet at set[i]. Forward cursor to the next key to hunt for.\n advance(() => {\n if (sortDirection === ascending) cursor.continue(set[rangePos][0]);\n else cursor.continue(set[rangePos][1]);\n });\n return false;\n }\n });\n return c;\n }\n\n /** WhereClause.startsWithAnyOf()\n * \n * https://dexie.org/docs/WhereClause/WhereClause.startsWithAnyOf()\n * \n **/\n startsWithAnyOf(...prefixes: string[]): Collection;\n startsWithAnyOf(prefixes: string[]): Collection;\n startsWithAnyOf() {\n const set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n\n if (!set.every(s => typeof s === 'string')) {\n return fail(this, \"startsWithAnyOf() only works with strings\");\n }\n if (set.length === 0) return emptyCollection(this);\n\n return this.inAnyRange(set.map((str: string) => [str, str + maxString]));\n }\n\n}\n", "import { Dexie } from '../dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { WhereClause } from './where-clause';\nimport { Table } from '../table';\nimport { Collection } from '../collection';\nimport { exceptions } from '../../errors';\nimport { cmp } from '../../functions/cmp';\n\nexport interface WhereClauseConstructor {\n new(table: Table, index?: string, orCollection?: Collection): WhereClause;\n prototype: WhereClause;\n}\n\n/** Generates a WhereClause constructor.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createWhereClauseConstructor(db: Dexie) {\n return makeClassConstructor(\n WhereClause.prototype,\n\n function WhereClause(this: WhereClause, table: Table, index?: string, orCollection?: Collection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n this._cmp = this._ascending = cmp;\n this._descending = (a, b) => cmp(b, a);\n this._max = (a, b) => cmp(a,b) > 0 ? a : b;\n this._min = (a, b) => cmp(a,b) < 0 ? a : b;\n this._IDBKeyRange = db._deps.IDBKeyRange;\n if (!this._IDBKeyRange) throw new exceptions.MissingAPI();\n }\n );\n}\n", "import { wrap } from \"../helpers/promise\";\n\nexport function eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject (event.target.error);\n return false;\n });\n}\n\nexport function eventSuccessHandler (resolve) {\n return wrap(function (event){\n resolve(event.target.result);\n });\n}\n\nexport function hookedEventRejectHandler (reject) {\n return wrap(function (event) {\n // See comment on hookedEventSuccessHandler() why wrap() is needed only when supporting hooks.\n \n var req = event.target,\n err = req.error,\n ctx = req._hookCtx,// Contains the hook error handler. Put here instead of closure to boost performance.\n hookErrorHandler = ctx && ctx.onerror;\n hookErrorHandler && hookErrorHandler(err);\n preventDefault(event);\n reject (err);\n return false;\n });\n}\n\nexport function hookedEventSuccessHandler(resolve) {\n // wrap() is needed when calling hooks because the rare scenario of:\n // * hook does a db operation that fails immediately (IDB throws exception)\n // For calling db operations on correct transaction, wrap makes sure to set PSD correctly.\n // wrap() will also execute in a virtual tick.\n // * If not wrapped in a virtual tick, direct exception will launch a new physical tick.\n // * If this was the last event in the bulk, the promise will resolve after a physical tick\n // and the transaction will have committed already.\n // If no hook, the virtual tick will be executed in the reject()/resolve of the final promise,\n // because it is always marked with _lib = true when created using Transaction._promise().\n return wrap(function(event) {\n var req = event.target,\n ctx = req._hookCtx,// Contains the hook error handler. Put here instead of closure to boost performance.\n result = ctx.value || req.result, // Pass the object value on updates. The result from IDB is the primary key.\n hookSuccessHandler = ctx && ctx.onsuccess;\n hookSuccessHandler && hookSuccessHandler(result);\n resolve && resolve(result);\n }, resolve);\n}\n\n\nexport function preventDefault(event) {\n if (event.stopPropagation) // IndexedDBShim doesnt support this on Safari 8 and below.\n event.stopPropagation();\n if (event.preventDefault) // IndexedDBShim doesnt support this on Safari 8 and below.\n event.preventDefault();\n}\n\nexport function BulkErrorHandlerCatchAll(errorList, done?, supportHooks?) {\n return (supportHooks ? hookedEventRejectHandler : eventRejectHandler)(e => {\n errorList.push(e);\n done && done();\n });\n}\n\n", "import Events from '../helpers/Events';\nimport { GlobalDexieEvents } from '../public/types/db-events';\n\nexport const DEXIE_STORAGE_MUTATED_EVENT_NAME = 'storagemutated' as 'storagemutated';\n\n// Name of the global event fired using DOM dispatchEvent (if not in node).\n// Reason for propagating this as a DOM event is for getting reactivity across\n// multiple versions of Dexie within the same app (as long as they are\n// compatible with regards to the event data).\n// If the ObservabilitySet protocol change in a way that would not be backward\n// compatible, make sure also update the event name to a new number at the end\n// so that two Dexie instances of different versions continue to work together\n// - maybe not able to communicate but won't fail due to unexpected data in\n// the detail property of the CustomEvent. If so, also make sure to udpate\n// docs and explain at which Dexie version the new name and format of the event\n// is being used.\nexport const STORAGE_MUTATED_DOM_EVENT_NAME = 'x-storagemutated-1';\n\nexport const globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME) as GlobalDexieEvents;\n", "import { Transaction as ITransaction } from '../../public/types/transaction';\nimport { DexiePromise, wrap, rejection } from \"../../helpers/promise\";\nimport { DbSchema } from '../../public/types/db-schema';\nimport { assert, hasOwn } from '../../functions/utils';\nimport { PSD, usePSD } from '../../helpers/promise';\nimport { Dexie } from '../dexie';\nimport { exceptions } from '../../errors';\nimport { safariMultiStoreFix } from '../../functions/quirks';\nimport { preventDefault } from '../../functions/event-wrappers';\nimport { newScope } from '../../helpers/promise';\nimport * as Debug from '../../helpers/debug';\nimport { Table } from '../table';\nimport { globalEvents } from '../../globals/global-events';\n\n/** Transaction\n * \n * https://dexie.org/docs/Transaction/Transaction\n * \n **/\nexport class Transaction implements ITransaction {\n db: Dexie;\n active: boolean;\n mode: IDBTransactionMode;\n chromeTransactionDurability: ChromeTransactionDurability;\n idbtrans: IDBTransaction;\n storeNames: string[];\n explicit?: boolean;\n on: any;\n parent?: Transaction;\n schema: DbSchema;\n _memoizedTables: {[tableName: string]: Table};\n\n _reculock: number;\n _blockedFuncs: { 0: () => any, 1: any }[];\n _resolve: () => void;\n _reject: (Error) => void;\n _waitingFor: DexiePromise; // for waitFor()\n _waitingQueue: Function[]; // for waitFor()\n _spinCount: number; // Just for debugging waitFor()\n _completion: DexiePromise;\n\n //\n // Transaction internal methods (not required by API users, but needed internally and eventually by dexie extensions)\n //\n\n /** Transaction._lock()\n * \n * Internal method.\n */\n _lock() {\n assert(!PSD.global); // Locking and unlocking reuires to be within a PSD scope.\n // Temporary set all requests into a pending queue if they are called before database is ready.\n ++this._reculock; // Recursive read/write lock pattern using PSD (Promise Specific Data) instead of TLS (Thread Local Storage)\n if (this._reculock === 1 && !PSD.global) PSD.lockOwnerFor = this;\n return this;\n }\n\n /** Transaction._unlock()\n * \n * Internal method.\n */\n _unlock() {\n assert(!PSD.global); // Locking and unlocking reuires to be within a PSD scope.\n if (--this._reculock === 0) {\n if (!PSD.global) PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try { usePSD(fnAndPSD[1], fnAndPSD[0]); } catch (e) { }\n }\n }\n return this;\n }\n\n /** Transaction._lock()\n * \n * Internal method.\n */\n _locked() {\n // Checks if any write-lock is applied on this transaction.\n // To simplify the Dexie API for extension implementations, we support recursive locks.\n // This is accomplished by using \"Promise Specific Data\" (PSD).\n // PSD data is bound to a Promise and any child Promise emitted through then() or resolve( new Promise() ).\n // PSD is local to code executing on top of the call stacks of any of any code executed by Promise():\n // * callback given to the Promise() constructor (function (resolve, reject){...})\n // * callbacks given to then()/catch()/finally() methods (function (value){...})\n // If creating a new independant Promise instance from within a Promise call stack, the new Promise will derive the PSD from the call stack of the parent Promise.\n // Derivation is done so that the inner PSD __proto__ points to the outer PSD.\n // PSD.lockOwnerFor will point to current transaction object if the currently executing PSD scope owns the lock.\n return this._reculock && PSD.lockOwnerFor !== this;\n }\n\n /** Transaction.create()\n * \n * Internal method.\n * \n */\n create(idbtrans?: IDBTransaction & {[prop: string]: any}) {\n if (!this.mode) return this;\n const idbdb = this.db.idbdb;\n const dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n // Errors where it is no difference whether it was caused by the user operation or an earlier call to db.open()\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n // Errors where it is no difference whether it was caused by the user operation or an earlier call to db.open()\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n // Make it clear that the user operation was not what caused the error - the error had occurred earlier on db.open()!\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active) throw new exceptions.TransactionInactive();\n assert(this._completion._state === null); // Completion Promise must still be pending.\n\n idbtrans = this.idbtrans = idbtrans ||\n (this.db.core \n ? this.db.core.transaction(this.storeNames, this.mode as 'readwrite' | 'readonly', { durability: this.chromeTransactionDurability })\n : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })\n ) as IDBTransaction;\n\n idbtrans.onerror = wrap(ev => {\n preventDefault(ev);// Prohibit default bubbling to window.error\n this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(ev => {\n preventDefault(ev);\n this.active && this._reject(new exceptions.Abort(idbtrans.error));\n this.active = false;\n this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(() => {\n this.active = false;\n this._resolve();\n if ('mutatedParts' in idbtrans) {\n globalEvents.storagemutated.fire(idbtrans[\"mutatedParts\"]);\n }\n });\n return this;\n }\n\n /** Transaction._promise()\n * \n * Internal method.\n */\n _promise(\n mode: IDBTransactionMode,\n fn: (resolve, reject, trans: Transaction) => PromiseLike | void,\n bWriteLock?: string | boolean): DexiePromise\n {\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n\n if (this._locked()) {\n return new DexiePromise((resolve, reject) => {\n this._blockedFuncs.push([() => {\n this._promise(mode, fn, bWriteLock).then(resolve, reject);\n }, PSD]);\n });\n\n } else if (bWriteLock) {\n return newScope(() => {\n var p = new DexiePromise((resolve, reject) => {\n this._lock();\n const rv = fn(resolve, reject, this);\n if (rv && rv.then) rv.then(resolve, reject);\n });\n p.finally(() => this._unlock());\n p._lib = true;\n return p;\n });\n\n } else {\n var p = new DexiePromise((resolve, reject) => {\n var rv = fn(resolve, reject, this);\n if (rv && rv.then) rv.then(resolve, reject);\n });\n p._lib = true;\n return p;\n }\n }\n\n /** Transaction._root()\n * \n * Internal method. Retrieves the root transaction in the tree of sub transactions.\n */\n _root() {\n return this.parent ? this.parent._root() : this;\n }\n\n /** Transaction.waitFor()\n * \n * Internal method. Can be accessed from the public API through\n * Dexie.waitFor(): https://dexie.org/docs/Dexie/Dexie.waitFor()\n * \n **/\n waitFor(promiseLike: PromiseLike) {\n // Always operate on the root transaction (in case this is a sub stransaction)\n var root = this._root();\n // For stability reasons, convert parameter to promise no matter what type is passed to waitFor().\n // (We must be able to call .then() on it.)\n const promise = DexiePromise.resolve(promiseLike);\n if (root._waitingFor) {\n // Already called waitFor(). Wait for both to complete.\n root._waitingFor = root._waitingFor.then(() => promise);\n } else {\n // We're not in waiting state. Start waiting state.\n root._waitingFor = promise;\n root._waitingQueue = [];\n // Start interacting with indexedDB until promise completes:\n var store = root.idbtrans.objectStore(root.storeNames[0]);\n (function spin() {\n ++root._spinCount; // For debugging only\n while (root._waitingQueue.length) (root._waitingQueue.shift())();\n if (root._waitingFor) store.get(-Infinity).onsuccess = spin;\n }());\n }\n var currentWaitPromise = root._waitingFor;\n return new DexiePromise((resolve, reject) => {\n promise.then(\n res => root._waitingQueue.push(wrap(resolve.bind(null, res))),\n err => root._waitingQueue.push(wrap(reject.bind(null, err)))\n ).finally(() => {\n if (root._waitingFor === currentWaitPromise) {\n // No one added a wait after us. Safe to stop the spinning.\n root._waitingFor = null;\n }\n });\n });\n } \n\n /** Transaction.abort()\n * \n * https://dexie.org/docs/Transaction/Transaction.abort()\n */\n abort() {\n if (this.active) {\n this.active = false;\n if (this.idbtrans) this.idbtrans.abort();\n this._reject(new exceptions.Abort());\n }\n }\n\n /** Transaction.table()\n * \n * https://dexie.org/docs/Transaction/Transaction.table()\n */\n table(tableName: string) {\n const memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n const tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\"); \n }\n\n const transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n }\n}\n", "import { Dexie } from '../dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { Transaction } from './transaction';\nimport { DbSchema } from '../../public/types/db-schema';\nimport Events from '../../helpers/Events';\nimport Promise, { rejection } from '../../helpers/promise';\n\nexport interface TransactionConstructor {\n new (\n mode: IDBTransactionMode,\n storeNames: string[],\n dbschema: DbSchema,\n chromeTransactionDurability: ChromeTransactionDurability,\n parent?: Transaction) : T;\n prototype: T;\n}\n\n/** Generates a Transaction constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createTransactionConstructor(db: Dexie) {\n return makeClassConstructor>(\n Transaction.prototype,\n function Transaction (\n this: Transaction,\n mode: IDBTransactionMode,\n storeNames: string[],\n dbschema: DbSchema,\n chromeTransactionDurability: ChromeTransactionDurability,\n parent?: Transaction)\n {\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.chromeTransactionDurability = chromeTransactionDurability;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0; // Just for debugging waitFor()\n this._completion = new Promise ((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n \n this._completion.then(\n ()=> {\n this.active = false;\n this.on.complete.fire();\n },\n e => {\n var wasActive = this.active;\n this.active = false;\n this.on.error.fire(e);\n this.parent ?\n this.parent._reject(e) :\n wasActive && this.idbtrans && this.idbtrans.abort();\n return rejection(e); // Indicate we actually DO NOT catch this error.\n });\n \n });\n}\n", "import { IndexSpec } from '../public/types/index-spec';\n\nexport function createIndexSpec(\n name: string,\n keyPath: string | string[],\n unique: boolean,\n multi: boolean,\n auto: boolean,\n compound: boolean,\n isPrimKey: boolean\n): IndexSpec {\n return {\n name,\n keyPath,\n unique,\n multi,\n auto,\n compound,\n src: (unique && !isPrimKey ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n }\n}\n\nexport function nameFromKeyPath (keyPath?: string | string[]): string {\n return typeof keyPath === 'string' ?\n keyPath :\n keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : \"\";\n}\n", "import { IndexSpec } from '../public/types/index-spec';\nimport { TableSchema } from '../public/types/table-schema';\nimport { createIndexSpec } from './index-spec';\nimport { arrayToObject } from '../functions/utils';\n\nexport function createTableSchema (\n name: string,\n primKey: IndexSpec,\n indexes: IndexSpec[]\n): TableSchema {\n return {\n name,\n primKey,\n indexes,\n mappedClass: null,\n idxByName: arrayToObject(indexes, index => [index.name, index])\n };\n}\n", "import { maxString } from '../globals/constants';\n\nexport function safariMultiStoreFix(storeNames: string[]) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\n\nexport function getNativeGetDatabaseNamesFn(indexedDB) {\n var fn = indexedDB && (indexedDB.getDatabaseNames || indexedDB.webkitGetDatabaseNames);\n return fn && fn.bind(indexedDB);\n}\n\nexport let getMaxKey = (IdbKeyRange: typeof IDBKeyRange) => {\n try {\n IdbKeyRange.only([[]]);\n getMaxKey = () => [[]];\n return [[]];\n } catch (e) {\n getMaxKey = () => maxString;\n return maxString;\n }\n}\n", "import { getByKeyPath } from '../functions/utils';\n\nexport function getKeyExtractor (keyPath: null | string | string[]) : (a: any) => any {\n if (keyPath == null) {\n return () => undefined;\n } else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n } else {\n return obj => getByKeyPath(obj, keyPath);\n }\n}\n\nexport function getSinglePathKeyExtractor(keyPath: string) {\n const split = keyPath.split('.');\n if (split.length === 1) {\n return obj => obj[keyPath];\n } else {\n return obj => getByKeyPath(obj, keyPath);\n }\n}\n", "import {\n DBCore,\n DBCoreCursor,\n DBCoreOpenCursorRequest,\n DBCoreQueryRequest,\n DBCoreIndex,\n DBCoreKeyRange,\n DBCoreQueryResponse,\n DBCoreRangeType,\n DBCoreSchema,\n DBCoreTableSchema,\n DBCoreTable,\n DBCoreMutateResponse,\n} from \"../public/types/dbcore\";\nimport { isArray } from '../functions/utils';\nimport { eventRejectHandler, preventDefault } from '../functions/event-wrappers';\nimport { wrap } from '../helpers/promise';\nimport { getMaxKey } from '../functions/quirks';\nimport { getKeyExtractor } from './get-key-extractor';\n\nexport function arrayify(arrayLike: {length: number, [index: number]: T}): T[] {\n return [].slice.call(arrayLike);\n}\nexport function pick(obj: T, props: Prop[]): Pick {\n const result = {} as Pick;\n props.forEach(prop => result[prop] = obj[prop]);\n return result;\n}\n\nlet _id_counter = 0;\n\nexport function getKeyPathAlias(keyPath: null | string | string[]) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n `[${keyPath.join('+')}]`;\n}\n\nexport function createDBCore (\n db: IDBDatabase,\n IdbKeyRange: typeof IDBKeyRange,\n tmpTrans: IDBTransaction) : DBCore\n{\n function extractSchema(db: IDBDatabase, trans: IDBTransaction) : {schema: DBCoreSchema, hasGetAll: boolean} {\n const tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(table => trans.objectStore(table)).map(store => {\n const {keyPath, autoIncrement} = store;\n const compound = isArray(keyPath);\n const outbound = keyPath == null;\n const indexByKeyPath: {[keyPathAlias: string]: DBCoreIndex} = {};\n const result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound,\n compound,\n keyPath,\n autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n } as DBCoreIndex,\n indexes: arrayify(store.indexNames).map(indexName => store.index(indexName))\n .map(index => {\n const {name, unique, multiEntry, keyPath} = index;\n const compound = isArray(keyPath);\n const result: DBCoreIndex = {\n name,\n compound,\n keyPath,\n unique,\n multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: (keyPath: null | string | string[]) => indexByKeyPath[getKeyPathAlias(keyPath)]\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) // Bug with getAll() on Safari ver<604. See discussion following PR #579\n };\n }\n\n function makeIDBKeyRange (range: DBCoreKeyRange) : IDBKeyRange | null {\n if (range.type === DBCoreRangeType.Any) return null;\n if (range.type === DBCoreRangeType.Never) throw new Error(\"Cannot convert never type to IDBKeyRange\");\n const {lower, upper, lowerOpen, upperOpen} = range;\n const idbRange = lower === undefined ?\n upper === undefined ?\n null : //IDBKeyRange.lowerBound(-Infinity, false) : // Any range (TODO: Should we return null instead?)\n IdbKeyRange.upperBound(upper, !!upperOpen) : // below\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) : // above\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n\n function createDbCoreTable(tableSchema: DBCoreTableSchema): DBCoreTable {\n const tableName = tableSchema.name;\n\n function mutate ({trans, type, keys, values, range}) {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const store = (trans as IDBTransaction).objectStore(tableName);\n const outbound = store.keyPath == null;\n const isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error (\"Invalid operation type: \" + type);\n\n const {length} = keys || values || {length: 1}; // keys.length if keys. values.length if values. 1 if range.\n if (keys && values && keys.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n // No items to write. Don't even bother!\n return resolve({numFailures: 0, failures: {}, results: [], lastResult: undefined});\n\n let req: IDBRequest;\n const reqs: IDBRequest[] = [];\n \n const failures: {[operationNumber: number]: Error} = [];\n let numFailures = 0;\n const errorHandler = \n event => {\n ++numFailures;\n preventDefault(event);\n };\n \n if (type === 'deleteRange') {\n // Here the argument is the range\n if (range.type === DBCoreRangeType.Never)\n return resolve({numFailures, failures, results: [], lastResult: undefined}); // Deleting the Never range shoulnt do anything.\n if (range.type === DBCoreRangeType.Any)\n reqs.push(req = store.clear()); // Deleting the Any range is equivalent to store.clear()\n else\n reqs.push(req = store.delete(makeIDBKeyRange(range)));\n } else {\n // No matter add, put or delete - find out arrays of first and second arguments to it.\n const [args1, args2] = isAddOrPut ?\n outbound ?\n [values, keys] :\n [values, null] :\n [keys, null];\n\n if (isAddOrPut) {\n for (let i=0; i {\n const lastResult = event.target.result;\n reqs.forEach((req, i) => req.error != null && (failures[i] = req.error));\n resolve({\n numFailures,\n failures,\n results: type === \"delete\" ? keys : reqs.map(req => req.result),\n lastResult\n });\n };\n \n req.onerror = event => { // wrap() not needed. All paths calling outside will wrap!\n errorHandler(event);\n done(event);\n };\n \n req.onsuccess = done;\n });\n }\n \n function openCursor ({trans, values, query, reverse, unique}: DBCoreOpenCursorRequest): Promise\n {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const {index, range} = query;\n const store = (trans as IDBTransaction).objectStore(tableName);\n // source\n const source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n // direction\n const direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n // request\n const req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n \n // iteration\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(ev => {\n\n const cursor = req.result as unknown as DBCoreCursor;\n if (!cursor) {\n resolve(null);\n return;\n }\n (cursor as any).___id = ++_id_counter;\n (cursor as any).done = false;\n const _cursorContinue = cursor.continue.bind(cursor);\n let _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey) _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n const _cursorAdvance = cursor.advance.bind(cursor);\n const doThrowCursorIsNotStarted = ()=>{throw new Error(\"Cursor not started\");}\n const doThrowCursorIsStopped = ()=>{throw new Error(\"Cursor not stopped\");}\n (cursor as any).trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function (this: DBCoreCursor) {\n // next() must work with \"this\" pointer in order to function correctly for ProxyCursors (derived objects)\n // without having to re-define next() on each child.\n let gotOne = 1;\n return this.start(() => gotOne-- ? this.continue() : this.stop()).then(() => this);\n };\n cursor.start = (callback) => {\n //console.log(\"Starting cursor\", (cursor as any).___id);\n const iterationPromise = new Promise((resolveIteration, rejectIteration) =>{\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = value => {\n //console.log(\"Cursor stop\", cursor);\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n // Now change req.onsuccess to a callback that doesn't call initCursor but just observer.next()\n const guardedCallback = () => {\n if (req.result) {\n //console.log(\"Next result\", cursor);\n try {\n callback();\n } catch (err) {\n cursor.fail(err);\n }\n } else {\n (cursor as any).done = true;\n cursor.start = ()=>{throw new Error(\"Cursor behind last entry\");}\n cursor.stop();\n }\n }\n req.onsuccess = wrap(ev => {\n //cursor.continue = _cursorContinue;\n //cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n //cursor.advance = _cursorAdvance;\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject); \n });\n }\n \n function query (hasGetAll: boolean) {\n return (request: DBCoreQueryRequest) => {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const {trans, values, limit, query} = request;\n const nonInfinitLimit = limit === Infinity ? undefined : limit;\n const {index, range} = query;\n const store = (trans as IDBTransaction).objectStore(tableName);\n const source = index.isPrimaryKey ? store : store.index(index.name);\n const idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0) return resolve({result: []});\n if (hasGetAll) {\n const req = values ?\n (source as any).getAll(idbKeyRange, nonInfinitLimit) :\n (source as any).getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = event => resolve({result: event.target.result});\n req.onerror = eventRejectHandler(reject);\n } else {\n let count = 0;\n const req = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange)\n const result = [];\n req.onsuccess = event => {\n const cursor = req.result as IDBCursorWithValue;\n if (!cursor) return resolve({result});\n result.push(values ? cursor.value : cursor.primaryKey);\n if (++count === limit) return resolve({result});\n cursor.continue();\n };\n req.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n \n return {\n name: tableName,\n schema: tableSchema,\n \n mutate,\n\n getMany ({trans, keys}) {\n return new Promise((resolve, reject) => {\n resolve = wrap(resolve);\n const store = (trans as IDBTransaction).objectStore(tableName);\n const length = keys.length;\n const result = new Array(length);\n let keyCount = 0;\n let callbackCount = 0;\n let valueCount = 0;\n let req: IDBRequest & {_pos?: number};\n \n const successHandler = event => {\n const req = event.target;\n if ((result[req._pos] = req.result) != null) ++valueCount;\n if (++callbackCount === keyCount) resolve(result);\n };\n const errorHandler = eventRejectHandler(reject);\n \n for (let i=0; i((resolve, reject) => {\n resolve = wrap (resolve);\n const store = (trans as IDBTransaction).objectStore(tableName);\n const req = store.get(key);\n req.onsuccess = event => resolve((event.target as any).result);\n req.onerror = eventRejectHandler(reject);\n });\n },\n\n query: query(hasGetAll),\n \n openCursor,\n\n count ({query, trans}) {\n const {index, range} = query;\n return new Promise((resolve, reject) => {\n const store = (trans as IDBTransaction).objectStore(tableName);\n const source = index.isPrimaryKey ? store : store.index(index.name);\n const idbKeyRange = makeIDBKeyRange(range);\n const req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(ev => resolve((ev.target as IDBRequest).result));\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n\n const {schema, hasGetAll} = extractSchema(db, tmpTrans);\n const tables = schema.tables.map(tableSchema => createDbCoreTable(tableSchema));\n const tableMap: {[name: string]: DBCoreTable} = {};\n tables.forEach(table => tableMap[table.name] = table);\n return {\n stack: \"dbcore\",\n \n transaction: db.transaction.bind(db),\n\n table(name: string) {\n const result = tableMap[name];\n if (!result) throw new Error(`Table '${name}' not found`);\n return tableMap[name];\n },\n\n MIN_KEY: -Infinity,\n\n MAX_KEY: getMaxKey(IdbKeyRange),\n\n schema\n\n };\n}\n", "import { Dexie } from './';\nimport { createDBCore } from '../../dbcore/dbcore-indexeddb';\nimport { DBCore } from '../../public/types/dbcore';\nimport { DexieDOMDependencies } from '../../public/types/dexie-dom-dependencies';\nimport { DexieStacks, Middleware } from '../../public/types/middleware';\nimport { exceptions } from '../../errors';\n\nfunction createMiddlewareStack(\n stackImpl: {stack: string},\n middlewares: Middleware<{stack: string}>[]): TStack {\n return middlewares.reduce((down, {create}) => ({...down, ...create(down)}), stackImpl) as TStack;\n} \n\nfunction createMiddlewareStacks(\n middlewares: {[StackName in keyof DexieStacks]?: Middleware[]},\n idbdb: IDBDatabase,\n {IDBKeyRange, indexedDB}: DexieDOMDependencies,\n tmpTrans: IDBTransaction): {[StackName in keyof DexieStacks]?: DexieStacks[StackName]}\n{\n const dbcore = createMiddlewareStack(\n createDBCore(idbdb, IDBKeyRange, tmpTrans),\n middlewares.dbcore);\n \n // TODO: Create other stacks the same way as above. They might be dependant on the result\n // of creating dbcore stack.\n\n return {\n dbcore\n };\n}\n\nexport function generateMiddlewareStacks(db: Dexie, tmpTrans: IDBTransaction) {\n const idbdb = tmpTrans.db;\n const stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore!;\n db.tables.forEach(table => {\n const tableName = table.name;\n if (db.core.schema.tables.some(tbl => tbl.name === tableName)) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n}\n", "import { Dexie } from '../dexie';\nimport { DbSchema } from '../../public/types/db-schema';\nimport { _global } from \"../../globals/global\";\nimport { setProp, keys, slice, isArray, shallowClone, isAsyncFunction, defineProperty, getPropertyDescriptor } from '../../functions/utils';\nimport { Transaction } from '../transaction';\nimport { Version } from './version';\nimport Promise, { PSD, newScope, NativePromise, decrementExpectedAwaits, incrementExpectedAwaits } from '../../helpers/promise';\nimport { exceptions } from '../../errors';\nimport { TableSchema } from '../../public/types/table-schema';\nimport { IndexSpec } from '../../public/types/index-spec';\nimport { createIndexSpec, nameFromKeyPath } from '../../helpers/index-spec';\nimport { createTableSchema } from '../../helpers/table-schema';\nimport { generateMiddlewareStacks } from '../dexie/generate-middleware-stacks';\nimport { debug } from '../../helpers/debug';\nimport { PromiseExtended } from '../../public/types/promise-extended';\n\nexport function setApiOnPlace(db: Dexie, objs: Object[], tableNames: string[], dbschema: DbSchema) {\n tableNames.forEach(tableName => {\n const schema = dbschema[tableName];\n objs.forEach(obj => {\n const propDesc = getPropertyDescriptor(obj, tableName);\n if (!propDesc || (\"value\" in propDesc && propDesc.value === undefined)) {\n // Either the prop is not declared, or it is initialized to undefined.\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n // obj is a Transaction prototype (or prototype of a subclass to Transaction)\n // Make the API a getter that returns this.table(tableName)\n setProp(obj, tableName, {\n get(this: Transaction) { return this.table(tableName); },\n set(value: any) {\n // Issue #1039\n // Let \"this.schema = dbschema;\" and other props in transaction constructor work even if there's a name collision with the table name.\n defineProperty(this, tableName, {value, writable: true, configurable: true, enumerable: true});\n }\n });\n } else {\n // Table will not be bound to a transaction (will use Dexie.currentTransaction)\n obj[tableName] = new db.Table(tableName, schema);\n }\n }\n });\n });\n}\n\nexport function removeTablesApi(db: Dexie, objs: Object[]) {\n objs.forEach(obj => {\n for (let key in obj) {\n if (obj[key] instanceof db.Table) delete obj[key];\n }\n });\n}\n\nexport function lowerVersionFirst(a: Version, b: Version) {\n return a._cfg.version - b._cfg.version;\n}\n\nexport function runUpgraders(db: Dexie, oldVersion: number, idbUpgradeTrans: IDBTransaction, reject) {\n const globalSchema = db._dbSchema;\n if (idbUpgradeTrans.objectStoreNames.contains('$meta') && !globalSchema.$meta) {\n globalSchema.$meta = createTableSchema(\"$meta\", parseIndexSyntax(\"\")[0], []);\n db._storeNames.push('$meta');\n }\n const trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n trans.create(idbUpgradeTrans);\n trans._completion.catch(reject);\n const rejectTransaction = trans._reject.bind(trans);\n const transless = PSD.transless || PSD;\n newScope(() => {\n PSD.trans = trans;\n PSD.transless = transless;\n if (oldVersion === 0) {\n // Create tables:\n keys(globalSchema).forEach(tableName => {\n createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n });\n generateMiddlewareStacks(db, idbUpgradeTrans);\n Promise.follow(() => db.on.populate.fire(trans)).catch(rejectTransaction);\n } else {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n return getExistingVersion(db, trans, oldVersion)\n .then(oldVersion => updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans))\n .catch(rejectTransaction);\n }\n });\n}\n\nexport type UpgradeQueueItem = (idbtrans: IDBTransaction) => PromiseLike | void;\n\nexport function patchCurrentVersion(db: Dexie, idbUpgradeTrans: IDBTransaction) {\n createMissingTables(db._dbSchema, idbUpgradeTrans);\n if (idbUpgradeTrans.db.version % 10 === 0 && !idbUpgradeTrans.objectStoreNames.contains('$meta')) {\n // Rolled over to the next 10-ies due to many schema upgrades without bumping version.\n // No problem! We pin the database to its expected version by adding the $meta table so that next\n // time the programmer bumps the version and attaches, an upgrader, that upgrader will indeed run,\n // as well any further upgraders coming after that.\n idbUpgradeTrans.db.createObjectStore('$meta').add(Math.ceil((idbUpgradeTrans.db.version / 10) - 1), 'version');\n }\n const globalSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n adjustToExistingIndexNames(db, db._dbSchema, idbUpgradeTrans);\n const diff = getSchemaDiff(globalSchema, db._dbSchema);\n for (const tableChange of diff.change) {\n if (tableChange.change.length || tableChange.recreate) {\n console.warn(`Unable to patch indexes of table ${tableChange.name} because it has changes on the type of index or primary key.`);\n return;\n }\n const store = idbUpgradeTrans.objectStore(tableChange.name);\n tableChange.add.forEach(idx => {\n if (debug) console.debug(`Dexie upgrade patch: Creating missing index ${tableChange.name}.${idx.src}`);\n addIndex(store, idx);\n });\n }\n}\n\nfunction getExistingVersion(db: Dexie, trans: Transaction, oldVersion: number): PromiseExtended {\n // In normal case, existing version is the native installed version divided by 10.\n // However, in case more than 10 schema changes have been made on the same version (such as while\n // developing an app), the native version may have passed beyond a multiple of 10 within the same version.\n // When that happens, a table $meta will have been created, containing a single entry with key \"version\"\n // and the value of the real old version to use when running upgraders going forward.\n if (trans.storeNames.includes('$meta')) {\n return trans.table('$meta').get('version').then(metaVersion => {\n return metaVersion != null ? metaVersion : oldVersion\n })\n } else {\n return Promise.resolve(oldVersion);\n }\n}\n\nfunction updateTablesAndIndexes(\n db: Dexie,\n oldVersion: number,\n trans: Transaction,\n idbUpgradeTrans: IDBTransaction)\n{\n // Upgrade version to version, step-by-step from oldest to newest version.\n // Each transaction object will contain the table set that was current in that version (but also not-yet-deleted tables from its previous version)\n const queue: UpgradeQueueItem[] = [];\n const versions = db._versions;\n let globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n let anyContentUpgraderHasRun = false;\n \n const versToRun = versions.filter(v => v._cfg.version >= oldVersion);\n if (versToRun.length === 0) {\n // Important not to continue at this point.\n // Coming here means we've already patched schema in patchCurrentVersion() after having\n // incremented native version to a value above the declared highest version.\n // When being in this mode, it means that there might be different versions the db competing\n // about it with different version of the schema. Therefore, we must avoid deleting tables\n // or indexes here so that both versions can co-exist until the application has been upgraded to\n // a version that declares no lower than the native version.\n // If after that, a downgrade happens again, we'll end up here again, accepting both versions\n // And we'll stay in this state until app developer releases a new declared version.\n return Promise.resolve(); \n }\n \n versToRun.forEach(version => {\n queue.push(() => {\n const oldSchema = globalSchema;\n const newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n\n globalSchema = db._dbSchema = newSchema;\n\n const diff = getSchemaDiff(oldSchema, newSchema);\n // Add tables \n diff.add.forEach(tuple => {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n // Change tables\n diff.change.forEach(change => {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n } else {\n const store = idbUpgradeTrans.objectStore(change.name);\n // Add indexes\n change.add.forEach(idx => addIndex(store, idx));\n // Update indexes\n change.change.forEach(idx => {\n store.deleteIndex(idx.name);\n addIndex(store, idx);\n });\n // Delete indexes\n change.del.forEach(idxName => store.deleteIndex(idxName));\n }\n });\n\n const contentUpgrade = version._cfg.contentUpgrade;\n\n if (contentUpgrade && version._cfg.version > oldVersion) {\n // Update db.core with new tables and indexes:\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {}; // Invalidate memoization as transaction shape may change between versions.\n\n anyContentUpgraderHasRun = true;\n\n // Add to-be-deleted tables to contentUpgrade transaction\n let upgradeSchema = shallowClone(newSchema);\n diff.del.forEach(table => {\n upgradeSchema[table] = oldSchema[table];\n });\n\n // Safe to affect Transaction.prototype globally in this moment,\n // because when this code runs, there may not be any other code\n // that can access any transaction instance, else than this particular\n // upgrader function.\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema), upgradeSchema);\n trans.schema = upgradeSchema;\n\n // Support for native async await.\n const contentUpgradeIsAsync = isAsyncFunction(contentUpgrade);\n if (contentUpgradeIsAsync) {\n incrementExpectedAwaits();\n }\n \n let returnValue: any;\n const promiseFollowed = Promise.follow(() => {\n // Finally, call the scope function with our table and transaction arguments.\n returnValue = contentUpgrade(trans);\n if (returnValue) {\n if (contentUpgradeIsAsync) {\n // contentUpgrade is a native async function - we know for sure returnValue is native promise.\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n }\n }\n });\n return (returnValue && typeof returnValue.then === 'function' ?\n Promise.resolve(returnValue) : promiseFollowed.then(()=>returnValue));\n }\n });\n queue.push(idbtrans => {\n const newSchema = version._cfg.dbschema;\n // Delete old tables\n deleteRemovedTables(newSchema, idbtrans);\n // Restore the final API\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n // Maintain the $meta table after this version's tables and indexes has been created and content upgraders have run.\n queue.push(idbtrans => {\n if (db.idbdb.objectStoreNames.contains('$meta')) {\n if (Math.ceil(db.idbdb.version / 10) === version._cfg.version) {\n // Remove $meta table if it's no more needed - we are in line with the native version\n db.idbdb.deleteObjectStore('$meta');\n delete db._dbSchema.$meta;\n db._storeNames = db._storeNames.filter(name => name !== '$meta');\n } else {\n // We're still not in line with the native version. Make sure to update the virtual version\n // to the successfully run version\n idbtrans.objectStore('$meta').put(version._cfg.version, 'version');\n }\n }\n }); \n });\n\n // Now, create a queue execution engine\n function runQueue() {\n return queue.length ? Promise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n Promise.resolve();\n }\n\n return runQueue().then(() => {\n createMissingTables(globalSchema, idbUpgradeTrans); // At last, make sure to create any missing tables. (Needed by addons that add stores to DB without specifying version)\n });\n}\n\nexport interface SchemaDiff {\n del: string[],\n add: [string, TableSchema][];\n change: TableSchemaDiff[];\n}\n\nexport interface TableSchemaDiff {\n name: string,\n recreate: boolean,\n del: string[],\n add: IndexSpec[],\n change: IndexSpec[]\n}\n\nexport function getSchemaDiff(oldSchema: DbSchema, newSchema: DbSchema): SchemaDiff {\n const diff: SchemaDiff = {\n del: [], // Array of table names\n add: [], // Array of [tableName, newDefinition]\n change: [] // Array of {name: tableName, recreate: newDefinition, del: delIndexNames, add: newIndexDefs, change: changedIndexDefs}\n };\n let table: string;\n for (table in oldSchema) {\n if (!newSchema[table]) diff.del.push(table);\n }\n for (table in newSchema) {\n const oldDef = oldSchema[table],\n newDef = newSchema[table];\n if (!oldDef) {\n diff.add.push([table, newDef]);\n } else {\n const change = {\n name: table,\n def: newDef,\n recreate: false,\n del: [],\n add: [],\n change: []\n };\n if (\n (\n // compare keyPaths no matter if string or string[]\n // compare falsy keypaths same no matter if they are null or empty string.\n ''+(oldDef.primKey.keyPath||'')\n ) !== (\n ''+(newDef.primKey.keyPath||'')\n ) ||\n // Compare the autoIncrement flag also\n (oldDef.primKey.auto !== newDef.primKey.auto))\n {\n // Primary key has changed. Remove and re-add table.\n change.recreate = true;\n diff.change.push(change);\n } else {\n // Same primary key. Just find out what differs:\n const oldIndexes = oldDef.idxByName;\n const newIndexes = newDef.idxByName;\n let idxName: string;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName]) change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n const oldIdx = oldIndexes[idxName],\n newIdx = newIndexes[idxName];\n if (!oldIdx) change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src) change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n}\n\nexport function createTable(\n idbtrans: IDBTransaction,\n tableName: string,\n primKey: IndexSpec,\n indexes: IndexSpec[]\n) {\n const store = idbtrans.db.createObjectStore(\n tableName,\n primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto }\n );\n indexes.forEach(idx => addIndex(store, idx));\n return store;\n}\n\nexport function createMissingTables(newSchema: DbSchema, idbtrans: IDBTransaction) {\n keys(newSchema).forEach(tableName => {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n if (debug) console.debug('Dexie: Creating missing table', tableName);\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\n\nexport function deleteRemovedTables(newSchema: DbSchema, idbtrans: IDBTransaction) {\n [].slice.call(idbtrans.db.objectStoreNames).forEach(storeName =>\n newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName));\n}\n\nexport function addIndex(store: IDBObjectStore, idx: IndexSpec) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\n\nfunction buildGlobalSchema(\n db: Dexie,\n idbdb: IDBDatabase,\n tmpTrans: IDBTransaction\n) {\n const globalSchema = {};\n const dbStoreNames = slice(idbdb.objectStoreNames, 0);\n dbStoreNames.forEach(storeName => {\n const store = tmpTrans.objectStore(storeName);\n let keyPath = store.keyPath;\n const primKey = createIndexSpec(\n nameFromKeyPath(keyPath),\n keyPath || \"\",\n true,\n false,\n !!store.autoIncrement,\n keyPath && typeof keyPath !== \"string\",\n true\n );\n const indexes: IndexSpec[] = [];\n for (let j = 0; j < store.indexNames.length; ++j) {\n const idbindex = store.index(store.indexNames[j]);\n keyPath = idbindex.keyPath;\n var index = createIndexSpec(\n idbindex.name,\n keyPath,\n !!idbindex.unique,\n !!idbindex.multiEntry,\n false,\n keyPath && typeof keyPath !== \"string\",\n false\n );\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n return globalSchema;\n}\n\nexport function readGlobalSchema(db: Dexie, idbdb: IDBDatabase, tmpTrans: IDBTransaction) {\n db.verno = idbdb.version / 10;\n const globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n db._storeNames = slice(idbdb.objectStoreNames, 0);\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n}\n\nexport function verifyInstalledSchema(db: Dexie, tmpTrans: IDBTransaction): boolean {\n const installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n const diff = getSchemaDiff(installedSchema, db._dbSchema);\n return !(diff.add.length || diff.change.some(ch => ch.add.length || ch.change.length));\n}\n\nexport function adjustToExistingIndexNames(db: Dexie, schema: DbSchema, idbtrans: IDBTransaction) {\n // Issue #30 Problem with existing db - adjust to existing index names when migrating from non-dexie db\n const storeNames = idbtrans.db.objectStoreNames;\n\n for (let i = 0; i < storeNames.length; ++i) {\n const storeName = storeNames[i];\n const store = idbtrans.objectStore(storeName);\n db._hasGetAll = 'getAll' in store;\n\n for (let j = 0; j < store.indexNames.length; ++j) {\n const indexName = store.indexNames[j];\n const keyPath = store.index(indexName).keyPath;\n const dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n if (schema[storeName]) {\n const indexSpec = schema[storeName].idxByName[dexieName];\n if (indexSpec) {\n indexSpec.name = indexName;\n delete schema[storeName].idxByName[dexieName];\n schema[storeName].idxByName[indexName] = indexSpec;\n }\n }\n }\n }\n\n // Bug with getAll() on Safari ver<604 on Workers only, see discussion following PR #579\n if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n {\n db._hasGetAll = false;\n }\n}\n\nexport function parseIndexSyntax(primKeyAndIndexes: string): IndexSpec[] {\n return primKeyAndIndexes.split(',').map((index, indexNum) => {\n index = index.trim();\n const name = index.replace(/([&*]|\\+\\+)/g, \"\"); // Remove \"&\", \"++\" and \"*\"\n // Let keyPath of \"[a+b]\" be [\"a\",\"b\"]:\n const keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n\n return createIndexSpec(\n name,\n keyPath || null,\n /\\&/.test(index),\n /\\*/.test(index),\n /\\+\\+/.test(index),\n isArray(keyPath),\n indexNum === 0\n );\n });\n}\n", "import { Version as IVersion } from '../../public/types/version';\nimport { DbSchema } from '../../public/types/db-schema';\nimport { extend, keys } from '../../functions/utils';\nimport { Dexie } from '../dexie';\nimport { Transaction } from '../transaction';\nimport { removeTablesApi, setApiOnPlace, parseIndexSyntax } from './schema-helpers';\nimport { exceptions } from '../../errors';\nimport { createTableSchema } from '../../helpers/table-schema';\nimport { nop, promisableChain } from '../../functions/chaining-functions';\n\n/** class Version\n *\n * https://dexie.org/docs/Version/Version\n */\nexport class Version implements IVersion {\n db: Dexie;\n _cfg: {\n version: number,\n storesSource: { [tableName: string]: string | null },\n dbschema: DbSchema,\n tables: {},\n contentUpgrade: Function | null\n }\n\n _parseStoresSpec(stores: { [tableName: string]: string | null }, outSchema: DbSchema): any {\n keys(stores).forEach(tableName => {\n if (stores[tableName] !== null) {\n var indexes = parseIndexSyntax(stores[tableName]);\n var primKey = indexes.shift();\n primKey.unique = true;\n if (primKey.multi) throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n indexes.forEach(idx => {\n if (idx.auto) throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!idx.keyPath) throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n });\n outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n }\n });\n }\n\n stores(stores: { [key: string]: string | null; }): IVersion {\n const db = this.db;\n this._cfg.storesSource = this._cfg.storesSource ?\n extend(this._cfg.storesSource, stores) :\n stores;\n const versions = db._versions;\n\n // Derive stores from earlier versions if they are not explicitely specified as null or a new syntax.\n const storesSpec: { [key: string]: string; } = {};\n let dbschema = {};\n versions.forEach(version => { // 'versions' is always sorted by lowest version first.\n extend(storesSpec, version._cfg.storesSource);\n dbschema = (version._cfg.dbschema = {});\n version._parseStoresSpec(storesSpec, dbschema);\n });\n // Update the latest schema to this version\n db._dbSchema = dbschema;\n // Update APIs\n removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n db._storeNames = keys(dbschema);\n return this;\n }\n\n upgrade(upgradeFunction: (trans: Transaction) => PromiseLike | void): Version {\n this._cfg.contentUpgrade = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);\n return this;\n }\n}\n", "import { Dexie } from '../dexie';\nimport { makeClassConstructor } from '../../functions/make-class-constructor';\nimport { Version } from './version';\n\nexport interface VersionConstructor {\n new(versionNumber: number): Version;\n prototype: Version;\n}\n\n/** Generates a Version constructor bound to given Dexie instance.\n * \n * The purpose of having dynamically created constructors, is to allow\n * addons to extend classes for a certain Dexie instance without affecting\n * other db instances.\n */\nexport function createVersionConstructor(db: Dexie) {\n return makeClassConstructor(\n Version.prototype,\n\n function Version(this: Version, versionNumber: number) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n\n}\n", "import { Dexie } from \"../classes/dexie/dexie\";\nimport { Table } from \"../public/types/table\";\nimport { DBNAMES_DB } from \"../globals/constants\";\nimport { DexieDOMDependencies } from \"../public/types/dexie-dom-dependencies\";\nimport { nop } from \"../functions/chaining-functions\";\n\ntype IDBKeyNamesVar = typeof IDBKeyRange;\n\nfunction getDbNamesTable(indexedDB: IDBFactory, IDBKeyRange: IDBKeyNamesVar) {\n let dbNamesDB = indexedDB[\"_dbNamesDB\"];\n if (!dbNamesDB) {\n dbNamesDB = indexedDB[\"_dbNamesDB\"] = new Dexie(DBNAMES_DB, {\n addons: [],\n indexedDB,\n IDBKeyRange,\n });\n dbNamesDB.version(1).stores({ dbnames: \"name\" });\n }\n return dbNamesDB.table(\"dbnames\") as Table<{ name: string }, string>;\n}\n\nfunction hasDatabasesNative(indexedDB: IDBFactory) {\n return indexedDB && typeof indexedDB.databases === \"function\";\n}\n\nexport function getDatabaseNames({\n indexedDB,\n IDBKeyRange,\n}: DexieDOMDependencies) {\n return hasDatabasesNative(indexedDB)\n ? Promise.resolve(indexedDB.databases()).then((infos) =>\n infos\n // Select name prop of infos:\n .map((info) => info.name)\n // Filter out DBNAMES_DB as previous Dexie or browser version would not have included it in the result.\n .filter((name) => name !== DBNAMES_DB)\n )\n : getDbNamesTable(indexedDB, IDBKeyRange).toCollection().primaryKeys();\n}\n\nexport function _onDatabaseCreated(\n { indexedDB, IDBKeyRange }: DexieDOMDependencies,\n name: string\n) {\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).put({name}).catch(nop);\n}\n\nexport function _onDatabaseDeleted(\n { indexedDB, IDBKeyRange }: DexieDOMDependencies,\n name: string\n) {\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).delete(name).catch(nop);\n}\n", "import { newScope } from '../../helpers/promise';\nimport { PSD } from '../../helpers/promise';\n\nexport function vip (fn) {\n // To be used by subscribers to the on('ready') event.\n // This will let caller through to access DB even when it is blocked while the db.ready() subscribers are firing.\n // This would have worked automatically if we were certain that the Provider was using Dexie.Promise for all asyncronic operations. The promise PSD\n // from the provider.connect() call would then be derived all the way to when provider would call localDatabase.applyChanges(). But since\n // the provider more likely is using non-promise async APIs or other thenable implementations, we cannot assume that.\n // Note that this method is only useful for on('ready') subscribers that is returning a Promise from the event. If not using vip()\n // the database could deadlock since it wont open until the returned Promise is resolved, and any non-VIPed operation started by\n // the caller will not resolve until database is opened.\n return newScope(function () {\n PSD.letThrough = true; // Make sure we are let through if still blocking db due to onready is firing.\n return fn();\n });\n}\n\n", "/**\n * Work around Safari 14 IndexedDB open bug.\n *\n * Safari has a horrible bug where IDB requests can hang while the browser is starting up. https://bugs.webkit.org/show_bug.cgi?id=226547\n * The only solution is to keep nudging it until it's awake.\n */\nfunction idbReady() {\n var isSafari = !navigator.userAgentData &&\n /Safari\\//.test(navigator.userAgent) &&\n !/Chrom(e|ium)\\//.test(navigator.userAgent);\n // No point putting other browsers or older versions of Safari through this mess.\n if (!isSafari || !indexedDB.databases)\n return Promise.resolve();\n var intervalId;\n return new Promise(function (resolve) {\n var tryIdb = function () { return indexedDB.databases().finally(resolve); };\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(function () { return clearInterval(intervalId); });\n}\n\nexport default idbReady;\n", "import { cmp } from \"../functions/cmp\";\nimport { extend, iteratorSymbol, props } from '../functions/utils';\nimport { IndexableType } from '../public';\nimport {\n EmptyRange,\n IntervalTree,\n IntervalTreeNode,\n RangeSetConstructor,\n RangeSetPrototype,\n} from \"../public/types/rangeset\";\n\n/* An interval tree implementation to efficiently detect overlapping ranges of queried indexes.\n *\n * https://en.wikipedia.org/wiki/Interval_tree\n * \n */\n\nfunction isEmptyRange(node: IntervalTree | {from: IndexableType, to: IndexableType}): node is EmptyRange {\n return !(\"from\" in node);\n}\n\nexport type RangeSet = RangeSetPrototype & IntervalTree;\n\nexport const RangeSet = function(fromOrTree: any, to?: any) {\n if (this) {\n // Called with new()\n extend(this, arguments.length ? {d:1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree} : {d:0});\n } else {\n // Called without new()\n const rv = new RangeSet();\n if (fromOrTree && (\"d\" in fromOrTree)) {\n extend(rv, fromOrTree);\n }\n return rv;\n }\n} as RangeSetConstructor;\n\nprops(RangeSet.prototype, {\n add(rangeSet: IntervalTree | {from: IndexableType, to: IndexableType}) {\n mergeRanges(this, rangeSet);\n return this;\n },\n addKey(key: IndexableType) {\n addRange(this, key, key);\n return this;\n },\n addKeys(keys: IndexableType[]) {\n keys.forEach(key => addRange(this, key, key));\n return this;\n },\n hasKey(key: IndexableType) {\n const node = getRangeSetIterator(this).next(key).value;\n return node && cmp(node.from, key) <= 0 && cmp(node.to, key) >= 0;\n },\n\n [iteratorSymbol](): Iterator {\n return getRangeSetIterator(this);\n }\n});\n\nfunction addRange(target: IntervalTree, from: IndexableType, to: IndexableType) {\n const diff = cmp(from, to);\n // cmp() returns NaN if one of the args are IDB-invalid keys.\n // Avoid storing invalid keys in rangeset:\n if (isNaN(diff)) return;\n\n // Caller is trying to add a range where from is greater than to:\n if (diff > 0) throw RangeError();\n \n if (isEmptyRange(target)) return extend(target, { from, to, d: 1 });\n const left = target.l;\n const right = target.r;\n if (cmp(to, target.from) < 0) {\n left\n ? addRange(left, from, to)\n : (target.l = { from, to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.to) > 0) {\n right\n ? addRange(right, from, to)\n : (target.r = { from, to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n // Now we have some kind of overlap. We will be able to merge the new range into the node or let it be swallowed.\n\n // Grow left?\n if (cmp(from, target.from) < 0) {\n target.from = from;\n target.l = null; // Cut off for now. Re-add later.\n target.d = right ? right.d + 1 : 1;\n }\n // Grow right?\n if (cmp(to, target.to) > 0) {\n target.to = to;\n target.r = null; // Cut off for now. Re-add later.\n target.d = target.l ? target.l.d + 1 : 1;\n }\n const rightWasCutOff = !target.r;\n // Re-add left?\n if (left && !target.l) {\n //Ranges to the left may be swallowed. Cut it of and re-add all.\n //Could probably be done more efficiently!\n mergeRanges(target, left);\n }\n // Re-add right?\n if (right && rightWasCutOff) {\n //Ranges to the right may be swallowed. Cut it of and re-add all.\n //Could probably be done more efficiently!\n mergeRanges(target, right);\n }\n}\n\nexport function mergeRanges(target: IntervalTree, newSet: IntervalTree | {from: IndexableType, to: IndexableType}) {\n function _addRangeSet(\n target: IntervalTree,\n { from, to, l, r }: IntervalTreeNode | {from: IndexableType, to: IndexableType, l?: undefined, r?: undefined}\n ) {\n addRange(target, from, to);\n if (l) _addRangeSet(target, l);\n if (r) _addRangeSet(target, r);\n }\n\n if(!isEmptyRange(newSet)) _addRangeSet(target, newSet);\n}\n\nexport function rangesOverlap(\n rangeSet1: IntervalTree,\n rangeSet2: IntervalTree\n): boolean {\n // Start iterating other from scratch.\n const i1 = getRangeSetIterator(rangeSet2);\n let nextResult1 = i1.next();\n if (nextResult1.done) return false;\n let a = nextResult1.value;\n\n // Start iterating this from start of other\n const i2 = getRangeSetIterator(rangeSet1);\n let nextResult2 = i2.next(a.from); // Start from beginning of other range\n let b = nextResult2.value;\n\n while (!nextResult1.done && !nextResult2.done) {\n if (cmp(b!.from, a.to) <= 0 && cmp(b!.to, a.from) >= 0) return true;\n cmp(a.from, b!.from) < 0\n ? (a = (nextResult1 = i1.next(b!.from)).value!) // a is behind. forward it to beginning of next b-range\n : (b = (nextResult2 = i2.next(a.from)).value); // b is behind. forward it to beginning of next a-range\n }\n return false;\n}\n\ntype RangeSetIteratorState =\n | {\n up?: RangeSetIteratorState;\n n: IntervalTreeNode;\n s: 0 | 1 | 2 | 3;\n }\n | undefined\n | null;\nexport function getRangeSetIterator(\n node: EmptyRange | IntervalTreeNode\n): Generator {\n let state: RangeSetIteratorState = isEmptyRange(node) ? null : { s: 0, n: node };\n\n return {\n next(key?) {\n const keyProvided = arguments.length > 0;\n while (state) {\n switch (state.s) {\n case 0:\n // Initial state for node.\n // Fast forward to leftmost node.\n state.s = 1;\n if (keyProvided) {\n while (state.n.l && cmp(key, state.n.from) < 0)\n state = { up: state, n: state.n.l, s: 1 };\n } else {\n while (state.n.l) state = { up: state, n: state.n.l, s: 1 };\n }\n // intentionally fall into case 1:\n case 1:\n // We're on a node where it's left part is already handled or does not exist.\n state.s = 2;\n if (!keyProvided || cmp(key, state.n.to) <= 0)\n return { value: state.n, done: false };\n case 2:\n // We've emitted our node and should continue with the right part or let parent take over from it's state 1\n if (state.n.r) {\n state.s = 3; // So when child is done, we know we're done.\n state = { up: state, n: state.n.r, s: 0 };\n continue; // Will fall in to case 0 with fast forward to left leaf of this subtree.\n }\n // intentionally fall into case 3:\n case 3:\n state = state.up;\n }\n }\n return { done: true };\n },\n } as Generator;\n}\n\nfunction rebalance(target: IntervalTreeNode) {\n const diff = (target.r?.d || 0) - (target.l?.d || 0);\n const r = diff > 1 ? \"r\" : diff < -1 ? \"l\" : \"\";\n if (r) {\n\n // Rotate (https://en.wikipedia.org/wiki/Tree_rotation)\n //\n // \n // [OLDROOT]\n // [OLDROOT.L] [NEWROOT]\n // [NEWROOT.L] [NEWROOT.R]\n //\n // Is going to become:\n //\n // \n // [NEWROOT]\n // [OLDROOT] [NEWROOT.R]\n // [OLDROOT.L] [NEWROOT.L] \n\n // * clone now has the props of OLDROOT\n // Plan:\n // * target must be given the props of NEWROOT\n // * target[l] must point to a new OLDROOT\n // * target[r] must point to NEWROOT.R\n // * OLDROOT[r] must point to NEWROOT.L\n const l = r === \"r\" ? \"l\" : \"r\"; // Support both left/right rotation\n const rootClone = { ...target };\n // We're gonna copy props from target's right node into target so that target will\n // have same range as old target[r] (instead of changing pointers, we copy values.\n // that way we do not need to adjust pointers in parents).\n const oldRootRight = target[r]; \n target.from = oldRootRight.from;\n target.to = oldRootRight.to;\n target[r] = oldRootRight[r];\n rootClone[r] = oldRootRight[l];\n target[l] = rootClone;\n rootClone.d = computeDepth(rootClone);\n }\n target.d = computeDepth(target);\n}\n\nfunction computeDepth({ r, l }: Pick) {\n return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;\n}\n", "import { cloneSimpleObjectTree, deepClone, keys, objectIsEmpty } from \"../functions/utils\";\nimport { mergeRanges, RangeSet } from \"../helpers/rangeset\";\nimport { ObservabilitySet } from \"../public/types/db-events\";\n\nexport function extendObservabilitySet(\n target: ObservabilitySet,\n newSet: ObservabilitySet\n): ObservabilitySet {\n keys(newSet).forEach(part => {\n if (target[part]) mergeRanges(target[part], newSet[part]);\n else target[part] = cloneSimpleObjectTree(newSet[part]); // Somewhat faster\n });\n return target;\n}\n", "import { rangesOverlap } from '../helpers/rangeset';\nimport { ObservabilitySet } from '../public/types/db-events';\n\nexport function obsSetsOverlap(os1: ObservabilitySet, os2: ObservabilitySet) {\n return os1.all || os2.all || Object.keys(os1).some(\n (key) => os2[key] && rangesOverlap(os2[key], os1[key])\n );\n}\n", "import { type GlobalQueryCache } from \"../../public/types/cache\";\n\nexport const cache: GlobalQueryCache = {}\n", "import { CacheEntry, TblQueryCache } from '../../public/types/cache';\nimport { ObservabilitySet } from '../../public/types/db-events';\nimport { extendObservabilitySet } from '../extend-observability-set';\nimport { obsSetsOverlap } from '../obs-sets-overlap';\nimport { cache } from './cache';\n\nlet unsignaledParts: ObservabilitySet = {};\nlet isTaskEnqueued = false;\n\nexport function signalSubscribersLazily(part: ObservabilitySet, optimistic = false) {\n extendObservabilitySet(unsignaledParts, part);\n if (!isTaskEnqueued) {\n isTaskEnqueued = true;\n setTimeout(() => {\n isTaskEnqueued = false;\n const parts = unsignaledParts;\n unsignaledParts = {};\n signalSubscribersNow(parts, false);\n }, 0);\n }\n}\n\nexport function signalSubscribersNow(\n updatedParts: ObservabilitySet,\n deleteAffectedCacheEntries = false\n) {\n const queriesToSignal = new Set<() => void>();\n if (updatedParts.all) {\n // Signal all subscribers to requery.\n for (const tblCache of Object.values(cache)) {\n collectTableSubscribers(\n tblCache,\n updatedParts,\n queriesToSignal,\n deleteAffectedCacheEntries\n );\n }\n } else {\n for (const key in updatedParts) {\n const parts = /^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(key);\n if (parts) {\n const [, dbName, tableName] = parts;\n const tblCache = cache[`idb://${dbName}/${tableName}`];\n if (tblCache)\n collectTableSubscribers(\n tblCache,\n updatedParts,\n queriesToSignal,\n deleteAffectedCacheEntries\n );\n }\n }\n }\n // Now when affected cache entries are removed, signal collected subscribers to requery.\n queriesToSignal.forEach((requery) => requery());\n}\n\nfunction collectTableSubscribers(\n tblCache: TblQueryCache,\n updatedParts: ObservabilitySet,\n outQueriesToSignal: Set<() => void>,\n deleteAffectedCacheEntries: boolean\n) {\n const updatedEntryLists: [string, CacheEntry[]][] = [];\n for (const [indexName, entries] of Object.entries(tblCache.queries.query)) {\n const filteredEntries: CacheEntry[] = [];\n for (const entry of entries) {\n if (obsSetsOverlap(updatedParts, entry.obsSet)) {\n // This query is affected by the mutation. Remove it from cache\n // and signal all subscribers to requery.\n entry.subscribers.forEach((requery) => outQueriesToSignal.add(requery));\n } else if (deleteAffectedCacheEntries) {\n filteredEntries.push(entry);\n }\n }\n // Collect cache entries to be updated\n if (deleteAffectedCacheEntries)\n updatedEntryLists.push([indexName, filteredEntries]);\n }\n if (deleteAffectedCacheEntries) {\n for (const [indexName, filteredEntries] of updatedEntryLists) {\n tblCache.queries.query[indexName] = filteredEntries;\n }\n }\n}\n", "import { Dexie } from './dexie';\nimport * as Debug from '../../helpers/debug';\nimport { rejection } from '../../helpers/promise';\nimport { exceptions } from '../../errors';\nimport { eventRejectHandler, preventDefault } from '../../functions/event-wrappers';\nimport Promise, { wrap } from '../../helpers/promise';\nimport { connections } from '../../globals/constants';\nimport { runUpgraders, readGlobalSchema, adjustToExistingIndexNames, verifyInstalledSchema, patchCurrentVersion } from '../version/schema-helpers';\nimport { safariMultiStoreFix } from '../../functions/quirks';\nimport { _onDatabaseCreated } from '../../helpers/database-enumerator';\nimport { vip } from './vip';\nimport { promisableChain, nop } from '../../functions/chaining-functions';\nimport { generateMiddlewareStacks } from './generate-middleware-stacks';\nimport { slice } from '../../functions/utils';\nimport safari14Workaround from 'safari-14-idb-fix';\nimport { type ObservabilitySet } from '../../public/types/db-events';\nimport { RangeSet } from '../../helpers/rangeset';\nimport { DEXIE_STORAGE_MUTATED_EVENT_NAME, globalEvents } from '../../globals/global-events';\nimport { signalSubscribersNow } from '../../live-query/cache/signalSubscribers';\n\nexport function dexieOpen (db: Dexie) {\n const state = db._state;\n const {indexedDB} = db._deps;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(() => state.dbOpenError ?\n rejection (state.dbOpenError) :\n db);\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n const openCanceller = state.openCanceller;\n let nativeVerToOpen = Math.round(db.verno * 10);\n let schemaPatchMode = false;\n\n function throwIfCancelled() {\n // If state.openCanceller object reference is replaced, it means db.close() has been called,\n // meaning this open flow should be cancelled.\n if (state.openCanceller !== openCanceller) throw new exceptions.DatabaseClosed('db.open() was cancelled');\n }\n \n // Function pointers to call when the core opening process completes.\n let resolveDbReady = state.dbReadyResolve,\n // upgradeTransaction to abort on failure.\n upgradeTransaction: (IDBTransaction | null) = null,\n wasCreated = false;\n\n const tryOpenDB = () => new Promise((resolve, reject) => {\n throwIfCancelled();\n // If no API, throw!\n if (!indexedDB) throw new exceptions.MissingAPI();\n const dbName = db.name;\n \n const req = state.autoSchema || !nativeVerToOpen ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, nativeVerToOpen);\n if (!req) throw new exceptions.MissingAPI(); // May happen in Safari private mode, see https://github.com/dfahlander/Dexie.js/issues/134\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap (e => {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) { // Unless an addon has specified db._allowEmptyDB, lets make the call fail.\n // Caller did not specify a version or schema. Doing that is only acceptable for opening alread existing databases.\n // If onupgradeneeded is called it means database did not exist. Reject the open() promise and make sure that we\n // do not create a new database by accident here.\n req.onerror = preventDefault; // Prohibit onabort error from firing before we're done!\n upgradeTransaction.abort(); // Abort transaction (would hope that this would make DB disappear but it doesnt.)\n // Close database and delete it.\n req.result.close();\n const delreq = indexedDB.deleteDatabase(dbName); // The upgrade transaction is atomic, and javascript is single threaded - meaning that there is no risk that we delete someone elses database here!\n delreq.onsuccess = delreq.onerror = wrap(() => {\n reject (new exceptions.NoSuchDatabase(`Database ${dbName} doesnt exist`));\n });\n } else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n const oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion; // Safari 8 fix.\n wasCreated = oldVer < 1;\n db.idbdb = req.result;\n if (schemaPatchMode) {\n patchCurrentVersion(db, upgradeTransaction);\n }\n runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n }\n }, reject);\n \n req.onsuccess = wrap (() => {\n // Core opening procedure complete. Now let's just record some stuff.\n upgradeTransaction = null;\n const idbdb = db.idbdb = req.result;\n\n const objectStoreNames = slice(idbdb.objectStoreNames);\n if (objectStoreNames.length > 0) try {\n const tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n if (state.autoSchema) readGlobalSchema(db, idbdb, tmpTrans);\n else {\n adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n if (!verifyInstalledSchema(db, tmpTrans) && !schemaPatchMode) {\n console.warn(`Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.`);\n idbdb.close();\n nativeVerToOpen = idbdb.version + 1;\n schemaPatchMode = true;\n return resolve (tryOpenDB()); // Try again with new version (nativeVerToOpen\n }\n }\n generateMiddlewareStacks(db, tmpTrans);\n } catch (e) {\n // Safari 8 may bail out if > 1 store names. However, this shouldnt be a showstopper. Issue #120.\n // BUGBUG: It will bail out anyway as of Dexie 3.\n // Should we support Safari 8 anymore? Believe all\n // Dexie users use the shim for that platform anyway?!\n // If removing Safari 8 support, go ahead and remove the safariMultiStoreFix() function\n // as well as absurd upgrade version quirk for Safari.\n }\n \n connections.push(db); // Used for emulating versionchange event on IE/Edge/Safari.\n \n idbdb.onversionchange = wrap(ev => {\n state.vcFired = true; // detect implementations that not support versionchange (IE/Edge/Safari)\n db.on(\"versionchange\").fire(ev);\n });\n \n idbdb.onclose = wrap(ev => {\n db.on(\"close\").fire(ev);\n });\n\n if (wasCreated) _onDatabaseCreated(db._deps, dbName);\n\n resolve();\n\n }, reject);\n }).catch(err => {\n switch (err?.name) {\n case \"UnknownError\":\n if (state.PR1398_maxLoop > 0) {\n // Bug in Chrome after clearing site data\n // https://github.com/dexie/Dexie.js/issues/543#issuecomment-1795736695\n state.PR1398_maxLoop--;\n console.warn('Dexie: Workaround for Chrome UnknownError on open()');\n return tryOpenDB();\n }\n break;\n case \"VersionError\":\n if (nativeVerToOpen > 0) {\n nativeVerToOpen = 0;\n return tryOpenDB();\n }\n break;\n }\n return Promise.reject(err);\n });\n \n // safari14Workaround = Workaround by jakearchibald for new nasty bug in safari 14.\n return Promise.race([\n openCanceller,\n (typeof navigator === 'undefined' ? Promise.resolve() : safari14Workaround()).then(tryOpenDB)\n ]).then(() => {\n // Before finally resolving the dbReadyPromise and this promise,\n // call and await all on('ready') subscribers:\n // Dexie.vip() makes subscribers able to use the database while being opened.\n // This is a must since these subscribers take part of the opening procedure.\n throwIfCancelled();\n state.onReadyBeingFired = [];\n return Promise.resolve(vip(()=>db.on.ready.fire(db.vip))).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n // In case additional subscribers to db.on('ready') were added during the time db.on.ready.fire was executed.\n let remainders = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return Promise.resolve(vip(()=>remainders(db.vip))).then(fireRemainders)\n }\n });\n }).finally(()=>{\n if (state.openCanceller === openCanceller) {\n // Only modify state if not cancelled in the mean time.\n state.onReadyBeingFired = null;\n state.isBeingOpened = false;\n }\n }).catch(err => {\n state.dbOpenError = err; // Record the error. It will be used to reject further promises of db operations.\n try {\n // Did we fail within onupgradeneeded? Make sure to abort the upgrade transaction so it doesnt commit.\n upgradeTransaction && upgradeTransaction.abort();\n } catch { }\n if (openCanceller === state.openCanceller) {\n // Still in the same open flow - The error reason was not due to external call to db.close().\n // Make sure to call db.close() to finalize resources.\n db._close(); // Closes and resets idbdb, removes connections, resets dbReadyPromise and openCanceller so that a later db.open() is fresh.\n }\n return rejection (err);\n }).finally(()=>{\n state.openComplete = true;\n resolveDbReady(); // dbReadyPromise is resolved no matter if open() rejects or resolved. It's just to wake up waiters.\n }).then(()=>{\n if (wasCreated) {\n // Propagate full range on primary keys and indexes on all tables now that the DB is ready and opened,\n // and all upgraders and on('ready') subscribers have run.\n const everything: ObservabilitySet = {};\n db.tables.forEach(table => {\n table.schema.indexes.forEach(idx => {\n if (idx.name) everything[`idb://${db.name}/${table.name}/${idx.name}`] = new RangeSet(-Infinity, [[[]]]);\n });\n everything[`idb://${db.name}/${table.name}/`] = everything[`idb://${db.name}/${table.name}/:dels`] = new RangeSet(-Infinity, [[[]]]);\n });\n // Database was created. If another tab had it open when it was deleted and reopened, that tab must be updated now.\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME).fire(everything);\n // Wipe the cache and trigger optimistic queries:\n signalSubscribersNow(everything, true);\n }\n // Resolve the db.open() with the db instance.\n return db;\n });\n}\n", "import { isArray } from '../functions/utils';\n\nexport function awaitIterator (iterator: Iterator) {\n var callNext = result => iterator.next(result),\n doThrow = error => iterator.throw(error),\n onSuccess = step(callNext),\n onError = step(doThrow);\n\n function step(getNext: (any)=>any) {\n return (val?) => {\n var next = getNext(val),\n value = next.value;\n\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n\n return step(callNext)();\n}\n", "import { TransactionMode } from '../../public/types/transaction-mode';\nimport { errnames, exceptions } from '../../errors';\nimport { flatten, isAsyncFunction } from '../../functions/utils';\nimport { Dexie } from './dexie';\nimport { Transaction } from '../transaction';\nimport { awaitIterator } from '../../helpers/yield-support';\nimport Promise, {\n PSD,\n NativePromise,\n decrementExpectedAwaits,\n rejection,\n incrementExpectedAwaits\n} from '../../helpers/promise';\n\nexport function extractTransactionArgs(mode: TransactionMode, _tableArgs_, scopeFunc) {\n // Let table arguments be all arguments between mode and last argument.\n var i = arguments.length;\n if (i < 2) throw new exceptions.InvalidArgument(\"Too few arguments\");\n // Prevent optimzation killer (https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments)\n // and clone arguments except the first one into local var 'args'.\n var args = new Array(i - 1);\n while (--i) args[i - 1] = arguments[i];\n // Let scopeFunc be the last argument and pop it so that args now only contain the table arguments.\n scopeFunc = args.pop();\n var tables = flatten(args); // Support using array as middle argument, or a mix of arrays and non-arrays.\n return [mode, tables, scopeFunc];\n}\n\nexport function enterTransactionScope(\n db: Dexie,\n mode: IDBTransactionMode,\n storeNames: string[],\n parentTransaction: Transaction | undefined,\n scopeFunc: ()=>PromiseLike | any\n) {\n return Promise.resolve().then(() => {\n // Keep a pointer to last non-transactional PSD to use if someone calls Dexie.ignoreTransaction().\n const transless = PSD.transless || PSD;\n // Our transaction.\n //return new Promise((resolve, reject) => {\n const trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n trans.explicit = true;\n // Let the transaction instance be part of a Promise-specific data (PSD) value.\n const zoneProps = {\n trans: trans,\n transless: transless\n };\n\n if (parentTransaction) {\n // Emulate transaction commit awareness for inner transaction (must 'commit' when the inner transaction has no more operations ongoing)\n trans.idbtrans = parentTransaction.idbtrans;\n } else {\n try {\n trans.create(); // Create the native transaction so that complete() or error() will trigger even if no operation is made upon it.\n // @ts-ignore Mark the idbtrans object with \"_explicit\". DBCore middleware won't have access to Dexie trans but will need to have this info.\n trans.idbtrans._explicit = true;\n db._state.PR1398_maxLoop = 3;\n } catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({disableAutoOpen: false});\n return db.open().then(() => enterTransactionScope(\n db,\n mode,\n storeNames,\n null,\n scopeFunc\n ));\n }\n return rejection(ex);\n }\n }\n\n // Support for native async await.\n const scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n\n let returnValue;\n const promiseFollowed = Promise.follow(() => {\n // Finally, call the scope function with our table and transaction arguments.\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (scopeFuncIsAsync) {\n // scopeFunc is a native async function - we know for sure returnValue is native promise.\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n } else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n // scopeFunc returned an iterator with throw-support. Handle yield as await.\n returnValue = awaitIterator(returnValue);\n }\n }\n }, zoneProps);\n return (returnValue && typeof returnValue.then === 'function' ?\n // Promise returned. User uses promise-style transactions.\n Promise.resolve(returnValue).then(x => trans.active ?\n x // Transaction still active. Continue.\n : rejection(new exceptions.PrematureCommit(\n \"Transaction committed too early. See http://bit.ly/2kdckMn\")))\n // No promise returned. Wait for all outstanding promises before continuing. \n : promiseFollowed.then(() => returnValue)\n ).then(x => {\n // sub transactions don't react to idbtrans.oncomplete. We must trigger a completion:\n if (parentTransaction) trans._resolve();\n // wait for trans._completion\n // (if root transaction, this means 'complete' event. If sub-transaction, we've just fired it ourselves)\n return trans._completion.then(() => x);\n }).catch(e => {\n trans._reject(e); // Yes, above then-handler were maybe not called because of an unhandled rejection in scopeFunc!\n return rejection(e);\n });\n });\n}\n", "import {\n DBCore,\n DBCoreIndex,\n DBCoreKeyRange,\n DBCoreQueryRequest,\n DBCoreRangeType,\n DBCoreOpenCursorRequest,\n DBCoreCountRequest,\n DBCoreCursor,\n DBCoreTable,\n} from \"../public/types/dbcore\";\nimport { isArray } from '../functions/utils';\nimport { getKeyExtractor } from './get-key-extractor';\nimport { getKeyPathAlias } from './dbcore-indexeddb';\nimport { Middleware } from '../public/types/middleware';\n\ninterface VirtualIndex extends DBCoreIndex {\n /** True if this index is virtual, i.e. represents a compound index internally,\n * but makes it act as as having a subset of its keyPaths.\n */\n isVirtual: boolean;\n\n /** Number of keypaths that this index comprises. Can be 0..N.\n * Note: This is the length of the *virtual index*, not the real index.\n */\n keyLength: number;\n\n /** Number of popped keypaths from the real index.\n */\n keyTail: number;\n\n /** LowLevelIndex represents the actual IndexedDB index behind it */\n lowLevelIndex: DBCoreIndex;\n}\n\n// Move into some util:\nexport function pad (a: any | any[], value: any, count: number) {\n const result = isArray(a) ? a.slice() : [a];\n for (let i=0; i 0;\n const virtualIndex = {\n ...lowLevelIndex,\n name: isVirtual\n ? `${keyPathAlias}(virtual-from:${lowLevelIndex.name})`\n : lowLevelIndex.name,\n lowLevelIndex,\n isVirtual,\n keyTail,\n keyLength,\n extractKey: getKeyExtractor(keyPath),\n unique: !isVirtual && lowLevelIndex.unique\n };\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n const virtualKeyPath = keyLength === 2 ?\n keyPath[0] : // This is a compound [a, b]. Add a virtual normal index a.\n keyPath.slice(0, keyLength - 1); // This is compound [a,b,c]. Add virtual compound [a,b].\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort((a,b) => a.keyTail - b.keyTail); // Shortest keyTail is the best one (represents real index)\n return virtualIndex;\n }\n \n const primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (const index of schema.indexes) {\n addVirtualIndexes(index.keyPath, 0, index);\n }\n \n function findBestIndex(keyPath: null | string | string[]): VirtualIndex {\n const result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n \n function translateRange (range: DBCoreKeyRange, keyTail: number): DBCoreKeyRange {\n return {\n type: range.type === DBCoreRangeType.Equal ?\n DBCoreRangeType.Range :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true, // doesn't matter true or false\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true // doesn't matter true or false\n };\n }\n \n function translateRequest (req: DBCoreQueryRequest): DBCoreQueryRequest;\n function translateRequest (req: DBCoreOpenCursorRequest): DBCoreOpenCursorRequest;\n function translateRequest (req: DBCoreCountRequest): DBCoreCountRequest {\n const index = req.query.index as VirtualIndex;\n return index.isVirtual ? {\n ...req,\n query: {\n index: index.lowLevelIndex,\n range: translateRange(req.query.range, index.keyTail)\n }\n } : req;\n }\n \n const result: DBCoreTable = {\n ...table,\n schema: {\n ...schema,\n primaryKey,\n indexes: allVirtualIndexes,\n getIndexByKeyPath: findBestIndex\n },\n\n count(req) {\n return table.count(translateRequest(req));\n }, \n \n query(req) {\n return table.query(translateRequest(req));\n },\n \n openCursor(req) {\n const {keyTail, isVirtual, keyLength} = (req.query.index as VirtualIndex);\n if (!isVirtual) return table.openCursor(req);\n \n function createVirtualCursor(cursor: DBCoreCursor) : DBCoreCursor {\n function _continue (key?: any) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(\n cursor.key.slice(0, keyLength)\n .concat(req.reverse\n ? down.MIN_KEY\n : down.MAX_KEY, keyTail)\n ) :\n cursor.continue()\n }\n const virtualCursor = Object.create(cursor, {\n continue: {value: _continue},\n continuePrimaryKey: {\n value(key: any, primaryKey: any) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }\n },\n primaryKey: {\n get() {\n return cursor.primaryKey;\n }\n },\n key: {\n get() {\n const key = cursor.key as any[]; // A virtual cursor always operates on compound key\n return keyLength === 1 ?\n key[0] : // Cursor.key should not be an array.\n key.slice(0, keyLength); // Cursor.key should be first part of array.\n }\n },\n value: {\n get() {\n return cursor.value;\n }\n }\n });\n return virtualCursor;\n }\n \n return table.openCursor(translateRequest(req))\n .then(cursor => cursor && createVirtualCursor(cursor));\n }\n };\n return result;\n }\n }\n}\n\nexport const virtualIndexMiddleware : Middleware = {\n stack: \"dbcore\",\n name: \"VirtualIndexMiddleware\",\n level: 1,\n create: createVirtualIndexMiddleware\n};\n\n", "import { keys, hasOwn, toStringTag } from './utils';\n\nexport function getObjectDiff(a: any, b: any, rv?: any, prfx?: string) {\n // Compares objects a and b and produces a diff object.\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach((prop) => {\n if (!hasOwn(b, prop)) {\n // Property removed\n rv[prfx + prop] = undefined;\n } else {\n var ap = a[prop],\n bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n const apTypeName = toStringTag(ap);\n const bpTypeName = toStringTag(bp);\n\n if (apTypeName !== bpTypeName) {\n rv[prfx + prop] = b[prop]; // Property changed to other type\n } else if (apTypeName === 'Object') {\n // Pojo objects (not Date, ArrayBuffer, Array etc). Go deep.\n getObjectDiff(ap, bp, rv, prfx + prop + '.');\n } else if (ap !== bp) {\n // Values differ.\n // Could have checked if Date, arrays or binary types have same\n // content here but I think that would be a suboptimation.\n // Prefer simplicity.\n rv[prfx + prop] = b[prop];\n }\n } else if (ap !== bp) rv[prfx + prop] = b[prop]; // Primitive value changed\n }\n });\n keys(b).forEach((prop) => {\n if (!hasOwn(a, prop)) {\n rv[prfx + prop] = b[prop]; // Property added\n }\n });\n return rv;\n}\n", "import {\n DBCoreAddRequest,\n DBCorePutRequest,\n DBCoreDeleteRequest,\n DBCoreIndex,\n DBCoreTable,\n} from \"../public/types/dbcore\";\n\nexport function getEffectiveKeys (\n primaryKey: DBCoreIndex,\n req: (Pick & {keys?: any[]}) | Pick)\n{\n //const {outbound} = primaryKey;\n if (req.type === 'delete') return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey)\n}\n", "import {\n DBCore,\n DBCoreTable,\n DBCoreMutateResponse,\n DBCoreDeleteRangeRequest,\n DBCoreAddRequest,\n DBCorePutRequest,\n DBCoreDeleteRequest,\n DBCoreTransaction,\n DBCoreKeyRange\n} from \"../public/types/dbcore\";\nimport { nop } from '../functions/chaining-functions';\nimport { hasOwn, setByKeyPath } from '../functions/utils';\nimport { getObjectDiff } from \"../functions/get-object-diff\";\nimport { PSD } from '../helpers/promise';\n//import { LockableTableMiddleware } from '../dbcore/lockable-table-middleware';\nimport { getEffectiveKeys } from '../dbcore/get-effective-keys';\nimport { Middleware } from '../public/types/middleware';\nimport { Transaction } from '../classes/transaction';\n\nexport const hooksMiddleware: Middleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: (downCore: DBCore) => ({\n ...downCore,\n table(tableName: string) {\n const downTable = downCore.table(tableName);\n const {primaryKey} = downTable.schema;\n \n const tableMiddleware: DBCoreTable = {\n ...downTable,\n mutate(req):Promise {\n const dxTrans = PSD.trans as Transaction;\n // Hooks can be transaction-bound. Need to grab them from transaction.table and not\n // db.table!\n const {deleting, creating, updating} = dxTrans.table(tableName).hook;\n switch (req.type) {\n case 'add':\n if (creating.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>addPutOrDelete(req), true);\n case 'put':\n if (creating.fire === nop && updating.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>addPutOrDelete(req), true);\n case 'delete':\n if (deleting.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>addPutOrDelete(req), true);\n case 'deleteRange':\n if (deleting.fire === nop) break;\n return dxTrans._promise('readwrite', ()=>deleteRange(req), true);\n }\n // Any of the breaks above happened (no hooks) - do the default:\n return downTable.mutate(req);\n\n\n function addPutOrDelete(req: DBCoreAddRequest | DBCorePutRequest | DBCoreDeleteRequest): Promise {\n const dxTrans = PSD.trans;\n const keys = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys) throw new Error(\"Keys missing\");\n // Clone Request and set keys arg\n req = req.type === 'add' || req.type === 'put' ?\n {...req, keys} :\n {...req};\n if (req.type !== 'delete') req.values = [...req.values];\n if (req.keys) req.keys = [...req.keys];\n \n return getExistingValues(downTable, req, keys).then (existingValues => {\n const contexts = keys.map((key, i) => {\n const existingValue = existingValues[i];\n const ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n // delete operation\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n } else if (req.type === 'add' || existingValue === undefined) {\n // The add() or put() resulted in a create\n const generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n } else {\n // The put() operation resulted in an update\n const objectDiff = getObjectDiff(existingValue, req.values[i]);\n const additionalChanges = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges) {\n const requestedValue = req.values[i];\n Object.keys(additionalChanges).forEach(keyPath => {\n if (hasOwn(requestedValue, keyPath)) {\n // keyPath is already present as a literal property of the object\n requestedValue[keyPath] = additionalChanges[keyPath];\n } else {\n // keyPath represents a new or existing path into the object\n setByKeyPath(requestedValue, keyPath, additionalChanges[keyPath]);\n }\n });\n }\n }\n return ctx;\n });\n return downTable.mutate(req).then(({failures, results, numFailures, lastResult}) => {\n for (let i=0; i {\n contexts.forEach(ctx => ctx.onerror && ctx.onerror(error));\n return Promise.reject(error);\n });\n });\n }\n \n function deleteRange(req: DBCoreDeleteRangeRequest): Promise {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n \n function deleteNextChunk(trans: DBCoreTransaction, range: DBCoreKeyRange, limit: number) {\n // Query what keys in the DB within the given range\n return downTable.query({trans, values: false, query: {index: primaryKey, range}, limit})\n .then(({result}) => {\n // Given a set of keys, bulk delete those using the same procedure as in addPutOrDelete().\n // This will make sure that deleting hook is called.\n return addPutOrDelete({type: 'delete', keys: result, trans}).then(res => {\n if (res.numFailures > 0) return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return {failures: [], numFailures: 0, lastResult: undefined} as DBCoreMutateResponse;\n } else {\n return deleteNextChunk(trans, {...range, lower: result[result.length - 1], lowerOpen: true}, limit);\n }\n });\n })\n }\n }\n };\n //const {lock, lockableMiddleware} = LockableTableMiddleware(tableMiddleware);\n\n return tableMiddleware;\n },\n }) as DBCore\n};\n\nfunction getExistingValues(\n table: DBCoreTable,\n req: DBCoreAddRequest | DBCorePutRequest | DBCoreDeleteRequest,\n effectiveKeys: any[]\n) {\n return req.type === \"add\"\n ? Promise.resolve([])\n : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: \"immutable\" });\n}\n", "import { deepClone } from \"../functions/utils\";\nimport { DBCore } from \"../public/types/dbcore\";\nimport { Middleware } from \"../public/types/middleware\";\nimport Promise from \"../helpers/promise\";\nimport { cmp } from '../functions/cmp';\n\nexport function getFromTransactionCache(\n keys: readonly any[],\n cache: { keys: any[]; values: any[] } | undefined | null,\n clone?: boolean\n) {\n try {\n if (!cache) return null;\n if (cache.keys.length < keys.length) return null;\n const result: any[] = [];\n // Compare if the exact same order of keys was retrieved in same transaction:\n // Allow some cached keys to be omitted from provided set of keys\n // Use case: 1. getMany(keys) 2. update a subset of those 3. call put with the updated ones ==> middlewares should be able to find old values\n for (let i = 0, j = 0; i < cache.keys.length && j < keys.length; ++i) {\n if (cmp(cache.keys[i], keys[j]) !== 0) continue;\n result.push(clone ? deepClone(cache.values[i]) : cache.values[i]);\n ++j;\n }\n // If got all keys caller was looking for, return result.\n return result.length === keys.length ? result : null;\n } catch {\n return null;\n }\n}\n\nexport const cacheExistingValuesMiddleware: Middleware = {\n stack: \"dbcore\",\n level: -1,\n create: (core) => {\n return {\n table: (tableName) => {\n const table = core.table(tableName);\n return {\n ...table,\n getMany: (req) => {\n if (!req.cache) {\n return table.getMany(req);\n }\n const cachedResult = getFromTransactionCache(\n req.keys,\n req.trans[\"_cache\"],\n req.cache === \"clone\"\n );\n if (cachedResult) {\n return Promise.resolve(cachedResult);\n }\n return table.getMany(req).then((res) => {\n req.trans[\"_cache\"] = {\n keys: req.keys,\n values: req.cache === \"clone\" ? deepClone(res) : res,\n };\n return res;\n });\n },\n mutate: (req) => {\n // Invalidate cache on any mutate except \"add\" which can't change existing values:\n if (req.type !== \"add\") req.trans[\"_cache\"] = null;\n return table.mutate(req);\n },\n };\n },\n };\n },\n};\n", "import { DBCore, DBCoreTable } from '../../public/types/dbcore';\nimport { LiveQueryContext } from '../live-query';\n\nexport function isCachableContext(ctx: LiveQueryContext, table: DBCoreTable) {\n return (\n ctx.trans.mode === 'readonly' &&\n !!ctx.subscr &&\n !ctx.trans.explicit &&\n ctx.trans.db._options.cache !== 'disabled' &&\n !table.schema.primaryKey.outbound\n );\n}\n\n", "import { DBCoreCountRequest, DBCoreGetManyRequest, DBCoreGetRequest, DBCoreOpenCursorRequest, DBCoreQueryRequest } from '../../public/types/dbcore';\n\n\nexport function isCachableRequest(type: string, req: Partial) {\n switch (type) {\n case 'query':\n return req.values && !req.unique;\n case 'get':\n return false;\n case 'getMany':\n return false;\n case 'count':\n return false;\n case 'openCursor':\n return false;\n }\n}\n", "import { LiveQueryContext } from \".\";\nimport { getFromTransactionCache } from \"../dbcore/cache-existing-values-middleware\";\nimport { getEffectiveKeys } from \"../dbcore/get-effective-keys\";\nimport { exceptions } from \"../errors\";\nimport { cmp } from \"../functions/cmp\";\nimport { isArray, keys } from \"../functions/utils\";\nimport { PSD } from \"../helpers/promise\";\nimport { RangeSet } from \"../helpers/rangeset\";\nimport { ObservabilitySet } from \"../public/types/db-events\";\nimport {\n DBCore,\n DBCoreCountRequest,\n DBCoreCursor,\n DBCoreGetManyRequest,\n DBCoreGetRequest,\n DBCoreIndex,\n DBCoreOpenCursorRequest,\n DBCoreQueryRequest,\n DBCoreQueryResponse,\n DBCoreTable,\n DBCoreTableSchema,\n DBCoreTransaction,\n} from \"../public/types/dbcore\";\nimport { Middleware } from \"../public/types/middleware\";\nimport { isCachableContext } from \"./cache/is-cachable-context\";\nimport { isCachableRequest } from \"./cache/is-cachable-request\";\nimport { extendObservabilitySet } from \"./extend-observability-set\";\n\nexport const observabilityMiddleware: Middleware = {\n stack: \"dbcore\",\n level: 0,\n name: \"Observability\",\n create: (core) => {\n const dbName = core.schema.name;\n const FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);\n\n return {\n ...core,\n transaction: (stores, mode, options) => {\n if (PSD.subscr && mode !== 'readonly') {\n throw new exceptions.ReadOnly(`Readwrite transaction in liveQuery context. Querier source: ${(PSD as LiveQueryContext).querier}`);\n }\n return core.transaction(stores, mode, options);\n },\n table: (tableName) => {\n const table = core.table(tableName);\n const { schema } = table;\n const { primaryKey, indexes } = schema;\n const { extractKey, outbound } = primaryKey;\n const indexesWithAutoIncPK = primaryKey.autoIncrement && indexes.filter(\n (index) => index.compound && (index.keyPath as string[]).includes(primaryKey.keyPath as string)\n );\n const tableClone: DBCoreTable = {\n ...table,\n mutate: (req) => {\n const trans = req.trans as DBCoreTransaction & {\n mutatedParts?: ObservabilitySet;\n };\n const mutatedParts = req.mutatedParts || (req.mutatedParts = {});\n const getRangeSet = (indexName: string) => {\n const part = `idb://${dbName}/${tableName}/${indexName}`;\n return (mutatedParts[part] ||\n (mutatedParts[part] = new RangeSet())) as RangeSet;\n };\n const pkRangeSet = getRangeSet(\"\");\n const delsRangeSet = getRangeSet(\":dels\");\n\n const { type } = req;\n let [keys, newObjs] =\n req.type === \"deleteRange\"\n ? [req.range] // keys will be an DBCoreKeyRange object - transformed later on to a [from,to]-style range.\n : req.type === \"delete\"\n ? [req.keys] // keys known already here. newObjs will be undefined.\n : req.values.length < 50\n ? [getEffectiveKeys(primaryKey, req).filter(id => id), req.values] // keys except autoIncremented - they will be added later on.\n : []; // keys and newObjs will both be undefined - changeSpec will become true (changed for entire table)\n\n const oldCache = req.trans[\"_cache\"];\n\n // Add the mutated table and optionally keys to the mutatedTables set on the transaction.\n // Used by subscribers to txcommit event and for Collection.prototype.subscribe().\n if (isArray(keys)) {\n // keys is an array - delete, add or put of less than 50 rows.\n // Individual keys (add put or delete)\n pkRangeSet.addKeys(keys);\n // Only get oldObjs if they have been cached recently\n // (This applies to Collection.modify() only, but also if updating/deleting hooks have subscribers)\n const oldObjs = type === 'delete' || keys.length === newObjs.length ? getFromTransactionCache(keys, oldCache) : null;\n\n // Supply detailed values per index for both old and new objects:\n if (!oldObjs) {\n // add, delete or put and we don't know old values.\n // Indicate this in the \":dels\" part, for the sake of count() and primaryKeys() queries only!\n delsRangeSet.addKeys(keys);\n }\n if (oldObjs || newObjs) {\n // No matter if knowning oldObjs or not, track the indices if it's a put, add or delete.\n trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);\n }\n } else if (keys) {\n // keys is a DBCoreKeyRange object. Transform it to [from,to]-style range.\n // As we can't know deleted index ranges, mark index-based subscriptions must trigger.\n // (above/below-style ranges are not supported in RangeSet.ts, so we must replace open ends\n // with core.MIN_KEY and core.MAX_KEY respectively. This is what solves issue #2067!\n const range = {\n from: keys.lower ?? core.MIN_KEY,\n to: keys.upper ?? core.MAX_KEY\n };\n delsRangeSet.add(range);\n // deleteRange. keys is a DBCoreKeyRange objects. Transform it to [from,to]-style range.\n pkRangeSet.add(range);\n } else {\n // Too many requests to record the details without slowing down write performance.\n // Let's just record a generic large range on primary key, the virtual :dels index and\n // all secondary indices:\n pkRangeSet.add(FULL_RANGE);\n delsRangeSet.add(FULL_RANGE);\n schema.indexes.forEach(idx => getRangeSet(idx.name).add(FULL_RANGE));\n }\n\n return table.mutate(req).then((res) => {\n // Merge the mutated parts from the request into the transaction's mutatedParts\n // now when the request went fine.\n if (keys && (req.type === 'add' || req.type === 'put')) {\n // Less than 50 requests (keys truthy) (otherwise we've added full range anyway)\n // autoincrement means we might not have got all keys until now\n pkRangeSet.addKeys(res.results);\n if (indexesWithAutoIncPK) {\n // Dexie Issue 1946:\n // If an auto-incremented primary key is part of a compound index,\n // we need to compute the resulting value of that index after inserting\n // the rows.\n indexesWithAutoIncPK.forEach(idx => {\n // Extract values of this compound index where primary key is not yet set:\n const idxVals = req.values.map(v => idx.extractKey(v));\n // Find the position of the primary key in the index:\n const pkPos = (idx.keyPath as string[]).findIndex(prop => prop === primaryKey.keyPath);\n // Update idxVals with the resulting primary keys to complete the index value:\n for (let i = 0, len = res.results!.length; i < len; ++i) {\n idxVals[i][pkPos] = res.results![i];\n }\n // Add the updated index to the rangeset:\n getRangeSet(idx.name).addKeys(idxVals);\n });\n }\n }\n trans.mutatedParts = extendObservabilitySet (\n trans.mutatedParts || {},\n mutatedParts\n );\n return res;\n });\n },\n };\n\n const getRange: (req: any) => [DBCoreIndex, RangeSet] = ({\n query: { index, range },\n }:\n | DBCoreQueryRequest\n | DBCoreCountRequest\n | DBCoreOpenCursorRequest) => [\n index,\n new RangeSet(range.lower ?? core.MIN_KEY, range.upper ?? core.MAX_KEY),\n ];\n\n const readSubscribers: {[method in\n Exclude]: \n (req: any) => [DBCoreIndex, RangeSet]\n } = {\n get: (req) => [primaryKey, new RangeSet(req.key)],\n getMany: (req) => [primaryKey, new RangeSet().addKeys(req.keys)],\n count: getRange,\n query: getRange,\n openCursor: getRange,\n }\n\n keys(readSubscribers).forEach((method: 'get' | 'getMany' | 'count' | 'query' | 'openCursor') => {\n tableClone[method] = function (\n req:\n | DBCoreGetRequest\n | DBCoreGetManyRequest\n | DBCoreQueryRequest\n | DBCoreCountRequest\n | DBCoreOpenCursorRequest\n ) {\n const { subscr } = PSD as LiveQueryContext;\n const isLiveQuery = !!subscr;\n let cachable = isCachableContext(PSD as LiveQueryContext, table) && isCachableRequest(method, req);\n const obsSet = cachable\n ? req.obsSet = {} // Implicit read transaction - track changes for this query only for the request's duration\n : subscr; // Explicit read transaction - track changes across entire live query\n\n if (isLiveQuery) {\n // Current zone want's to track all queries so they can be subscribed to.\n // (The query is executed within a \"liveQuery\" zone)\n // Check whether the query applies to a certain set of ranges:\n // Track what we should be observing:\n const getRangeSet = (indexName: string) => {\n const part = `idb://${dbName}/${tableName}/${indexName}`;\n return (obsSet[part] ||\n (obsSet[part] = new RangeSet())) as RangeSet;\n };\n const pkRangeSet = getRangeSet(\"\");\n const delsRangeSet = getRangeSet(\":dels\");\n const [queriedIndex, queriedRanges] = readSubscribers[method](req);\n // A generic rule here: queried ranges should always be subscribed to.\n if (method === 'query' && queriedIndex.isPrimaryKey && !(req as DBCoreQueryRequest).values) {\n // A pure primay-key based Collection where only .primaryKeys() is requested. Don't wakeup on other changes than added or deleted primary keys within queried range.\n delsRangeSet.add(queriedRanges);\n } else {\n getRangeSet(queriedIndex.name || \"\").add(queriedRanges);\n }\n if (!queriedIndex.isPrimaryKey) {\n // Only count(), query() and openCursor() operates on secondary indices.\n // Since put(), delete() and deleteRange() mutations may happen without knowing oldObjs,\n // the mutate() method will be missing what secondary indices that are being deleted from\n // the subscribed range. We are working around this issue by recording all the resulting\n // primary keys from the queries. This only works for those kinds of queries where we can\n // derive the primary key from the result.\n // In this block we are accomplishing this using various strategies depending on the properties\n // of the query result.\n\n if (method === \"count\") {\n // We've got a problem! Delete and put mutations happen without known the oldObjs.\n // Those mutation could change the count.\n // Solution: Dedicated \":dels\" url represends a subscription to all mutations without oldObjs\n // (specially triggered in the mutators put(), delete() and deleteRange() when they don't know oldObject)\n delsRangeSet.add(FULL_RANGE);\n } else {\n // openCursor() or query()\n\n // Prepare a keysPromise in case the we're doing an IDBIndex.getAll() on a store with outbound keys.\n const keysPromise =\n method === \"query\" &&\n outbound &&\n (req as DBCoreQueryRequest).values &&\n table.query({\n ...(req as DBCoreQueryRequest),\n values: false,\n });\n\n return table[method].apply(this, arguments).then((res) => {\n if (method === \"query\") {\n if (outbound && (req as DBCoreQueryRequest).values) {\n // If keys are outbound, we can't use extractKey to map what keys to observe.\n // We've queried an index (like 'dateTime') on an outbound table\n // and retrieve a list of objects\n // from who we cannot know their primary keys.\n // \"Luckily\" though, we've prepared the keysPromise to assist us in exact this condition.\n return keysPromise.then(\n ({ result: resultingKeys }: DBCoreQueryResponse) => {\n pkRangeSet.addKeys(resultingKeys);\n return res;\n }\n );\n }\n // query() inbound values, keys or outbound keys. Secondary indexes only since\n // for primary keys we would only add results within the already registered range.\n const pKeys = (req as DBCoreQueryRequest).values\n ? (res as DBCoreQueryResponse).result.map(extractKey)\n : (res as DBCoreQueryResponse).result;\n if ((req as DBCoreQueryRequest).values) {\n // Subscribe to any mutation made on the returned keys,\n // so that we detect both deletions and updated properties.\n pkRangeSet.addKeys(pKeys);\n } else {\n // Subscribe only to mutations on the returned keys\n // in case the mutator was unable to know oldObjs.\n // If it has oldObj, the mutator won't put anything in \":dels\" because\n // it can more fine-grained put the exact removed and added index value in the correct\n // index range that we subscribe to in the queried range sets.\n // We don't load values so a change on a property outside our index will not\n // require us to re-execute the query.\n delsRangeSet.addKeys(pKeys);\n }\n } else if (method === \"openCursor\") {\n // Caller requests a cursor.\n // For the same reason as when method===\"query\", we only need to observe\n // those keys whose values are possibly used or rendered - which could\n // only happen on keys where they get the cursor's key, primaryKey or value.\n const cursor: DBCoreCursor | null = res;\n const wantValues = (req as DBCoreOpenCursorRequest).values;\n return (\n cursor &&\n Object.create(cursor, {\n key: {\n get() {\n delsRangeSet.addKey(cursor.primaryKey);\n return cursor.key;\n },\n },\n primaryKey: {\n get() {\n const pkey = cursor.primaryKey;\n delsRangeSet.addKey(pkey);\n return pkey;\n },\n },\n value: {\n get() {\n wantValues && pkRangeSet.addKey(cursor.primaryKey);\n return cursor.value;\n },\n },\n })\n );\n }\n return res;\n });\n }\n }\n }\n return table[method].apply(this, arguments);\n };\n });\n return tableClone;\n },\n };\n },\n};\n\nfunction trackAffectedIndexes(\n getRangeSet: (index: string) => RangeSet,\n schema: DBCoreTableSchema,\n oldObjs: readonly any[] | undefined,\n newObjs: readonly any[] | undefined\n) {\n function addAffectedIndex(ix: DBCoreIndex) {\n const rangeSet = getRangeSet(ix.name || \"\");\n function extractKey(obj: any) {\n return obj != null ? ix.extractKey(obj) : null;\n }\n const addKeyOrKeys = (key: any) => ix.multiEntry && isArray(key)\n // multiEntry and the old property was an array - add each array entry to the rangeSet:\n ? key.forEach(key => rangeSet.addKey(key))\n // Not multiEntry or the old property was not an array - add each array entry to the rangeSet:\n : rangeSet.addKey(key);\n\n (oldObjs || newObjs).forEach((_, i) => {\n const oldKey = oldObjs && extractKey(oldObjs[i]);\n const newKey = newObjs && extractKey(newObjs[i]);\n if (cmp(oldKey, newKey) !== 0) {\n // The index has changed. Add both old and new value of the index.\n if (oldKey != null) addKeyOrKeys(oldKey); // If oldKey is invalid key, addKey() will be a noop.\n if (newKey != null) addKeyOrKeys(newKey); // If newKey is invalid key, addKey() will be a noop.\n }\n });\n }\n schema.indexes.forEach(addAffectedIndex);\n}\n", "import { delArrayItem, isArray } from '../../functions/utils';\nimport { TblQueryCache } from '../../public/types/cache';\nimport {\n DBCoreMutateRequest,\n DBCoreMutateResponse,\n} from '../../public/types/dbcore';\n\nexport function adjustOptimisticFromFailures(\n tblCache: TblQueryCache,\n req: DBCoreMutateRequest,\n res: DBCoreMutateResponse\n): DBCoreMutateRequest {\n if (res.numFailures === 0) return req;\n if (req.type === 'deleteRange') {\n // numFailures > 0 means the deleteRange operation failed in its whole.\n return null;\n }\n\n const numBulkOps = req.keys\n ? req.keys.length\n : 'values' in req && req.values\n ? req.values.length\n : 1;\n if (res.numFailures === numBulkOps) {\n // Same number of failures as the number of ops. This means that all ops failed.\n return null;\n }\n\n const clone: DBCoreMutateRequest = { ...req };\n\n if (isArray(clone.keys)) {\n clone.keys = clone.keys.filter((_, i) => !(i in res.failures));\n }\n if ('values' in clone && isArray(clone.values)) {\n clone.values = clone.values.filter((_, i) => !(i in res.failures));\n }\n return clone;\n}\n", "import { cmp } from '../../functions/cmp';\nimport { IndexableType } from '../../public';\nimport { DBCoreKeyRange } from '../../public/types/dbcore';\n\nexport function isAboveLower(key: IndexableType, range: DBCoreKeyRange) {\n return range.lower === undefined\n ? true // lower is less than anything because it is undefined\n : range.lowerOpen\n ? cmp(key, range.lower) > 0 // lowerOpen: Exclude lower bound\n : cmp(key, range.lower) >= 0; // !lowerOpen: Include lower bound\n}\n\nexport function isBelowUpper(key: IndexableType, range: DBCoreKeyRange) {\n return range.upper === undefined\n ? true // upper is greater than anything because it is undefined\n : range.upperOpen\n ? cmp(key, range.upper) < 0 // upperOpen: Exclude upper bound\n : cmp(key, range.upper) <= 0; // !upperOpen: Include upper bound\n}\n\nexport function isWithinRange(key: IndexableType, range: DBCoreKeyRange) {\n return isAboveLower(key, range) && isBelowUpper(key, range);\n}\n", "import { cmp } from '../../functions/cmp';\nimport { isArray } from '../../functions/utils';\nimport { RangeSet } from '../../helpers/rangeset';\nimport { CacheEntry } from '../../public/types/cache';\nimport {\n DBCoreMutateRequest,\n DBCoreQueryRequest,\n DBCoreTable,\n} from '../../public/types/dbcore';\nimport { isWithinRange } from './is-within-range';\n\nexport function applyOptimisticOps(\n result: any[],\n req: DBCoreQueryRequest,\n ops: DBCoreMutateRequest[] | undefined,\n table: DBCoreTable,\n cacheEntry: CacheEntry,\n immutable: boolean\n): any[] {\n if (!ops || ops.length === 0) return result;\n const index = req.query.index;\n const { multiEntry } = index;\n const queryRange = req.query.range;\n const primaryKey = table.schema.primaryKey;\n const extractPrimKey = primaryKey.extractKey!;\n const extractIndex = index.extractKey!;\n const extractLowLevelIndex = (index.lowLevelIndex || index).extractKey!;\n\n let finalResult = ops.reduce((result, op) => {\n let modifedResult = result;\n const includedValues: any[] = [];\n if (op.type === 'add' || op.type === 'put') {\n const includedPKs = new RangeSet(); // For ignoring duplicates\n for (let i = op.values.length - 1; i >= 0; --i) {\n // backwards to prioritize last value of same PK\n const value = op.values[i];\n const pk = extractPrimKey(value);\n if (includedPKs.hasKey(pk)) continue;\n const key = extractIndex(value);\n if (\n multiEntry && isArray(key)\n ? key.some((k) => isWithinRange(k, queryRange))\n : isWithinRange(key, queryRange)\n ) {\n includedPKs.addKey(pk);\n includedValues.push(value);\n }\n }\n }\n switch (op.type) {\n case 'add': {\n const existingKeys = new RangeSet().addKeys(\n req.values ? result.map((v) => extractPrimKey(v)) : result\n );\n\n modifedResult = result.concat(\n req.values\n ? includedValues.filter((v) => {\n const key = extractPrimKey(v);\n if (existingKeys.hasKey(key)) return false;\n existingKeys.addKey(key);\n return true;\n })\n : includedValues\n .map((v) => extractPrimKey(v))\n .filter((k) => {\n if (existingKeys.hasKey(k)) return false;\n existingKeys.addKey(k);\n return true;\n })\n );\n break;\n }\n case 'put': {\n const keySet = new RangeSet().addKeys(\n op.values.map((v) => extractPrimKey(v))\n );\n modifedResult = result\n .filter(\n // Remove all items that are being replaced\n (item) => !keySet.hasKey(req.values ? extractPrimKey(item) : item)\n )\n .concat(\n // Add all items that are being put (sorting will be done later)\n req.values\n ? includedValues\n : includedValues.map((v) => extractPrimKey(v))\n );\n break;\n }\n case 'delete':\n const keysToDelete = new RangeSet().addKeys(op.keys);\n modifedResult = result.filter(\n (item) =>\n !keysToDelete.hasKey(req.values ? extractPrimKey(item) : item)\n );\n\n break;\n case 'deleteRange':\n const range = op.range;\n modifedResult = result.filter(\n (item) => !isWithinRange(extractPrimKey(item), range)\n );\n break;\n }\n return modifedResult;\n }, result);\n\n // If no changes were made, we can return the original result.\n if (finalResult === result) return result;\n\n // Sort the result on sortIndex:\n finalResult.sort((a, b) =>\n cmp(extractLowLevelIndex(a), extractLowLevelIndex(b)) ||\n cmp(extractPrimKey(a), extractPrimKey(b))\n );\n\n // If we have a limit we need to respect it:\n if (req.limit && req.limit < Infinity) {\n if (finalResult.length > req.limit) {\n finalResult.length = req.limit; // Cut of any extras after sorting correctly.\n } else if (result.length === req.limit && finalResult.length < req.limit) {\n // We're missing some items because of the limit. We need to add them back.\n // The easiest way is to mark the cache entry as dirty, which will cause\n // it to be requeried after the write-transaction successfully completes.\n cacheEntry.dirty = true;\n }\n }\n return immutable ? Object.freeze(finalResult) as any[] : finalResult;\n}\n", "import { cmp } from '../../functions/cmp';\nimport { DBCoreKeyRange } from '../../public/types/dbcore';\n\nexport function areRangesEqual(r1: DBCoreKeyRange, r2: DBCoreKeyRange) {\n return (\n cmp(r1.lower, r2.lower) === 0 &&\n cmp(r1.upper, r2.upper) === 0 &&\n !!r1.lowerOpen === !!r2.lowerOpen &&\n !!r1.upperOpen === !!r2.upperOpen\n );\n}\n", "import { cmp } from '../../functions/cmp';\nimport { DBCoreKeyRange } from '../../public/types/dbcore';\n\nexport function compareLowers(lower1: any, lower2: any, lowerOpen1: boolean, lowerOpen2: boolean) {\n if (lower1 === undefined) return lower2 !== undefined ? -1 : 0;\n if (lower2 === undefined) return 1; // since lower1 !== undefined\n const c = cmp(lower1, lower2);\n if (c === 0) {\n if (lowerOpen1 && lowerOpen2) return 0;\n if (lowerOpen1) return 1\n if (lowerOpen2) return -1;\n }\n return c;\n}\n\nexport function compareUppers(upper1: any, upper2: any, upperOpen1: boolean, upperOpen2: boolean) {\n if (upper1 === undefined) return upper2 !== undefined ? 1 : 0;\n if (upper2 === undefined) return -1; // since upper1 !== undefined\n const c = cmp(upper1, upper2);\n if (c === 0) {\n if (upperOpen1 && upperOpen2) return 0;\n if (upperOpen1) return -1\n if (upperOpen2) return 1;\n }\n return c;\n}\n\nexport function isSuperRange(r1: DBCoreKeyRange, r2: DBCoreKeyRange) {\n return (\n compareLowers(r1.lower, r2.lower, r1.lowerOpen, r2.lowerOpen) <= 0 &&\n compareUppers(r1.upper, r2.upper, r1.upperOpen, r2.upperOpen) >= 0\n );\n}", "import { CacheEntry, TblQueryCache } from '../../public/types/cache';\nimport {\n DBCoreCountRequest,\n DBCoreQueryRequest,\n} from '../../public/types/dbcore';\nimport { areRangesEqual } from './are-ranges-equal';\nimport { cache } from './cache';\nimport { isSuperRange } from './is-super-range';\n\nexport function findCompatibleQuery(\n dbName: string,\n tableName: string,\n type: 'query',\n req: DBCoreQueryRequest\n): [] | [CacheEntry, boolean, TblQueryCache, CacheEntry[]];\nexport function findCompatibleQuery(\n dbName: string,\n tableName: string,\n type: 'count',\n req: DBCoreCountRequest\n): [] | [CacheEntry, boolean, TblQueryCache, CacheEntry[]];\nexport function findCompatibleQuery(\n dbName: string,\n tableName: string,\n type: 'query' | 'count',\n req: Partial & Partial\n): [] | [CacheEntry, boolean, TblQueryCache, CacheEntry[]] {\n const tblCache = cache[`idb://${dbName}/${tableName}`];\n if (!tblCache) return [];\n const queries = tblCache.queries[type];\n if (!queries) return [null, false, tblCache, null];\n const indexName = req.query ? req.query.index.name : null;\n const entries = queries[indexName || ''];\n if (!entries) return [null, false, tblCache, null];\n\n switch (type) {\n case 'query':\n const equalEntry = entries.find(\n (entry) =>\n (entry.req as DBCoreQueryRequest).limit === req.limit &&\n (entry.req as DBCoreQueryRequest).values === req.values &&\n areRangesEqual(entry.req.query.range, req.query.range)\n );\n if (equalEntry)\n return [\n equalEntry,\n true, // exact match\n tblCache,\n entries,\n ];\n const superEntry = entries.find((entry) => {\n const limit = 'limit' in entry.req ? entry.req.limit : Infinity;\n return (\n limit >= req.limit &&\n (req.values ? (entry.req as DBCoreQueryRequest).values : true) &&\n isSuperRange(entry.req.query.range, req.query.range)\n );\n });\n return [superEntry, false, tblCache, entries];\n case 'count':\n const countQuery = entries.find((entry) =>\n areRangesEqual(entry.req.query.range, req.query.range)\n );\n return [countQuery, !!countQuery, tblCache, entries];\n }\n}\n", "import { delArrayItem } from \"../../functions/utils\";\nimport { CacheEntry } from \"../../public/types/cache\";\n\nexport function subscribeToCacheEntry(cacheEntry: CacheEntry, container: CacheEntry[], requery: ()=>void, signal: AbortSignal) {\n cacheEntry.subscribers.add(requery);\n signal.addEventListener(\"abort\", () => {\n cacheEntry.subscribers.delete(requery);\n if (cacheEntry.subscribers.size === 0) {\n enqueForDeletion(cacheEntry, container);\n }\n });\n}\n\n\nfunction enqueForDeletion(cacheEntry: CacheEntry, container: CacheEntry[]) {\n setTimeout(() => {\n if (cacheEntry.subscribers.size === 0) { // Still empty (no new subscribers readded after grace time)\n delArrayItem(container, cacheEntry);\n }\n }, 3000);\n}\n", "import { LiveQueryContext } from '..';\nimport type { Transaction } from '../../classes/transaction';\nimport { getEffectiveKeys } from '../../dbcore/get-effective-keys';\nimport { deepClone, delArrayItem, setByKeyPath } from '../../functions/utils';\nimport DexiePromise, { PSD } from '../../helpers/promise';\nimport { ObservabilitySet } from '../../public/types/db-events';\nimport {\n DBCore, DBCoreMutateRequest, DBCoreMutateResponse, DBCoreQueryRequest,\n DBCoreQueryResponse\n} from '../../public/types/dbcore';\nimport { Middleware } from '../../public/types/middleware';\nimport { obsSetsOverlap } from '../obs-sets-overlap';\nimport { adjustOptimisticFromFailures } from './adjust-optimistic-request-from-failures';\nimport { applyOptimisticOps } from './apply-optimistic-ops';\nimport { cache } from './cache';\nimport { findCompatibleQuery } from './find-compatible-query';\nimport { isCachableContext } from './is-cachable-context';\nimport { isCachableRequest } from './is-cachable-request';\nimport { signalSubscribersLazily } from './signalSubscribers';\nimport { subscribeToCacheEntry } from './subscribe-cachentry';\n\nexport const cacheMiddleware: Middleware = {\n stack: 'dbcore',\n level: 0,\n name: 'Cache',\n create: (core) => {\n const dbName = core.schema.name;\n const coreMW: DBCore = {\n ...core,\n transaction: (stores, mode, options) => {\n const idbtrans = core.transaction(\n stores,\n mode,\n options\n ) as IDBTransaction & {\n mutatedParts?: ObservabilitySet;\n _explicit?: boolean;\n };\n // Maintain TblQueryCache.ops array when transactions commit or abort\n if (mode === 'readwrite') {\n const ac = new AbortController();\n const { signal } = ac;\n const endTransaction = (wasCommitted: boolean) => () => {\n ac.abort();\n if (mode === 'readwrite') {\n // Collect which subscribers to notify:\n const affectedSubscribers = new Set<()=>void>();\n\n // Go through all tables in transaction and check if they have any optimistic updates\n for (const storeName of stores) {\n const tblCache = cache[`idb://${dbName}/${storeName}`];\n if (tblCache) {\n const table = core.table(storeName);\n // Pick optimistic ops that are part of this transaction\n const ops = tblCache.optimisticOps.filter(\n (op) => op.trans === idbtrans\n );\n // Transaction was marked as _explicit in enterTransactionScope(), transaction-helpers.ts.\n if (idbtrans._explicit && wasCommitted && idbtrans.mutatedParts) {\n // Invalidate all queries that overlap with the mutated parts and signal their subscribers\n for (const entries of Object.values(\n tblCache.queries.query\n )) {\n for (const entry of entries.slice()) {\n if (obsSetsOverlap(entry.obsSet, idbtrans.mutatedParts)) {\n delArrayItem(entries, entry); // Remove the entry from the cache so it can be refreshed\n entry.subscribers.forEach((requery) => affectedSubscribers.add(requery));\n }\n }\n }\n } else if (ops.length > 0) {\n // Remove them from the optimisticOps array\n tblCache.optimisticOps = tblCache.optimisticOps.filter(\n (op) => op.trans !== idbtrans\n );\n // Commit or abort the optimistic updates\n for (const entries of Object.values(\n tblCache.queries.query\n )) {\n for (const entry of entries.slice()) {\n if (\n entry.res != null && // if entry.promise but not entry.res, we're fine. Query will resume now and get the result.\n idbtrans.mutatedParts/* &&\n obsSetsOverlap(entry.obsSet, idbtrans.mutatedParts)*/\n ) {\n if (wasCommitted && !entry.dirty) {\n const freezeResults = Object.isFrozen(entry.res);\n const modRes = applyOptimisticOps(\n entry.res as any[],\n entry.req,\n ops,\n table,\n entry,\n freezeResults\n );\n if (entry.dirty) {\n // Found out at this point that the entry is dirty - not to rely on!\n delArrayItem(entries, entry);\n entry.subscribers.forEach((requery) => affectedSubscribers.add(requery));\n } else if (modRes !== entry.res) {\n entry.res = modRes;\n // Update promise\n entry.promise = DexiePromise.resolve({result: modRes} satisfies DBCoreQueryResponse);\n \n // No need to notify subscribers. They already have this value.\n // We have just updated the value of the cache without having to\n // requery the database - because we know the result for this\n // query based on computing the operations and applying them\n // to the previous result.\n }\n } else {\n if (entry.dirty) {\n // If the entry is dirty we need to get rid of it so that\n // a new entry will be created when the query is run again.\n delArrayItem(entries, entry);\n }\n // If we're not committing, we need to notify subscribers that the\n // optimistic updates are no longer valid.\n entry.subscribers.forEach((requery) => affectedSubscribers.add(requery));\n }\n }\n }\n }\n }\n }\n }\n affectedSubscribers.forEach((requery) => requery());\n }\n };\n idbtrans.addEventListener('abort', endTransaction(false), {\n signal,\n });\n idbtrans.addEventListener('error', endTransaction(false), {\n signal,\n });\n idbtrans.addEventListener('complete', endTransaction(true), {\n signal,\n });\n }\n return idbtrans;\n },\n table(tableName: string) {\n const downTable = core.table(tableName);\n const primKey = downTable.schema.primaryKey;\n const tableMW = {\n ...downTable,\n mutate(req: DBCoreMutateRequest): Promise {\n const trans = PSD.trans as Transaction;\n if (\n primKey.outbound || // Non-inbound tables are harded to apply optimistic updates on because we can't know primary key of results\n trans.db._options.cache === 'disabled' || // User has opted-out from caching\n trans.explicit || // It's an explicit write transaction being made. Don't affect cache until transaction commits.\n trans.idbtrans.mode !== 'readwrite' // We only handle 'readwrite' in our transaction override. 'versionchange' transactions don't use cache (from populate or upgraders).\n ) {\n // Just forward the request to the core.\n return downTable.mutate(req);\n }\n // Find the TblQueryCache for this table:\n const tblCache = cache[`idb://${dbName}/${tableName}`];\n if (!tblCache) return downTable.mutate(req);\n\n const promise = downTable.mutate(req);\n if ((req.type === 'add' || req.type === 'put') && (req.values.length >= 50 || getEffectiveKeys(primKey, req).some(key => key == null))) {\n // There are some autoIncremented keys not set yet. Need to wait for completion before we can reliably enqueue the operation.\n // (or there are too many objects so we lazy out to avoid performance bottleneck for large bulk inserts)\n promise.then((res) => { // We need to extract result keys and generate cloned values with the keys set (so that applyOptimisticOps can work)\n // But we have a problem! The req.mutatedParts is still not complete so we have to actively add the keys to the unsignaledParts set manually.\n const reqWithResolvedKeys = {\n ...req,\n values: req.values.map((value, i) => {\n if (res.failures[i]) return value; // No need to rewrite a failing value\n const valueWithKey = primKey.keyPath?.includes('.')\n ? deepClone(value)\n : {\n ...value,\n };\n setByKeyPath(valueWithKey, primKey.keyPath, res.results![i]);\n return valueWithKey;\n })\n };\n const adjustedReq = adjustOptimisticFromFailures(tblCache, reqWithResolvedKeys, res);\n tblCache.optimisticOps.push(adjustedReq);\n // Signal subscribers after the observability middleware has complemented req.mutatedParts with the new keys.\n // We must queue the task so that we get the req.mutatedParts updated by observability middleware first.\n // If we refactor the dependency between observability middleware and this middleware we might not need to queue the task.\n queueMicrotask(()=>req.mutatedParts && signalSubscribersLazily(req.mutatedParts)); // Reason for double laziness: in user awaits put and then does another put, signal once.\n });\n } else {\n // Enque the operation immediately\n tblCache.optimisticOps.push(req);\n // Signal subscribers that there are mutated parts\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n promise.then((res) => {\n if (res.numFailures > 0) {\n // In case the operation failed, we need to remove it from the optimisticOps array.\n delArrayItem(tblCache.optimisticOps, req);\n const adjustedReq = adjustOptimisticFromFailures(tblCache, req, res);\n if (adjustedReq) {\n tblCache.optimisticOps.push(adjustedReq);\n }\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts); // Signal the rolling back of the operation.\n }\n });\n promise.catch(()=> {\n // In case the operation failed, we need to remove it from the optimisticOps array.\n delArrayItem(tblCache.optimisticOps, req);\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts); // Signal the rolling back of the operation.\n });\n }\n return promise;\n },\n query(req: DBCoreQueryRequest): Promise {\n if (!isCachableContext(PSD, downTable) || !isCachableRequest(\"query\", req)) return downTable.query(req);\n const freezeResults =\n (PSD as LiveQueryContext).trans?.db._options.cache === 'immutable';\n const { requery, signal } = PSD as LiveQueryContext;\n let [cacheEntry, exactMatch, tblCache, container] =\n findCompatibleQuery(dbName, tableName, 'query', req);\n if (cacheEntry && exactMatch) {\n cacheEntry.obsSet = req.obsSet!; // So that optimistic result is monitored.\n // How? - because observability-middleware will track result where optimistic\n // mutations are applied and record it in the cacheEntry.\n // TODO: CHANGE THIS! The difference is resultKeys only.\n // Wanted behavior:\n // * cacheEntry obsSet should represent the obsSet without optimistic updates (so it can be checked when merging ops in tx commit)\n // * cacheEntry optimisticObsSet should represent the obsSet with current optimistic updates. It should be updated when adding an op\n // by adding the primary keys of the put/add/delete operation to the set.\n // * observability-middleware should stop recording req.obsSet when a cache entry exact match is found because it won't be used anyway.\n // I'm thinking of merging observability-middleware with cache-middleware into one single middleware because the dependencies are too\n // tight between them.\n } else {\n // --> TODO here: If not exact match, check if we have a superset to extract\n // the data from.\n\n // No cached result found. We need to query the database and cache the result.\n const promise = downTable.query(req).then((res) => {\n // Freeze or clone results\n const result = res.result;\n if (cacheEntry) cacheEntry.res = result;\n if (freezeResults) {\n // For performance reasons don't deep freeze.\n // Only freeze the top-level array and its items.\n // This is good enough to teach users that the result must be treated as immutable\n // without enforcing it recursively on the entire result (which is not even possible\n // for things like Date objects and typed arrays)\n for (let i = 0, l = result.length; i < l; ++i) {\n Object.freeze(result[i]);\n }\n Object.freeze(result);\n } else {\n // If not frozen, we need to clone the result to avoid user mutating the cache\n // When we do this, user's must feel conformable with the fact that the result\n // can be mutated deeply - user is not expected to have any respect for immutability.\n res.result = deepClone(result);\n }\n return res;\n }).catch(error => {\n // In case the query operation failed, we need to remove it from the cache\n // so that subsequent calls does not get the same error but re-evaluate\n // the query.\n if (container && cacheEntry) delArrayItem(container, cacheEntry);\n return Promise.reject(error);\n });\n cacheEntry = {\n obsSet: req.obsSet!,\n promise,\n subscribers: new Set(),\n type: 'query',\n req,\n dirty: false,\n };\n if (container) {\n container.push(cacheEntry);\n } else {\n container = [cacheEntry];\n if (!tblCache) {\n tblCache = cache[`idb://${dbName}/${tableName}`] = {\n queries: {\n query: {},\n count: {},\n },\n objs: new Map(),\n optimisticOps: [],\n unsignaledParts: {}\n };\n }\n tblCache.queries.query[req.query.index.name || ''] = container;\n }\n }\n subscribeToCacheEntry(cacheEntry, container!, requery, signal);\n return cacheEntry.promise.then((res: DBCoreQueryResponse) => {\n return {\n result: applyOptimisticOps(\n res.result,\n req,\n tblCache?.optimisticOps,\n downTable,\n cacheEntry!,\n freezeResults\n ) as any[], // readonly any[]\n };\n });\n },\n };\n return tableMW;\n },\n };\n return coreMW;\n },\n};\n\n\n", "import { type Dexie } from \"../classes/dexie\";\nimport { type Table } from \"../classes/table\";\nimport { type Transaction } from \"../classes/transaction\";\n\nexport function vipify(\n target: T,\n vipDb: Dexie\n): T {\n return new Proxy(target, {\n get (target, prop, receiver) {\n // The \"db\" prop of the table or transaction is the only one we need to\n // override. The rest of the props can be accessed from the original\n // object.\n if (prop === 'db') return vipDb;\n return Reflect.get(target, prop, receiver);\n }\n });\n}\n", "// Import types from the public API\nimport { Dexie as IDexie } from \"../../public/types/dexie\";\nimport { DexieOptions, DexieConstructor } from \"../../public/types/dexie-constructor\";\nimport { DbEvents } from \"../../public/types/db-events\";\n//import { PromiseExtended, PromiseExtendedConstructor } from '../../public/types/promise-extended';\nimport { Table as ITable } from '../../public/types/table';\nimport { TableSchema } from \"../../public/types/table-schema\";\nimport { DbSchema } from '../../public/types/db-schema';\n\n// Internal imports\nimport { Table, TableConstructor, createTableConstructor } from \"../table\";\nimport { Collection, CollectionConstructor, createCollectionConstructor } from '../collection';\nimport { WhereClause } from '../where-clause/where-clause';\nimport { WhereClauseConstructor, createWhereClauseConstructor } from '../where-clause/where-clause-constructor';\nimport { Transaction } from '../transaction';\nimport { TransactionConstructor, createTransactionConstructor } from '../transaction/transaction-constructor';\nimport { Version } from \"../version/version\";\nimport { VersionConstructor, createVersionConstructor } from '../version/version-constructor';\n\n// Other imports...\nimport { DexieEventSet } from '../../public/types/dexie-event-set';\nimport { DexieExceptionClasses } from '../../public/types/errors';\nimport { DexieDOMDependencies } from '../../public/types/dexie-dom-dependencies';\nimport { nop, promisableChain } from '../../functions/chaining-functions';\nimport Promise, { PSD, globalPSD } from '../../helpers/promise';\nimport { extend, override, keys, hasOwn } from '../../functions/utils';\nimport Events from '../../helpers/Events';\nimport { maxString, connections, READONLY, READWRITE } from '../../globals/constants';\nimport { getMaxKey } from '../../functions/quirks';\nimport { exceptions } from '../../errors';\nimport { lowerVersionFirst } from '../version/schema-helpers';\nimport { dexieOpen } from './dexie-open';\nimport { wrap } from '../../helpers/promise';\nimport { _onDatabaseDeleted } from '../../helpers/database-enumerator';\nimport { eventRejectHandler } from '../../functions/event-wrappers';\nimport { extractTransactionArgs, enterTransactionScope } from './transaction-helpers';\nimport { TransactionMode } from '../../public/types/transaction-mode';\nimport { rejection } from '../../helpers/promise';\nimport { usePSD } from '../../helpers/promise';\nimport { DBCore } from '../../public/types/dbcore';\nimport { Middleware, DexieStacks } from '../../public/types/middleware';\nimport { virtualIndexMiddleware } from '../../dbcore/virtual-index-middleware';\nimport { hooksMiddleware } from '../../hooks/hooks-middleware';\nimport { IndexableType } from '../../public';\nimport { observabilityMiddleware } from '../../live-query/observability-middleware';\nimport { cacheExistingValuesMiddleware } from '../../dbcore/cache-existing-values-middleware';\nimport { cacheMiddleware } from \"../../live-query/cache/cache-middleware\";\nimport { vipify } from \"../../helpers/vipify\";\n\nexport interface DbReadyState {\n dbOpenError: any;\n isBeingOpened: boolean;\n onReadyBeingFired: undefined | Function[];\n openComplete: boolean;\n dbReadyResolve: () => void;\n dbReadyPromise: Promise;\n cancelOpen: (reason?: Error) => void;\n openCanceller: Promise & { _stackHolder?: Error };\n autoSchema: boolean;\n vcFired?: boolean;\n PR1398_maxLoop?: number;\n autoOpen?: boolean;\n}\n\nexport class Dexie implements IDexie {\n _options: DexieOptions;\n _state: DbReadyState;\n _versions: Version[];\n _storeNames: string[];\n _deps: DexieDOMDependencies;\n _allTables: { [name: string]: Table; };\n _createTransaction: (this: Dexie, mode: IDBTransactionMode, storeNames: ArrayLike, dbschema: { [tableName: string]: TableSchema; }, parentTransaction?: Transaction) => Transaction;\n _dbSchema: { [tableName: string]: TableSchema; };\n _hasGetAll?: boolean;\n _maxKey: IndexableType;\n _fireOnBlocked: (ev: Event) => void;\n _middlewares: {[StackName in keyof DexieStacks]?: Middleware[]} = {};\n _vip?: boolean;\n _novip: Dexie;// db._novip is to escape to orig db from db.vip.\n core: DBCore;\n\n name: string;\n verno: number = 0;\n idbdb: IDBDatabase | null;\n vip: Dexie;\n on: DbEvents;\n\n Table: TableConstructor;\n WhereClause: WhereClauseConstructor;\n Collection: CollectionConstructor;\n Version: VersionConstructor;\n Transaction: TransactionConstructor;\n static disableBfCache?: boolean;\n\n constructor(name: string, options?: DexieOptions) {\n const deps = (Dexie as any as DexieConstructor).dependencies;\n this._options = options = {\n // Default Options\n addons: (Dexie as any as DexieConstructor).addons, // Pick statically registered addons by default\n autoOpen: true, // Don't require db.open() explicitely.\n // Default DOM dependency implementations from static prop.\n indexedDB: deps.indexedDB, // Backend IndexedDB api. Default to browser env.\n IDBKeyRange: deps.IDBKeyRange, // Backend IDBKeyRange api. Default to browser env.\n cache: 'cloned', // Default to cloned for backward compatibility. For best performance and least memory consumption use 'immutable'.\n ...options\n }; \n this._deps = {\n indexedDB: options.indexedDB as IDBFactory,\n IDBKeyRange: options.IDBKeyRange as typeof IDBKeyRange\n };\n const {\n addons,\n } = options;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n this._novip = this;\n const state: DbReadyState = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null as Promise,\n cancelOpen: nop,\n openCanceller: null as Promise,\n autoSchema: true,\n PR1398_maxLoop: 3,\n autoOpen: options.autoOpen,\n };\n state.dbReadyPromise = new Promise(resolve => {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new Promise((_, reject) => {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", \"close\", { ready: [promisableChain, nop] }) as DbEvents;\n this.on.ready.subscribe = override(this.on.ready.subscribe, subscribe => {\n return (subscriber, bSticky) => {\n (Dexie as any as DexieConstructor).vip(() => {\n const state = this._state;\n if (state.openComplete) {\n // Database already open. Call subscriber asap.\n if (!state.dbOpenError) Promise.resolve().then(subscriber);\n // bSticky: Also subscribe to future open sucesses (after close / reopen) \n if (bSticky) subscribe(subscriber);\n } else if (state.onReadyBeingFired) {\n // db.on('ready') subscribers are currently being executed and have not yet resolved or rejected\n state.onReadyBeingFired.push(subscriber);\n if (bSticky) subscribe(subscriber);\n } else {\n // Database not yet open. Subscribe to it.\n subscribe(subscriber);\n // If bSticky is falsy, make sure to unsubscribe subscriber when fired once.\n const db = this;\n if (!bSticky) subscribe(function unsubscribe() {\n db.on.ready.unsubscribe(subscriber);\n db.on.ready.unsubscribe(unsubscribe);\n });\n }\n });\n }\n });\n\n // Create derived classes bound to this instance of Dexie:\n this.Collection = createCollectionConstructor(this);\n this.Table = createTableConstructor(this);\n this.Transaction = createTransactionConstructor(this);\n this.Version = createVersionConstructor(this);\n this.WhereClause = createWhereClauseConstructor(this);\n\n // Default subscribers to \"versionchange\" and \"blocked\".\n // Can be overridden by custom handlers. If custom handlers return false, these default\n // behaviours will be prevented.\n this.on(\"versionchange\", ev => {\n // Default behavior for versionchange event is to close database connection.\n // Caller can override this behavior by doing db.on(\"versionchange\", function(){ return false; });\n // Let's not block the other window from making it's delete() or open() call.\n // NOTE! This event is never fired in IE,Edge or Safari.\n if (ev.newVersion > 0)\n console.warn(`Another connection wants to upgrade database '${this.name}'. Closing db now to resume the upgrade.`);\n else\n console.warn(`Another connection wants to delete database '${this.name}'. Closing db now to resume the delete request.`);\n this.close({disableAutoOpen: false});\n // In many web applications, it would be recommended to force window.reload()\n // when this event occurs. To do that, subscribe to the versionchange event\n // and call window.location.reload(true) if ev.newVersion > 0 (not a deletion)\n // The reason for this is that your current web app obviously has old schema code that needs\n // to be updated. Another window got a newer version of the app and needs to upgrade DB but\n // your window is blocking it unless we close it here.\n });\n this.on(\"blocked\", ev => {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(`Dexie.delete('${this.name}') was blocked`);\n else\n console.warn(`Upgrade '${this.name}' blocked by other connection holding version ${ev.oldVersion / 10}`);\n });\n\n this._maxKey = getMaxKey(options.IDBKeyRange as typeof IDBKeyRange);\n\n this._createTransaction = (\n mode: IDBTransactionMode,\n storeNames: string[],\n dbschema: DbSchema,\n parentTransaction?: Transaction) => new this.Transaction(mode, storeNames, dbschema, this._options.chromeTransactionDurability, parentTransaction);\n\n this._fireOnBlocked = ev => {\n this.on(\"blocked\").fire(ev);\n // Workaround (not fully*) for missing \"versionchange\" event in IE,Edge and Safari:\n connections\n .filter(c => c.name === this.name && c !== this && !c._state.vcFired)\n .map(c => c.on(\"versionchange\").fire(ev));\n }\n\n // Default middlewares:\n this.use(cacheExistingValuesMiddleware);\n this.use(cacheMiddleware);\n this.use(observabilityMiddleware);\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n\n const vipDB = new Proxy(this, {\n get: (_, prop, receiver) => {\n if (prop === '_vip') return true;\n if (prop === 'table') return (tableName: string) => vipify(this.table(tableName), vipDB);\n const rv = Reflect.get(_, prop, receiver);\n if (rv instanceof Table) return vipify(rv, vipDB);\n if (prop === 'tables') return (rv as Table[]).map(t => vipify(t, vipDB));\n if (prop === '_createTransaction') return function() {\n const tx: Transaction = (rv as typeof this._createTransaction).apply(this, arguments);\n return vipify(tx, vipDB);\n }\n return rv;\n }\n });\n this.vip = vipDB;\n\n // Call each addon:\n addons.forEach(addon => addon(this));\n }\n\n version(versionNumber: number): Version {\n if (isNaN(versionNumber) || versionNumber < 0.1) throw new exceptions.Type(`Given version is not a positive number`);\n versionNumber = Math.round(versionNumber * 10) / 10;\n if (this.idbdb || this._state.isBeingOpened)\n throw new exceptions.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, versionNumber);\n const versions = this._versions;\n var versionInstance = versions.filter(\n v => v._cfg.version === versionNumber)[0];\n if (versionInstance) return versionInstance;\n versionInstance = new this.Version(versionNumber);\n versions.push(versionInstance);\n versions.sort(lowerVersionFirst);\n versionInstance.stores({}); // Derive earlier schemas by default.\n // Disable autoschema mode, as at least one version is specified.\n this._state.autoSchema = false;\n return versionInstance;\n }\n\n _whenReady(fn: () => Promise): Promise {\n return (this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip)) ? fn() : new Promise((resolve, reject) => {\n if (this._state.openComplete) {\n // idbdb is falsy but openComplete is true. Must have been an exception durin open.\n // Don't wait for openComplete as it would lead to infinite loop.\n return reject(new exceptions.DatabaseClosed(this._state.dbOpenError));\n }\n if (!this._state.isBeingOpened) {\n if (!this._state.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n this.open().catch(nop); // Open in background. If if fails, it will be catched by the final promise anyway.\n }\n this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n }\n\n use({stack, create, level, name}: Middleware): this {\n if (name) this.unuse({stack, name}); // Be able to replace existing middleware.\n const middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({stack, create, level: level == null ? 10 : level, name});\n middlewares.sort((a, b) => a.level - b.level);\n // Todo update db.core and db.tables...core ? Or should be expect this to have effect\n // only after next open()?\n return this;\n }\n\n unuse({stack, create}: Middleware<{stack: keyof DexieStacks}>): this;\n unuse({stack, name}: {stack: keyof DexieStacks, name: string}): this;\n unuse({stack, name, create}: {stack: keyof DexieStacks, name?: string, create?: Function}) {\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(mw =>\n create ? mw.create !== create : // Given middleware has a create method. Match that exactly.\n name ? mw.name !== name : // Given middleware spec \n false);\n }\n return this;\n }\n\n open() {\n return usePSD(\n globalPSD, // Enforce global scope here since db.open() can be part of a live query or transaction scope\n () => dexieOpen(this)\n );\n }\n\n _close(): void {\n const state = this._state;\n const idx = connections.indexOf(this);\n if (idx >= 0) connections.splice(idx, 1);\n if (this.idbdb) {\n try { this.idbdb.close(); } catch (e) { }\n this.idbdb = null;\n } \n // Reset dbReadyPromise promise:\n if (!state.isBeingOpened) {\n // Only if not being opened, reset these promises.\n // Otherwise, keep them so existing promise consumers will resolve when db\n // db is reopened later on, in case closing for purpose reopening, using {disableAutoOpen: false}.\n state.dbReadyPromise = new Promise(resolve => {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new Promise((_, reject) => {\n state.cancelOpen = reject;\n });\n }\n }\n\n close({disableAutoOpen} = {disableAutoOpen: true}): void {\n const state = this._state;\n if (disableAutoOpen) {\n if (state.isBeingOpened) {\n // cancel before the call to this._close() because this._close() will recreate dbReadyPromise and openCanceller.\n state.cancelOpen(new exceptions.DatabaseClosed());\n }\n this._close();\n state.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n } else {\n this._close();\n state.autoOpen = this._options.autoOpen ||\n state.isBeingOpened; // If an open call is ongoing, that same promise will resolve when db is reopend.\n state.openComplete = false;\n state.dbOpenError = null;\n }\n }\n\n delete(closeOptions = {disableAutoOpen: true}): Promise {\n // Prevent accidentially doing db.delete(1) when intention was to do db.[table].delete(1).\n const hasInvalidArguments = arguments.length > 0 && typeof arguments[0] !== 'object'; \n const state = this._state;\n return new Promise((resolve, reject) => {\n const doDelete = () => {\n this.close(closeOptions);\n var req = this._deps.indexedDB.deleteDatabase(this.name);\n req.onsuccess = wrap(() => {\n _onDatabaseDeleted(this._deps, this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = this._fireOnBlocked;\n }\n // Prevent accidentially doing db.delete(1) when intention was to do db.[table].delete(1).\n if (hasInvalidArguments) throw new exceptions.InvalidArgument(\"Invalid closeOptions argument to db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n } else {\n doDelete();\n }\n });\n }\n\n backendDB() {\n return this.idbdb;\n }\n\n isOpen() {\n return this.idbdb !== null;\n }\n\n hasBeenClosed() {\n const dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n }\n\n hasFailed() {\n return this._state.dbOpenError !== null;\n }\n\n dynamicallyOpened() {\n return this._state.autoSchema;\n }\n\n get tables () {\n return keys(this._allTables).map(name => this._allTables[name]);\n }\n\n transaction(): Promise {\n const args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n }\n\n _transaction(mode: TransactionMode, tables: Array, scopeFunc: Function) {\n let parentTransaction = PSD.trans as Transaction | undefined;\n // Check if parent transactions is bound to this db instance, and if caller wants to reuse it\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1) parentTransaction = null;\n const onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '') as TransactionMode; // Ok. Will change arguments[0] as well but we wont touch arguments henceforth.\n let idbMode: IDBTransactionMode,\n storeNames;\n\n try {\n //\n // Get storeNames from arguments. Either through given table instances, or through given table names.\n //\n storeNames = tables.map(table => {\n var storeName = table instanceof this.Table ? table.name : table;\n if (typeof storeName !== 'string') throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n\n //\n // Resolve mode. Allow shortcuts \"r\" and \"rw\".\n //\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n\n if (parentTransaction) {\n // Basic checks\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n // Spawn new transaction instead.\n parentTransaction = null; \n }\n else throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(storeName => {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n // Spawn new transaction instead.\n parentTransaction = null; \n }\n else throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n // '?' mode should not keep using an inactive transaction.\n parentTransaction = null;\n }\n }\n } catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, (_, reject) => {reject(e);}) :\n rejection (e);\n }\n // If this is a sub-transaction, lock the parent and then launch the sub-transaction.\n const enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n // no parent transaction despite PSD.trans exists. Make sure also\n // that the zone we create is not a sub-zone of current, because\n // Promise.follow() should not wait for it if so.\n usePSD(PSD.transless, ()=>this._whenReady(enterTransaction)) :\n this._whenReady (enterTransaction));\n }\n\n table(tableName: string): Table;\n table(tableName: string): ITable;\n table(tableName: string): Table {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(`Table ${tableName} does not exist`); }\n return this._allTables[tableName];\n }\n}\n", "import {\n Observable as IObservable,\n Observer,\n Subscription,\n} from \"../../public/types/observable\";\n\nconst symbolObservable: typeof Symbol.observable =\n typeof Symbol !== \"undefined\" && \"observable\" in Symbol\n ? Symbol.observable\n : \"@@observable\" as any;\n\nexport class Observable implements IObservable {\n private _subscribe: (observer: Observer) => Subscription;\n hasValue?: ()=>boolean;\n getValue?: ()=>T;\n\n constructor(subscribe: (observer: Observer) => Subscription) {\n this._subscribe = subscribe;\n }\n\n subscribe(\n onNext?: ((value: T) => void) | null,\n onError?: ((error: any) => void) | null,\n onComplete?: (() => void) | null\n ): Subscription;\n subscribe(observer?: Observer | null): Subscription;\n subscribe(x?: any, error?: any, complete?: any): Subscription {\n return this._subscribe(\n !x || typeof x === \"function\" ? { next: x, error, complete } : x\n );\n }\n\n [symbolObservable]() {\n return this;\n }\n}\n", "import { _global } from '../../globals/global';\nimport { DexieDOMDependencies } from '../../public/types/dexie-dom-dependencies';\n\nexport let domDeps: DexieDOMDependencies\n\ntry {\n domDeps = {\n // Required:\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n} catch (e) {\n domDeps = { indexedDB: null, IDBKeyRange: null };\n}\n", "import { _global, isAsyncFunction, keys, objectIsEmpty } from '../functions/utils';\nimport {\n globalEvents,\n DEXIE_STORAGE_MUTATED_EVENT_NAME,\n} from '../globals/global-events';\nimport {\n beginMicroTickScope,\n decrementExpectedAwaits,\n endMicroTickScope,\n execInGlobalContext,\n incrementExpectedAwaits,\n NativePromise,\n newScope,\n PSD,\n usePSD,\n} from '../helpers/promise';\nimport { ObservabilitySet } from '../public/types/db-events';\nimport {\n Observable as IObservable,\n Subscription,\n} from '../public/types/observable';\nimport { Observable } from '../classes/observable/observable';\nimport { extendObservabilitySet } from './extend-observability-set';\nimport { rangesOverlap } from '../helpers/rangeset';\nimport { domDeps } from '../classes/dexie/dexie-dom-dependencies';\nimport { Transaction } from '../classes/transaction';\nimport { obsSetsOverlap } from './obs-sets-overlap';\n\nexport interface LiveQueryContext {\n subscr: ObservabilitySet;\n signal: AbortSignal;\n requery: () => void;\n trans: null | Transaction;\n querier: Function; // For debugging purposes and Error messages\n}\n\nexport function liveQuery(querier: () => T | Promise): IObservable {\n let hasValue = false;\n let currentValue: T;\n const observable = new Observable((observer) => {\n const scopeFuncIsAsync = isAsyncFunction(querier);\n function execute(ctx: LiveQueryContext) {\n const wasRootExec = beginMicroTickScope(); // Performance: Avoid starting a new microtick scope within the async context.\n try {\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n let rv = newScope(querier, ctx);\n if (scopeFuncIsAsync) {\n // Make sure to set rv = rv.finally in order to wait to after decrementExpectedAwaits() has been called.\n // This fixes zone leaking issue that the liveQuery zone can leak to observer's next microtask.\n rv = (rv as Promise).finally(decrementExpectedAwaits);\n }\n return rv;\n } finally {\n wasRootExec && endMicroTickScope(); // Given that we created the microtick scope, we must also end it.\n }\n }\n\n let closed = false;\n let abortController: AbortController;\n\n let accumMuts: ObservabilitySet = {};\n let currentObs: ObservabilitySet = {};\n\n const subscription: Subscription = {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n if (closed) return;\n closed = true;\n if (abortController) abortController.abort();\n if (startedListening) globalEvents.storagemutated.unsubscribe(mutationListener);\n },\n };\n\n observer.start && observer.start(subscription); // https://github.com/tc39/proposal-observable\n\n let startedListening = false;\n\n const doQuery = () => execInGlobalContext(_doQuery);\n\n function shouldNotify() {\n return obsSetsOverlap(currentObs, accumMuts);\n }\n\n const mutationListener = (parts: ObservabilitySet) => {\n extendObservabilitySet(accumMuts, parts);\n if (shouldNotify()) {\n doQuery();\n }\n };\n\n const _doQuery = () => {\n if (\n closed || // closed - don't run!\n !domDeps.indexedDB) // SSR in sveltekit, nextjs etc\n {\n return;\n }\n accumMuts = {};\n const subscr: ObservabilitySet = {};\n // Abort signal fill three purposes:\n // 1. Abort the query if the observable is unsubscribed.\n // 2. Abort the query if a new query is made before the previous one has completed.\n // 3. For cached queries to know if they should remain in memory or could be enqued for being freed up.\n // (they will remain in memory for a short time and if noone needs them again, they will eventually be freed up)\n if (abortController) abortController.abort(); // Cancel previous query. Last query will be cancelled on unsubscribe().\n abortController = new AbortController();\n \n const ctx: LiveQueryContext = {\n subscr,\n signal: abortController.signal,\n requery: doQuery,\n querier,\n trans: null // Make the scope transactionless (don't reuse transaction from outer scope of the caller of subscribe())\n }\n const ret = execute(ctx);\n Promise.resolve(ret).then(\n (result) => {\n hasValue = true;\n currentValue = result;\n if (closed || ctx.signal.aborted) {\n // closed - no subscriber anymore.\n // signal.aborted - new query was made before this one completed and\n // the querier might have catched AbortError and return successful result.\n // If so, we should not rely in that result because we know we have aborted\n // this run, which means there's another run going on that will handle accumMuts\n // and we must not base currentObs on the half-baked subscr.\n return;\n }\n accumMuts = {};\n // Update what we are subscribing for based on this last run:\n currentObs = subscr;\n if (!objectIsEmpty(currentObs) && !startedListening) {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);\n startedListening = true;\n }\n execInGlobalContext(()=>!closed && observer.next && observer.next(result));\n },\n (err) => {\n hasValue = false;\n if (!['DatabaseClosedError', 'AbortError'].includes(err?.name)) {\n if (!closed) execInGlobalContext(()=>{\n if (closed) return;\n observer.error && observer.error(err);\n });\n }\n }\n );\n };\n\n // Use setTimeot here to guarantee execution in a private macro task before and\n // after. The helper executeInGlobalContext(_doQuery) is not enough here because\n // caller of `subscribe()` could be anything, such as a frontend framework that will\n // continue in the same tick after subscribe() is called and call other\n // eftects, that could involve dexie operations such as writing to the DB.\n // If that happens, the private zone echoes from a live query tast started here\n // could still be ongoing when the other operations start and make them inherit\n // the async context from a live query.\n setTimeout(doQuery, 0);\n return subscription;\n });\n observable.hasValue = () => hasValue;\n observable.getValue = () => currentValue;\n return observable;\n}\n", "import { Dexie as _Dexie } from './dexie';\nimport { _global } from '../../globals/global';\nimport { props, derive, extend, override, getByKeyPath, setByKeyPath, delByKeyPath, shallowClone, deepClone, asap } from '../../functions/utils';\nimport { getObjectDiff } from \"../../functions/get-object-diff\";\nimport { fullNameExceptions } from '../../errors';\nimport { DexieConstructor } from '../../public/types/dexie-constructor';\nimport { getDatabaseNames } from '../../helpers/database-enumerator';\nimport { PSD } from '../../helpers/promise';\nimport { usePSD } from '../../helpers/promise';\nimport { newScope } from '../../helpers/promise';\nimport { rejection } from '../../helpers/promise';\nimport { awaitIterator } from '../../helpers/yield-support';\nimport Promise from '../../helpers/promise';\nimport * as Debug from '../../helpers/debug';\nimport { dexieStackFrameFilter, minKey, connections, DEXIE_VERSION } from '../../globals/constants';\nimport Events from '../../helpers/Events';\nimport { exceptions } from '../../errors';\nimport { errnames } from '../../errors';\nimport { getMaxKey } from '../../functions/quirks';\nimport { vip } from './vip';\nimport { globalEvents } from '../../globals/global-events';\nimport { liveQuery } from '../../live-query/live-query';\nimport { extendObservabilitySet } from '../../live-query/extend-observability-set';\nimport { domDeps } from './dexie-dom-dependencies';\nimport { cmp } from '../../functions/cmp';\nimport { cache } from '../../live-query/cache/cache';\n\n/* (Dexie) is an instance of DexieConstructor, as defined in public/types/dexie-constructor.d.ts\n* (new Dexie()) is an instance of Dexie, as defined in public/types/dexie.d.ts\n* \n* Why we're doing this?\n\n* Because we've choosen to define the public Dexie API using a DexieConstructor interface\n* rather than declaring a class. On that interface, all static props are defined.\n* In practice, class Dexie's constructor implements DexieConstructor and all member props\n* are defined in interface Dexie. We could say, it's a typescript limitation of not being\n* able to define a static interface that forces us to do the cast below.\n*/\nconst Dexie = _Dexie as any as DexieConstructor;\n\n//\n// Set all static methods and properties onto Dexie:\n// \nprops(Dexie, {\n\n // Dexie.BulkError = class BulkError {...};\n // Dexie.XXXError = class XXXError {...};\n ...fullNameExceptions,\n\n //\n // Static delete() method.\n //\n delete(databaseName: string) {\n const db = new Dexie(databaseName, {addons: []});\n return db.delete();\n },\n\n //\n // Static exists() method.\n //\n exists(name: string) {\n return new Dexie(name, { addons: [] }).open().then(db => {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', () => false);\n },\n\n //\n // Static method for retrieving a list of all existing databases at current host.\n //\n getDatabaseNames(cb) {\n try {\n return getDatabaseNames(Dexie.dependencies).then(cb);\n } catch {\n return rejection(new exceptions.MissingAPI());\n }\n },\n\n /** @deprecated */\n defineClass() {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n },\n\n ignoreTransaction(scopeFunc) {\n // In case caller is within a transaction but needs to create a separate transaction.\n // Example of usage:\n //\n // Let's say we have a logger function in our app. Other application-logic should be unaware of the\n // logger function and not need to include the 'logentries' table in all transaction it performs.\n // The logging should always be done in a separate transaction and not be dependant on the current\n // running transaction context. Then you could use Dexie.ignoreTransaction() to run code that starts a new transaction.\n //\n // Dexie.ignoreTransaction(function() {\n // db.logentries.add(newLogEntry);\n // });\n //\n // Unless using Dexie.ignoreTransaction(), the above example would try to reuse the current transaction\n // in current Promise-scope.\n //\n // An alternative to Dexie.ignoreTransaction() would be setImmediate() or setTimeout(). The reason we still provide an\n // API for this because\n // 1) The intention of writing the statement could be unclear if using setImmediate() or setTimeout().\n // 2) setTimeout() would wait unnescessary until firing. This is however not the case with setImmediate().\n // 3) setImmediate() is not supported in the ES standard.\n // 4) You might want to keep other PSD state that was set in a parent PSD, such as PSD.letThrough.\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) : // Use the closest parent that was non-transactional.\n scopeFunc(); // No need to change scope because there is no ongoing transaction.\n },\n\n vip,\n\n async: function (generatorFn: Function) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return Promise.resolve(rv);\n return rv;\n } catch (e) {\n return rejection(e);\n }\n };\n },\n\n spawn: function (generatorFn, args, thiz) {\n try {\n var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n if (!rv || typeof rv.then !== 'function')\n return Promise.resolve(rv);\n return rv;\n } catch (e) {\n return rejection(e);\n }\n },\n\n // Dexie.currentTransaction property\n currentTransaction: {\n get: () => PSD.trans || null\n },\n\n waitFor: function (promiseOrFunction, optionalTimeout) {\n // If a function is provided, invoke it and pass the returning value to Transaction.waitFor()\n const promise = Promise.resolve(\n typeof promiseOrFunction === 'function' ?\n Dexie.ignoreTransaction(promiseOrFunction) :\n promiseOrFunction)\n .timeout(optionalTimeout || 60000); // Default the timeout to one minute. Caller may specify Infinity if required. \n\n // Run given promise on current transaction. If no current transaction, just return a Dexie promise based\n // on given value.\n return PSD.trans ?\n PSD.trans.waitFor(promise) :\n promise;\n },\n\n // Export our Promise implementation since it can be handy as a standalone Promise implementation\n Promise: Promise,\n\n // Dexie.debug proptery:\n // Dexie.debug = false\n // Dexie.debug = true\n // Dexie.debug = \"dexie\" - don't hide dexie's stack frames.\n debug: {\n get: () => Debug.debug,\n set: value => {\n Debug.setDebug(value, value === 'dexie' ? () => true : dexieStackFrameFilter);\n }\n },\n\n // Export our derive/extend/override methodology\n derive: derive, // Deprecate?\n extend: extend, // Deprecate?\n props: props,\n override: override, // Deprecate?\n // Export our Events() function - can be handy as a toolkit\n Events: Events,\n on: globalEvents,\n liveQuery,\n extendObservabilitySet,\n // Utilities\n getByKeyPath: getByKeyPath,\n setByKeyPath: setByKeyPath,\n delByKeyPath: delByKeyPath,\n shallowClone: shallowClone,\n deepClone: deepClone,\n getObjectDiff: getObjectDiff,\n cmp,\n asap: asap,\n //maxKey: new Dexie('',{addons:[]})._maxKey,\n minKey: minKey,\n // Addon registry\n addons: [],\n // Global DB connection list\n connections: connections,\n\n //MultiModifyError: exceptions.Modify, // Obsolete!\n errnames: errnames,\n\n // Export other static classes\n //IndexSpec: IndexSpec, Obsolete!\n //TableSchema: TableSchema, Obsolete!\n\n //\n // Dependencies\n //\n // These will automatically work in browsers with indexedDB support, or where an indexedDB polyfill has been included.\n //\n // In node.js, however, these properties must be set \"manually\" before instansiating a new Dexie().\n // For node.js, you need to require indexeddb-js or similar and then set these deps.\n //\n dependencies: domDeps,\n cache,\n\n // API Version Number: Type Number, make sure to always set a version number that can be comparable correctly. Example: 0.9, 0.91, 0.92, 1.0, 1.01, 1.1, 1.2, 1.21, etc.\n semVer: DEXIE_VERSION,\n version: DEXIE_VERSION.split('.')\n .map(n => parseInt(n))\n .reduce((p, c, i) => p + (c / Math.pow(10, i * 2))),\n\n // https://github.com/dfahlander/Dexie.js/issues/186\n // typescript compiler tsc in mode ts-->es5 & commonJS, will expect require() to return\n // x.default. Workaround: Set Dexie.default = Dexie.\n // default: Dexie, // Commented because solved in index-umd.ts instead.\n // Make it possible to import {Dexie} (non-default import)\n // Reason 1: May switch to that in future.\n // Reason 2: We declare it both default and named exported in d.ts to make it possible\n // to let addons extend the Dexie interface with Typescript 2.1 (works only when explicitely\n // exporting the symbol, not just default exporting)\n // Dexie: Dexie // Commented because solved in index-umd.ts instead.\n});\n\nDexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);\n", "import { globalEvents, DEXIE_STORAGE_MUTATED_EVENT_NAME, STORAGE_MUTATED_DOM_EVENT_NAME } from '../globals/global-events';\nimport { ObservabilitySet } from \"../public/types/db-events\";\nimport { signalSubscribersNow } from './cache/signalSubscribers';\n\nif (typeof dispatchEvent !== 'undefined' && typeof addEventListener !== 'undefined') {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, updatedParts => {\n if (!propagatingLocally) {\n let event: CustomEvent;\n event = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {\n detail: updatedParts\n });\n propagatingLocally = true;\n dispatchEvent(event);\n propagatingLocally = false;\n }\n });\n addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, ({detail}: CustomEvent) => {\n if (!propagatingLocally) {\n propagateLocally(detail);\n }\n });\n}\n\n/** Called from listeners to BroadcastChannel and DOM event to\n * propagate the event locally into dexie's storagemutated event\n * and invalidate cached queries.\n * \n * This function is only called when the event is not originating\n * from this same Dexie module - either from another redundant dexie import\n * or from a foreign tab or worker. That's why we need to invalidate\n * the cache when this happens.\n */\nexport function propagateLocally(updateParts: ObservabilitySet) {\n let wasMe = propagatingLocally;\n try {\n propagatingLocally = true;\n // Fire the \"storagemutated\" event.\n globalEvents.storagemutated.fire(updateParts);\n // Invalidate cached queries and signal subscribers to requery.\n signalSubscribersNow(updateParts, true);\n } finally {\n propagatingLocally = wasMe;\n }\n}\n\nexport let propagatingLocally = false;\n", "import {\n globalEvents,\n STORAGE_MUTATED_DOM_EVENT_NAME,\n DEXIE_STORAGE_MUTATED_EVENT_NAME,\n} from '../globals/global-events';\nimport { propagateLocally, propagatingLocally } from './propagate-locally';\n\nexport let bc: BroadcastChannel;\n\nexport let createBC = ()=>{};\n\nif (typeof BroadcastChannel !== 'undefined') {\n createBC = () => {\n bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);\n bc.onmessage = ev => ev.data && propagateLocally(ev.data);\n }\n createBC();\n\n /**\n * The Node.js BroadcastChannel will prevent the node process from exiting\n * if the BroadcastChannel is not closed.\n * Therefore we have to call unref() which allows the process to finish\n * properly even when the BroadcastChannel is never closed.\n * @link https://nodejs.org/api/worker_threads.html#broadcastchannelunref\n * @link https://github.com/dexie/Dexie.js/pull/1576\n */\n if (typeof (bc as any).unref === 'function') {\n (bc as any).unref();\n }\n \n //\n // Propagate local changes to remote tabs, windows and workers via BroadcastChannel\n //\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, (changedParts) => {\n if (!propagatingLocally) {\n bc.postMessage(changedParts);\n }\n });\n}\n", "import { Dexie } from \"./classes/dexie\";\nimport { connections } from \"./globals/constants\";\nimport { debug } from \"./helpers/debug\";\nimport { RangeSet } from \"./helpers/rangeset\";\nimport { bc, createBC } from \"./live-query/enable-broadcast\";\nimport { propagateLocally } from \"./live-query/propagate-locally\";\n\n\nif (typeof addEventListener !== 'undefined') {\n addEventListener('pagehide', (event) => {\n if (!Dexie.disableBfCache && event.persisted) {\n if (debug) console.debug('Dexie: handling persisted pagehide');\n bc?.close();\n for (const db of connections) {\n db.close({disableAutoOpen: false});\n }\n }\n });\n addEventListener('pageshow', (event) => {\n if (!Dexie.disableBfCache && event.persisted) {\n if (debug) console.debug('Dexie: handling persisted pageshow');\n createBC();\n propagateLocally({all: new RangeSet(-Infinity, [[]])}); // Trigger all queries to requery\n }\n });\n}\n", "import { PropModification } from \"../../helpers/prop-modification\";\n\nexport function add(value: number | bigint | Array) {\n return new PropModification({add: value});\n}\n", "import { PropModification } from \"../../helpers/prop-modification\";\n\nexport function remove(value: number | bigint | Array) {\n return new PropModification({remove: value});\n}\n", "import { PropModification } from \"../../helpers/prop-modification\";\n\nexport function replacePrefix(a: string, b:string) {\n return new PropModification({replacePrefix: [a, b]});\n}\n", "import { Dexie } from './classes/dexie';\nimport { DexieConstructor } from './public/types/dexie-constructor';\nimport { DexiePromise } from './helpers/promise';\nimport { mapError } from './errors';\nimport * as Debug from './helpers/debug';\nimport { dexieStackFrameFilter } from './globals/constants';\n\n// Generate all static properties such as Dexie.maxKey etc\n// (implement interface DexieConstructor):\nimport './classes/dexie/dexie-static-props';\nimport './live-query/enable-broadcast';\nimport './support-bfcache';\nimport { liveQuery } from './live-query/live-query';\nimport { Entity } from './classes/entity/Entity';\nimport { cmp } from './functions/cmp';\nimport { PropModification } from './helpers/prop-modification';\nimport { replacePrefix, add, remove } from './functions/propmods';\n\n\n// Set rejectionMapper of DexiePromise so that it generally tries to map\n// DOMErrors and DOMExceptions to a DexieError instance with same name but with\n// async stack support and with a prototypal inheritance from DexieError and Error.\n// of Map DOMErrors and DOMExceptions to corresponding Dexie errors.\nDexiePromise.rejectionMapper = mapError;\n\n// Let the async stack filter focus on app code and filter away frames from dexie.min.js:\nDebug.setDebug(Debug.debug, dexieStackFrameFilter);\n\nexport { RangeSet, mergeRanges, rangesOverlap } from \"./helpers/rangeset\";\nexport { Dexie, liveQuery }; // Comply with public/index.d.ts.\nexport { Entity };\nexport { cmp };\nexport { PropModification, replacePrefix, add, remove };\nexport default Dexie;\n", "// Issue #1127. Need another index.ts for the UMD module with only a default export\n// like it was before.\n// In practice though, the UMD export will also export the named export in \n// https://github.com/dfahlander/Dexie.js/blob/c9187ae60c0d7a424f85bab3af179fbbc9901c8e/src/classes/dexie/dexie-static-props.ts#L223-L228\nimport Dexie from \"./index\";\nimport * as namedExports from \"./index\";\nimport { __assign } from 'tslib';\n__assign(Dexie, namedExports, {default: Dexie});\nexport default Dexie;\n", "// Making the module version consumable via require - to prohibit\n// multiple occurrancies of the same module in the same app\n// (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard)\nimport _Dexie from \"./dist/dexie.js\";\nconst DexieSymbol = Symbol.for(\"Dexie\");\nconst Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie);\nif (_Dexie.semVer !== Dexie.semVer) {\n throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`);\n}\nconst { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Entity,\n PropModification, replacePrefix, add, remove } = Dexie;\nexport { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie, Entity,\n PropModification, replacePrefix, add, remove };\nexport default Dexie;\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "import Dexie from 'dexie';\nimport { DexieExportedDatabase } from './json-structure';\n\nexport function getSchemaString(table: Dexie.Table) {\n const primKeyAndIndexes = [table.schema.primKey].concat(table.schema.indexes);\n return primKeyAndIndexes.map(index => index.src).join(',');\n}\n\nexport function extractDbSchema(exportedDb: DexieExportedDatabase) {\n const schema: {\n [tableName: string]: string;\n } = {};\n for (const table of exportedDb.tables) {\n schema[table.name] = table.schema;\n }\n return schema;\n}\n\n\n// Missing FileReaderSync type in standard typescript libs:\ninterface FileReaderSync {\n readAsArrayBuffer(blob: Blob): ArrayBuffer;\n readAsBinaryString(blob: Blob): string;\n readAsDataURL(blob: Blob): string;\n readAsText(blob: Blob, encoding?: string): string;\n}\ndeclare var FileReaderSync: {\n prototype: FileReaderSync;\n new(): FileReaderSync;\n};\n// -----------------------------------------------\n\nexport interface TypeMapper {\n binary: ArrayBuffer;\n text: string;\n}\n\nexport function readBlobAsync(blob: Blob, type: T): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onabort = ev => reject(new Error(\"file read aborted\"));\n reader.onerror = ev => reject((ev.target as any).error);\n reader.onload = ev => resolve((ev.target as any).result);\n if (type === 'binary')\n reader.readAsArrayBuffer(blob);\n else\n reader.readAsText(blob);\n });\n}\n\nexport function readBlobSync(blob: Blob, type: T): TypeMapper[T] {\n if (typeof FileReaderSync === 'undefined') {\n throw new Error('FileReaderSync missing. Reading blobs synchronously requires code to run from within a web worker. Use TSON.encapsulateAsync() to do it from the main thread.');\n }\n const reader = new FileReaderSync(); // Requires worker environment\n const data = type === 'binary' ?\n reader.readAsArrayBuffer(blob) :\n reader.readAsText(blob);\n\n return data as TypeMapper[T];\n}\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Typeson = factory());\n}(this, (function () { 'use strict';\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {function} f\n */\n // eslint-disable-next-line max-len\n // eslint-disable-next-line block-spacing, space-before-function-paren, space-before-blocks, space-infix-ops, semi, promise/avoid-new\n var TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n }; // eslint-disable-next-line max-len\n // class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\n TypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n /* istanbul ignore else */\n\n if (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n }\n /**\n *\n * @param {function} [onFulfilled]\n * @param {function} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n };\n /**\n *\n * @param {function} onRejected\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n };\n /**\n *\n * @param {Any} v\n * @returns {TypesonPromise}\n */\n\n\n TypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n };\n\n ['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n });\n\n var _ref = {},\n toStr = _ref.toString,\n hasOwn = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn.toString;\n /**\n * Second argument not in use internally, but provided for utility.\n * @param {Any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\n function isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n }\n /**\n *\n * @param {Any} val\n * @returns {string}\n */\n\n\n function toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n }\n /**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {Any} a\n * @param {function} b\n * @returns {boolean}\n */\n\n\n function hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n }\n /**\n *\n * @param {Any} val\n * @returns {boolean}\n */\n\n\n function isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n }\n /**\n *\n * @param {Any} v\n * @returns {boolean}\n */\n\n\n function isObject(v) {\n return v && _typeof(v) === 'object';\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n }\n /**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\n function unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n }\n /**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {Any}\n */\n\n\n function getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n }\n /**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {Any} value\n * @returns {Any}\n */\n\n\n function setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n }\n /**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\n function getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n }\n\n var keys = Object.keys,\n isArray = Array.isArray,\n hasOwn$1 = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n /**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\n function nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n }\n /**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\n var Typeson =\n /*#__PURE__*/\n function () {\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string|Promise} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {object} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2({}, this.options, {}, opts, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {function} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {object} opts\n * @returns {Promise} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n *\n * @param {Any} obj\n * @param {object} stateObj\n * @param {object} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {Any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {Any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {Any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn$1.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n /**\n *\n * @param {Any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise}\n */\n\n\n function checkPromises(_x, _x2) {\n return _checkPromises.apply(this, arguments);\n }\n /**\n *\n * @param {object} stateObj\n * @param {object} ownKeysObj\n * @param {function} cb\n * @returns {undefined}\n */\n\n\n function _checkPromises() {\n _checkPromises = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2(ret, promisesData) {\n var promResults;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n }));\n\n case 2:\n promResults = _context2.sent;\n _context2.next = 5;\n return Promise.all(promResults.map(\n /*#__PURE__*/\n function () {\n var _ref = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(promResult) {\n var newPromisesData, _promisesData$splice, _promisesData$splice2, prData, _prData, keyPath, cyclic, stateObj, parentObj, key, detectedType, encaps, isTypesonPromise, encaps2;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n newPromisesData = [];\n _promisesData$splice = promisesData.splice(0, 1), _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1), prData = _promisesData$splice2[0];\n _prData = _slicedToArray(prData, 7), keyPath = _prData[0], cyclic = _prData[2], stateObj = _prData[3], parentObj = _prData[4], key = _prData[5], detectedType = _prData[6];\n encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n if (!(keyPath && isTypesonPromise)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 8;\n return encaps.p;\n\n case 8:\n encaps2 = _context.sent;\n parentObj[key] = encaps2;\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 11:\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return _context.abrupt(\"return\", checkPromises(ret, newPromisesData));\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 5:\n return _context2.abrupt(\"return\", ret);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _checkPromises.apply(this, arguments);\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {Any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || $typeof === 'number' && (isNaN(value) || value === -Infinity || value === Infinity)) {\n if (stateObj.replaced) {\n ret = value;\n } else {\n ret = replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n }\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn$1.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {function} [runObserver]\n * @returns {*}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {*} obj\n * @param {object} stateObj\n * @param {object} opts\n * @returns {*}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {object} obj - Object to revive. If it has `$types` member, the\n * properties that are listed there will be replaced with its true type\n * instead of just plain objects.\n * @param {object} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise|*} If async, returns a Promise that resolves to `*`\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2({\n sync: true\n }, this.options, {}, opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {Any} value\n * @param {string} type\n * @returns {Any}\n */\n\n /**\n *\n * @param {string} type\n * @param {Any} val\n * @returns {[type]} [description]\n */\n\n function executeReviver(type, val) {\n var _ref2 = that.revivers[type] || [],\n _ref3 = _slicedToArray(_ref2, 1),\n reviver = _ref3[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n keypath = _ref5[0],\n type = _ref5[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref6 = that.revivers[type] || [null, {}],\n _ref7 = _slicedToArray(_ref6, 2),\n plain = _ref7[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref8) {\n var keypath = _ref8.keypath,\n type = _ref8.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {Any} value\n * @param {?(Array|object)} target\n * @param {Array|object} [clone]\n * @param {string} [key]\n * @returns {Any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {Any} retrn\n * @returns {undefined|Any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n r = _ref10[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {Any} obj\n * @param {object} opts\n * @returns {Any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: true\n }));\n }\n /**\n * @param {Any} obj\n * @param {object} opts\n * @returns {Promise} Resolves to `*`\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2({\n throwOnBadSyncType: true\n }, opts, {\n sync: false\n }));\n }\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object.[]} typeSpecSets - Types and\n * their functions [test, encapsulate, revive];\n * @param {object} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Infinity;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n }();\n /**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\n var Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n }; // eslint-disable-line space-before-blocks\n\n\n Undefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n // To insist `undefined` should be added\n\n Typeson.Undefined = Undefined; // To support async encapsulation/stringification\n\n Typeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\n Typeson.isThenable = isThenable;\n Typeson.toStringTag = toStringTag;\n Typeson.hasConstructorOf = hasConstructorOf;\n Typeson.isObject = isObject;\n Typeson.isPlainObject = isPlainObject;\n Typeson.isUserObject = isUserObject;\n Typeson.escapeKeyPathComponent = escapeKeyPathComponent;\n Typeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\n Typeson.getByKeyPath = getByKeyPath;\n Typeson.getJSONType = getJSONType;\n Typeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\n return Typeson;\n\n})));\n", "function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\n* @callback TypesonFulfilled\n* @returns {Promise|any}\n*/\n\n/**\n* @callback TypesonRejected\n* @returns {Promise|any}\n*/\n\n/**\n * @callback TypesonResolve\n * @param {any} value\n * @returns {Promise}\n */\n\n/**\n * @callback TypesonReject\n * @param {Error|any} error\n * @returns {Promise}\n */\n\n/**\n * @callback TypesonResolveReject\n * @param {TypesonResolve} typesonResolve\n * @param {TypesonReject} typesonReject\n * @returns {Promise}\n */\n\n/* eslint-disable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * With ES6 classes, we may be able to simply use `class TypesonPromise\n * extends Promise` and add a string tag for detection.\n * @param {TypesonResolveReject} f\n */\nvar TypesonPromise = function TypesonPromise(f) {\n _classCallCheck(this, TypesonPromise);\n\n this.p = new Promise(f);\n};\n/* eslint-enable block-spacing, space-before-function-paren,\n space-before-blocks, space-infix-ops, semi, promise/avoid-new,\n jsdoc/require-jsdoc */\n// eslint-disable-next-line max-len\n// class TypesonPromise extends Promise {get[Symbol.toStringTag](){return 'TypesonPromise'};} // eslint-disable-line keyword-spacing, space-before-function-paren, space-before-blocks, block-spacing, semi\n\n\nTypesonPromise.__typeson__type__ = 'TypesonPromise'; // Note: core-js-bundle provides a `Symbol` polyfill\n\n/* istanbul ignore else */\n\nif (typeof Symbol !== 'undefined') {\n // Ensure `isUserObject` will return `false` for `TypesonPromise`\n TypesonPromise.prototype[Symbol.toStringTag] = 'TypesonPromise';\n}\n/**\n *\n * @param {TypesonFulfilled} [onFulfilled]\n * @param {TypesonRejected} [onRejected]\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype.then = function (onFulfilled, onRejected) {\n var _this = this;\n\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n _this.p.then(function (res) {\n // eslint-disable-next-line promise/always-return\n typesonResolve(onFulfilled ? onFulfilled(res) : res);\n })[\"catch\"](function (res) {\n return onRejected ? onRejected(res) : Promise.reject(res);\n }).then(typesonResolve, typesonReject);\n });\n};\n/**\n *\n * @param {TypesonRejected} onRejected\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.resolve = function (v) {\n return new TypesonPromise(function (typesonResolve) {\n typesonResolve(v);\n });\n};\n/**\n *\n * @param {any} v\n * @returns {TypesonPromise}\n */\n\n\nTypesonPromise.reject = function (v) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n typesonReject(v);\n });\n};\n\n['all', 'race'].forEach(function (meth) {\n /**\n *\n * @param {Promise[]} promArr\n * @returns {TypesonPromise}\n */\n TypesonPromise[meth] = function (promArr) {\n return new TypesonPromise(function (typesonResolve, typesonReject) {\n // eslint-disable-next-line promise/catch-or-return\n Promise[meth](promArr.map(function (prom) {\n return prom && prom.constructor && prom.constructor.__typeson__type__ === 'TypesonPromise' ? prom.p : prom;\n })).then(typesonResolve, typesonReject);\n });\n };\n});\n\nvar _ref = {},\n toStr = _ref.toString,\n hasOwn$1 = {}.hasOwnProperty,\n getProto = Object.getPrototypeOf,\n fnToString = hasOwn$1.toString;\n/**\n * Second argument not in use internally, but provided for utility.\n * @param {any} v\n * @param {boolean} catchCheck\n * @returns {boolean}\n */\n\nfunction isThenable(v, catchCheck) {\n return isObject(v) && typeof v.then === 'function' && (!catchCheck || typeof v[\"catch\"] === 'function');\n}\n/**\n *\n * @param {any} val\n * @returns {string}\n */\n\n\nfunction toStringTag(val) {\n return toStr.call(val).slice(8, -1);\n}\n/**\n * This function is dependent on both constructors\n * being identical so any minimization is expected of both.\n * @param {any} a\n * @param {GenericFunction} b\n * @returns {boolean}\n */\n\n\nfunction hasConstructorOf(a, b) {\n if (!a || _typeof(a) !== 'object') {\n return false;\n }\n\n var proto = getProto(a);\n\n if (!proto) {\n return b === null;\n }\n\n var Ctor = hasOwn$1.call(proto, 'constructor') && proto.constructor;\n\n if (typeof Ctor !== 'function') {\n return b === null;\n }\n\n if (b === Ctor) {\n return true;\n }\n\n if (b !== null && fnToString.call(Ctor) === fnToString.call(b)) {\n return true;\n }\n\n if (typeof b === 'function' && typeof Ctor.__typeson__type__ === 'string' && Ctor.__typeson__type__ === b.__typeson__type__) {\n return true;\n }\n\n return false;\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isPlainObject(val) {\n // Mirrors jQuery's\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object);\n}\n/**\n *\n * @param {any} val\n * @returns {boolean}\n */\n\n\nfunction isUserObject(val) {\n if (!val || toStringTag(val) !== 'Object') {\n return false;\n }\n\n var proto = getProto(val);\n\n if (!proto) {\n // `Object.create(null)`\n return true;\n }\n\n return hasConstructorOf(val, Object) || isUserObject(proto);\n}\n/**\n *\n * @param {any} v\n * @returns {boolean}\n */\n\n\nfunction isObject(v) {\n return v && _typeof(v) === 'object';\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction escapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~/g, '~0').replace(/\\./g, '~1');\n}\n/**\n *\n * @param {string} keyPathComponent\n * @returns {string}\n */\n\n\nfunction unescapeKeyPathComponent(keyPathComponent) {\n return keyPathComponent.replace(/~1/g, '.').replace(/~0/g, '~');\n}\n/**\n * @param {PlainObject|GenericArray} obj\n * @param {string} keyPath\n * @returns {any}\n */\n\n\nfunction getByKeyPath(obj, keyPath) {\n if (keyPath === '') {\n return obj;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.slice(period + 1));\n }\n\n return obj[unescapeKeyPathComponent(keyPath)];\n}\n/**\n *\n * @param {PlainObject} obj\n * @param {string} keyPath\n * @param {any} value\n * @returns {any}\n */\n\n\nfunction setAtKeyPath(obj, keyPath, value) {\n if (keyPath === '') {\n return value;\n }\n\n var period = keyPath.indexOf('.');\n\n if (period > -1) {\n var innerObj = obj[unescapeKeyPathComponent(keyPath.slice(0, period))];\n return setAtKeyPath(innerObj, keyPath.slice(period + 1), value);\n }\n\n obj[unescapeKeyPathComponent(keyPath)] = value;\n return obj;\n}\n/**\n *\n * @param {external:JSON} value\n * @returns {\"null\"|\"array\"|\"undefined\"|\"boolean\"|\"number\"|\"string\"|\n * \"object\"|\"symbol\"}\n */\n\n\nfunction getJSONType(value) {\n return value === null ? 'null' : Array.isArray(value) ? 'array' : _typeof(value);\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nvar keys = Object.keys,\n isArray = Array.isArray,\n hasOwn = {}.hasOwnProperty,\n internalStateObjPropsToIgnore = ['type', 'replaced', 'iterateIn', 'iterateUnsetNumeric'];\n/**\n * Handle plain object revivers first so reference setting can use\n * revived type (e.g., array instead of object); assumes revived\n * has same structure or will otherwise break subsequent references.\n * @param {PlainObjectType} a\n * @param {PlainObjectType} b\n * @returns {1|-1|boolean}\n */\n\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n/**\n * @callback Tester\n * @param {any} value\n * @param {StateObject} stateobj\n * @returns {boolean}\n */\n\n/**\n* @callback Replacer\n* @param {any} value\n* @param {StateObject} stateObj\n* @returns {any} Should be JSON-stringifiable\n*/\n\n/**\n* @callback Reviver\n* @param {JSON} value\n* @param {StateObject} stateObj\n* @returns {any}\n*/\n\n/**\n* @typedef {PlainObject} TypesonOptions\n* @property {boolean} stringification Auto-set by `stringify`\n*/\n\n/**\n * An instance of this class can be used to call `stringify()` and `parse()`.\n * Typeson resolves cyclic references by default. Can also be extended to\n * support custom types using the register() method.\n *\n * @class\n * @param {{cyclic: boolean}} [options] - if cyclic (default true),\n * cyclic references will be handled gracefully.\n */\n\n\nfunction _invoke(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nfunction nestedPathsFirst(a, b) {\n if (a.keypath === '') {\n return -1;\n }\n\n var as = a.keypath.match(/\\./g) || 0;\n var bs = b.keypath.match(/\\./g) || 0;\n\n if (as) {\n as = as.length;\n }\n\n if (bs) {\n bs = bs.length;\n }\n\n return as > bs ? -1 : as < bs ? 1 : a.keypath < b.keypath ? -1 : a.keypath > b.keypath;\n}\n\nvar Typeson = /*#__PURE__*/function () {\n /**\n * @param {TypesonOptions} options\n */\n function Typeson(options) {\n _classCallCheck(this, Typeson);\n\n this.options = options; // Replacers signature: replace (value). Returns falsy if not\n // replacing. Otherwise ['Date', value.getTime()]\n\n this.plainObjectReplacers = [];\n this.nonplainObjectReplacers = []; // Revivers: [{type => reviver}, {plain: boolean}].\n // Sample: [{'Date': value => new Date(value)}, {plain: false}]\n\n this.revivers = {};\n /** Types registered via `register()`. */\n\n this.types = {};\n }\n /**\n * @typedef {null|boolean|number|string|GenericArray|PlainObject} JSON\n */\n\n /**\n * @callback JSONReplacer\n * @param {\"\"|string} key\n * @param {JSON} value\n * @returns {number|string|boolean|null|PlainObject|undefined}\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The%20replacer%20parameter\n */\n\n /**\n * Serialize given object to Typeson.\n * Initial arguments work identical to those of `JSON.stringify`.\n * The `replacer` argument has nothing to do with our replacers.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string|Promise} Promise resolves to a string\n */\n\n\n _createClass(Typeson, [{\n key: \"stringify\",\n value: function stringify(obj, replacer, space, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n stringification: true\n });\n var encapsulated = this.encapsulate(obj, null, opts);\n\n if (isArray(encapsulated)) {\n return JSON.stringify(encapsulated[0], replacer, space);\n }\n\n return encapsulated.then(function (res) {\n return JSON.stringify(res, replacer, space);\n });\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {string}\n */\n\n }, {\n key: \"stringifySync\",\n value: function stringifySync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n *\n * @param {any} obj\n * @param {JSONReplacer|string[]} replacer\n * @param {number|string} space\n * @param {TypesonOptions} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"stringifyAsync\",\n value: function stringifyAsync(obj, replacer, space, opts) {\n return this.stringify(obj, replacer, space, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @callback JSONReviver\n * @param {string} key\n * @param {JSON} value\n * @returns {JSON}\n */\n\n /**\n * Parse Typeson back into an obejct.\n * Initial arguments works identical to those of `JSON.parse()`.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parse\",\n value: function parse(text, reviver, opts) {\n opts = _objectSpread2(_objectSpread2(_objectSpread2({}, this.options), opts), {}, {\n parse: true\n });\n return this.revive(JSON.parse(text, reviver), opts);\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {external:JSON}\n */\n\n }, {\n key: \"parseSync\",\n value: function parseSync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {string} text\n * @param {JSONReviver} reviver This JSON reviver has nothing to do with\n * our revivers.\n * @param {TypesonOptions} opts\n * @returns {Promise} Resolves to `external:JSON`\n */\n\n }, {\n key: \"parseAsync\",\n value: function parseAsync(text, reviver, opts) {\n return this.parse(text, reviver, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {} StateObject\n */\n\n /**\n *\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} [opts={}]\n * @returns {string[]|false}\n */\n\n }, {\n key: \"specialTypeNames\",\n value: function specialTypeNames(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.returnTypeNames = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n *\n * @param {any} obj\n * @param {PlainObject} stateObj\n * @param {PlainObject} [opts={}]\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"rootTypeName\",\n value: function rootTypeName(obj, stateObj) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n opts.iterateNone = true;\n return this.encapsulate(obj, stateObj, opts);\n }\n /**\n * Encapsulate a complex object into a plain Object by replacing\n * registered types with plain objects representing the types data.\n *\n * This method is used internally by `Typeson.stringify()`.\n * @param {any} obj - Object to encapsulate.\n * @param {PlainObject} stateObj\n * @param {PlainObject} opts\n * @returns {Promise|GenericArray|PlainObject|string|false}\n */\n\n }, {\n key: \"encapsulate\",\n value: function encapsulate(obj, stateObj, opts) {\n /**\n *\n * @param {any} ret\n * @param {GenericArray} promisesData\n * @returns {Promise}\n */\n var checkPromises = _async(function (ret, promisesData) {\n return _await(Promise.all(promisesData.map(function (pd) {\n return pd[1].p;\n })), function (promResults) {\n return _await(Promise.all(promResults.map(_async(function (promResult) {\n var _exit = false;\n var newPromisesData = [];\n\n var _promisesData$splice = promisesData.splice(0, 1),\n _promisesData$splice2 = _slicedToArray(_promisesData$splice, 1),\n prData = _promisesData$splice2[0];\n\n var _prData = _slicedToArray(prData, 7),\n keyPath = _prData[0],\n cyclic = _prData[2],\n stateObj = _prData[3],\n parentObj = _prData[4],\n key = _prData[5],\n detectedType = _prData[6];\n\n var encaps = _encapsulate(keyPath, promResult, cyclic, stateObj, newPromisesData, true, detectedType);\n\n var isTypesonPromise = hasConstructorOf(encaps, TypesonPromise); // Handle case where an embedded custom type itself\n // returns a `Typeson.Promise`\n\n return _invoke(function () {\n if (keyPath && isTypesonPromise) {\n return _await(encaps.p, function (encaps2) {\n parentObj[key] = encaps2;\n _exit = true;\n return checkPromises(ret, newPromisesData);\n });\n }\n }, function (_result) {\n if (_exit) return _result;\n\n if (keyPath) {\n parentObj[key] = encaps;\n } else if (isTypesonPromise) {\n ret = encaps.p;\n } else {\n // If this is itself a `Typeson.Promise` (because the\n // original value supplied was a `Promise` or\n // because the supplied custom type value resolved\n // to one), returning it below will be fine since\n // a `Promise` is expected anyways given current\n // config (and if not a `Promise`, it will be ready\n // as the resolve value)\n ret = encaps;\n }\n\n return checkPromises(ret, newPromisesData);\n });\n }))), function () {\n return ret;\n });\n });\n });\n /**\n * @typedef {PlainObject} OwnKeysObject\n * @property {boolean} ownKeys\n */\n\n /**\n * @callback BuiltinStateObjectPropertiesCallback\n * @returns {void}\n */\n\n /**\n *\n * @param {StateObject} stateObj\n * @param {OwnKeysObject} ownKeysObj\n * @param {BuiltinStateObjectPropertiesCallback} cb\n * @returns {undefined}\n */\n\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts = opts,\n sync = _opts.sync;\n var that = this,\n types = {},\n refObjs = [],\n // For checking cyclic references\n refKeys = [],\n // For checking cyclic references\n promisesDataRoot = []; // Clone the object deeply while at the same time replacing any\n // special types or cyclic reference:\n\n var cyclic = 'cyclic' in opts ? opts.cyclic : true;\n var _opts2 = opts,\n encapsulateObserver = _opts2.encapsulateObserver;\n\n var ret = _encapsulate('', obj, cyclic, stateObj || {}, promisesDataRoot);\n /**\n *\n * @param {any} ret\n * @returns {GenericArray|PlainObject|string|false}\n */\n\n\n function finish(ret) {\n // Add `$types` to result only if we ever bumped into a\n // special type (or special case where object has own `$types`)\n var typeNames = Object.values(types);\n\n if (opts.iterateNone) {\n if (typeNames.length) {\n return typeNames[0];\n }\n\n return Typeson.getJSONType(ret);\n }\n\n if (typeNames.length) {\n if (opts.returnTypeNames) {\n return _toConsumableArray(new Set(typeNames));\n } // Special if array (or a primitive) was serialized\n // because JSON would ignore custom `$types` prop on it\n\n\n if (!ret || !isPlainObject(ret) || // Also need to handle if this is an object with its\n // own `$types` property (to avoid ambiguity)\n hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: {\n $: types\n }\n };\n } else {\n ret.$types = types;\n } // No special types\n\n } else if (isObject(ret) && hasOwn.call(ret, '$types')) {\n ret = {\n $: ret,\n $types: true\n };\n }\n\n if (opts.returnTypeNames) {\n return false;\n }\n\n return ret;\n }\n\n function _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, cb) {\n Object.assign(stateObj, ownKeysObj);\n var vals = internalStateObjPropsToIgnore.map(function (prop) {\n var tmp = stateObj[prop];\n delete stateObj[prop];\n return tmp;\n }); // eslint-disable-next-line node/callback-return\n\n cb();\n internalStateObjPropsToIgnore.forEach(function (prop, i) {\n stateObj[prop] = vals[i];\n });\n }\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {boolean} cyclic\n * @param {PlainObject} stateObj\n * @param {boolean} promisesData\n * @param {boolean} resolvingTypesonPromise\n * @param {string} detectedType\n * @returns {any}\n */\n\n\n function _encapsulate(keypath, value, cyclic, stateObj, promisesData, resolvingTypesonPromise, detectedType) {\n var ret;\n var observerData = {};\n\n var $typeof = _typeof(value);\n\n var runObserver = encapsulateObserver ? function (obj) {\n var type = detectedType || stateObj.type || Typeson.getJSONType(value);\n encapsulateObserver(Object.assign(obj || observerData, {\n keypath: keypath,\n value: value,\n cyclic: cyclic,\n stateObj: stateObj,\n promisesData: promisesData,\n resolvingTypesonPromise: resolvingTypesonPromise,\n awaitingTypesonPromise: hasConstructorOf(value, TypesonPromise)\n }, {\n type: type\n }));\n } : null;\n\n if (['string', 'boolean', 'number', 'undefined'].includes($typeof)) {\n if (value === undefined || Number.isNaN(value) || value === Number.NEGATIVE_INFINITY || value === Number.POSITIVE_INFINITY) {\n ret = stateObj.replaced ? value : replace(keypath, value, stateObj, promisesData, false, resolvingTypesonPromise, runObserver);\n\n if (ret !== value) {\n observerData = {\n replaced: ret\n };\n }\n } else {\n ret = value;\n }\n\n if (runObserver) {\n runObserver();\n }\n\n return ret;\n }\n\n if (value === null) {\n if (runObserver) {\n runObserver();\n }\n\n return value;\n }\n\n if (cyclic && !stateObj.iterateIn && !stateObj.iterateUnsetNumeric && value && _typeof(value) === 'object') {\n // Options set to detect cyclic references and be able\n // to rewrite them.\n var refIndex = refObjs.indexOf(value);\n\n if (refIndex < 0) {\n if (cyclic === true) {\n refObjs.push(value);\n refKeys.push(keypath);\n }\n } else {\n types[keypath] = '#';\n\n if (runObserver) {\n runObserver({\n cyclicKeypath: refKeys[refIndex]\n });\n }\n\n return '#' + refKeys[refIndex];\n }\n }\n\n var isPlainObj = isPlainObject(value);\n var isArr = isArray(value);\n var replaced = // Running replace will cause infinite loop as will test\n // positive again\n (isPlainObj || isArr) && (!that.plainObjectReplacers.length || stateObj.replaced) || stateObj.iterateIn ? // Optimization: if plain object and no plain-object\n // replacers, don't try finding a replacer\n value : replace(keypath, value, stateObj, promisesData, isPlainObj || isArr, null, runObserver);\n var clone;\n\n if (replaced !== value) {\n ret = replaced;\n observerData = {\n replaced: replaced\n };\n } else {\n // eslint-disable-next-line no-lonely-if\n if (keypath === '' && hasConstructorOf(value, TypesonPromise)) {\n promisesData.push([keypath, value, cyclic, stateObj, undefined, undefined, stateObj.type]);\n ret = value;\n } else if (isArr && stateObj.iterateIn !== 'object' || stateObj.iterateIn === 'array') {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n clone = new Array(value.length);\n observerData = {\n clone: clone\n };\n } else if (!['function', 'symbol'].includes(_typeof(value)) && !('toJSON' in value) && !hasConstructorOf(value, TypesonPromise) && !hasConstructorOf(value, Promise) && !hasConstructorOf(value, ArrayBuffer) || isPlainObj || stateObj.iterateIn === 'object') {\n clone = {};\n\n if (stateObj.addLength) {\n clone.length = value.length;\n }\n\n observerData = {\n clone: clone\n };\n } else {\n ret = value; // Only clone vanilla objects and arrays\n }\n }\n\n if (runObserver) {\n runObserver();\n }\n\n if (opts.iterateNone) {\n return clone || ret;\n }\n\n if (!clone) {\n return ret;\n } // Iterate object or array\n\n\n if (stateObj.iterateIn) {\n var _loop = function _loop(key) {\n var ownKeysObj = {\n ownKeys: hasOwn.call(value, key)\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n };\n\n // eslint-disable-next-line guard-for-in\n for (var key in value) {\n _loop(key);\n }\n\n if (runObserver) {\n runObserver({\n endIterateIn: true,\n end: true\n });\n }\n } else {\n // Note: Non-indexes on arrays won't survive stringify so\n // somewhat wasteful for arrays, but so too is iterating\n // all numeric indexes on sparse arrays when not wanted\n // or filtering own keys for positive integers\n keys(value).forEach(function (key) {\n var kp = keypath + (keypath ? '.' : '') + escapeKeyPathComponent(key);\n var ownKeysObj = {\n ownKeys: true\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, value[key], Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, key, stateObj.type]);\n } else if (val !== undefined) {\n clone[key] = val;\n }\n });\n });\n\n if (runObserver) {\n runObserver({\n endIterateOwn: true,\n end: true\n });\n }\n } // Iterate array for non-own numeric properties (we can't\n // replace the prior loop though as it iterates non-integer\n // keys)\n\n\n if (stateObj.iterateUnsetNumeric) {\n var vl = value.length;\n\n var _loop2 = function _loop2(i) {\n if (!(i in value)) {\n // No need to escape numeric\n var kp = keypath + (keypath ? '.' : '') + i;\n var ownKeysObj = {\n ownKeys: false\n };\n\n _adaptBuiltinStateObjectProperties(stateObj, ownKeysObj, function () {\n var val = _encapsulate(kp, undefined, Boolean(cyclic), stateObj, promisesData, resolvingTypesonPromise);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n promisesData.push([kp, val, Boolean(cyclic), stateObj, clone, i, stateObj.type]);\n } else if (val !== undefined) {\n clone[i] = val;\n }\n });\n }\n };\n\n for (var i = 0; i < vl; i++) {\n _loop2(i);\n }\n\n if (runObserver) {\n runObserver({\n endIterateUnsetNumeric: true,\n end: true\n });\n }\n }\n\n return clone;\n }\n /**\n * @typedef {PlainObject} KeyPathEvent\n * @property {string} cyclicKeypath\n */\n\n /**\n * @typedef {PlainObject} EndIterateInEvent\n * @property {boolean} endIterateIn\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} EndIterateUnsetNumericEvent\n * @property {boolean} endIterateUnsetNumeric\n * @property {boolean} end\n */\n\n /**\n * @typedef {PlainObject} TypeDetectedEvent\n * @property {boolean} typeDetected\n */\n\n /**\n * @typedef {PlainObject} ReplacingEvent\n * @property {boolean} replacing\n */\n\n /**\n * @callback Observer\n * @param {KeyPathEvent|EndIterateInEvent|EndIterateUnsetNumericEvent|\n * TypeDetectedEvent|ReplacingEvent} [event]\n * @returns {void}\n */\n\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {PlainObject} stateObj\n * @param {GenericArray} promisesData\n * @param {boolean} plainObject\n * @param {boolean} resolvingTypesonPromise\n * @param {Observer} [runObserver]\n * @returns {any}\n */\n\n\n function replace(keypath, value, stateObj, promisesData, plainObject, resolvingTypesonPromise, runObserver) {\n // Encapsulate registered types\n var replacers = plainObject ? that.plainObjectReplacers : that.nonplainObjectReplacers;\n var i = replacers.length;\n\n while (i--) {\n var replacer = replacers[i];\n\n if (replacer.test(value, stateObj)) {\n var type = replacer.type;\n\n if (that.revivers[type]) {\n // Record the type only if a corresponding reviver\n // exists. This is to support specs where only\n // replacement is done.\n // For example, ensuring deep cloning of the object,\n // or replacing a type to its equivalent without\n // the need to revive it.\n var existing = types[keypath]; // type can comprise an array of types (see test\n // \"should support intermediate types\")\n\n types[keypath] = existing ? [type].concat(existing) : type;\n }\n\n Object.assign(stateObj, {\n type: type,\n replaced: true\n });\n\n if ((sync || !replacer.replaceAsync) && !replacer.replace) {\n if (runObserver) {\n runObserver({\n typeDetected: true\n });\n }\n\n return _encapsulate(keypath, value, cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n\n if (runObserver) {\n runObserver({\n replacing: true\n });\n } // Now, also traverse the result in case it contains its\n // own types to replace\n\n\n var replaceMethod = sync || !replacer.replaceAsync ? 'replace' : 'replaceAsync';\n return _encapsulate(keypath, replacer[replaceMethod](value, stateObj), cyclic && 'readonly', stateObj, promisesData, resolvingTypesonPromise, type);\n }\n }\n\n return value;\n }\n\n return promisesDataRoot.length ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : Promise.resolve(checkPromises(ret, promisesDataRoot)).then(finish) : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() // If this is a synchronous request for stringification, yet\n // a promise is the result, we don't want to resolve leading\n // to an async result, so we return an array to avoid\n // ambiguity\n : opts.stringification && sync ? [finish(ret)] : sync ? finish(ret) : Promise.resolve(finish(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateSync\",\n value: function encapsulateSync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {StateObject} stateObj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"encapsulateAsync\",\n value: function encapsulateAsync(obj, stateObj, opts) {\n return this.encapsulate(obj, stateObj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * Revive an encapsulated object.\n * This method is used internally by `Typeson.parse()`.\n * @param {PlainObject} obj - Object to revive. If it has `$types` member,\n * the properties that are listed there will be replaced with its true\n * type instead of just plain objects.\n * @param {TypesonOptions} opts\n * @throws TypeError If mismatch between sync/async type and result\n * @returns {Promise|any} If async, returns a Promise that resolves\n * to `any`.\n */\n\n }, {\n key: \"revive\",\n value: function revive(obj, opts) {\n var types = obj && obj.$types; // No type info added. Revival not needed.\n\n if (!types) {\n return obj;\n } // Object happened to have own `$types` property but with\n // no actual types, so we unescape and return that object\n\n\n if (types === true) {\n return obj.$;\n }\n\n opts = _objectSpread2(_objectSpread2({\n sync: true\n }, this.options), opts);\n var _opts3 = opts,\n sync = _opts3.sync;\n var keyPathResolutions = [];\n var stateObj = {};\n var ignore$Types = true; // Special when root object is not a trivial Object, it will\n // be encapsulated in `$`. It will also be encapsulated in\n // `$` if it has its own `$` property to avoid ambiguity\n\n if (types.$ && isPlainObject(types.$)) {\n obj = obj.$;\n types = types.$;\n ignore$Types = false;\n }\n\n var that = this;\n /**\n * @callback RevivalReducer\n * @param {any} value\n * @param {string} type\n * @returns {any}\n */\n\n /**\n *\n * @param {string} type\n * @param {any} val\n * @throws {Error}\n * @returns {any}\n */\n\n function executeReviver(type, val) {\n var _ref = that.revivers[type] || [],\n _ref2 = _slicedToArray(_ref, 1),\n reviver = _ref2[0];\n\n if (!reviver) {\n throw new Error('Unregistered type: ' + type);\n } // Only `sync` expected here, as problematic async would\n // be missing both `reviver` and `reviverAsync`, and\n // encapsulation shouldn't have added types, so\n // should have made an early exit\n\n\n if (sync && !('revive' in reviver)) {\n // Just return value as is\n return val;\n }\n\n return reviver[sync && reviver.revive ? 'revive' : !sync && reviver.reviveAsync ? 'reviveAsync' : 'revive'](val, stateObj);\n }\n /**\n *\n * @returns {void|TypesonPromise}\n */\n\n\n function revivePlainObjects() {\n // const references = [];\n // const reviveTypes = [];\n var plainObjectTypes = [];\n Object.entries(types).forEach(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n keypath = _ref4[0],\n type = _ref4[1];\n\n if (type === '#') {\n /*\n references.push({\n keypath,\n reference: getByKeyPath(obj, keypath)\n });\n */\n return;\n }\n\n [].concat(type).forEach(function (type) {\n var _ref5 = that.revivers[type] || [null, {}],\n _ref6 = _slicedToArray(_ref5, 2),\n plain = _ref6[1].plain;\n\n if (!plain) {\n // reviveTypes.push({keypath, type});\n return;\n }\n\n plainObjectTypes.push({\n keypath: keypath,\n type: type\n });\n delete types[keypath]; // Avoid repeating\n });\n });\n\n if (!plainObjectTypes.length) {\n return undefined;\n } // console.log(plainObjectTypes.sort(nestedPathsFirst));\n\n /**\n * @typedef {PlainObject} PlainObjectType\n * @property {string} keypath\n * @property {string} type\n */\n\n\n return plainObjectTypes.sort(nestedPathsFirst).reduce(function reducer(possibleTypesonPromise, _ref7) {\n var keypath = _ref7.keypath,\n type = _ref7.type;\n\n if (isThenable(possibleTypesonPromise)) {\n return possibleTypesonPromise.then(function (val) {\n return reducer(val, {\n keypath: keypath,\n type: type\n });\n });\n } // console.log('obj', JSON.stringify(keypath), obj);\n\n\n var val = getByKeyPath(obj, keypath);\n val = executeReviver(type, val);\n\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n var newVal = setAtKeyPath(obj, keypath, v);\n\n if (newVal === v) {\n obj = newVal;\n }\n\n return undefined;\n });\n }\n\n var newVal = setAtKeyPath(obj, keypath, val);\n\n if (newVal === val) {\n obj = newVal;\n }\n\n return undefined;\n }, undefined // This argument must be explicit\n ); // references.forEach(({keypath, reference}) => {});\n // reviveTypes.sort(nestedPathsFirst).forEach(() => {});\n }\n\n var revivalPromises = [];\n /**\n *\n * @param {string} keypath\n * @param {any} value\n * @param {?(GenericArray|PlainObject)} target\n * @param {GenericArray|PlainObject} [clone]\n * @param {string} [key]\n * @returns {any}\n */\n\n function _revive(keypath, value, target, clone, key) {\n if (ignore$Types && keypath === '$types') {\n return undefined;\n }\n\n var type = types[keypath];\n var isArr = isArray(value);\n\n if (isArr || isPlainObject(value)) {\n // eslint-disable-next-line unicorn/no-new-array -- Sparse\n var _clone = isArr ? new Array(value.length) : {}; // Iterate object or array\n\n\n keys(value).forEach(function (k) {\n var val = _revive(keypath + (keypath ? '.' : '') + escapeKeyPathComponent(k), value[k], target || _clone, _clone, k);\n\n var set = function set(v) {\n if (hasConstructorOf(v, Undefined)) {\n _clone[k] = undefined;\n } else if (v !== undefined) {\n _clone[k] = v;\n }\n\n return v;\n };\n\n if (hasConstructorOf(val, TypesonPromise)) {\n revivalPromises.push(val.then(function (ret) {\n return set(ret);\n }));\n } else {\n set(val);\n }\n });\n value = _clone; // Try to resolve cyclic reference as soon as available\n\n while (keyPathResolutions.length) {\n var _keyPathResolutions$ = _slicedToArray(keyPathResolutions[0], 4),\n _target = _keyPathResolutions$[0],\n keyPath = _keyPathResolutions$[1],\n _clone2 = _keyPathResolutions$[2],\n k = _keyPathResolutions$[3];\n\n var val = getByKeyPath(_target, keyPath); // Typeson.Undefined not expected here as not cyclic or\n // `undefined`\n\n if (val !== undefined) {\n _clone2[k] = val;\n } else {\n break;\n }\n\n keyPathResolutions.splice(0, 1);\n }\n }\n\n if (!type) {\n return value;\n }\n\n if (type === '#') {\n var _ret = getByKeyPath(target, value.slice(1));\n\n if (_ret === undefined) {\n // Cyclic reference not yet available\n keyPathResolutions.push([target, value.slice(1), clone, key]);\n }\n\n return _ret;\n } // `type` can be an array here\n\n\n return [].concat(type).reduce(function reducer(val, typ) {\n if (hasConstructorOf(val, TypesonPromise)) {\n return val.then(function (v) {\n // TypesonPromise here too\n return reducer(v, typ);\n });\n }\n\n return executeReviver(typ, val);\n }, value);\n }\n /**\n *\n * @param {any} retrn\n * @returns {undefined|any}\n */\n\n\n function checkUndefined(retrn) {\n return hasConstructorOf(retrn, Undefined) ? undefined : retrn;\n }\n\n var possibleTypesonPromise = revivePlainObjects();\n var ret;\n\n if (hasConstructorOf(possibleTypesonPromise, TypesonPromise)) {\n ret = possibleTypesonPromise.then(function () {\n return obj;\n });\n } else {\n ret = _revive('', obj, null);\n\n if (revivalPromises.length) {\n // Ensure children resolved\n ret = TypesonPromise.resolve(ret).then(function (r) {\n return TypesonPromise.all([// May be a TypesonPromise or not\n r].concat(revivalPromises));\n }).then(function (_ref8) {\n var _ref9 = _slicedToArray(_ref8, 1),\n r = _ref9[0];\n\n return r;\n });\n }\n }\n\n return isThenable(ret) ? sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Sync method requested but async result obtained');\n }() : hasConstructorOf(ret, TypesonPromise) ? ret.p.then(checkUndefined) : ret : !sync && opts.throwOnBadSyncType ? function () {\n throw new TypeError('Async method requested but sync result obtained');\n }() : sync ? checkUndefined(ret) : Promise.resolve(checkUndefined(ret));\n }\n /**\n * Also sync but throws on non-sync result.\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {any}\n */\n\n }, {\n key: \"reviveSync\",\n value: function reviveSync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: true\n }));\n }\n /**\n * @param {any} obj\n * @param {TypesonOptions} opts\n * @returns {Promise}\n */\n\n }, {\n key: \"reviveAsync\",\n value: function reviveAsync(obj, opts) {\n return this.revive(obj, _objectSpread2(_objectSpread2({\n throwOnBadSyncType: true\n }, opts), {}, {\n sync: false\n }));\n }\n /**\n * @typedef {Tester|Replacer|Reviver} Spec\n */\n\n /**\n * Register types.\n * For examples on how to use this method, see\n * {@link https://github.com/dfahlander/typeson-registry/tree/master/types}.\n * @param {object[]} typeSpecSets -\n * Types and their functions [test, encapsulate, revive];\n * @param {TypesonOptions} opts\n * @returns {Typeson}\n */\n\n }, {\n key: \"register\",\n value: function register(typeSpecSets, opts) {\n opts = opts || {};\n [].concat(typeSpecSets).forEach(function R(typeSpec) {\n var _this = this;\n\n // Allow arrays of arrays of arrays...\n if (isArray(typeSpec)) {\n return typeSpec.map(function (typSpec) {\n return R.call(_this, typSpec);\n });\n }\n\n typeSpec && keys(typeSpec).forEach(function (typeId) {\n if (typeId === '#') {\n throw new TypeError('# cannot be used as a type name as it is reserved ' + 'for cyclic objects');\n } else if (Typeson.JSON_TYPES.includes(typeId)) {\n throw new TypeError('Plain JSON object types are reserved as type names');\n }\n\n var spec = typeSpec[typeId];\n var replacers = spec && spec.testPlainObjects ? this.plainObjectReplacers : this.nonplainObjectReplacers;\n var existingReplacer = replacers.filter(function (r) {\n return r.type === typeId;\n });\n\n if (existingReplacer.length) {\n // Remove existing spec and replace with this one.\n replacers.splice(replacers.indexOf(existingReplacer[0]), 1);\n delete this.revivers[typeId];\n delete this.types[typeId];\n }\n\n if (typeof spec === 'function') {\n // Support registering just a class without replacer/reviver\n var Class = spec;\n spec = {\n test: function test(x) {\n return x && x.constructor === Class;\n },\n replace: function replace(x) {\n return _objectSpread2({}, x);\n },\n revive: function revive(x) {\n return Object.assign(Object.create(Class.prototype), x);\n }\n };\n } else if (isArray(spec)) {\n var _spec = spec,\n _spec2 = _slicedToArray(_spec, 3),\n test = _spec2[0],\n replace = _spec2[1],\n revive = _spec2[2];\n\n spec = {\n test: test,\n replace: replace,\n revive: revive\n };\n }\n\n if (!spec || !spec.test) {\n return;\n }\n\n var replacerObj = {\n type: typeId,\n test: spec.test.bind(spec)\n };\n\n if (spec.replace) {\n replacerObj.replace = spec.replace.bind(spec);\n }\n\n if (spec.replaceAsync) {\n replacerObj.replaceAsync = spec.replaceAsync.bind(spec);\n }\n\n var start = typeof opts.fallback === 'number' ? opts.fallback : opts.fallback ? 0 : Number.POSITIVE_INFINITY;\n\n if (spec.testPlainObjects) {\n this.plainObjectReplacers.splice(start, 0, replacerObj);\n } else {\n this.nonplainObjectReplacers.splice(start, 0, replacerObj);\n } // Todo: We might consider a testAsync type\n\n\n if (spec.revive || spec.reviveAsync) {\n var reviverObj = {};\n\n if (spec.revive) {\n reviverObj.revive = spec.revive.bind(spec);\n }\n\n if (spec.reviveAsync) {\n reviverObj.reviveAsync = spec.reviveAsync.bind(spec);\n }\n\n this.revivers[typeId] = [reviverObj, {\n plain: spec.testPlainObjects\n }];\n } // Record to be retrieved via public types property.\n\n\n this.types[typeId] = spec;\n }, this);\n }, this);\n return this;\n }\n }]);\n\n return Typeson;\n}();\n/**\n * We keep this function minimized so if using two instances of this\n * library, where one is minimized and one is not, it will still work\n * with `hasConstructorOf`.\n * @class\n */\n\n\nvar Undefined = function Undefined() {\n _classCallCheck(this, Undefined);\n}; // eslint-disable-line space-before-blocks\n\n\nUndefined.__typeson__type__ = 'TypesonUndefined'; // The following provide classes meant to avoid clashes with other values\n// To insist `undefined` should be added\n\nTypeson.Undefined = Undefined; // To support async encapsulation/stringification\n\nTypeson.Promise = TypesonPromise; // Some fundamental type-checking utilities\n\nTypeson.isThenable = isThenable;\nTypeson.toStringTag = toStringTag;\nTypeson.hasConstructorOf = hasConstructorOf;\nTypeson.isObject = isObject;\nTypeson.isPlainObject = isPlainObject;\nTypeson.isUserObject = isUserObject;\nTypeson.escapeKeyPathComponent = escapeKeyPathComponent;\nTypeson.unescapeKeyPathComponent = unescapeKeyPathComponent;\nTypeson.getByKeyPath = getByKeyPath;\nTypeson.getJSONType = getJSONType;\nTypeson.JSON_TYPES = ['null', 'boolean', 'number', 'string', 'array', 'object'];\n\nexport default Typeson;\n", "/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _i = 0; _i < len; _i += 3) {\n base64 += chars[bytes[_i] >> 2];\n base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4];\n base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6];\n base64 += chars[bytes[_i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.charCodeAt(_i2)];\n encoded2 = lookup[base64.charCodeAt(_i2 + 1)];\n encoded3 = lookup[base64.charCodeAt(_i2 + 2)];\n encoded4 = lookup[base64.charCodeAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return arraybuffer;\n};\n\nexport { decode, encode };\n", "import Typeson from 'typeson';\n\nconst userObject = {\n userObject: {\n test (x, stateObj) { return Typeson.isUserObject(x); },\n replace (n) { return {...n}; },\n revive (s) { return s; }\n }\n};\n\nexport default userObject;\n", "const arrayNonindexKeys = [\n {\n arrayNonindexKeys: {\n testPlainObjects: true,\n test (x, stateObj) {\n if (Array.isArray(x)) {\n if (\n // By avoiding serializing arrays into objects which\n // have only positive-integer keys, we reduce\n // size and improve revival performance; arrays with\n // non-index keys will be larger however\n Object.keys(x).some((k) => {\n // No need to check for `isNaN` or\n // `isNaN(Number.parseInt())` as `NaN` will be\n // treated as a string.\n // No need to do check as\n // `Number.parseInt(Number())` since scientific\n // notation will be pre-resolved if a number\n // was given, and it will otherwise be a string\n return String(Number.parseInt(k)) !== k;\n })\n ) {\n stateObj.iterateIn = 'object';\n stateObj.addLength = true;\n }\n return true;\n }\n return false;\n },\n replace (a, stateObj) {\n // Catch sparse undefined\n stateObj.iterateUnsetNumeric = true;\n return a;\n },\n revive (o) {\n if (Array.isArray(o)) {\n return o;\n }\n const arr = [];\n // No map here as may be a sparse array (including\n // with `length` set)\n // Todo: Reenable when Node `engines` >= 7\n // Object.entries(o).forEach(([key, val]) => {\n Object.keys(o).forEach((key) => {\n const val = o[key];\n arr[key] = val;\n });\n return arr;\n }\n }\n },\n {\n sparseUndefined: {\n test (x, stateObj) {\n return typeof x === 'undefined' && stateObj.ownKeys === false;\n },\n replace (n) { return 0; },\n revive (s) { return undefined; } // Will avoid adding anything\n }\n }\n];\n\nexport default arrayNonindexKeys;\n", "// This does not preserve `undefined` in sparse arrays; see the `undefined`\n// or `sparse-undefined` preset\nimport Typeson from 'typeson';\n\nconst undef = {\n undef: {\n test (x, stateObj) {\n return typeof x === 'undefined' &&\n (stateObj.ownKeys || !('ownKeys' in stateObj));\n },\n replace (n) { return 0; },\n revive (s) {\n // Will add `undefined` (returning `undefined` would instead\n // avoid explicitly setting)\n return new Typeson.Undefined();\n }\n }\n};\n\nexport default undef;\n", "// This module is for objectified primitives (such as `new Number(3)` or\n// `new String(\"foo\")`)\n/* eslint-disable no-new-wrappers, unicorn/new-for-builtins */\nimport Typeson from 'typeson';\n\nconst primitiveObjects = {\n // String Object (not primitive string which need no type spec)\n StringObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'String' && typeof x === 'object';\n },\n replace (s) { return String(s); }, // convert to primitive string\n revive (s) { return new String(s); } // Revive to an objectified string\n },\n // Boolean Object (not primitive boolean which need no type spec)\n BooleanObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Boolean' &&\n typeof x === 'object';\n },\n replace (b) { return Boolean(b); }, // convert to primitive boolean\n revive (b) {\n // Revive to an objectified Boolean\n return new Boolean(b);\n }\n },\n // Number Object (not primitive number which need no type spec)\n NumberObject: {\n test (x) {\n return Typeson.toStringTag(x) === 'Number' && typeof x === 'object';\n },\n replace (n) { return Number(n); }, // convert to primitive number\n revive (n) { return new Number(n); } // Revive to an objectified number\n }\n};\n/* eslint-enable no-new-wrappers, unicorn/new-for-builtins */\n\nexport default primitiveObjects;\n", "import nan from '../types/nan.js';\nimport infinity from '../types/infinity.js';\nimport NegativeInfinity from '../types/negative-infinity.js';\n\nconst specialNumbers = [\n nan,\n infinity,\n NegativeInfinity\n];\n\nexport default specialNumbers;\n", "const nan = {\n nan: {\n test (x) { return Number.isNaN(x); },\n replace (n) { return 'NaN'; },\n revive (s) { return Number.NaN; }\n }\n};\n\nexport default nan;\n", "const infinity = {\n infinity: {\n test (x) { return x === Number.POSITIVE_INFINITY; },\n replace (n) { return 'Infinity'; },\n revive (s) { return Number.POSITIVE_INFINITY; }\n }\n};\n\nexport default infinity;\n", "const negativeInfinity = {\n negativeInfinity: {\n test (x) { return x === Number.NEGATIVE_INFINITY; },\n replace (n) { return '-Infinity'; },\n revive (s) { return Number.NEGATIVE_INFINITY; }\n }\n};\n\nexport default negativeInfinity;\n", "import Typeson from 'typeson';\n\nconst date = {\n date: {\n test (x) { return Typeson.toStringTag(x) === 'Date'; },\n replace (dt) {\n const time = dt.getTime();\n if (Number.isNaN(time)) {\n return 'NaN';\n }\n return time;\n },\n revive (time) {\n if (time === 'NaN') {\n return new Date(Number.NaN);\n }\n return new Date(time);\n }\n }\n};\n\nexport default date;\n", "import Typeson from 'typeson';\n\nconst regexp = {\n regexp: {\n test (x) { return Typeson.toStringTag(x) === 'RegExp'; },\n replace (rexp) {\n return {\n source: rexp.source,\n flags: (rexp.global ? 'g' : '') +\n (rexp.ignoreCase ? 'i' : '') +\n (rexp.multiline ? 'm' : '') +\n (rexp.sticky ? 'y' : '') +\n (rexp.unicode ? 'u' : '')\n };\n },\n revive ({source, flags}) { return new RegExp(source, flags); }\n }\n};\n\nexport default regexp;\n", "import Typeson from 'typeson';\n\nconst map = {\n map: {\n test (x) { return Typeson.toStringTag(x) === 'Map'; },\n replace (mp) { return [...mp.entries()]; },\n revive (entries) { return new Map(entries); }\n }\n};\n\nexport default map;\n", "import Typeson from 'typeson';\n\nconst set = {\n set: {\n test (x) { return Typeson.toStringTag(x) === 'Set'; },\n replace (st) {\n return [...st.values()];\n },\n revive (values) { return new Set(values); }\n }\n};\n\nexport default set;\n", "import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst arraybuffer = {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(b);\n if (index > -1) {\n return {index};\n }\n stateObj.buffers.push(b);\n return encode(b);\n },\n revive (b64, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n if (typeof b64 === 'object') {\n return stateObj.buffers[b64.index];\n }\n const buffer = decode(b64);\n stateObj.buffers.push(buffer);\n return buffer;\n }\n }\n};\n\nexport default arraybuffer;\n\n// See also typed-arrays!\n", "/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\n/* istanbul ignore next */\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst typedArrays = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n /* istanbul ignore if */\n if (!TypedArray) {\n return;\n }\n typedArrays[typeName.toLowerCase()] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length: l}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, length: l};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n length: l\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, length: len, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new TypedArray(buffer, byteOffset, len);\n }\n };\n});\n\nexport default typedArrays;\n", "import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst dataview = {\n dataview: {\n test (x) { return Typeson.toStringTag(x) === 'DataView'; },\n replace ({buffer, byteOffset, byteLength}, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const index = stateObj.buffers.indexOf(buffer);\n if (index > -1) {\n return {index, byteOffset, byteLength};\n }\n stateObj.buffers.push(buffer);\n return {\n encoded: encode(buffer),\n byteOffset,\n byteLength\n };\n },\n revive (b64Obj, stateObj) {\n if (!stateObj.buffers) {\n stateObj.buffers = [];\n }\n const {byteOffset, byteLength, encoded, index} = b64Obj;\n let buffer;\n if ('index' in b64Obj) {\n buffer = stateObj.buffers[index];\n } else {\n buffer = decode(encoded);\n stateObj.buffers.push(buffer);\n }\n return new DataView(buffer, byteOffset, byteLength);\n }\n }\n};\n\nexport default dataview;\n", "import Typeson from 'typeson';\n\nconst IntlCollator = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.Collator); },\n replace (c) { return c.resolvedOptions(); },\n revive (options) { return new Intl.Collator(options.locale, options); }\n};\n\nconst IntlDateTimeFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.DateTimeFormat); },\n replace (dtf) { return dtf.resolvedOptions(); },\n revive (options) {\n return new Intl.DateTimeFormat(options.locale, options);\n }\n};\n\nconst IntlNumberFormat = {\n test (x) { return Typeson.hasConstructorOf(x, Intl.NumberFormat); },\n replace (nf) { return nf.resolvedOptions(); },\n revive (options) { return new Intl.NumberFormat(options.locale, options); }\n};\n\nconst intlTypes = {\n IntlCollator,\n IntlDateTimeFormat,\n IntlNumberFormat\n};\n\nexport default intlTypes;\n", "/**\n * Not currently in use internally, but provided for parity.\n * @param {ArrayBuffer} buf\n * @returns {Uint8Array}\n */\nfunction arraybuffer2string (buf) {\n return new Uint8Array(buf).reduce(\n (s, byte) => s + String.fromCharCode(byte), ''\n );\n}\n\n/**\n *\n * @param {string} str\n * @returns {ArrayBuffer}\n */\nfunction string2arraybuffer (str) {\n /*\n // UTF-8 approaches\n const utf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n arr[i] = utf8.charCodeAt(i);\n }\n return arr.buffer;\n\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) utf8.push(charcode);\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6),\n 0x80 | (charcode & 0x3f));\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n // surrogate pair\n } else {\n i++;\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) |\n (str.charCodeAt(i) & 0x3ff));\n utf8.push(0xf0 | (charcode >> 18),\n 0x80 | ((charcode >> 12) & 0x3f),\n 0x80 | ((charcode >> 6) & 0x3f),\n 0x80 | (charcode & 0x3f));\n }\n }\n return utf8;\n */\n /*\n // Working UTF-16 options (equivalents)\n const buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char\n const bufView = new Uint16Array(buf);\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return buf;\n */\n\n const array = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n array[i] = str.charCodeAt(i); // & 0xff;\n }\n return array.buffer;\n}\nexport {arraybuffer2string, string2arraybuffer};\n", "/* globals XMLHttpRequest, File, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst file = {\n file: {\n test (x) { return Typeson.toStringTag(x) === 'File'; },\n replace (f) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(f), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad File access: ' + req.status);\n }\n return {\n type: f.type,\n stringContents: req.responseText,\n name: f.name,\n lastModified: f.lastModified\n };\n },\n revive ({name, type, stringContents, lastModified}) {\n return new File([string2arraybuffer(stringContents)], name, {\n type,\n lastModified\n });\n },\n replaceAsync (f) {\n return new Typeson.Promise(function (resolve, reject) {\n /*\n if (f.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The File is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', function () {\n resolve({\n type: f.type,\n stringContents: reader.result,\n name: f.name,\n lastModified: f.lastModified\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', function () {\n reject(reader.error);\n });\n reader.readAsBinaryString(f);\n });\n }\n }\n};\n\nexport default file;\n", "/* globals BigInt */\n\nconst bigint = {\n bigint: {\n test (x) {\n return typeof x === 'bigint';\n },\n replace (n) { return String(n); },\n revive (s) { return BigInt(s); }\n }\n};\n\nexport default bigint;\n", "/* globals BigInt */\nimport Typeson from 'typeson';\n\nconst bigintObject = {\n bigintObject: {\n test (x) {\n return typeof x === 'object' && Typeson.hasConstructorOf(x, BigInt);\n },\n replace (n) { return String(n); },\n revive (s) {\n // Filed this to avoid error: https://github.com/eslint/eslint/issues/11810\n // eslint-disable-next-line no-new-object\n return new Object(BigInt(s));\n }\n }\n};\n\nexport default bigintObject;\n", "/* globals crypto */\nimport Typeson from 'typeson';\n\nconst cryptokey = {\n cryptokey: {\n test (x) {\n return Typeson.toStringTag(x) === 'CryptoKey' && x.extractable;\n },\n replaceAsync (key) {\n return new Typeson.Promise((resolve, reject) => {\n // eslint-disable-next-line promise/catch-or-return\n crypto.subtle.exportKey('jwk', key).catch(\n /* eslint-disable promise/prefer-await-to-callbacks */\n // istanbul ignore next\n (err) => {\n /* eslint-enable promise/prefer-await-to-callbacks */\n // eslint-disable-next-line max-len\n // istanbul ignore next -- Our format should be valid and our key extractable\n reject(err);\n }\n // eslint-disable-next-line max-len\n // eslint-disable-next-line promise/always-return, promise/prefer-await-to-then\n ).then((jwk) => {\n resolve({\n jwk,\n algorithm: key.algorithm,\n usages: key.usages\n });\n });\n });\n },\n revive ({jwk, algorithm, usages}) {\n return crypto.subtle.importKey('jwk', jwk, algorithm, true, usages);\n }\n }\n};\n\nexport default cryptokey;\n", "/* This preset includes types for the Structured Cloning Algorithm. */\n\nimport userObject from '../types/user-object.js';\nimport arrayNonindexKeys from './array-nonindex-keys.js';\nimport undef from '../types/undef.js';\nimport primitiveObjects from '../types/primitive-objects.js';\nimport specialNumbers from './special-numbers.js';\nimport date from '../types/date.js';\nimport regexp from '../types/regexp.js';\nimport map from '../types/map.js';\nimport set from '../types/set.js';\nimport arraybuffer from '../types/arraybuffer.js';\nimport typedArrays from '../types/typed-arrays.js';\nimport dataview from '../types/dataview.js';\nimport intlTypes from '../types/intl-types.js';\n\nimport imagedata from '../types/imagedata.js';\nimport imagebitmap from '../types/imagebitmap.js'; // Async return\nimport file from '../types/file.js';\nimport filelist from '../types/filelist.js';\nimport blob from '../types/blob.js';\nimport bigint from '../types/bigint.js';\nimport bigintObject from '../types/bigint-object.js';\n\nimport cryptokey from '../types/cryptokey.js';\n\nconst expObj = [\n // Todo: Might also register synchronous `ImageBitmap` and\n // `Blob`/`File`/`FileList`?\n // ES5\n userObject, // Processed last (non-builtin)\n\n undef,\n arrayNonindexKeys, primitiveObjects, specialNumbers,\n date, regexp,\n\n // Non-built-ins\n imagedata,\n imagebitmap, // Async return\n file,\n filelist,\n blob\n].concat(\n // ES2015 (ES6)\n /* istanbul ignore next */\n typeof Map === 'function' ? map : [],\n /* istanbul ignore next */\n typeof Set === 'function' ? set : [],\n /* istanbul ignore next */\n typeof ArrayBuffer === 'function' ? arraybuffer : [],\n /* istanbul ignore next */\n typeof Uint8Array === 'function' ? typedArrays : [],\n /* istanbul ignore next */\n typeof DataView === 'function' ? dataview : [],\n /* istanbul ignore next */\n typeof Intl !== 'undefined' ? intlTypes : [],\n /* istanbul ignore next */\n typeof crypto !== 'undefined' ? cryptokey : [],\n /* istanbul ignore next */\n typeof BigInt !== 'undefined' ? [bigint, bigintObject] : []\n);\nexport default expObj;\n", "/* globals ImageData */\n// `ImageData` is browser / DOM specific (though `node-canvas` has it\n// available on `Canvas`).\n\nimport Typeson from 'typeson';\n\nconst imagedata = {\n imagedata: {\n test (x) { return Typeson.toStringTag(x) === 'ImageData'; },\n replace (d) {\n return {\n // Ensure `length` gets preserved for revival\n array: [...d.data],\n width: d.width,\n height: d.height\n };\n },\n revive (o) {\n return new ImageData(\n new Uint8ClampedArray(o.array), o.width, o.height\n );\n }\n }\n};\n\nexport default imagedata;\n", "/* globals createImageBitmap */\n// `ImageBitmap` is browser / DOM specific. It also can only work\n// same-domain (or CORS)\n\nimport Typeson from 'typeson';\n\nconst imagebitmap = {\n imagebitmap: {\n test (x) {\n return Typeson.toStringTag(x) === 'ImageBitmap' ||\n // In Node, our polyfill sets the dataset on a canvas\n // element as JSDom no longer allows overriding toStringTag\n (x && x.dataset && x.dataset.toStringTag === 'ImageBitmap');\n },\n replace (bm) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n ctx.drawImage(bm, 0, 0);\n // Although `width` and `height` are part of `ImageBitMap`,\n // these will be auto-created for us when reviving with the\n // data URL (and they are not settable even if they weren't)\n // return {\n // width: bm.width, height: bm.height, dataURL: canvas.toDataURL()\n // };\n return canvas.toDataURL();\n },\n revive (o) {\n /*\n var req = new XMLHttpRequest();\n req.open('GET', o, false); // Sync\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad ImageBitmap access: ' + req.status);\n }\n req.send();\n return req.responseText;\n */\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o;\n // Works in contexts allowing an `ImageBitmap` (We might use\n // `OffscreenCanvas.transferToBitmap` when supported)\n return canvas;\n },\n reviveAsync (o) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const img = document.createElement('img');\n // The onload is needed by some browsers per http://stackoverflow.com/a/4776378/271577\n img.addEventListener('load', function () {\n ctx.drawImage(img, 0, 0);\n });\n img.src = o; // o.dataURL;\n return createImageBitmap(canvas); // Returns a promise\n }\n }\n};\n\nexport default imagebitmap;\n", "import Typeson from 'typeson';\nimport file from './file.js';\n\nconst filelist = {\n file: file.file,\n filelist: {\n test (x) { return Typeson.toStringTag(x) === 'FileList'; },\n replace (fl) {\n const arr = [];\n for (let i = 0; i < fl.length; i++) {\n arr[i] = fl.item(i);\n }\n return arr;\n },\n revive (o) {\n /**\n * `FileList` polyfill.\n */\n class FileList {\n /**\n * Set private properties and length.\n */\n constructor () {\n // eslint-disable-next-line prefer-rest-params\n this._files = arguments[0];\n this.length = this._files.length;\n }\n /**\n * @param {Integer} index\n * @returns {File}\n */\n item (index) {\n return this._files[index];\n }\n /* eslint-disable class-methods-use-this */\n /**\n * @returns {\"FileList\"}\n */\n get [Symbol.toStringTag] () {\n /* eslint-enable class-methods-use-this */\n return 'FileList';\n }\n }\n return new FileList(o);\n }\n }\n};\n\nexport default filelist;\n", "/* globals XMLHttpRequest, Blob, FileReader */\nimport Typeson from 'typeson';\nimport {string2arraybuffer} from '../utils/stringArrayBuffer.js';\n\nconst blob = {\n blob: {\n test (x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace (b) { // Sync\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain; charset=x-user-defined');\n req.open('GET', URL.createObjectURL(b), false); // Sync\n req.send();\n\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n if (req.status !== 200 && req.status !== 0) {\n throw new Error('Bad Blob access: ' + req.status);\n }\n return {\n type: b.type,\n stringContents: req.responseText\n };\n },\n revive ({type, stringContents}) {\n return new Blob([string2arraybuffer(stringContents)], {type});\n },\n replaceAsync (b) {\n return new Typeson.Promise((resolve, reject) => {\n /*\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n reject(new Error('The Blob is closed'));\n return;\n }\n */\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n resolve({\n type: b.type,\n stringContents: reader.result\n });\n });\n // Seems not feasible to accurately simulate\n /* istanbul ignore next */\n reader.addEventListener('error', () => {\n reject(reader.error);\n });\n reader.readAsBinaryString(b);\n });\n }\n }\n};\n\nexport default blob;\n", "/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2017 Brett Zamir, 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; // Use a lookup table to find the index.\n\nvar lookup = new Uint8Array(256);\n\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.codePointAt(i)] = i;\n}\n/**\n * @param {ArrayBuffer} arraybuffer\n * @param {Integer} byteOffset\n * @param {Integer} lngth\n * @returns {string}\n */\n\n\nvar encode = function encode(arraybuffer, byteOffset, lngth) {\n if (lngth === null || lngth === undefined) {\n lngth = arraybuffer.byteLength; // Needed for Safari\n }\n\n var bytes = new Uint8Array(arraybuffer, byteOffset || 0, // Default needed for Safari\n lngth);\n var len = bytes.length;\n var base64 = '';\n\n for (var _i = 0; _i < len; _i += 3) {\n base64 += chars[bytes[_i] >> 2];\n base64 += chars[(bytes[_i] & 3) << 4 | bytes[_i + 1] >> 4];\n base64 += chars[(bytes[_i + 1] & 15) << 2 | bytes[_i + 2] >> 6];\n base64 += chars[bytes[_i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.slice(0, -1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.slice(0, -2) + '==';\n }\n\n return base64;\n};\n/**\n * @param {string} base64\n * @returns {ArrayBuffer}\n */\n\nvar decode = function decode(base64) {\n var len = base64.length;\n var bufferLength = base64.length * 0.75;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (var _i2 = 0; _i2 < len; _i2 += 4) {\n encoded1 = lookup[base64.codePointAt(_i2)];\n encoded2 = lookup[base64.codePointAt(_i2 + 1)];\n encoded3 = lookup[base64.codePointAt(_i2 + 2)];\n encoded4 = lookup[base64.codePointAt(_i2 + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n\n return arraybuffer;\n};\n\nexport { decode, encode };\n", "declare var global;\n\n/* eslint-env browser, node */\nimport Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nconst _global = typeof self === 'undefined' ? global : self;\n\nconst exportObj = {};\n[\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array'\n].forEach(function (typeName) {\n const arrType = typeName;\n const TypedArray = _global[arrType];\n if (TypedArray) {\n exportObj[typeName.toLowerCase()+\"2\"] = {\n test (x) { return Typeson.toStringTag(x) === arrType; },\n replace ({buffer, byteOffset, length}) {\n return {\n buffer,\n byteOffset,\n length\n };\n },\n revive (b64Obj) {\n const {buffer, byteOffset, length} = b64Obj;\n return new TypedArray(buffer, byteOffset, length);\n }\n };\n }\n});\n\nexport default exportObj;\n", "import Typeson from 'typeson';\nimport {encode, decode} from 'base64-arraybuffer-es6';\n\nexport default {\n arraybuffer: {\n test (x) { return Typeson.toStringTag(x) === 'ArrayBuffer'; },\n replace (b) {\n return encode(b, 0, b.byteLength);\n },\n revive (b64) {\n const buffer = decode(b64);\n return buffer;\n }\n }\n};\n\n// See also typed-arrays!\n", "import Typeson from 'typeson';\nimport StructuredCloning from 'typeson-registry/dist/presets/structured-cloning';\nimport { encode as encodeB64, decode as decodeB64 } from 'base64-arraybuffer-es6';\nimport Dexie from 'dexie';\nimport { readBlobSync, readBlobAsync } from './helpers';\nimport typedArray from './tson-typed-array';\nimport arrayBuffer from './tson-arraybuffer';\n\nexport const TSON = new Typeson().register(StructuredCloning);\n\nconst readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\nlet blobsToAwait: any[] = [];\nlet blobsToAwaitPos = 0;\n\n// Need to patch encapsulateAsync as it does not work as of typeson 5.8.2\n// Also, current version of typespn-registry-1.0.0-alpha.21 does not\n// encapsulate/revive Blobs correctly (fails one of the unit tests in\n// this library (test 'export-format'))\nTSON.register([\n arrayBuffer,\n typedArray, {\n blob2: {\n test(x) { return Typeson.toStringTag(x) === 'Blob'; },\n replace(b) {\n if (b.isClosed) { // On MDN, but not in https://w3c.github.io/FileAPI/#dfn-Blob\n throw new Error('The Blob is closed');\n }\n if (readBlobsSynchronously) {\n const data = readBlobSync(b, 'binary');\n const base64 = encodeB64(data, 0, data.byteLength);\n return {\n type: b.type,\n data: base64\n }\n } else {\n blobsToAwait.push(b); // This will also make TSON.mustFinalize() return true.\n const result = {\n type: b.type,\n data: {start: blobsToAwaitPos, end: blobsToAwaitPos + b.size}\n }\n blobsToAwaitPos += b.size;\n return result;\n }\n },\n finalize(b, ba: ArrayBuffer) {\n b.data = encodeB64(ba, 0, ba.byteLength);\n },\n revive ({type, data}) {\n return new Blob([decodeB64(data)], {type});\n }\n }\n }\n]);\n\nTSON.mustFinalize = ()=>blobsToAwait.length > 0;\n\nTSON.finalize = async (items?: any[]) => {\n const allChunks = await readBlobAsync(new Blob(blobsToAwait), 'binary');\n if (items) {\n for (const item of items) {\n // Manually go through all \"blob\" types in the result\n // and lookup the data slice they point at.\n if (item.$types) {\n let types = item.$types;\n const arrayType = types.$;\n if (arrayType) types = types.$;\n for (let keyPath in types) {\n const typeName = types[keyPath];\n const typeSpec = TSON.types[typeName];\n if (typeSpec && typeSpec.finalize) {\n const b = Dexie.getByKeyPath(item, arrayType ? \"$.\" + keyPath : keyPath);\n typeSpec.finalize(b, allChunks.slice(b.data?.start, b.data?.end));\n }\n }\n }\n }\n }\n // Free up memory\n blobsToAwait = [];\n blobsToAwaitPos = 0;\n}\n", "\nimport Dexie from 'dexie';\nimport { getSchemaString, extractDbSchema } from './helpers';\nimport { DexieExportedTable, DexieExportJsonStructure } from './json-structure';\nimport { TSON } from './tson';\n\nexport interface ExportOptions {\n skipTables?: string[],\n noTransaction?: boolean;\n numRowsPerChunk?: number;\n prettyJson?: boolean;\n filter?: (table: string, value: any, key?: any) => boolean;\n transform?: (table: string, value: any, key?: any) => ({value: any, key?: any});\n progressCallback?: (progress: ExportProgress) => boolean;\n}\n\nexport interface ExportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nconst DEFAULT_ROWS_PER_CHUNK = 2000;\n\nexport async function exportDB(db: Dexie, options?: ExportOptions): Promise {\n options = options || {};\n const skipTables = options.skipTables? options.skipTables: []\n const targetTables = db.tables.filter((x)=> !skipTables.includes(x.name))\n const slices: (string | Blob)[] = [];\n const tables = targetTables.map(table => ({\n name: table.name,\n schema: getSchemaString(table),\n rowCount: 0\n }));\n const {prettyJson} = options!;\n const emptyExport: DexieExportJsonStructure = {\n formatName: \"dexie\",\n formatVersion: 1,\n data: {\n databaseName: db.name,\n databaseVersion: db.verno,\n tables: tables,\n data: []\n }\n };\n \n const {progressCallback} = options!;\n const progress: ExportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: NaN,\n totalTables: tables.length\n };\n\n try {\n if (options!.noTransaction) {\n await exportAll();\n } else {\n await db.transaction('r', db.tables, exportAll);\n }\n } finally {\n TSON.finalize(); // Free up mem if error has occurred\n }\n\n return new Blob(slices,{type: \"text/json\"});\n\n async function exportAll() {\n // Count rows:\n const tablesRowCounts = await Promise.all(targetTables.map(table => table.count()));\n tablesRowCounts.forEach((rowCount, i) => tables[i].rowCount = rowCount);\n progress.totalRows = tablesRowCounts.reduce((p,c)=>p+c);\n\n // Write first JSON slice\n const emptyExportJson = JSON.stringify(emptyExport, undefined, prettyJson ? 2 : undefined);\n const posEndDataArray = emptyExportJson.lastIndexOf(']');\n const firstJsonSlice = emptyExportJson.substring(0, posEndDataArray);\n slices.push(firstJsonSlice);\n\n const filter = options!.filter;\n const transform = options!.transform;\n\n for (const {name: tableName} of tables) {\n const table = db.table(tableName);\n const {primKey} = table.schema;\n const inbound = !!primKey.keyPath;\n const LIMIT = options!.numRowsPerChunk || DEFAULT_ROWS_PER_CHUNK;\n const emptyTableExport: DexieExportedTable = inbound ? {\n tableName: table.name,\n inbound: true,\n rows: []\n } : {\n tableName: table.name,\n inbound: false,\n rows: []\n };\n let emptyTableExportJson = JSON.stringify(emptyTableExport, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) {\n // Increase indentation according to this:\n // {\n // ...\n // data: [\n // ...\n // data: [\n // 123456<---- here\n // ] \n // ]\n // }\n emptyTableExportJson = emptyTableExportJson.split('\\n').join('\\n ');\n }\n const posEndRowsArray = emptyTableExportJson.lastIndexOf(']');\n slices.push(emptyTableExportJson.substring(0, posEndRowsArray));\n let lastKey: any = null;\n let lastNumRows = 0;\n let mayHaveMoreRows = true;\n while (mayHaveMoreRows) {\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const chunkedCollection = lastKey == null ?\n table.limit(LIMIT) :\n table.where(':id').above(lastKey).limit(LIMIT);\n\n const values = await chunkedCollection.toArray();\n\n if (values.length === 0) break;\n\n if (lastKey != null && lastNumRows > 0) {\n // Not initial chunk. Must add a comma:\n slices.push(\",\");\n if (prettyJson) {\n slices.push(\"\\n \");\n }\n }\n\n mayHaveMoreRows = values.length === LIMIT;\n \n if (inbound) {\n const filteredValues = filter ?\n values.filter(value => filter(tableName, value)) :\n values;\n\n const transformedValues = transform ?\n filteredValues.map(value => transform(tableName, value).value) :\n filteredValues;\n\n const tsonValues = transformedValues.map(value => TSON.encapsulate(value));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonValues));\n }\n\n let json = JSON.stringify(tsonValues, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = transformedValues.length;\n lastKey = values.length > 0 ?\n Dexie.getByKeyPath(values[values.length -1], primKey.keyPath as string) :\n null;\n } else {\n const keys = await chunkedCollection.primaryKeys();\n let keyvals = keys.map((key, i) => [key, values[i]]);\n if (filter) keyvals = keyvals.filter(([key, value]) => filter(tableName, value, key));\n if (transform) keyvals = keyvals.map(([key, value]) => {\n const transformResult = transform(tableName, value, key);\n return [transformResult.key, transformResult.value];\n });\n\n const tsonTuples = keyvals.map(tuple => TSON.encapsulate(tuple));\n if (TSON.mustFinalize()) {\n await Dexie.waitFor(TSON.finalize(tsonTuples));\n }\n\n let json = JSON.stringify(tsonTuples, undefined, prettyJson ? 2 : undefined);\n if (prettyJson) json = json.split('\\n').join('\\n ');\n\n // By generating a blob here, we give web platform the opportunity to store the contents\n // on disk and release RAM.\n slices.push(new Blob([json.substring(1, json.length - 1)]));\n lastNumRows = keyvals.length;\n lastKey = keys.length > 0 ?\n keys[keys.length - 1] :\n null;\n }\n progress.completedRows += values.length;\n }\n slices.push(emptyTableExportJson.substr(posEndRowsArray)); // \"]}\"\n progress.completedTables += 1;\n if (progress.completedTables < progress.totalTables) {\n slices.push(\",\");\n }\n }\n slices.push(emptyExportJson.substr(posEndDataArray));\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n }\n}\n", "export const VERSION = 1;\n\n/** Same as DexieExportJsonStructure but without the data.data array */\nexport interface DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n }\n}\n\nexport interface DexieExportJsonStructure extends DexieExportJsonMeta {\n formatName: 'dexie';\n formatVersion: typeof VERSION;\n data: {\n databaseName: string;\n databaseVersion: number;\n tables: Array<{\n name: string;\n schema: string;\n rowCount: number;\n }>;\n data: Array<{\n tableName: string;\n inbound: boolean;\n rows: any[];\n }>;\n }\n}\n\nexport type DexieExportedDatabase = DexieExportJsonStructure[\"data\"];\nexport type DexieExportedTable = DexieExportedDatabase[\"data\"][number];\n", "module.exports = {Stream: function(){}};\n\n", ";(function (clarinet) {\n \"use strict\";\n\n // non node-js needs to set clarinet debug on root\n var env =(typeof process === 'object' && process.env)\n ? process.env\n : self;\n\n clarinet.parser = function (opt) { return new CParser(opt);};\n clarinet.CParser = CParser;\n clarinet.CStream = CStream;\n clarinet.createStream = createStream;\n clarinet.MAX_BUFFER_LENGTH = 10 * 1024 * 1024;\n clarinet.DEBUG = (env.CDEBUG==='debug');\n clarinet.INFO = (env.CDEBUG==='debug' || env.CDEBUG==='info');\n clarinet.EVENTS =\n [ \"value\"\n , \"string\"\n , \"key\"\n , \"openobject\"\n , \"closeobject\"\n , \"openarray\"\n , \"closearray\"\n , \"error\"\n , \"end\"\n , \"ready\"\n ];\n\n var buffers = {\n textNode: undefined,\n numberNode: \"\"\n }\n , streamWraps = clarinet.EVENTS.filter(function (ev) {\n return ev !== \"error\" && ev !== \"end\";\n })\n , S = 0\n , Stream\n ;\n\n clarinet.STATE =\n { BEGIN : S++\n , VALUE : S++ // general stuff\n , OPEN_OBJECT : S++ // {\n , CLOSE_OBJECT : S++ // }\n , OPEN_ARRAY : S++ // [\n , CLOSE_ARRAY : S++ // ]\n , TEXT_ESCAPE : S++ // \\ stuff\n , STRING : S++ // \"\"\n , BACKSLASH : S++\n , END : S++ // No more stack\n , OPEN_KEY : S++ // , \"a\"\n , CLOSE_KEY : S++ // :\n , TRUE : S++ // r\n , TRUE2 : S++ // u\n , TRUE3 : S++ // e\n , FALSE : S++ // a\n , FALSE2 : S++ // l\n , FALSE3 : S++ // s\n , FALSE4 : S++ // e\n , NULL : S++ // u\n , NULL2 : S++ // l\n , NULL3 : S++ // l\n , NUMBER_DECIMAL_POINT : S++ // .\n , NUMBER_DIGIT : S++ // [0-9]\n };\n\n for (var s_ in clarinet.STATE) clarinet.STATE[clarinet.STATE[s_]] = s_;\n\n // switcharoo\n S = clarinet.STATE;\n\n const Char = {\n tab : 0x09, // \\t\n lineFeed : 0x0A, // \\n\n carriageReturn : 0x0D, // \\r\n space : 0x20, // \" \"\n\n doubleQuote : 0x22, // \"\n plus : 0x2B, // +\n comma : 0x2C, // ,\n minus : 0x2D, // -\n period : 0x2E, // .\n\n _0 : 0x30, // 0\n _9 : 0x39, // 9\n\n colon : 0x3A, // :\n\n E : 0x45, // E\n\n openBracket : 0x5B, // [\n backslash : 0x5C, // \\\n closeBracket : 0x5D, // ]\n\n a : 0x61, // a\n b : 0x62, // b\n e : 0x65, // e \n f : 0x66, // f\n l : 0x6C, // l\n n : 0x6E, // n\n r : 0x72, // r\n s : 0x73, // s\n t : 0x74, // t\n u : 0x75, // u\n\n openBrace : 0x7B, // {\n closeBrace : 0x7D, // }\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function f () { this[\"__proto__\"] = o; }\n f.prototype = o;\n return new f;\n };\n }\n\n if (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function (o) {\n return o[\"__proto__\"];\n };\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = [];\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i);\n return a;\n };\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(clarinet.MAX_BUFFER_LENGTH, 10)\n , maxActual = 0\n ;\n for (var buffer in buffers) {\n var len = parser[buffer] === undefined ? 0 : parser[buffer].length;\n if (len > maxAllowed) {\n switch (buffer) {\n case \"text\":\n closeText(parser);\n break;\n\n default:\n error(parser, \"Max buffer length exceeded: \"+ buffer);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n parser.bufferCheckPosition = (clarinet.MAX_BUFFER_LENGTH - maxActual)\n + parser.position;\n }\n\n function clearBuffers (parser) {\n for (var buffer in buffers) {\n parser[buffer] = buffers[buffer];\n }\n }\n\n var stringTokenPattern = /[\\\\\"\\n]/g;\n\n function CParser (opt) {\n if (!(this instanceof CParser)) return new CParser (opt);\n\n var parser = this;\n clearBuffers(parser);\n parser.bufferCheckPosition = clarinet.MAX_BUFFER_LENGTH;\n parser.q = parser.c = parser.p = \"\";\n parser.opt = opt || {};\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.state = S.BEGIN;\n parser.stack = new Array();\n // mostly just for error reporting\n parser.position = parser.column = 0;\n parser.line = 1;\n parser.slashed = false;\n parser.unicodeI = 0;\n parser.unicodeS = null;\n parser.depth = 0;\n emit(parser, \"onready\");\n }\n\n CParser.prototype =\n { end : function () { end(this); }\n , write : write\n , resume : function () { this.error = null; return this; }\n , close : function () { return this.write(null); }\n };\n\n try { Stream = require(\"stream\").Stream; }\n catch (ex) { Stream = function () {}; }\n\n function createStream (opt) { return new CStream(opt); }\n\n function CStream (opt) {\n if (!(this instanceof CStream)) return new CStream(opt);\n\n this._parser = new CParser(opt);\n this.writable = true;\n this.readable = true;\n\n //var Buffer = this.Buffer || function Buffer () {}; // if we don't have Buffers, fake it so we can do `var instanceof Buffer` and not throw an error\n this.bytes_remaining = 0; // number of bytes remaining in multi byte utf8 char to read after split boundary\n this.bytes_in_sequence = 0; // bytes in multi byte utf8 char to read\n this.temp_buffs = { \"2\": new Buffer(2), \"3\": new Buffer(3), \"4\": new Buffer(4) }; // for rebuilding chars split before boundary is reached\n this.string = '';\n\n var me = this;\n Stream.apply(me);\n\n this._parser.onend = function () { me.emit(\"end\"); };\n this._parser.onerror = function (er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, \"on\" + ev,\n { get : function () { return me._parser[\"on\" + ev]; }\n , set : function (h) {\n if (!h) {\n me.removeAllListeners(ev);\n me._parser[\"on\"+ev] = h;\n return h;\n }\n me.on(ev, h);\n }\n , enumerable : true\n , configurable : false\n });\n });\n }\n\n CStream.prototype = Object.create(Stream.prototype,\n { constructor: { value: CStream } });\n\n CStream.prototype.write = function (data) {\n data = new Buffer(data);\n for (var i = 0; i < data.length; i++) {\n var n = data[i];\n\n // check for carry over of a multi byte char split between data chunks\n // & fill temp buffer it with start of this data chunk up to the boundary limit set in the last iteration\n if (this.bytes_remaining > 0) {\n for (var j = 0; j < this.bytes_remaining; j++) {\n this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + j] = data[j];\n }\n this.string = this.temp_buffs[this.bytes_in_sequence].toString();\n this.bytes_in_sequence = this.bytes_remaining = 0;\n\n // move iterator forward by number of byte read during sequencing\n i = i + j - 1;\n\n // pass data to parser and move forward to parse rest of data\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n\n // if no remainder bytes carried over, parse multi byte (>=128) chars one at a time\n if (this.bytes_remaining === 0 && n >= 128) {\n if ((n >= 194) && (n <= 223)) this.bytes_in_sequence = 2;\n if ((n >= 224) && (n <= 239)) this.bytes_in_sequence = 3;\n if ((n >= 240) && (n <= 244)) this.bytes_in_sequence = 4;\n if ((this.bytes_in_sequence + i) > data.length) { // if bytes needed to complete char fall outside data length, we have a boundary split\n\n for (var k = 0; k <= (data.length - 1 - i); k++) {\n this.temp_buffs[this.bytes_in_sequence][k] = data[i + k]; // fill temp data of correct size with bytes available in this chunk\n }\n this.bytes_remaining = (i + this.bytes_in_sequence) - data.length;\n\n // immediately return as we need another chunk to sequence the character\n return true;\n } else {\n this.string = data.slice(i, (i + this.bytes_in_sequence)).toString();\n i = i + this.bytes_in_sequence - 1;\n\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n continue;\n }\n }\n\n // is there a range of characters that are immediately parsable?\n for (var p = i; p < data.length; p++) {\n if (data[p] >= 128) break;\n }\n this.string = data.slice(i, p).toString();\n this._parser.write(this.string);\n this.emit(\"data\", this.string);\n i = p - 1;\n\n // handle any remaining characters using multibyte logic\n continue;\n }\n };\n\n CStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) this._parser.write(chunk.toString());\n this._parser.end();\n return true;\n };\n\n CStream.prototype.on = function (ev, handler) {\n var me = this;\n if (!me._parser[\"on\"+ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\"+ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]]\n : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n\n CStream.prototype.destroy = function () {\n clearBuffers(this._parser);\n this.emit(\"close\");\n };\n\n function emit(parser, event, data) {\n if(clarinet.INFO) console.log('-- emit', event, data);\n if (parser[event]) parser[event](data);\n }\n\n function emitNode(parser, event, data) {\n closeValue(parser);\n emit(parser, event, data);\n }\n\n function closeValue(parser, event) {\n parser.textNode = textopts(parser.opt, parser.textNode);\n if (parser.textNode !== undefined) {\n emit(parser, (event ? event : \"onvalue\"), parser.textNode);\n }\n parser.textNode = undefined;\n }\n\n function closeNumber(parser) {\n if (parser.numberNode)\n emit(parser, \"onvalue\", parseFloat(parser.numberNode));\n parser.numberNode = \"\";\n }\n\n function textopts (opt, text) {\n if (text === undefined) {\n return text;\n }\n if (opt.trim) text = text.trim();\n if (opt.normalize) text = text.replace(/\\s+/g, \" \");\n return text;\n }\n\n function error (parser, er) {\n closeValue(parser);\n er += \"\\nLine: \"+parser.line+\n \"\\nColumn: \"+parser.column+\n \"\\nChar: \"+parser.c;\n er = new Error(er);\n parser.error = er;\n emit(parser, \"onerror\", er);\n return parser;\n }\n\n function end(parser) {\n if (parser.state !== S.VALUE || parser.depth !== 0)\n error(parser, \"Unexpected end\");\n\n closeValue(parser);\n parser.c = \"\";\n parser.closed = true;\n emit(parser, \"onend\");\n CParser.call(parser, parser.opt);\n return parser;\n }\n\n function isWhitespace(c) {\n return c === Char.carriageReturn || c === Char.lineFeed || c === Char.space || c === Char.tab;\n }\n\n function write (chunk) {\n var parser = this;\n if (this.error) throw this.error;\n if (parser.closed) return error(parser,\n \"Cannot write after close. Assign an onready handler.\");\n if (chunk === null) return end(parser);\n var i = 0, c = chunk.charCodeAt(0), p = parser.p;\n if (clarinet.DEBUG) console.log('write -> [' + chunk + ']');\n while (c) {\n p = c;\n parser.c = c = chunk.charCodeAt(i++);\n // if chunk doesnt have next, like streaming char by char\n // this way we need to check if previous is really previous\n // if not we need to reset to what the parser says is the previous\n // from buffer\n if(p !== c ) parser.p = p;\n else p = parser.p;\n\n if(!c) break;\n\n if (clarinet.DEBUG) console.log(i,c,clarinet.STATE[parser.state]);\n parser.position ++;\n if (c === Char.lineFeed) {\n parser.line ++;\n parser.column = 0;\n } else parser.column ++;\n switch (parser.state) {\n\n case S.BEGIN:\n if (c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if (c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if (!isWhitespace(c))\n error(parser, \"Non-whitespace before {[.\");\n continue;\n\n case S.OPEN_KEY:\n case S.OPEN_OBJECT:\n if (isWhitespace(c)) continue;\n if(parser.state === S.OPEN_KEY) parser.stack.push(S.CLOSE_KEY);\n else {\n if(c === Char.closeBrace) {\n emit(parser, 'onopenobject');\n this.depth++;\n emit(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else parser.stack.push(S.CLOSE_OBJECT);\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else error(parser, \"Malformed object key should start with \\\"\");\n continue;\n\n case S.CLOSE_KEY:\n case S.CLOSE_OBJECT:\n if (isWhitespace(c)) continue;\n var event = (parser.state === S.CLOSE_KEY) ? 'key' : 'object';\n if(c === Char.colon) {\n if(parser.state === S.CLOSE_OBJECT) {\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser, 'onopenobject');\n this.depth++;\n } else closeValue(parser, 'onkey');\n parser.state = S.VALUE;\n } else if (c === Char.closeBrace) {\n emitNode(parser, 'oncloseobject');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if(c === Char.comma) {\n if(parser.state === S.CLOSE_OBJECT)\n parser.stack.push(S.CLOSE_OBJECT);\n closeValue(parser);\n parser.state = S.OPEN_KEY;\n } else error(parser, 'Bad object');\n continue;\n\n case S.OPEN_ARRAY: // after an array there always a value\n case S.VALUE:\n if (isWhitespace(c)) continue;\n if(parser.state===S.OPEN_ARRAY) {\n emit(parser, 'onopenarray');\n this.depth++;\n parser.state = S.VALUE;\n if(c === Char.closeBracket) {\n emit(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n continue;\n } else {\n parser.stack.push(S.CLOSE_ARRAY);\n }\n }\n if(c === Char.doubleQuote) parser.state = S.STRING;\n else if(c === Char.openBrace) parser.state = S.OPEN_OBJECT;\n else if(c === Char.openBracket) parser.state = S.OPEN_ARRAY;\n else if(c === Char.t) parser.state = S.TRUE;\n else if(c === Char.f) parser.state = S.FALSE;\n else if(c === Char.n) parser.state = S.NULL;\n else if(c === Char.minus) { // keep and continue\n parser.numberNode += \"-\";\n } else if(Char._0 <= c && c <= Char._9) {\n parser.numberNode += String.fromCharCode(c);\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, \"Bad value\");\n continue;\n\n case S.CLOSE_ARRAY:\n if(c === Char.comma) {\n parser.stack.push(S.CLOSE_ARRAY);\n closeValue(parser, 'onvalue');\n parser.state = S.VALUE;\n } else if (c === Char.closeBracket) {\n emitNode(parser, 'onclosearray');\n this.depth--;\n parser.state = parser.stack.pop() || S.VALUE;\n } else if (isWhitespace(c))\n continue;\n else error(parser, 'Bad array');\n continue;\n\n case S.STRING:\n if (parser.textNode === undefined) {\n parser.textNode = \"\";\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n var starti = i-1\n , slashed = parser.slashed\n , unicodeI = parser.unicodeI\n ;\n STRING_BIGLOOP: while (true) {\n if (clarinet.DEBUG)\n console.log(i,c,clarinet.STATE[parser.state]\n ,slashed);\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n parser.unicodeS += String.fromCharCode(c);\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n parser.textNode += String.fromCharCode(parseInt(parser.unicodeS, 16));\n unicodeI = 0;\n starti = i-1;\n } else {\n unicodeI++;\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n if (!c) break STRING_BIGLOOP;\n }\n if (c === Char.doubleQuote && !slashed) {\n parser.state = parser.stack.pop() || S.VALUE;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n if (c === Char.backslash && !slashed) {\n slashed = true;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n c = chunk.charCodeAt(i++);\n parser.position++;\n if (!c) break;\n }\n if (slashed) {\n slashed = false;\n if (c === Char.n) { parser.textNode += '\\n'; }\n else if (c === Char.r) { parser.textNode += '\\r'; }\n else if (c === Char.t) { parser.textNode += '\\t'; }\n else if (c === Char.f) { parser.textNode += '\\f'; }\n else if (c === Char.b) { parser.textNode += '\\b'; }\n else if (c === Char.u) {\n // \\uxxxx. meh!\n unicodeI = 1;\n parser.unicodeS = '';\n } else {\n parser.textNode += String.fromCharCode(c);\n }\n c = chunk.charCodeAt(i++);\n parser.position++;\n starti = i-1;\n if (!c) break;\n else continue;\n }\n\n stringTokenPattern.lastIndex = i;\n var reResult = stringTokenPattern.exec(chunk);\n if (reResult === null) {\n i = chunk.length+1;\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n i = reResult.index+1;\n c = chunk.charCodeAt(reResult.index);\n if (!c) {\n parser.textNode += chunk.substring(starti, i-1);\n parser.position += i - 1 - starti;\n break;\n }\n }\n parser.slashed = slashed;\n parser.unicodeI = unicodeI;\n continue;\n\n case S.TRUE:\n if (c === Char.r) parser.state = S.TRUE2;\n else error(parser, 'Invalid true started with t'+ c);\n continue;\n\n case S.TRUE2:\n if (c === Char.u) parser.state = S.TRUE3;\n else error(parser, 'Invalid true started with tr'+ c);\n continue;\n\n case S.TRUE3:\n if(c === Char.e) {\n emit(parser, \"onvalue\", true);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid true started with tru'+ c);\n continue;\n\n case S.FALSE:\n if (c === Char.a) parser.state = S.FALSE2;\n else error(parser, 'Invalid false started with f'+ c);\n continue;\n\n case S.FALSE2:\n if (c === Char.l) parser.state = S.FALSE3;\n else error(parser, 'Invalid false started with fa'+ c);\n continue;\n\n case S.FALSE3:\n if (c === Char.s) parser.state = S.FALSE4;\n else error(parser, 'Invalid false started with fal'+ c);\n continue;\n\n case S.FALSE4:\n if (c === Char.e) {\n emit(parser, \"onvalue\", false);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid false started with fals'+ c);\n continue;\n\n case S.NULL:\n if (c === Char.u) parser.state = S.NULL2;\n else error(parser, 'Invalid null started with n'+ c);\n continue;\n\n case S.NULL2:\n if (c === Char.l) parser.state = S.NULL3;\n else error(parser, 'Invalid null started with nu'+ c);\n continue;\n\n case S.NULL3:\n if(c === Char.l) {\n emit(parser, \"onvalue\", null);\n parser.state = parser.stack.pop() || S.VALUE;\n } else error(parser, 'Invalid null started with nul'+ c);\n continue;\n\n case S.NUMBER_DECIMAL_POINT:\n if(c === Char.period) {\n parser.numberNode += \".\";\n parser.state = S.NUMBER_DIGIT;\n } else error(parser, 'Leading zero not followed by .');\n continue;\n\n case S.NUMBER_DIGIT:\n if(Char._0 <= c && c <= Char._9) parser.numberNode += String.fromCharCode(c);\n else if (c === Char.period) {\n if(parser.numberNode.indexOf('.')!==-1)\n error(parser, 'Invalid number has two dots');\n parser.numberNode += \".\";\n } else if (c === Char.e || c === Char.E) {\n if(parser.numberNode.indexOf('e')!==-1 ||\n parser.numberNode.indexOf('E')!==-1 )\n error(parser, 'Invalid number has two exponential');\n parser.numberNode += \"e\";\n } else if (c === Char.plus || c === Char.minus) {\n if(!(p === Char.e || p === Char.E))\n error(parser, 'Invalid symbol in number');\n parser.numberNode += String.fromCharCode(c);\n } else {\n closeNumber(parser);\n i--; // go back one\n parser.state = parser.stack.pop() || S.VALUE;\n }\n continue;\n\n default:\n error(parser, \"Unknown state: \" + parser.state);\n }\n }\n if (parser.position >= parser.bufferCheckPosition)\n checkBufferLength(parser);\n return parser;\n }\n\n})(typeof exports === \"undefined\" ? clarinet = {} : exports);\n", "import clarinet from 'clarinet';\nimport { readBlobAsync, readBlobSync } from './helpers';\n\nexport interface JsonStream {\n pullAsync(numBytes: number): Promise>;\n pullSync(numBytes: number): Partial;\n done(): boolean;\n eof(): boolean;\n result: Partial;\n}\n\nexport function JsonStream(blob: Blob): JsonStream {\n let pos = 0;\n const parser = JsonParser(true);\n\n const rv = {\n async pullAsync(numBytes: number): Promise> {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = await readBlobAsync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n pullSync(numBytes: number): Partial {\n const slize = blob.slice(pos, pos + numBytes);\n pos += numBytes;\n const jsonPart = readBlobSync(slize, 'text');\n const result = parser.write(jsonPart);\n rv.result = result || {};\n return result;\n },\n done() {\n return parser.done();\n },\n eof() {\n return pos >= blob.size;\n },\n result: {}\n }\n\n return rv;\n}\n\n\nexport function JsonParser (allowPartial: boolean) {\n const parser = (clarinet as any).parser();\n let level = 0;\n let result: any;\n const stack: any[][] = [];\n let obj: any;\n let key: string | null;\n let done = false;\n let array = false;\n\n parser.onopenobject = newKey => {\n const newObj = {};\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n key = newKey;\n array = false;\n ++level;\n }\n parser.onkey = newKey => key = newKey;\n parser.onvalue = value => array ? obj.push(value) : obj[key!] = value;\n parser.oncloseobject = ()=>{\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n parser.onopenarray = () => {\n const newObj = [];\n (newObj as any).incomplete = true;\n if (!result) result = newObj;\n if (obj) {\n stack.push([key,obj,array])\n if (allowPartial) {\n if (array) {\n obj.push(newObj);\n } else {\n obj[key!] = newObj;\n }\n }\n }\n obj = newObj;\n array = true;\n key = null;\n ++level;\n }\n parser.onclosearray = () => {\n delete obj.incomplete;\n key = null;\n if (--level === 0) {\n done = true;\n } else {\n const completedObj = obj;\n [key, obj, array] = stack.pop()!;\n if (!allowPartial) {\n if (array) {\n obj.push(completedObj);\n } else {\n obj[key!] = completedObj;\n }\n }\n }\n }\n\n return {\n write(jsonPart: string) {\n parser.write(jsonPart);\n return result;\n },\n done() {\n return done;\n }\n }\n}\n", "import Dexie from 'dexie';\nimport { extractDbSchema } from './helpers';\nimport { DexieExportJsonMeta, DexieExportJsonStructure, VERSION } from './json-structure';\nimport { TSON } from './tson';\nimport { JsonStream } from './json-stream';\n\nexport interface StaticImportOptions {\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n transform?: (table: string, value: any, key?: any) => ({value: any, key?: any});\n progressCallback?: (progress: ImportProgress) => boolean;\n name?: string;\n}\n\nexport interface ImportOptions extends StaticImportOptions {\n acceptMissingTables?: boolean;\n acceptVersionDiff?: boolean;\n acceptNameDiff?: boolean;\n acceptChangedPrimaryKey?: boolean;\n overwriteValues?: boolean;\n clearTablesBeforeImport?: boolean;\n skipTables?: string[],\n noTransaction?: boolean;\n chunkSizeBytes?: number; // Default: DEFAULT_KILOBYTES_PER_CHUNK ( 1MB )\n filter?: (table: string, value: any, key?: any) => boolean;\n transform?: (table: string, value: any, key?: any) => ({value: any, key?: any});\n progressCallback?: (progress: ImportProgress) => boolean;\n}\n\nconst DEFAULT_KILOBYTES_PER_CHUNK = 1024;\n\nexport interface ImportProgress {\n totalTables: number;\n completedTables: number;\n totalRows: number | undefined;\n completedRows: number;\n done: boolean;\n}\n\nexport async function importDB(exportedData: Blob | JsonStream, options?: StaticImportOptions): Promise {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const stream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n const dbExport = stream.result.data!;\n const db = new Dexie(options.name !== undefined ? options.name : dbExport.databaseName);\n db.version(dbExport.databaseVersion).stores(extractDbSchema(dbExport));\n await importInto(db, stream, options.name !== undefined ? {...options, acceptNameDiff: true } : options);\n return db;\n}\n\nexport async function peakImportFile(exportedData: Blob): Promise {\n const stream = JsonStream(exportedData);\n while (!stream.eof()) {\n await stream.pullAsync(5 * 1024); // 5 k is normally enough for the headers. If not, it will just do another go.\n if (stream.result.data && stream.result.data!.data) {\n // @ts-ignore - TS won't allow us to delete a required property - but we are going to cast it.\n delete stream.result.data.data; // Don't return half-baked data array.\n break;\n }\n }\n return stream.result as DexieExportJsonMeta;\n}\n\nexport async function importInto(db: Dexie, exportedData: Blob | JsonStream, options?: ImportOptions): Promise {\n options = options || {}; // All booleans defaults to false.\n const CHUNK_SIZE = options!.chunkSizeBytes || (DEFAULT_KILOBYTES_PER_CHUNK * 1024);\n const jsonStream = await loadUntilWeGotEnoughData(exportedData, CHUNK_SIZE);\n let dbExportFile = jsonStream.result;\n const readBlobsSynchronously = 'FileReaderSync' in self; // true in workers only.\n\n const dbExport = dbExportFile.data!;\n const skipTables = options.skipTables? options.skipTables: []\n\n if (!options!.acceptNameDiff && db.name !== dbExport.databaseName)\n throw new Error(`Name differs. Current database name is ${db.name} but export is ${dbExport.databaseName}`);\n if (!options!.acceptVersionDiff && db.verno !== dbExport.databaseVersion) {\n // Possible feature: Call upgraders in some isolated way if this happens... ?\n throw new Error(`Database version differs. Current database is in version ${db.verno} but export is ${dbExport.databaseVersion}`);\n }\n \n const { progressCallback } = options;\n const progress: ImportProgress = {\n done: false,\n completedRows: 0,\n completedTables: 0,\n totalRows: dbExport.tables.reduce((p, c) => p + c.rowCount, 0),\n totalTables: dbExport.tables.length\n };\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n\n if (options!.clearTablesBeforeImport) {\n for (const table of db.tables) {\n if(skipTables.includes(table.name) ) continue;\n await table.clear();\n }\n }\n\n if (options.noTransaction) {\n await importAll();\n } else {\n await db.transaction('rw', db.tables, importAll);\n } \n\n async function importAll () {\n do {\n for (const tableExport of dbExport.data) {\n if(skipTables.includes(tableExport.tableName)) continue;\n if (!tableExport.rows) break; // Need to pull more!\n if (!(tableExport.rows as any).incomplete && tableExport.rows.length === 0)\n continue;\n\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n const tableName = tableExport.tableName;\n const table = db.table(tableName);\n const tableSchemaStr = dbExport.tables.filter(t => t.name === tableName)[0].schema;\n if (!table) {\n if (!options!.acceptMissingTables)\n throw new Error(`Exported table ${tableExport.tableName} is missing in installed database`);\n else\n continue;\n }\n if (!options!.acceptChangedPrimaryKey &&\n tableSchemaStr.split(',')[0] != table.schema.primKey.src) {\n throw new Error(`Primary key differs for table ${tableExport.tableName}. `);\n }\n\n const sourceRows = tableExport.rows\n \n // Our rows may be partial, so we need to ensure each one is completed before using it\n const rows: any[] = [];\n for(let i = 0; i < sourceRows.length; i++) {\n const obj = sourceRows[i];\n if (!obj.incomplete) {\n rows.push(TSON.revive(obj));\n } else {\n break;\n }\n }\n\n const filter = options!.filter;\n const transform = options!.transform;\n\n let filteredRows = filter ?\n tableExport.inbound ?\n rows.filter(value => filter(tableName, value)) :\n rows.filter(([key, value]) => filter(tableName, value, key)) :\n rows;\n if (transform) {\n filteredRows = filteredRows.map(tableExport.inbound ?\n value => transform(tableName, value).value :\n ([key, value]) => {\n const res = transform(tableName, value, key)\n return [res.key, res.value];\n });\n }\n const [keys, values] = tableExport.inbound ?\n [undefined, filteredRows] :\n [filteredRows.map(row=>row[0]), rows.map(row=>row[1])];\n\n if (options!.overwriteValues)\n await table.bulkPut(values, keys);\n else\n await table.bulkAdd(values, keys);\n \n progress.completedRows += rows.length;\n if (!(rows as any).incomplete) {\n progress.completedTables += 1;\n }\n sourceRows.splice(0, rows.length); // Free up RAM, keep existing array instance.\n }\n\n // Avoid unnescessary loops in \"for (const tableExport of dbExport.data)\" \n while (dbExport.data.length > 0 && dbExport.data[0].rows && !(dbExport.data[0].rows as any).incomplete) {\n // We've already imported all rows from the first table. Delete its occurrence\n dbExport.data.splice(0, 1); \n }\n if (!jsonStream.done() && !jsonStream.eof()) {\n // Pull some more (keeping transaction alive)\n if (readBlobsSynchronously) {\n // If we can pull from blob synchronically, we don't have to\n // keep transaction alive using Dexie.waitFor().\n // This will only be possible in workers.\n jsonStream.pullSync(CHUNK_SIZE);\n } else {\n await Dexie.waitFor(jsonStream.pullAsync(CHUNK_SIZE));\n }\n } else break;\n } while (true)\n }\n progress.done = true;\n if (progressCallback) {\n // Keep ongoing transaction private\n Dexie.ignoreTransaction(()=>progressCallback(progress));\n }\n}\n\nasync function loadUntilWeGotEnoughData(exportedData: Blob | JsonStream, CHUNK_SIZE: number): Promise> {\n const stream = ('slice' in exportedData ?\n JsonStream(exportedData) :\n exportedData);\n\n while (!stream.eof()) {\n await stream.pullAsync(CHUNK_SIZE);\n\n if (stream.result.data && stream.result.data!.data)\n break;\n }\n const dbExportFile = stream.result;\n if (!dbExportFile || dbExportFile.formatName != \"dexie\")\n throw new Error(`Given file is not a dexie export`);\n if (dbExportFile.formatVersion! > VERSION) {\n throw new Error(`Format version ${dbExportFile.formatVersion} not supported`);\n }\n if (!dbExportFile.data!) {\n throw new Error(`No data in export file`);\n }\n if (!dbExportFile.data!.databaseName) {\n throw new Error(`Missing databaseName in export file`);\n }\n if (!dbExportFile.data!.databaseVersion) {\n throw new Error(`Missing databaseVersion in export file`);\n }\n if (!dbExportFile.data!.tables) {\n throw new Error(`Missing tables in export file`);\n }\n return stream; \n}\n", "import Dexie from 'dexie';\nimport { ExportOptions, ExportProgress, exportDB } from './export';\nimport { importDB, peakImportFile, ImportOptions, importInto, StaticImportOptions } from './import';\nimport { DexieExportJsonMeta } from './json-structure';\n\nexport { exportDB, ExportOptions, ExportProgress};\nexport { importDB, importInto, peakImportFile, ImportOptions, DexieExportJsonMeta};\n\n//\n// Extend Dexie interface (typescript-wise)\n//\ndeclare module 'dexie' {\n // Extend methods on db\n interface Dexie {\n export(options?: ExportOptions): Promise;\n import(blob: Blob, options?: ImportOptions): Promise;\n }\n interface DexieConstructor {\n import(blob: Blob, options?: StaticImportOptions): Promise;\n }\n}\n\n//\n// Extend Dexie interface (runtime wise)\n//\n\nDexie.prototype.export = function (this: Dexie, options?: ExportOptions) {\n return exportDB(this, options);\n};\nDexie.prototype.import = function (this: Dexie, blob: Blob, options?: ImportOptions) {\n return importInto(this, blob, options);\n};\nDexie.import = (blob: Blob, options?: StaticImportOptions) => importDB(blob, options);\n\nexport default ()=>{\n throw new Error(\"This addon extends Dexie.prototype globally and does not have be included in Dexie constructor's addons options.\")\n};\n"], - "mappings": "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", - "names": ["d", "b", "__assign", "_global", "asap", "DexieError", "_a", "type", "resolve", "reject", "props", "Entity", "cmp", "Table", "task", "trans", "Promise", "keys", "i", "add", "args", "PropModification", "Collection", "count", "direction", "WhereClause", "addRange", "ranges", "Transaction", "p", "db", "tables", "keyPath", "compound", "result", "req", "openCursor", "query", "ev", "hasGetAll", "oldVersion", "tableChange", "Version", "indexedDB", "Dexie", "RangeSet", "mergeRanges", "target", "rangesOverlap", "safari14Workaround", "index", "primaryKey", "dxTrans", "cache", "key", "state", "Observable", "liveQuery", "_Dexie", "Debug.debug", "Debug.setDebug", "remove", "replacePrefix", "_Dexie", "__assign", "global", "this", "obj", "self", "keys", "TypesonPromise", "Typeson", "ret", "_ref", "cyclic", "stateObj", "_loop", "key", "_loop2", "i", "type", "possibleTypesonPromise", "val", "newVal", "k", "set", "test", "replace", "revive", "Undefined", "_typeof", "Symbol", "iterator", "constructor", "prototype", "_classCallCheck", "instance", "Constructor", "TypeError", "_defineProperties", "target", "props", "length", "descriptor", "enumerable", "configurable", "writable", "Object", "defineProperty", "_defineProperty", "value", "ownKeys", "object", "enumerableOnly", "getOwnPropertySymbols", "symbols", "filter", "sym", "getOwnPropertyDescriptor", "push", "apply", "_objectSpread2", "arguments", "source", "forEach", "getOwnPropertyDescriptors", "defineProperties", "_slicedToArray", "arr", "_arrayWithHoles", "Array", "isArray", "_iterableToArrayLimit", "_arr", "_n", "_d", "_e", "undefined", "_s", "_i", "next", "done", "err", "_unsupportedIterableToArray", "_nonIterableRest", "_toConsumableArray", "_arrayWithoutHoles", "_arrayLikeToArray", "_iterableToArray", "iter", "from", "_nonIterableSpread", "o", "minLen", "n", "toString", "call", "slice", "name", "len", "arr2", "f", "p", "Promise", "__typeson__type__", "toStringTag", "then", "onFulfilled", "onRejected", "_this", "typesonResolve", "typesonReject", "res", "reject", "resolve", "v", "meth", "promArr", "map", "prom", "toStr", "hasOwn$1", "hasOwnProperty", "getProto", "getPrototypeOf", "fnToString", "isThenable", "catchCheck", "isObject", "hasConstructorOf", "a", "b", "proto", "Ctor", "isPlainObject", "escapeKeyPathComponent", "keyPathComponent", "unescapeKeyPathComponent", "getByKeyPath", "keyPath", "period", "indexOf", "innerObj", "setAtKeyPath", "_await", "direct", "hasOwn", "internalStateObjPropsToIgnore", "_async", "args", "e", "nestedPathsFirst", "keypath", "as", "match", "bs", "options", "plainObjectReplacers", "nonplainObjectReplacers", "revivers", "types", "_createClass", "protoProps", "staticProps", "stringify", "replacer", "space", "opts", "stringification", "encapsulated", "encapsulate", "JSON", "stringifySync", "throwOnBadSyncType", "sync", "stringifyAsync", "parse", "text", "reviver", "parseSync", "parseAsync", "specialTypeNames", "returnTypeNames", "rootTypeName", "iterateNone", "checkPromises", "promisesData", "all", "pd", "promResults", "promResult", "_exit", "newPromisesData", "_promisesData$splice2", "splice", "_prData", "parentObj", "detectedType", "encaps", "_encapsulate", "isTypesonPromise", "_invoke", "body", "result", "encaps2", "_result", "that", "refObjs", "refKeys", "promisesDataRoot", "encapsulateObserver", "finish", "typeNames", "values", "getJSONType", "Set", "$types", "$", "_adaptBuiltinStateObjectProperties", "ownKeysObj", "cb", "assign", "vals", "prop", "tmp", "resolvingTypesonPromise", "observerData", "$typeof", "runObserver", "awaitingTypesonPromise", "includes", "Number", "isNaN", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "replaced", "iterateIn", "iterateUnsetNumeric", "refIndex", "cyclicKeypath", "clone", "isPlainObj", "isArr", "ArrayBuffer", "addLength", "kp", "Boolean", "endIterateIn", "end", "endIterateOwn", "vl", "endIterateUnsetNumeric", "plainObject", "replacers", "existing", "concat", "replaceAsync", "replacing", "typeDetected", "encapsulateSync", "encapsulateAsync", "keyPathResolutions", "ignore$Types", "executeReviver", "Error", "reviveAsync", "revivalPromises", "checkUndefined", "retrn", "revivePlainObjects", "plainObjectTypes", "entries", "_ref3", "_ref4", "plain", "sort", "reduce", "reducer", "_ref7", "_revive", "_clone", "_keyPathResolutions$", "_target", "_clone2", "_ret", "typ", "r", "_ref8", "reviveSync", "register", "typeSpecSets", "R", "typeSpec", "typSpec", "typeId", "JSON_TYPES", "spec", "testPlainObjects", "existingReplacer", "Class", "x", "create", "_spec2", "replacerObj", "bind", "start", "fallback", "reviverObj", "isUserObject", "userObject", "s", "arrayNonindexKeys", "some", "String", "parseInt", "sparseUndefined", "undef", "primitiveObjects", "StringObject", "BooleanObject", "NumberObject", "specialNumbers", "nan", "NaN", "infinity", "negativeInfinity", "date", "dt", "time", "getTime", "Date", "regexp", "rexp", "flags", "ignoreCase", "multiline", "sticky", "unicode", "RegExp", "mp", "Map", "st", "chars", "lookup", "Uint8Array", "charCodeAt", "encode", "arraybuffer", "byteOffset", "lngth", "byteLength", "bytes", "base64", "decode", "encoded1", "encoded2", "encoded3", "encoded4", "bufferLength", "_i2", "buffers", "index", "b64", "buffer", "_global", "typedArrays", "typeName", "arrType", "TypedArray", "toLowerCase", "l", "encoded", "b64Obj", "dataview", "DataView", "intlTypes", "IntlCollator", "Intl", "Collator", "c", "resolvedOptions", "locale", "IntlDateTimeFormat", "DateTimeFormat", "dtf", "IntlNumberFormat", "NumberFormat", "nf", "string2arraybuffer", "str", "array", "file", "req", "XMLHttpRequest", "overrideMimeType", "open", "URL", "createObjectURL", "send", "status", "stringContents", "responseText", "lastModified", "File", "reader", "FileReader", "addEventListener", "error", "readAsBinaryString", "bigint", "BigInt", "bigintObject", "cryptokey", "extractable", "crypto", "subtle", "exportKey", "jwk", "algorithm", "usages", "importKey", "imagedata", "d", "data", "width", "height", "ImageData", "Uint8ClampedArray", "imagebitmap", "dataset", "bm", "canvas", "document", "createElement", "getContext", "drawImage", "toDataURL", "ctx", "img", "src", "createImageBitmap", "filelist", "fl", "item", "_files", "blob", "Blob", "StructuredCloning", "typedArray", "encodeB64", "decodeB64", "tableName", "_a", "require$$0", "clarinet", "tableExport", "table", "_a", "_i", "readBlobsSynchronously"] -} diff --git a/vendor/yomitan/lib/handlebars.js b/vendor/yomitan/lib/handlebars.js deleted file mode 100644 index e58077df..00000000 --- a/vendor/yomitan/lib/handlebars.js +++ /dev/null @@ -1,6316 +0,0 @@ -// @ts-nocheck -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); - -// node_modules/handlebars/dist/cjs/handlebars/utils.js -var require_utils = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/utils.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.extend = extend; - exports.indexOf = indexOf2; - exports.escapeExpression = escapeExpression; - exports.isEmpty = isEmpty; - exports.createFrame = createFrame3; - exports.blockParams = blockParams; - exports.appendContextPath = appendContextPath; - var escape = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'", - "`": "`", - "=": "=" - }; - var badChars = /[&<>"'`=]/g; - var possible = /[&<>"'`=]/; - function escapeChar(chr) { - return escape[chr]; - } - function extend(obj) { - for (var i = 1; i < arguments.length; i++) { - for (var key in arguments[i]) { - if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { - obj[key] = arguments[i][key]; - } - } - } - return obj; - } - var toString = Object.prototype.toString; - exports.toString = toString; - var isFunction = function isFunction2(value) { - return typeof value === "function"; - }; - if (isFunction(/x/)) { - exports.isFunction = isFunction = function(value) { - return typeof value === "function" && toString.call(value) === "[object Function]"; - }; - } - exports.isFunction = isFunction; - var isArray = Array.isArray || function(value) { - return value && typeof value === "object" ? toString.call(value) === "[object Array]" : false; - }; - exports.isArray = isArray; - function indexOf2(array, value) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { - return i; - } - } - return -1; - } - function escapeExpression(string) { - if (typeof string !== "string") { - if (string && string.toHTML) { - return string.toHTML(); - } else if (string == null) { - return ""; - } else if (!string) { - return string + ""; - } - string = "" + string; - } - if (!possible.test(string)) { - return string; - } - return string.replace(badChars, escapeChar); - } - function isEmpty(value) { - if (!value && value !== 0) { - return true; - } else if (isArray(value) && value.length === 0) { - return true; - } else { - return false; - } - } - function createFrame3(object) { - var frame = extend({}, object); - frame._parent = object; - return frame; - } - function blockParams(params, ids) { - params.path = ids; - return params; - } - function appendContextPath(contextPath, id) { - return (contextPath ? contextPath + "." : "") + id; - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/exception.js -var require_exception = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/exception.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var errorProps = ["description", "fileName", "lineNumber", "endLineNumber", "message", "name", "number", "stack"]; - function Exception(message, node) { - var loc = node && node.loc, line = void 0, endLineNumber = void 0, column = void 0, endColumn = void 0; - if (loc) { - line = loc.start.line; - endLineNumber = loc.end.line; - column = loc.start.column; - endColumn = loc.end.column; - message += " - " + line + ":" + column; - } - var tmp = Error.prototype.constructor.call(this, message); - for (var idx = 0; idx < errorProps.length; idx++) { - this[errorProps[idx]] = tmp[errorProps[idx]]; - } - if (Error.captureStackTrace) { - Error.captureStackTrace(this, Exception); - } - try { - if (loc) { - this.lineNumber = line; - this.endLineNumber = endLineNumber; - if (Object.defineProperty) { - Object.defineProperty(this, "column", { - value: column, - enumerable: true - }); - Object.defineProperty(this, "endColumn", { - value: endColumn, - enumerable: true - }); - } else { - this.column = column; - this.endColumn = endColumn; - } - } - } catch (nop) { - } - } - Exception.prototype = new Error(); - exports["default"] = Exception; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js -var require_block_helper_missing = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - exports["default"] = function(instance) { - instance.registerHelper("blockHelperMissing", function(context, options) { - var inverse = options.inverse, fn = options.fn; - if (context === true) { - return fn(this); - } else if (context === false || context == null) { - return inverse(this); - } else if (_utils.isArray(context)) { - if (context.length > 0) { - if (options.ids) { - options.ids = [options.name]; - } - return instance.helpers.each(context, options); - } else { - return inverse(this); - } - } else { - if (options.data && options.ids) { - var data = _utils.createFrame(options.data); - data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name); - options = { data }; - } - return fn(context, options); - } - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/each.js -var require_each = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/each.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("each", function(context, options) { - if (!options) { - throw new _exception2["default"]("Must pass iterator to #each"); - } - var fn = options.fn, inverse = options.inverse, i = 0, ret = "", data = void 0, contextPath = void 0; - if (options.data && options.ids) { - contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + "."; - } - if (_utils.isFunction(context)) { - context = context.call(this); - } - if (options.data) { - data = _utils.createFrame(options.data); - } - function execIteration(field, index, last) { - if (data) { - data.key = field; - data.index = index; - data.first = index === 0; - data.last = !!last; - if (contextPath) { - data.contextPath = contextPath + field; - } - } - ret = ret + fn(context[field], { - data, - blockParams: _utils.blockParams([context[field], field], [contextPath + field, null]) - }); - } - if (context && typeof context === "object") { - if (_utils.isArray(context)) { - for (var j = context.length; i < j; i++) { - if (i in context) { - execIteration(i, i, i === context.length - 1); - } - } - } else if (typeof Symbol === "function" && context[Symbol.iterator]) { - var newContext = []; - var iterator = context[Symbol.iterator](); - for (var it = iterator.next(); !it.done; it = iterator.next()) { - newContext.push(it.value); - } - context = newContext; - for (var j = context.length; i < j; i++) { - execIteration(i, i, i === context.length - 1); - } - } else { - (function() { - var priorKey = void 0; - Object.keys(context).forEach(function(key) { - if (priorKey !== void 0) { - execIteration(priorKey, i - 1); - } - priorKey = key; - i++; - }); - if (priorKey !== void 0) { - execIteration(priorKey, i - 1, true); - } - })(); - } - } - if (i === 0) { - ret = inverse(this); - } - return ret; - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js -var require_helper_missing = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("helperMissing", function() { - if (arguments.length === 1) { - return void 0; - } else { - throw new _exception2["default"]('Missing helper: "' + arguments[arguments.length - 1].name + '"'); - } - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/if.js -var require_if = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/if.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("if", function(conditional, options) { - if (arguments.length != 2) { - throw new _exception2["default"]("#if requires exactly one argument"); - } - if (_utils.isFunction(conditional)) { - conditional = conditional.call(this); - } - if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) { - return options.inverse(this); - } else { - return options.fn(this); - } - }); - instance.registerHelper("unless", function(conditional, options) { - if (arguments.length != 2) { - throw new _exception2["default"]("#unless requires exactly one argument"); - } - return instance.helpers["if"].call(this, conditional, { - fn: options.inverse, - inverse: options.fn, - hash: options.hash - }); - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/log.js -var require_log = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/log.js"(exports, module) { - "use strict"; - exports.__esModule = true; - exports["default"] = function(instance) { - instance.registerHelper("log", function() { - var args = [void 0], options = arguments[arguments.length - 1]; - for (var i = 0; i < arguments.length - 1; i++) { - args.push(arguments[i]); - } - var level = 1; - if (options.hash.level != null) { - level = options.hash.level; - } else if (options.data && options.data.level != null) { - level = options.data.level; - } - args[0] = level; - instance.log.apply(instance, args); - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js -var require_lookup = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js"(exports, module) { - "use strict"; - exports.__esModule = true; - exports["default"] = function(instance) { - instance.registerHelper("lookup", function(obj, field, options) { - if (!obj) { - return obj; - } - return options.lookupProperty(obj, field); - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers/with.js -var require_with = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers/with.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - exports["default"] = function(instance) { - instance.registerHelper("with", function(context, options) { - if (arguments.length != 2) { - throw new _exception2["default"]("#with requires exactly one argument"); - } - if (_utils.isFunction(context)) { - context = context.call(this); - } - var fn = options.fn; - if (!_utils.isEmpty(context)) { - var data = options.data; - if (options.data && options.ids) { - data = _utils.createFrame(options.data); - data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]); - } - return fn(context, { - data, - blockParams: _utils.blockParams([context], [data && data.contextPath]) - }); - } else { - return options.inverse(this); - } - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/helpers.js -var require_helpers = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/helpers.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.registerDefaultHelpers = registerDefaultHelpers; - exports.moveHelperToHooks = moveHelperToHooks2; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _helpersBlockHelperMissing = require_block_helper_missing(); - var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing); - var _helpersEach = require_each(); - var _helpersEach2 = _interopRequireDefault(_helpersEach); - var _helpersHelperMissing = require_helper_missing(); - var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing); - var _helpersIf = require_if(); - var _helpersIf2 = _interopRequireDefault(_helpersIf); - var _helpersLog = require_log(); - var _helpersLog2 = _interopRequireDefault(_helpersLog); - var _helpersLookup = require_lookup(); - var _helpersLookup2 = _interopRequireDefault(_helpersLookup); - var _helpersWith = require_with(); - var _helpersWith2 = _interopRequireDefault(_helpersWith); - function registerDefaultHelpers(instance) { - _helpersBlockHelperMissing2["default"](instance); - _helpersEach2["default"](instance); - _helpersHelperMissing2["default"](instance); - _helpersIf2["default"](instance); - _helpersLog2["default"](instance); - _helpersLookup2["default"](instance); - _helpersWith2["default"](instance); - } - function moveHelperToHooks2(instance, helperName, keepHelper) { - if (instance.helpers[helperName]) { - instance.hooks[helperName] = instance.helpers[helperName]; - if (!keepHelper) { - delete instance.helpers[helperName]; - } - } - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js -var require_inline = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - exports["default"] = function(instance) { - instance.registerDecorator("inline", function(fn, props, container, options) { - var ret = fn; - if (!props.partials) { - props.partials = {}; - ret = function(context, options2) { - var original = container.partials; - container.partials = _utils.extend({}, original, props.partials); - var ret2 = fn(context, options2); - container.partials = original; - return ret2; - }; - } - props.partials[options.args[0]] = options.fn; - return ret; - }); - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/decorators.js -var require_decorators = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/decorators.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.registerDefaultDecorators = registerDefaultDecorators; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _decoratorsInline = require_inline(); - var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline); - function registerDefaultDecorators(instance) { - _decoratorsInline2["default"](instance); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/logger.js -var require_logger = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/logger.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - var logger = { - methodMap: ["debug", "info", "warn", "error"], - level: "info", - // Maps a given level value to the `methodMap` indexes above. - lookupLevel: function lookupLevel(level) { - if (typeof level === "string") { - var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase()); - if (levelMap >= 0) { - level = levelMap; - } else { - level = parseInt(level, 10); - } - } - return level; - }, - // Can be overridden in the host environment - log: function log(level) { - level = logger.lookupLevel(level); - if (typeof console !== "undefined" && logger.lookupLevel(logger.level) <= level) { - var method = logger.methodMap[level]; - if (!console[method]) { - method = "log"; - } - for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - message[_key - 1] = arguments[_key]; - } - console[method].apply(console, message); - } - } - }; - exports["default"] = logger; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js -var require_create_new_lookup_object = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.createNewLookupObject = createNewLookupObject; - var _utils = require_utils(); - function createNewLookupObject() { - for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) { - sources[_key] = arguments[_key]; - } - return _utils.extend.apply(void 0, [/* @__PURE__ */ Object.create(null)].concat(sources)); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js -var require_proto_access = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.createProtoAccessControl = createProtoAccessControl2; - exports.resultIsAllowed = resultIsAllowed2; - exports.resetLoggedProperties = resetLoggedProperties; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _createNewLookupObject = require_create_new_lookup_object(); - var _logger = require_logger(); - var _logger2 = _interopRequireDefault(_logger); - var loggedProperties = /* @__PURE__ */ Object.create(null); - function createProtoAccessControl2(runtimeOptions) { - var defaultMethodWhiteList = /* @__PURE__ */ Object.create(null); - defaultMethodWhiteList["constructor"] = false; - defaultMethodWhiteList["__defineGetter__"] = false; - defaultMethodWhiteList["__defineSetter__"] = false; - defaultMethodWhiteList["__lookupGetter__"] = false; - var defaultPropertyWhiteList = /* @__PURE__ */ Object.create(null); - defaultPropertyWhiteList["__proto__"] = false; - return { - properties: { - whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties), - defaultValue: runtimeOptions.allowProtoPropertiesByDefault - }, - methods: { - whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods), - defaultValue: runtimeOptions.allowProtoMethodsByDefault - } - }; - } - function resultIsAllowed2(result, protoAccessControl, propertyName) { - if (typeof result === "function") { - return checkWhiteList(protoAccessControl.methods, propertyName); - } else { - return checkWhiteList(protoAccessControl.properties, propertyName); - } - } - function checkWhiteList(protoAccessControlForType, propertyName) { - if (protoAccessControlForType.whitelist[propertyName] !== void 0) { - return protoAccessControlForType.whitelist[propertyName] === true; - } - if (protoAccessControlForType.defaultValue !== void 0) { - return protoAccessControlForType.defaultValue; - } - logUnexpecedPropertyAccessOnce(propertyName); - return false; - } - function logUnexpecedPropertyAccessOnce(propertyName) { - if (loggedProperties[propertyName] !== true) { - loggedProperties[propertyName] = true; - _logger2["default"].log("error", 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'); - } - } - function resetLoggedProperties() { - Object.keys(loggedProperties).forEach(function(propertyName) { - delete loggedProperties[propertyName]; - }); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/base.js -var require_base = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/base.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.HandlebarsEnvironment = HandlebarsEnvironment; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _utils = require_utils(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _helpers = require_helpers(); - var _decorators = require_decorators(); - var _logger = require_logger(); - var _logger2 = _interopRequireDefault(_logger); - var _internalProtoAccess = require_proto_access(); - var VERSION = "4.7.8"; - exports.VERSION = VERSION; - var COMPILER_REVISION = 8; - exports.COMPILER_REVISION = COMPILER_REVISION; - var LAST_COMPATIBLE_COMPILER_REVISION = 7; - exports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION; - var REVISION_CHANGES = { - 1: "<= 1.0.rc.2", - // 1.0.rc.2 is actually rev2 but doesn't report it - 2: "== 1.0.0-rc.3", - 3: "== 1.0.0-rc.4", - 4: "== 1.x.x", - 5: "== 2.0.0-alpha.x", - 6: ">= 2.0.0-beta.1", - 7: ">= 4.0.0 <4.3.0", - 8: ">= 4.3.0" - }; - exports.REVISION_CHANGES = REVISION_CHANGES; - var objectType = "[object Object]"; - function HandlebarsEnvironment(helpers, partials, decorators) { - this.helpers = helpers || {}; - this.partials = partials || {}; - this.decorators = decorators || {}; - _helpers.registerDefaultHelpers(this); - _decorators.registerDefaultDecorators(this); - } - HandlebarsEnvironment.prototype = { - constructor: HandlebarsEnvironment, - logger: _logger2["default"], - log: _logger2["default"].log, - registerHelper: function registerHelper(name, fn) { - if (_utils.toString.call(name) === objectType) { - if (fn) { - throw new _exception2["default"]("Arg not supported with multiple helpers"); - } - _utils.extend(this.helpers, name); - } else { - this.helpers[name] = fn; - } - }, - unregisterHelper: function unregisterHelper(name) { - delete this.helpers[name]; - }, - registerPartial: function registerPartial(name, partial) { - if (_utils.toString.call(name) === objectType) { - _utils.extend(this.partials, name); - } else { - if (typeof partial === "undefined") { - throw new _exception2["default"]('Attempting to register a partial called "' + name + '" as undefined'); - } - this.partials[name] = partial; - } - }, - unregisterPartial: function unregisterPartial(name) { - delete this.partials[name]; - }, - registerDecorator: function registerDecorator(name, fn) { - if (_utils.toString.call(name) === objectType) { - if (fn) { - throw new _exception2["default"]("Arg not supported with multiple decorators"); - } - _utils.extend(this.decorators, name); - } else { - this.decorators[name] = fn; - } - }, - unregisterDecorator: function unregisterDecorator(name) { - delete this.decorators[name]; - }, - /** - * Reset the memory of illegal property accesses that have already been logged. - * @deprecated should only be used in handlebars test-cases - */ - resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() { - _internalProtoAccess.resetLoggedProperties(); - } - }; - var log = _logger2["default"].log; - exports.log = log; - exports.createFrame = _utils.createFrame; - exports.logger = _logger2["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/safe-string.js -var require_safe_string = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/safe-string.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function SafeString(string) { - this.string = string; - } - SafeString.prototype.toString = SafeString.prototype.toHTML = function() { - return "" + this.string; - }; - exports["default"] = SafeString; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js -var require_wrapHelper = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.wrapHelper = wrapHelper; - function wrapHelper(helper, transformOptionsFn) { - if (typeof helper !== "function") { - return helper; - } - var wrapper = function wrapper2() { - var options = arguments[arguments.length - 1]; - arguments[arguments.length - 1] = transformOptionsFn(options); - return helper.apply(this, arguments); - }; - return wrapper; - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/runtime.js -var require_runtime = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/runtime.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.checkRevision = checkRevision; - exports.template = template; - exports.wrapProgram = wrapProgram; - exports.resolvePartial = resolvePartial; - exports.invokePartial = invokePartial; - exports.noop = noop2; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } - } - newObj["default"] = obj; - return newObj; - } - } - var _utils = require_utils(); - var Utils = _interopRequireWildcard(_utils); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _base = require_base(); - var _helpers = require_helpers(); - var _internalWrapHelper = require_wrapHelper(); - var _internalProtoAccess = require_proto_access(); - function checkRevision(compilerInfo) { - var compilerRevision = compilerInfo && compilerInfo[0] || 1, currentRevision = _base.COMPILER_REVISION; - if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) { - return; - } - if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) { - var runtimeVersions = _base.REVISION_CHANGES[currentRevision], compilerVersions = _base.REVISION_CHANGES[compilerRevision]; - throw new _exception2["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (" + runtimeVersions + ") or downgrade your runtime to an older version (" + compilerVersions + ")."); - } else { - throw new _exception2["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (" + compilerInfo[1] + ")."); - } - } - function template(templateSpec, env) { - if (!env) { - throw new _exception2["default"]("No environment passed to template"); - } - if (!templateSpec || !templateSpec.main) { - throw new _exception2["default"]("Unknown template object: " + typeof templateSpec); - } - templateSpec.main.decorator = templateSpec.main_d; - env.VM.checkRevision(templateSpec.compiler); - var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7; - function invokePartialWrapper(partial, context, options) { - if (options.hash) { - context = Utils.extend({}, context, options.hash); - if (options.ids) { - options.ids[0] = true; - } - } - partial = env.VM.resolvePartial.call(this, partial, context, options); - var extendedOptions = Utils.extend({}, options, { - hooks: this.hooks, - protoAccessControl: this.protoAccessControl - }); - var result = env.VM.invokePartial.call(this, partial, context, extendedOptions); - if (result == null && env.compile) { - options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); - result = options.partials[options.name](context, extendedOptions); - } - if (result != null) { - if (options.indent) { - var lines = result.split("\n"); - for (var i = 0, l = lines.length; i < l; i++) { - if (!lines[i] && i + 1 === l) { - break; - } - lines[i] = options.indent + lines[i]; - } - result = lines.join("\n"); - } - return result; - } else { - throw new _exception2["default"]("The partial " + options.name + " could not be compiled when running in runtime-only mode"); - } - } - var container = { - strict: function strict(obj, name, loc) { - if (!obj || !(name in obj)) { - throw new _exception2["default"]('"' + name + '" not defined in ' + obj, { - loc - }); - } - return container.lookupProperty(obj, name); - }, - lookupProperty: function lookupProperty(parent, propertyName) { - var result = parent[propertyName]; - if (result == null) { - return result; - } - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return result; - } - if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) { - return result; - } - return void 0; - }, - lookup: function lookup(depths, name) { - var len = depths.length; - for (var i = 0; i < len; i++) { - var result = depths[i] && container.lookupProperty(depths[i], name); - if (result != null) { - return depths[i][name]; - } - } - }, - lambda: function lambda(current, context) { - return typeof current === "function" ? current.call(context) : current; - }, - escapeExpression: Utils.escapeExpression, - invokePartial: invokePartialWrapper, - fn: function fn(i) { - var ret2 = templateSpec[i]; - ret2.decorator = templateSpec[i + "_d"]; - return ret2; - }, - programs: [], - program: function program(i, data, declaredBlockParams, blockParams, depths) { - var programWrapper = this.programs[i], fn = this.fn(i); - if (data || depths || blockParams || declaredBlockParams) { - programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); - } else if (!programWrapper) { - programWrapper = this.programs[i] = wrapProgram(this, i, fn); - } - return programWrapper; - }, - data: function data(value, depth) { - while (value && depth--) { - value = value._parent; - } - return value; - }, - mergeIfNeeded: function mergeIfNeeded(param, common) { - var obj = param || common; - if (param && common && param !== common) { - obj = Utils.extend({}, common, param); - } - return obj; - }, - // An empty object to use as replacement for null-contexts - nullContext: Object.seal({}), - noop: env.VM.noop, - compilerInfo: templateSpec.compiler - }; - function ret(context) { - var options = arguments.length <= 1 || arguments[1] === void 0 ? {} : arguments[1]; - var data = options.data; - ret._setup(options); - if (!options.partial && templateSpec.useData) { - data = initData2(context, data); - } - var depths = void 0, blockParams = templateSpec.useBlockParams ? [] : void 0; - if (templateSpec.useDepths) { - if (options.depths) { - depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths; - } else { - depths = [context]; - } - } - function main(context2) { - return "" + templateSpec.main(container, context2, container.helpers, container.partials, data, blockParams, depths); - } - main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); - return main(context, options); - } - ret.isTop = true; - ret._setup = function(options) { - if (!options.partial) { - var mergedHelpers = Utils.extend({}, env.helpers, options.helpers); - wrapHelpersToPassLookupProperty(mergedHelpers, container); - container.helpers = mergedHelpers; - if (templateSpec.usePartial) { - container.partials = container.mergeIfNeeded(options.partials, env.partials); - } - if (templateSpec.usePartial || templateSpec.useDecorators) { - container.decorators = Utils.extend({}, env.decorators, options.decorators); - } - container.hooks = {}; - container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options); - var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7; - _helpers.moveHelperToHooks(container, "helperMissing", keepHelperInHelpers); - _helpers.moveHelperToHooks(container, "blockHelperMissing", keepHelperInHelpers); - } else { - container.protoAccessControl = options.protoAccessControl; - container.helpers = options.helpers; - container.partials = options.partials; - container.decorators = options.decorators; - container.hooks = options.hooks; - } - }; - ret._child = function(i, data, blockParams, depths) { - if (templateSpec.useBlockParams && !blockParams) { - throw new _exception2["default"]("must pass block params"); - } - if (templateSpec.useDepths && !depths) { - throw new _exception2["default"]("must pass parent depths"); - } - return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); - }; - return ret; - } - function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { - function prog(context) { - var options = arguments.length <= 1 || arguments[1] === void 0 ? {} : arguments[1]; - var currentDepths = depths; - if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) { - currentDepths = [context].concat(depths); - } - return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); - } - prog = executeDecorators(fn, prog, container, depths, data, blockParams); - prog.program = i; - prog.depth = depths ? depths.length : 0; - prog.blockParams = declaredBlockParams || 0; - return prog; - } - function resolvePartial(partial, context, options) { - if (!partial) { - if (options.name === "@partial-block") { - partial = options.data["partial-block"]; - } else { - partial = options.partials[options.name]; - } - } else if (!partial.call && !options.name) { - options.name = partial; - partial = options.partials[partial]; - } - return partial; - } - function invokePartial(partial, context, options) { - var currentPartialBlock = options.data && options.data["partial-block"]; - options.partial = true; - if (options.ids) { - options.data.contextPath = options.ids[0] || options.data.contextPath; - } - var partialBlock = void 0; - if (options.fn && options.fn !== noop2) { - (function() { - options.data = _base.createFrame(options.data); - var fn = options.fn; - partialBlock = options.data["partial-block"] = function partialBlockWrapper(context2) { - var options2 = arguments.length <= 1 || arguments[1] === void 0 ? {} : arguments[1]; - options2.data = _base.createFrame(options2.data); - options2.data["partial-block"] = currentPartialBlock; - return fn(context2, options2); - }; - if (fn.partials) { - options.partials = Utils.extend({}, options.partials, fn.partials); - } - })(); - } - if (partial === void 0 && partialBlock) { - partial = partialBlock; - } - if (partial === void 0) { - throw new _exception2["default"]("The partial " + options.name + " could not be found"); - } else if (partial instanceof Function) { - return partial(context, options); - } - } - function noop2() { - return ""; - } - function initData2(context, data) { - if (!data || !("root" in data)) { - data = data ? _base.createFrame(data) : {}; - data.root = context; - } - return data; - } - function executeDecorators(fn, prog, container, depths, data, blockParams) { - if (fn.decorator) { - var props = {}; - prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); - Utils.extend(prog, props); - } - return prog; - } - function wrapHelpersToPassLookupProperty(mergedHelpers, container) { - Object.keys(mergedHelpers).forEach(function(helperName) { - var helper = mergedHelpers[helperName]; - mergedHelpers[helperName] = passLookupPropertyOption(helper, container); - }); - } - function passLookupPropertyOption(helper, container) { - var lookupProperty = container.lookupProperty; - return _internalWrapHelper.wrapHelper(helper, function(options) { - return Utils.extend({ lookupProperty }, options); - }); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/no-conflict.js -var require_no_conflict = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/no-conflict.js"(exports, module) { - "use strict"; - exports.__esModule = true; - exports["default"] = function(Handlebars3) { - (function() { - if (typeof globalThis === "object") return; - Object.prototype.__defineGetter__("__magic__", function() { - return this; - }); - __magic__.globalThis = __magic__; - delete Object.prototype.__magic__; - })(); - var $Handlebars = globalThis.Handlebars; - Handlebars3.noConflict = function() { - if (globalThis.Handlebars === Handlebars3) { - globalThis.Handlebars = $Handlebars; - } - return Handlebars3; - }; - }; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars.runtime.js -var require_handlebars_runtime = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars.runtime.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } - } - newObj["default"] = obj; - return newObj; - } - } - var _handlebarsBase = require_base(); - var base = _interopRequireWildcard(_handlebarsBase); - var _handlebarsSafeString = require_safe_string(); - var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString); - var _handlebarsException = require_exception(); - var _handlebarsException2 = _interopRequireDefault(_handlebarsException); - var _handlebarsUtils = require_utils(); - var Utils = _interopRequireWildcard(_handlebarsUtils); - var _handlebarsRuntime = require_runtime(); - var runtime = _interopRequireWildcard(_handlebarsRuntime); - var _handlebarsNoConflict = require_no_conflict(); - var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); - function create() { - var hb = new base.HandlebarsEnvironment(); - Utils.extend(hb, base); - hb.SafeString = _handlebarsSafeString2["default"]; - hb.Exception = _handlebarsException2["default"]; - hb.Utils = Utils; - hb.escapeExpression = Utils.escapeExpression; - hb.VM = runtime; - hb.template = function(spec) { - return runtime.template(spec, hb); - }; - return hb; - } - var inst = create(); - inst.create = create; - _handlebarsNoConflict2["default"](inst); - inst["default"] = inst; - exports["default"] = inst; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js -var require_ast = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var AST2 = { - // Public API used to evaluate derived attributes regarding AST nodes - helpers: { - // a mustache is definitely a helper if: - // * it is an eligible helper, and - // * it has at least one parameter or hash segment - helperExpression: function helperExpression(node) { - return node.type === "SubExpression" || (node.type === "MustacheStatement" || node.type === "BlockStatement") && !!(node.params && node.params.length || node.hash); - }, - scopedId: function scopedId(path) { - return /^\.|this\b/.test(path.original); - }, - // an ID is simple if it only has one part, and that part is not - // `..` or `this`. - simpleId: function simpleId(path) { - return path.parts.length === 1 && !AST2.helpers.scopedId(path) && !path.depth; - } - } - }; - exports["default"] = AST2; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js -var require_parser = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var handlebars = function() { - var parser = { - trace: function trace() { - }, - yy: {}, - symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 }, - terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" }, - productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { - var $0 = $$.length - 1; - switch (yystate) { - case 1: - return $$[$0 - 1]; - break; - case 2: - this.$ = yy.prepareProgram($$[$0]); - break; - case 3: - this.$ = $$[$0]; - break; - case 4: - this.$ = $$[$0]; - break; - case 5: - this.$ = $$[$0]; - break; - case 6: - this.$ = $$[$0]; - break; - case 7: - this.$ = $$[$0]; - break; - case 8: - this.$ = $$[$0]; - break; - case 9: - this.$ = { - type: "CommentStatement", - value: yy.stripComment($$[$0]), - strip: yy.stripFlags($$[$0], $$[$0]), - loc: yy.locInfo(this._$) - }; - break; - case 10: - this.$ = { - type: "ContentStatement", - original: $$[$0], - value: $$[$0], - loc: yy.locInfo(this._$) - }; - break; - case 11: - this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); - break; - case 12: - this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] }; - break; - case 13: - this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$); - break; - case 14: - this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$); - break; - case 15: - this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 16: - this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 17: - this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; - break; - case 18: - this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] }; - break; - case 19: - var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$), program = yy.prepareProgram([inverse], $$[$0 - 1].loc); - program.chained = true; - this.$ = { strip: $$[$0 - 2].strip, program, chain: true }; - break; - case 20: - this.$ = $$[$0]; - break; - case 21: - this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) }; - break; - case 22: - this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); - break; - case 23: - this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); - break; - case 24: - this.$ = { - type: "PartialStatement", - name: $$[$0 - 3], - params: $$[$0 - 2], - hash: $$[$0 - 1], - indent: "", - strip: yy.stripFlags($$[$0 - 4], $$[$0]), - loc: yy.locInfo(this._$) - }; - break; - case 25: - this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); - break; - case 26: - this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) }; - break; - case 27: - this.$ = $$[$0]; - break; - case 28: - this.$ = $$[$0]; - break; - case 29: - this.$ = { - type: "SubExpression", - path: $$[$0 - 3], - params: $$[$0 - 2], - hash: $$[$0 - 1], - loc: yy.locInfo(this._$) - }; - break; - case 30: - this.$ = { type: "Hash", pairs: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 31: - this.$ = { type: "HashPair", key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 32: - this.$ = yy.id($$[$0 - 1]); - break; - case 33: - this.$ = $$[$0]; - break; - case 34: - this.$ = $$[$0]; - break; - case 35: - this.$ = { type: "StringLiteral", value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) }; - break; - case 36: - this.$ = { type: "NumberLiteral", value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) }; - break; - case 37: - this.$ = { type: "BooleanLiteral", value: $$[$0] === "true", original: $$[$0] === "true", loc: yy.locInfo(this._$) }; - break; - case 38: - this.$ = { type: "UndefinedLiteral", original: void 0, value: void 0, loc: yy.locInfo(this._$) }; - break; - case 39: - this.$ = { type: "NullLiteral", original: null, value: null, loc: yy.locInfo(this._$) }; - break; - case 40: - this.$ = $$[$0]; - break; - case 41: - this.$ = $$[$0]; - break; - case 42: - this.$ = yy.preparePath(true, $$[$0], this._$); - break; - case 43: - this.$ = yy.preparePath(false, $$[$0], this._$); - break; - case 44: - $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] }); - this.$ = $$[$0 - 2]; - break; - case 45: - this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }]; - break; - case 46: - this.$ = []; - break; - case 47: - $$[$0 - 1].push($$[$0]); - break; - case 48: - this.$ = []; - break; - case 49: - $$[$0 - 1].push($$[$0]); - break; - case 50: - this.$ = []; - break; - case 51: - $$[$0 - 1].push($$[$0]); - break; - case 58: - this.$ = []; - break; - case 59: - $$[$0 - 1].push($$[$0]); - break; - case 64: - this.$ = []; - break; - case 65: - $$[$0 - 1].push($$[$0]); - break; - case 70: - this.$ = []; - break; - case 71: - $$[$0 - 1].push($$[$0]); - break; - case 78: - this.$ = []; - break; - case 79: - $$[$0 - 1].push($$[$0]); - break; - case 82: - this.$ = []; - break; - case 83: - $$[$0 - 1].push($$[$0]); - break; - case 86: - this.$ = []; - break; - case 87: - $$[$0 - 1].push($$[$0]); - break; - case 90: - this.$ = []; - break; - case 91: - $$[$0 - 1].push($$[$0]); - break; - case 94: - this.$ = []; - break; - case 95: - $$[$0 - 1].push($$[$0]); - break; - case 98: - this.$ = [$$[$0]]; - break; - case 99: - $$[$0 - 1].push($$[$0]); - break; - case 100: - this.$ = [$$[$0]]; - break; - case 101: - $$[$0 - 1].push($$[$0]); - break; - } - }, - table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }], - defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] }, - parseError: function parseError(str, hash) { - throw new Error(str); - }, - parse: function parse(input) { - var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - this.yy.parser = this; - if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - var ranges = this.lexer.options && this.lexer.options.ranges; - if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError; - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - function lex() { - var token; - token = self.lexer.lex() || 1; - if (typeof token !== "number") { - token = self.symbols_[token] || token; - } - return token; - } - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == "undefined") { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === "undefined" || !action.length || !action[0]) { - var errStr = ""; - if (!recovering) { - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'" + this.terminals_[p] + "'"); - } - if (this.lexer.showPosition) { - errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; - } else { - errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); - } - this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected }); - } - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) recovering--; - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column }; - if (ranges) { - yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]]; - } - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - if (typeof r !== "undefined") { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } - } - return true; - } - }; - var lexer = function() { - var lexer2 = { - EOF: 1, - parseError: function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, - setInput: function setInput(input) { - this._input = input; - this._more = this._less = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ""; - this.conditionStack = ["INITIAL"]; - this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }; - if (this.options.ranges) this.yylloc.range = [0, 0]; - this.offset = 0; - return this; - }, - input: function input() { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) this.yylloc.range[1]++; - this._input = this._input.slice(1); - return ch; - }, - unput: function unput(ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - if (lines.length - 1) this.yylineno -= lines.length - 1; - var r = this.yylloc.range; - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len - }; - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; - } - return this; - }, - more: function more() { - this._more = true; - return this; - }, - less: function less(n) { - this.unput(this.match.slice(n)); - }, - pastInput: function pastInput() { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); - }, - upcomingInput: function upcomingInput() { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20 - next.length); - } - return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, ""); - }, - showPosition: function showPosition() { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, - next: function next() { - if (this.done) { - return this.EOF; - } - if (!this._input) this.done = true; - var token, match, tempMatch, index, col, lines; - if (!this._more) { - this.yytext = ""; - this.match = ""; - } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (!this.options.flex) break; - } - } - if (match) { - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) this.yylineno += lines.length; - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length - }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) this.done = false; - if (token) return token; - else return; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { text: "", token: null, line: this.yylineno }); - } - }, - lex: function lex() { - var r = this.next(); - if (typeof r !== "undefined") { - return r; - } else { - return this.lex(); - } - }, - begin: function begin(condition) { - this.conditionStack.push(condition); - }, - popState: function popState() { - return this.conditionStack.pop(); - }, - _currentRules: function _currentRules() { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - }, - topState: function topState() { - return this.conditionStack[this.conditionStack.length - 2]; - }, - pushState: function begin(condition) { - this.begin(condition); - } - }; - lexer2.options = {}; - lexer2.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { - function strip(start, end) { - return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start); - } - var YYSTATE = YY_START; - switch ($avoiding_name_collisions) { - case 0: - if (yy_.yytext.slice(-2) === "\\\\") { - strip(0, 1); - this.begin("mu"); - } else if (yy_.yytext.slice(-1) === "\\") { - strip(0, 1); - this.begin("emu"); - } else { - this.begin("mu"); - } - if (yy_.yytext) return 15; - break; - case 1: - return 15; - break; - case 2: - this.popState(); - return 15; - break; - case 3: - this.begin("raw"); - return 15; - break; - case 4: - this.popState(); - if (this.conditionStack[this.conditionStack.length - 1] === "raw") { - return 15; - } else { - strip(5, 9); - return "END_RAW_BLOCK"; - } - break; - case 5: - return 15; - break; - case 6: - this.popState(); - return 14; - break; - case 7: - return 65; - break; - case 8: - return 68; - break; - case 9: - return 19; - break; - case 10: - this.popState(); - this.begin("raw"); - return 23; - break; - case 11: - return 55; - break; - case 12: - return 60; - break; - case 13: - return 29; - break; - case 14: - return 47; - break; - case 15: - this.popState(); - return 44; - break; - case 16: - this.popState(); - return 44; - break; - case 17: - return 34; - break; - case 18: - return 39; - break; - case 19: - return 51; - break; - case 20: - return 48; - break; - case 21: - this.unput(yy_.yytext); - this.popState(); - this.begin("com"); - break; - case 22: - this.popState(); - return 14; - break; - case 23: - return 48; - break; - case 24: - return 73; - break; - case 25: - return 72; - break; - case 26: - return 72; - break; - case 27: - return 87; - break; - case 28: - break; - case 29: - this.popState(); - return 54; - break; - case 30: - this.popState(); - return 33; - break; - case 31: - yy_.yytext = strip(1, 2).replace(/\\"/g, '"'); - return 80; - break; - case 32: - yy_.yytext = strip(1, 2).replace(/\\'/g, "'"); - return 80; - break; - case 33: - return 85; - break; - case 34: - return 82; - break; - case 35: - return 82; - break; - case 36: - return 83; - break; - case 37: - return 84; - break; - case 38: - return 81; - break; - case 39: - return 75; - break; - case 40: - return 77; - break; - case 41: - return 72; - break; - case 42: - yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, "$1"); - return 72; - break; - case 43: - return "INVALID"; - break; - case 44: - return 5; - break; - } - }; - lexer2.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/]; - lexer2.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } }; - return lexer2; - }(); - parser.lexer = lexer; - function Parser() { - this.yy = {}; - } - Parser.prototype = parser; - parser.Parser = Parser; - return new Parser(); - }(); - exports["default"] = handlebars; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js -var require_visitor = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - function Visitor() { - this.parents = []; - } - Visitor.prototype = { - constructor: Visitor, - mutating: false, - // Visits a given value. If mutating, will replace the value if necessary. - acceptKey: function acceptKey(node, name) { - var value = this.accept(node[name]); - if (this.mutating) { - if (value && !Visitor.prototype[value.type]) { - throw new _exception2["default"]('Unexpected node type "' + value.type + '" found when accepting ' + name + " on " + node.type); - } - node[name] = value; - } - }, - // Performs an accept operation with added sanity check to ensure - // required keys are not removed. - acceptRequired: function acceptRequired(node, name) { - this.acceptKey(node, name); - if (!node[name]) { - throw new _exception2["default"](node.type + " requires " + name); - } - }, - // Traverses a given array. If mutating, empty respnses will be removed - // for child elements. - acceptArray: function acceptArray(array) { - for (var i = 0, l = array.length; i < l; i++) { - this.acceptKey(array, i); - if (!array[i]) { - array.splice(i, 1); - i--; - l--; - } - } - }, - accept: function accept(object) { - if (!object) { - return; - } - if (!this[object.type]) { - throw new _exception2["default"]("Unknown type: " + object.type, object); - } - if (this.current) { - this.parents.unshift(this.current); - } - this.current = object; - var ret = this[object.type](object); - this.current = this.parents.shift(); - if (!this.mutating || ret) { - return ret; - } else if (ret !== false) { - return object; - } - }, - Program: function Program(program) { - this.acceptArray(program.body); - }, - MustacheStatement: visitSubExpression, - Decorator: visitSubExpression, - BlockStatement: visitBlock, - DecoratorBlock: visitBlock, - PartialStatement: visitPartial, - PartialBlockStatement: function PartialBlockStatement(partial) { - visitPartial.call(this, partial); - this.acceptKey(partial, "program"); - }, - ContentStatement: function ContentStatement() { - }, - CommentStatement: function CommentStatement() { - }, - SubExpression: visitSubExpression, - PathExpression: function PathExpression() { - }, - StringLiteral: function StringLiteral() { - }, - NumberLiteral: function NumberLiteral() { - }, - BooleanLiteral: function BooleanLiteral() { - }, - UndefinedLiteral: function UndefinedLiteral() { - }, - NullLiteral: function NullLiteral() { - }, - Hash: function Hash(hash) { - this.acceptArray(hash.pairs); - }, - HashPair: function HashPair(pair) { - this.acceptRequired(pair, "value"); - } - }; - function visitSubExpression(mustache) { - this.acceptRequired(mustache, "path"); - this.acceptArray(mustache.params); - this.acceptKey(mustache, "hash"); - } - function visitBlock(block) { - visitSubExpression.call(this, block); - this.acceptKey(block, "program"); - this.acceptKey(block, "inverse"); - } - function visitPartial(partial) { - this.acceptRequired(partial, "name"); - this.acceptArray(partial.params); - this.acceptKey(partial, "hash"); - } - exports["default"] = Visitor; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js -var require_whitespace_control = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _visitor = require_visitor(); - var _visitor2 = _interopRequireDefault(_visitor); - function WhitespaceControl() { - var options = arguments.length <= 0 || arguments[0] === void 0 ? {} : arguments[0]; - this.options = options; - } - WhitespaceControl.prototype = new _visitor2["default"](); - WhitespaceControl.prototype.Program = function(program) { - var doStandalone = !this.options.ignoreStandalone; - var isRoot = !this.isRootSeen; - this.isRootSeen = true; - var body = program.body; - for (var i = 0, l = body.length; i < l; i++) { - var current = body[i], strip = this.accept(current); - if (!strip) { - continue; - } - var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), _isNextWhitespace = isNextWhitespace(body, i, isRoot), openStandalone = strip.openStandalone && _isPrevWhitespace, closeStandalone = strip.closeStandalone && _isNextWhitespace, inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace; - if (strip.close) { - omitRight(body, i, true); - } - if (strip.open) { - omitLeft(body, i, true); - } - if (doStandalone && inlineStandalone) { - omitRight(body, i); - if (omitLeft(body, i)) { - if (current.type === "PartialStatement") { - current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1]; - } - } - } - if (doStandalone && openStandalone) { - omitRight((current.program || current.inverse).body); - omitLeft(body, i); - } - if (doStandalone && closeStandalone) { - omitRight(body, i); - omitLeft((current.inverse || current.program).body); - } - } - return program; - }; - WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(block) { - this.accept(block.program); - this.accept(block.inverse); - var program = block.program || block.inverse, inverse = block.program && block.inverse, firstInverse = inverse, lastInverse = inverse; - if (inverse && inverse.chained) { - firstInverse = inverse.body[0].program; - while (lastInverse.chained) { - lastInverse = lastInverse.body[lastInverse.body.length - 1].program; - } - } - var strip = { - open: block.openStrip.open, - close: block.closeStrip.close, - // Determine the standalone candiacy. Basically flag our content as being possibly standalone - // so our parent can determine if we actually are standalone - openStandalone: isNextWhitespace(program.body), - closeStandalone: isPrevWhitespace((firstInverse || program).body) - }; - if (block.openStrip.close) { - omitRight(program.body, null, true); - } - if (inverse) { - var inverseStrip = block.inverseStrip; - if (inverseStrip.open) { - omitLeft(program.body, null, true); - } - if (inverseStrip.close) { - omitRight(firstInverse.body, null, true); - } - if (block.closeStrip.open) { - omitLeft(lastInverse.body, null, true); - } - if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) { - omitLeft(program.body); - omitRight(firstInverse.body); - } - } else if (block.closeStrip.open) { - omitLeft(program.body, null, true); - } - return strip; - }; - WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(mustache) { - return mustache.strip; - }; - WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(node) { - var strip = node.strip || {}; - return { - inlineStandalone: true, - open: strip.open, - close: strip.close - }; - }; - function isPrevWhitespace(body, i, isRoot) { - if (i === void 0) { - i = body.length; - } - var prev = body[i - 1], sibling = body[i - 2]; - if (!prev) { - return isRoot; - } - if (prev.type === "ContentStatement") { - return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original); - } - } - function isNextWhitespace(body, i, isRoot) { - if (i === void 0) { - i = -1; - } - var next = body[i + 1], sibling = body[i + 2]; - if (!next) { - return isRoot; - } - if (next.type === "ContentStatement") { - return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original); - } - } - function omitRight(body, i, multiple) { - var current = body[i == null ? 0 : i + 1]; - if (!current || current.type !== "ContentStatement" || !multiple && current.rightStripped) { - return; - } - var original = current.value; - current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ""); - current.rightStripped = current.value !== original; - } - function omitLeft(body, i, multiple) { - var current = body[i == null ? body.length - 1 : i - 1]; - if (!current || current.type !== "ContentStatement" || !multiple && current.leftStripped) { - return; - } - var original = current.value; - current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ""); - current.leftStripped = current.value !== original; - return current.leftStripped; - } - exports["default"] = WhitespaceControl; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js -var require_helpers2 = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.SourceLocation = SourceLocation; - exports.id = id; - exports.stripFlags = stripFlags; - exports.stripComment = stripComment; - exports.preparePath = preparePath; - exports.prepareMustache = prepareMustache; - exports.prepareRawBlock = prepareRawBlock; - exports.prepareBlock = prepareBlock; - exports.prepareProgram = prepareProgram; - exports.preparePartialBlock = preparePartialBlock; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - function validateClose(open, close) { - close = close.path ? close.path.original : close; - if (open.path.original !== close) { - var errorNode = { loc: open.path.loc }; - throw new _exception2["default"](open.path.original + " doesn't match " + close, errorNode); - } - } - function SourceLocation(source, locInfo) { - this.source = source; - this.start = { - line: locInfo.first_line, - column: locInfo.first_column - }; - this.end = { - line: locInfo.last_line, - column: locInfo.last_column - }; - } - function id(token) { - if (/^\[.*\]$/.test(token)) { - return token.substring(1, token.length - 1); - } else { - return token; - } - } - function stripFlags(open, close) { - return { - open: open.charAt(2) === "~", - close: close.charAt(close.length - 3) === "~" - }; - } - function stripComment(comment) { - return comment.replace(/^\{\{~?!-?-?/, "").replace(/-?-?~?\}\}$/, ""); - } - function preparePath(data, parts, loc) { - loc = this.locInfo(loc); - var original = data ? "@" : "", dig = [], depth = 0; - for (var i = 0, l = parts.length; i < l; i++) { - var part = parts[i].part, isLiteral = parts[i].original !== part; - original += (parts[i].separator || "") + part; - if (!isLiteral && (part === ".." || part === "." || part === "this")) { - if (dig.length > 0) { - throw new _exception2["default"]("Invalid path: " + original, { loc }); - } else if (part === "..") { - depth++; - } - } else { - dig.push(part); - } - } - return { - type: "PathExpression", - data, - depth, - parts: dig, - original, - loc - }; - } - function prepareMustache(path, params, hash, open, strip, locInfo) { - var escapeFlag = open.charAt(3) || open.charAt(2), escaped = escapeFlag !== "{" && escapeFlag !== "&"; - var decorator = /\*/.test(open); - return { - type: decorator ? "Decorator" : "MustacheStatement", - path, - params, - hash, - escaped, - strip, - loc: this.locInfo(locInfo) - }; - } - function prepareRawBlock(openRawBlock, contents, close, locInfo) { - validateClose(openRawBlock, close); - locInfo = this.locInfo(locInfo); - var program = { - type: "Program", - body: contents, - strip: {}, - loc: locInfo - }; - return { - type: "BlockStatement", - path: openRawBlock.path, - params: openRawBlock.params, - hash: openRawBlock.hash, - program, - openStrip: {}, - inverseStrip: {}, - closeStrip: {}, - loc: locInfo - }; - } - function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) { - if (close && close.path) { - validateClose(openBlock, close); - } - var decorator = /\*/.test(openBlock.open); - program.blockParams = openBlock.blockParams; - var inverse = void 0, inverseStrip = void 0; - if (inverseAndProgram) { - if (decorator) { - throw new _exception2["default"]("Unexpected inverse block on decorator", inverseAndProgram); - } - if (inverseAndProgram.chain) { - inverseAndProgram.program.body[0].closeStrip = close.strip; - } - inverseStrip = inverseAndProgram.strip; - inverse = inverseAndProgram.program; - } - if (inverted) { - inverted = inverse; - inverse = program; - program = inverted; - } - return { - type: decorator ? "DecoratorBlock" : "BlockStatement", - path: openBlock.path, - params: openBlock.params, - hash: openBlock.hash, - program, - inverse, - openStrip: openBlock.strip, - inverseStrip, - closeStrip: close && close.strip, - loc: this.locInfo(locInfo) - }; - } - function prepareProgram(statements, loc) { - if (!loc && statements.length) { - var firstLoc = statements[0].loc, lastLoc = statements[statements.length - 1].loc; - if (firstLoc && lastLoc) { - loc = { - source: firstLoc.source, - start: { - line: firstLoc.start.line, - column: firstLoc.start.column - }, - end: { - line: lastLoc.end.line, - column: lastLoc.end.column - } - }; - } - } - return { - type: "Program", - body: statements, - strip: {}, - loc - }; - } - function preparePartialBlock(open, program, close, locInfo) { - validateClose(open, close); - return { - type: "PartialBlockStatement", - name: open.path, - params: open.params, - hash: open.hash, - program, - openStrip: open.strip, - closeStrip: close && close.strip, - loc: this.locInfo(locInfo) - }; - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/base.js -var require_base2 = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/base.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.parseWithoutProcessing = parseWithoutProcessing; - exports.parse = parse; - function _interopRequireWildcard(obj) { - if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } - } - newObj["default"] = obj; - return newObj; - } - } - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _parser = require_parser(); - var _parser2 = _interopRequireDefault(_parser); - var _whitespaceControl = require_whitespace_control(); - var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl); - var _helpers = require_helpers2(); - var Helpers = _interopRequireWildcard(_helpers); - var _utils = require_utils(); - exports.parser = _parser2["default"]; - var yy = {}; - _utils.extend(yy, Helpers); - function parseWithoutProcessing(input, options) { - if (input.type === "Program") { - return input; - } - _parser2["default"].yy = yy; - yy.locInfo = function(locInfo) { - return new yy.SourceLocation(options && options.srcName, locInfo); - }; - var ast = _parser2["default"].parse(input); - return ast; - } - function parse(input, options) { - var ast = parseWithoutProcessing(input, options); - var strip = new _whitespaceControl2["default"](options); - return strip.accept(ast); - } - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js -var require_compiler = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js"(exports) { - "use strict"; - exports.__esModule = true; - exports.Compiler = Compiler; - exports.precompile = precompile; - exports.compile = compile; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _utils = require_utils(); - var _ast = require_ast(); - var _ast2 = _interopRequireDefault(_ast); - var slice = [].slice; - function Compiler() { - } - Compiler.prototype = { - compiler: Compiler, - equals: function equals(other) { - var len = this.opcodes.length; - if (other.opcodes.length !== len) { - return false; - } - for (var i = 0; i < len; i++) { - var opcode = this.opcodes[i], otherOpcode = other.opcodes[i]; - if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) { - return false; - } - } - len = this.children.length; - for (var i = 0; i < len; i++) { - if (!this.children[i].equals(other.children[i])) { - return false; - } - } - return true; - }, - guid: 0, - compile: function compile2(program, options) { - this.sourceNode = []; - this.opcodes = []; - this.children = []; - this.options = options; - this.stringParams = options.stringParams; - this.trackIds = options.trackIds; - options.blockParams = options.blockParams || []; - options.knownHelpers = _utils.extend(/* @__PURE__ */ Object.create(null), { - helperMissing: true, - blockHelperMissing: true, - each: true, - "if": true, - unless: true, - "with": true, - log: true, - lookup: true - }, options.knownHelpers); - return this.accept(program); - }, - compileProgram: function compileProgram(program) { - var childCompiler = new this.compiler(), result = childCompiler.compile(program, this.options), guid = this.guid++; - this.usePartial = this.usePartial || result.usePartial; - this.children[guid] = result; - this.useDepths = this.useDepths || result.useDepths; - return guid; - }, - accept: function accept(node) { - if (!this[node.type]) { - throw new _exception2["default"]("Unknown type: " + node.type, node); - } - this.sourceNode.unshift(node); - var ret = this[node.type](node); - this.sourceNode.shift(); - return ret; - }, - Program: function Program(program) { - this.options.blockParams.unshift(program.blockParams); - var body = program.body, bodyLength = body.length; - for (var i = 0; i < bodyLength; i++) { - this.accept(body[i]); - } - this.options.blockParams.shift(); - this.isSimple = bodyLength === 1; - this.blockParams = program.blockParams ? program.blockParams.length : 0; - return this; - }, - BlockStatement: function BlockStatement(block) { - transformLiteralToPath2(block); - var program = block.program, inverse = block.inverse; - program = program && this.compileProgram(program); - inverse = inverse && this.compileProgram(inverse); - var type = this.classifySexpr(block); - if (type === "helper") { - this.helperSexpr(block, program, inverse); - } else if (type === "simple") { - this.simpleSexpr(block); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - this.opcode("emptyHash"); - this.opcode("blockValue", block.path.original); - } else { - this.ambiguousSexpr(block, program, inverse); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - this.opcode("emptyHash"); - this.opcode("ambiguousBlockValue"); - } - this.opcode("append"); - }, - DecoratorBlock: function DecoratorBlock(decorator) { - var program = decorator.program && this.compileProgram(decorator.program); - var params = this.setupFullMustacheParams(decorator, program, void 0), path = decorator.path; - this.useDecorators = true; - this.opcode("registerDecorator", params.length, path.original); - }, - PartialStatement: function PartialStatement(partial) { - this.usePartial = true; - var program = partial.program; - if (program) { - program = this.compileProgram(partial.program); - } - var params = partial.params; - if (params.length > 1) { - throw new _exception2["default"]("Unsupported number of partial arguments: " + params.length, partial); - } else if (!params.length) { - if (this.options.explicitPartialContext) { - this.opcode("pushLiteral", "undefined"); - } else { - params.push({ type: "PathExpression", parts: [], depth: 0 }); - } - } - var partialName = partial.name.original, isDynamic = partial.name.type === "SubExpression"; - if (isDynamic) { - this.accept(partial.name); - } - this.setupFullMustacheParams(partial, program, void 0, true); - var indent = partial.indent || ""; - if (this.options.preventIndent && indent) { - this.opcode("appendContent", indent); - indent = ""; - } - this.opcode("invokePartial", isDynamic, partialName, indent); - this.opcode("append"); - }, - PartialBlockStatement: function PartialBlockStatement(partialBlock) { - this.PartialStatement(partialBlock); - }, - MustacheStatement: function MustacheStatement(mustache) { - this.SubExpression(mustache); - if (mustache.escaped && !this.options.noEscape) { - this.opcode("appendEscaped"); - } else { - this.opcode("append"); - } - }, - Decorator: function Decorator(decorator) { - this.DecoratorBlock(decorator); - }, - ContentStatement: function ContentStatement(content) { - if (content.value) { - this.opcode("appendContent", content.value); - } - }, - CommentStatement: function CommentStatement() { - }, - SubExpression: function SubExpression(sexpr) { - transformLiteralToPath2(sexpr); - var type = this.classifySexpr(sexpr); - if (type === "simple") { - this.simpleSexpr(sexpr); - } else if (type === "helper") { - this.helperSexpr(sexpr); - } else { - this.ambiguousSexpr(sexpr); - } - }, - ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) { - var path = sexpr.path, name = path.parts[0], isBlock2 = program != null || inverse != null; - this.opcode("getContext", path.depth); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - path.strict = true; - this.accept(path); - this.opcode("invokeAmbiguous", name, isBlock2); - }, - simpleSexpr: function simpleSexpr(sexpr) { - var path = sexpr.path; - path.strict = true; - this.accept(path); - this.opcode("resolvePossibleLambda"); - }, - helperSexpr: function helperSexpr(sexpr, program, inverse) { - var params = this.setupFullMustacheParams(sexpr, program, inverse), path = sexpr.path, name = path.parts[0]; - if (this.options.knownHelpers[name]) { - this.opcode("invokeKnownHelper", params.length, name); - } else if (this.options.knownHelpersOnly) { - throw new _exception2["default"]("You specified knownHelpersOnly, but used the unknown helper " + name, sexpr); - } else { - path.strict = true; - path.falsy = true; - this.accept(path); - this.opcode("invokeHelper", params.length, path.original, _ast2["default"].helpers.simpleId(path)); - } - }, - PathExpression: function PathExpression(path) { - this.addDepth(path.depth); - this.opcode("getContext", path.depth); - var name = path.parts[0], scoped = _ast2["default"].helpers.scopedId(path), blockParamId = !path.depth && !scoped && this.blockParamIndex(name); - if (blockParamId) { - this.opcode("lookupBlockParam", blockParamId, path.parts); - } else if (!name) { - this.opcode("pushContext"); - } else if (path.data) { - this.options.data = true; - this.opcode("lookupData", path.depth, path.parts, path.strict); - } else { - this.opcode("lookupOnContext", path.parts, path.falsy, path.strict, scoped); - } - }, - StringLiteral: function StringLiteral(string) { - this.opcode("pushString", string.value); - }, - NumberLiteral: function NumberLiteral(number) { - this.opcode("pushLiteral", number.value); - }, - BooleanLiteral: function BooleanLiteral(bool) { - this.opcode("pushLiteral", bool.value); - }, - UndefinedLiteral: function UndefinedLiteral() { - this.opcode("pushLiteral", "undefined"); - }, - NullLiteral: function NullLiteral() { - this.opcode("pushLiteral", "null"); - }, - Hash: function Hash(hash) { - var pairs = hash.pairs, i = 0, l = pairs.length; - this.opcode("pushHash"); - for (; i < l; i++) { - this.pushParam(pairs[i].value); - } - while (i--) { - this.opcode("assignToHash", pairs[i].key); - } - this.opcode("popHash"); - }, - // HELPERS - opcode: function opcode(name) { - this.opcodes.push({ - opcode: name, - args: slice.call(arguments, 1), - loc: this.sourceNode[0].loc - }); - }, - addDepth: function addDepth(depth) { - if (!depth) { - return; - } - this.useDepths = true; - }, - classifySexpr: function classifySexpr(sexpr) { - var isSimple = _ast2["default"].helpers.simpleId(sexpr.path); - var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]); - var isHelper = !isBlockParam && _ast2["default"].helpers.helperExpression(sexpr); - var isEligible = !isBlockParam && (isHelper || isSimple); - if (isEligible && !isHelper) { - var _name = sexpr.path.parts[0], options = this.options; - if (options.knownHelpers[_name]) { - isHelper = true; - } else if (options.knownHelpersOnly) { - isEligible = false; - } - } - if (isHelper) { - return "helper"; - } else if (isEligible) { - return "ambiguous"; - } else { - return "simple"; - } - }, - pushParams: function pushParams(params) { - for (var i = 0, l = params.length; i < l; i++) { - this.pushParam(params[i]); - } - }, - pushParam: function pushParam(val) { - var value = val.value != null ? val.value : val.original || ""; - if (this.stringParams) { - if (value.replace) { - value = value.replace(/^(\.?\.\/)*/g, "").replace(/\//g, "."); - } - if (val.depth) { - this.addDepth(val.depth); - } - this.opcode("getContext", val.depth || 0); - this.opcode("pushStringParam", value, val.type); - if (val.type === "SubExpression") { - this.accept(val); - } - } else { - if (this.trackIds) { - var blockParamIndex = void 0; - if (val.parts && !_ast2["default"].helpers.scopedId(val) && !val.depth) { - blockParamIndex = this.blockParamIndex(val.parts[0]); - } - if (blockParamIndex) { - var blockParamChild = val.parts.slice(1).join("."); - this.opcode("pushId", "BlockParam", blockParamIndex, blockParamChild); - } else { - value = val.original || value; - if (value.replace) { - value = value.replace(/^this(?:\.|$)/, "").replace(/^\.\//, "").replace(/^\.$/, ""); - } - this.opcode("pushId", val.type, value); - } - } - this.accept(val); - } - }, - setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) { - var params = sexpr.params; - this.pushParams(params); - this.opcode("pushProgram", program); - this.opcode("pushProgram", inverse); - if (sexpr.hash) { - this.accept(sexpr.hash); - } else { - this.opcode("emptyHash", omitEmpty); - } - return params; - }, - blockParamIndex: function blockParamIndex(name) { - for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) { - var blockParams = this.options.blockParams[depth], param = blockParams && _utils.indexOf(blockParams, name); - if (blockParams && param >= 0) { - return [depth, param]; - } - } - } - }; - function precompile(input, options, env) { - if (input == null || typeof input !== "string" && input.type !== "Program") { - throw new _exception2["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + input); - } - options = options || {}; - if (!("data" in options)) { - options.data = true; - } - if (options.compat) { - options.useDepths = true; - } - var ast = env.parse(input, options), environment = new env.Compiler().compile(ast, options); - return new env.JavaScriptCompiler().compile(environment, options); - } - function compile(input, options, env) { - if (options === void 0) options = {}; - if (input == null || typeof input !== "string" && input.type !== "Program") { - throw new _exception2["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed " + input); - } - options = _utils.extend({}, options); - if (!("data" in options)) { - options.data = true; - } - if (options.compat) { - options.useDepths = true; - } - var compiled = void 0; - function compileInput() { - var ast = env.parse(input, options), environment = new env.Compiler().compile(ast, options), templateSpec = new env.JavaScriptCompiler().compile(environment, options, void 0, true); - return env.template(templateSpec); - } - function ret(context, execOptions) { - if (!compiled) { - compiled = compileInput(); - } - return compiled.call(this, context, execOptions); - } - ret._setup = function(setupOptions) { - if (!compiled) { - compiled = compileInput(); - } - return compiled._setup(setupOptions); - }; - ret._child = function(i, data, blockParams, depths) { - if (!compiled) { - compiled = compileInput(); - } - return compiled._child(i, data, blockParams, depths); - }; - return ret; - } - function argEquals(a, b) { - if (a === b) { - return true; - } - if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) { - for (var i = 0; i < a.length; i++) { - if (!argEquals(a[i], b[i])) { - return false; - } - } - return true; - } - } - function transformLiteralToPath2(sexpr) { - if (!sexpr.path.parts) { - var literal = sexpr.path; - sexpr.path = { - type: "PathExpression", - data: false, - depth: 0, - parts: [literal.original + ""], - original: literal.original + "", - loc: literal.loc - }; - } - } - } -}); - -// node_modules/source-map/lib/base64.js -var require_base64 = __commonJS({ - "node_modules/source-map/lib/base64.js"(exports) { - var intToCharMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""); - exports.encode = function(number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); - }; - exports.decode = function(charCode) { - var bigA = 65; - var bigZ = 90; - var littleA = 97; - var littleZ = 122; - var zero = 48; - var nine = 57; - var plus = 43; - var slash = 47; - var littleOffset = 26; - var numberOffset = 52; - if (bigA <= charCode && charCode <= bigZ) { - return charCode - bigA; - } - if (littleA <= charCode && charCode <= littleZ) { - return charCode - littleA + littleOffset; - } - if (zero <= charCode && charCode <= nine) { - return charCode - zero + numberOffset; - } - if (charCode == plus) { - return 62; - } - if (charCode == slash) { - return 63; - } - return -1; - }; - } -}); - -// node_modules/source-map/lib/base64-vlq.js -var require_base64_vlq = __commonJS({ - "node_modules/source-map/lib/base64-vlq.js"(exports) { - var base64 = require_base64(); - var VLQ_BASE_SHIFT = 5; - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - var VLQ_BASE_MASK = VLQ_BASE - 1; - var VLQ_CONTINUATION_BIT = VLQ_BASE; - function toVLQSigned(aValue) { - return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0; - } - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative ? -shifted : shifted; - } - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - var vlq = toVLQSigned(aValue); - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - return encoded; - }; - exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; - }; - } -}); - -// node_modules/source-map/lib/util.js -var require_util = __commonJS({ - "node_modules/source-map/lib/util.js"(exports) { - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; - } - exports.urlParse = urlParse; - function urlGenerate(aParsedUrl) { - var url = ""; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ":"; - } - url += "//"; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + "@"; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port; - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === ".") { - parts.splice(i, 1); - } else if (part === "..") { - up++; - } else if (up > 0) { - if (part === "") { - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join("/"); - if (path === "") { - path = isAbsolute ? "/" : "."; - } - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; - } - exports.normalize = normalize; - function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || "/"; - } - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - var joined = aPath.charAt(0) === "/" ? aPath : normalize(aRoot.replace(/\/+$/, "") + "/" + aPath); - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; - } - exports.join = join; - exports.isAbsolute = function(aPath) { - return aPath.charAt(0) === "/" || urlRegexp.test(aPath); - }; - function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - aRoot = aRoot.replace(/\/$/, ""); - var level = 0; - while (aPath.indexOf(aRoot + "/") !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - ++level; - } - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); - } - exports.relative = relative; - var supportsNullProto = function() { - var obj = /* @__PURE__ */ Object.create(null); - return !("__proto__" in obj); - }(); - function identity(s) { - return s; - } - function toSetString(aStr) { - if (isProtoString(aStr)) { - return "$" + aStr; - } - return aStr; - } - exports.toSetString = supportsNullProto ? identity : toSetString; - function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - return aStr; - } - exports.fromSetString = supportsNullProto ? identity : fromSetString; - function isProtoString(s) { - if (!s) { - return false; - } - var length = s.length; - if (length < 9) { - return false; - } - if (s.charCodeAt(length - 1) !== 95 || s.charCodeAt(length - 2) !== 95 || s.charCodeAt(length - 3) !== 111 || s.charCodeAt(length - 4) !== 116 || s.charCodeAt(length - 5) !== 111 || s.charCodeAt(length - 6) !== 114 || s.charCodeAt(length - 7) !== 112 || s.charCodeAt(length - 8) !== 95 || s.charCodeAt(length - 9) !== 95) { - return false; - } - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36) { - return false; - } - } - return true; - } - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByOriginalPositions = compareByOriginalPositions; - function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - if (aStr1 === null) { - return 1; - } - if (aStr2 === null) { - return -1; - } - if (aStr1 > aStr2) { - return 1; - } - return -1; - } - function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - return strcmp(mappingA.name, mappingB.name); - } - exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - function parseSourceMapInput(str) { - return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, "")); - } - exports.parseSourceMapInput = parseSourceMapInput; - function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { - sourceURL = sourceURL || ""; - if (sourceRoot) { - if (sourceRoot[sourceRoot.length - 1] !== "/" && sourceURL[0] !== "/") { - sourceRoot += "/"; - } - sourceURL = sourceRoot + sourceURL; - } - if (sourceMapURL) { - var parsed = urlParse(sourceMapURL); - if (!parsed) { - throw new Error("sourceMapURL could not be parsed"); - } - if (parsed.path) { - var index = parsed.path.lastIndexOf("/"); - if (index >= 0) { - parsed.path = parsed.path.substring(0, index + 1); - } - } - sourceURL = join(urlGenerate(parsed), sourceURL); - } - return normalize(sourceURL); - } - exports.computeSourceURL = computeSourceURL; - } -}); - -// node_modules/source-map/lib/array-set.js -var require_array_set = __commonJS({ - "node_modules/source-map/lib/array-set.js"(exports) { - var util = require_util(); - var has = Object.prototype.hasOwnProperty; - var hasNativeMap = typeof Map !== "undefined"; - function ArraySet() { - this._array = []; - this._set = hasNativeMap ? /* @__PURE__ */ new Map() : /* @__PURE__ */ Object.create(null); - } - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; - }; - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } - }; - ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } - }; - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error("No element indexed by " + aIdx); - }; - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - exports.ArraySet = ArraySet; - } -}); - -// node_modules/source-map/lib/mapping-list.js -var require_mapping_list = __commonJS({ - "node_modules/source-map/lib/mapping-list.js"(exports) { - var util = require_util(); - function generatedPositionAfter(mappingA, mappingB) { - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; - } - function MappingList() { - this._array = []; - this._sorted = true; - this._last = { generatedLine: -1, generatedColumn: 0 }; - } - MappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } - }; - MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; - }; - exports.MappingList = MappingList; - } -}); - -// node_modules/source-map/lib/source-map-generator.js -var require_source_map_generator = __commonJS({ - "node_modules/source-map/lib/source-map-generator.js"(exports) { - var base64VLQ = require_base64_vlq(); - var util = require_util(); - var ArraySet = require_array_set().ArraySet; - var MappingList = require_mapping_list().MappingList; - function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, "file", null); - this._sourceRoot = util.getArg(aArgs, "sourceRoot", null); - this._skipValidation = util.getArg(aArgs, "skipValidation", false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; - } - SourceMapGenerator.prototype._version = 3; - SourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot - }); - aSourceMapConsumer.eachMapping(function(mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function(sourceFile) { - var sourceRelative = sourceFile; - if (sourceRoot !== null) { - sourceRelative = util.relative(sourceRoot, sourceFile); - } - if (!generator._sources.has(sourceRelative)) { - generator._sources.add(sourceRelative); - } - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - SourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, "generated"); - var original = util.getArg(aArgs, "original", null); - var source = util.getArg(aArgs, "source", null); - var name = util.getArg(aArgs, "name", null); - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source, - name - }); - }; - SourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - if (aSourceContent != null) { - if (!this._sourcesContents) { - this._sourcesContents = /* @__PURE__ */ Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - SourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - `SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.` - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - var newSources = new ArraySet(); - var newNames = new ArraySet(); - this._mappings.unsortedForEach(function(mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source); - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - }, this); - this._sources = newSources; - this._names = newNames; - aSourceMapConsumer.sources.forEach(function(sourceFile2) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile2); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile2 = util.join(aSourceMapPath, sourceFile2); - } - if (sourceRoot != null) { - sourceFile2 = util.relative(sourceRoot, sourceFile2); - } - this.setSourceContent(sourceFile2, content); - } - }, this); - }; - SourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) { - if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") { - throw new Error( - "original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values." - ); - } - if (aGenerated && "line" in aGenerated && "column" in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) { - return; - } else if (aGenerated && "line" in aGenerated && "column" in aGenerated && aOriginal && "line" in aOriginal && "column" in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) { - return; - } else { - throw new Error("Invalid mapping: " + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - SourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ""; - var next; - var mapping; - var nameIdx; - var sourceIdx; - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = ""; - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ";"; - previousGeneratedLine++; - } - } else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ","; - } - } - next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - result += next; - } - return result; - }; - SourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function(source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null; - }, this); - }; - SourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - return map; - }; - SourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - exports.SourceMapGenerator = SourceMapGenerator; - } -}); - -// node_modules/source-map/lib/binary-search.js -var require_binary_search = __commonJS({ - "node_modules/source-map/lib/binary-search.js"(exports) { - exports.GREATEST_LOWER_BOUND = 1; - exports.LEAST_UPPER_BOUND = 2; - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - return mid; - } else if (cmp > 0) { - if (aHigh - mid > 1) { - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } else { - if (mid - aLow > 1) { - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } - } - exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - var index = recursiveSearch( - -1, - aHaystack.length, - aNeedle, - aHaystack, - aCompare, - aBias || exports.GREATEST_LOWER_BOUND - ); - if (index < 0) { - return -1; - } - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - return index; - }; - } -}); - -// node_modules/source-map/lib/quick-sort.js -var require_quick_sort = __commonJS({ - "node_modules/source-map/lib/quick-sort.js"(exports) { - function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; - } - function randomIntInRange(low, high) { - return Math.round(low + Math.random() * (high - low)); - } - function doQuickSort(ary, comparator, p, r) { - if (p < r) { - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - swap(ary, pivotIndex, r); - var pivot = ary[r]; - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - swap(ary, i + 1, j); - var q = i + 1; - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } - } - exports.quickSort = function(ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); - }; - } -}); - -// node_modules/source-map/lib/source-map-consumer.js -var require_source_map_consumer = __commonJS({ - "node_modules/source-map/lib/source-map-consumer.js"(exports) { - var util = require_util(); - var binarySearch = require_binary_search(); - var ArraySet = require_array_set().ArraySet; - var base64VLQ = require_base64_vlq(); - var quickSort = require_quick_sort().quickSort; - function SourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === "string") { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); - } - SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); - }; - SourceMapConsumer.prototype._version = 3; - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, "_generatedMappings", { - configurable: true, - enumerable: true, - get: function() { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - return this.__generatedMappings; - } - }); - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, "_originalMappings", { - configurable: true, - enumerable: true, - get: function() { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - return this.__originalMappings; - } - }); - SourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - SourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - SourceMapConsumer.GREATEST_LOWER_BOUND = 1; - SourceMapConsumer.LEAST_UPPER_BOUND = 2; - SourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - var sourceRoot = this.sourceRoot; - mappings.map(function(mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); - return { - source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - SourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, "line"); - var needle = { - source: util.getArg(aArgs, "source"), - originalLine: line, - originalColumn: util.getArg(aArgs, "column", 0) - }; - needle.source = this._findSourceIndex(needle.source); - if (needle.source < 0) { - return []; - } - var mappings = []; - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND - ); - if (index >= 0) { - var mapping = this._originalMappings[index]; - if (aArgs.column === void 0) { - var originalLine = mapping.originalLine; - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, "generatedLine", null), - column: util.getArg(mapping, "generatedColumn", null), - lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) - }); - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, "generatedLine", null), - column: util.getArg(mapping, "generatedColumn", null), - lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) - }); - mapping = this._originalMappings[++index]; - } - } - } - return mappings; - }; - exports.SourceMapConsumer = SourceMapConsumer; - function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === "string") { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - var version = util.getArg(sourceMap, "version"); - var sources = util.getArg(sourceMap, "sources"); - var names = util.getArg(sourceMap, "names", []); - var sourceRoot = util.getArg(sourceMap, "sourceRoot", null); - var sourcesContent = util.getArg(sourceMap, "sourcesContent", null); - var mappings = util.getArg(sourceMap, "mappings"); - var file = util.getArg(sourceMap, "file", null); - if (version != this._version) { - throw new Error("Unsupported version: " + version); - } - if (sourceRoot) { - sourceRoot = util.normalize(sourceRoot); - } - sources = sources.map(String).map(util.normalize).map(function(source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source; - }); - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - this._absoluteSources = this._sources.toArray().map(function(s) { - return util.computeSourceURL(sourceRoot, s, aSourceMapURL); - }); - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this._sourceMapURL = aSourceMapURL; - this.file = file; - } - BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - if (this._sources.has(relativeSource)) { - return this._sources.indexOf(relativeSource); - } - var i; - for (i = 0; i < this._absoluteSources.length; ++i) { - if (this._absoluteSources[i] == aSource) { - return i; - } - } - return -1; - }; - BasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent( - smc._sources.toArray(), - smc.sourceRoot - ); - smc.file = aSourceMap._file; - smc._sourceMapURL = aSourceMapURL; - smc._absoluteSources = smc._sources.toArray().map(function(s) { - return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); - }); - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping(); - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - destOriginalMappings.push(destMapping); - } - destGeneratedMappings.push(destMapping); - } - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - return smc; - }; - BasicSourceMapConsumer.prototype._version = 3; - Object.defineProperty(BasicSourceMapConsumer.prototype, "sources", { - get: function() { - return this._absoluteSources.slice(); - } - }); - function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; - } - BasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - while (index < length) { - if (aStr.charAt(index) === ";") { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } else if (aStr.charAt(index) === ",") { - index++; - } else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - if (segment.length === 2) { - throw new Error("Found a source, but no line and column"); - } - if (segment.length === 3) { - throw new Error("Found a source and line, but no column"); - } - cachedSegments[str] = segment; - } - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - if (segment.length > 1) { - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - mapping.originalLine += 1; - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - if (segment.length > 4) { - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - generatedMappings.push(mapping); - if (typeof mapping.originalLine === "number") { - originalMappings.push(mapping); - } - } - } - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - BasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) { - if (aNeedle[aLineName] <= 0) { - throw new TypeError("Line must be greater than or equal to 1, got " + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError("Column must be greater than or equal to 0, got " + aNeedle[aColumnName]); - } - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - BasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - mapping.lastGeneratedColumn = Infinity; - } - }; - BasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, "line"), - generatedColumn: util.getArg(aArgs, "column") - }; - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - if (index >= 0) { - var mapping = this._generatedMappings[index]; - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, "source", null); - if (source !== null) { - source = this._sources.at(source); - source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); - } - var name = util.getArg(mapping, "name", null); - if (name !== null) { - name = this._names.at(name); - } - return { - source, - line: util.getArg(mapping, "originalLine", null), - column: util.getArg(mapping, "originalColumn", null), - name - }; - } - } - return { - source: null, - line: null, - column: null, - name: null - }; - }; - BasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function(sc) { - return sc == null; - }); - }; - BasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - var index = this._findSourceIndex(aSource); - if (index >= 0) { - return this.sourcesContent[index]; - } - var relativeSource = aSource; - if (this.sourceRoot != null) { - relativeSource = util.relative(this.sourceRoot, relativeSource); - } - var url; - if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) { - var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]; - } - if ((!url.path || url.path == "/") && this._sources.has("/" + relativeSource)) { - return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; - } - } - if (nullOnMissing) { - return null; - } else { - throw new Error('"' + relativeSource + '" is not in the SourceMap.'); - } - }; - BasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, "source"); - source = this._findSourceIndex(source); - if (source < 0) { - return { - line: null, - column: null, - lastColumn: null - }; - } - var needle = { - source, - originalLine: util.getArg(aArgs, "line"), - originalColumn: util.getArg(aArgs, "column") - }; - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, "bias", SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - if (index >= 0) { - var mapping = this._originalMappings[index]; - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, "generatedLine", null), - column: util.getArg(mapping, "generatedColumn", null), - lastColumn: util.getArg(mapping, "lastGeneratedColumn", null) - }; - } - } - return { - line: null, - column: null, - lastColumn: null - }; - }; - exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === "string") { - sourceMap = util.parseSourceMapInput(aSourceMap); - } - var version = util.getArg(sourceMap, "version"); - var sections = util.getArg(sourceMap, "sections"); - if (version != this._version) { - throw new Error("Unsupported version: " + version); - } - this._sources = new ArraySet(); - this._names = new ArraySet(); - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function(s) { - if (s.url) { - throw new Error("Support for url field in sections not implemented."); - } - var offset = util.getArg(s, "offset"); - var offsetLine = util.getArg(offset, "line"); - var offsetColumn = util.getArg(offset, "column"); - if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) { - throw new Error("Section offsets must be ordered and non-overlapping."); - } - lastOffset = offset; - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, "map"), aSourceMapURL) - }; - }); - } - IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); - IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - IndexedSourceMapConsumer.prototype._version = 3; - Object.defineProperty(IndexedSourceMapConsumer.prototype, "sources", { - get: function() { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } - }); - IndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, "line"), - generatedColumn: util.getArg(aArgs, "column") - }; - var sectionIndex = binarySearch.search( - needle, - this._sections, - function(needle2, section2) { - var cmp = needle2.generatedLine - section2.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - return needle2.generatedColumn - section2.generatedOffset.generatedColumn; - } - ); - var section = this._sections[sectionIndex]; - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - return section.consumer.originalPositionFor({ - line: needle.generatedLine - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), - bias: aArgs.bias - }); - }; - IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function(s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - IndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - IndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - if (section.consumer._findSourceIndex(util.getArg(aArgs, "source")) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0) - }; - return ret; - } - } - return { - line: null, - column: null - }; - }; - IndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - var source = section.consumer._sources.at(mapping.source); - source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); - this._sources.add(source); - source = this._sources.indexOf(source); - var name = null; - if (mapping.name) { - name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - } - var adjustedMapping = { - source, - generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name - }; - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === "number") { - this.__originalMappings.push(adjustedMapping); - } - } - } - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - } -}); - -// node_modules/source-map/lib/source-node.js -var require_source_node = __commonJS({ - "node_modules/source-map/lib/source-node.js"(exports) { - var SourceMapGenerator = require_source_map_generator().SourceMapGenerator; - var util = require_util(); - var REGEX_NEWLINE = /(\r?\n)/; - var NEWLINE_CODE = 10; - var isSourceNode = "$$$isSourceNode$$$"; - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); - } - SourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - var node = new SourceNode(); - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - var newLine = getNextLine() || ""; - return lineContents + newLine; - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? remainingLines[remainingLinesIndex++] : void 0; - } - }; - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - var lastMapping = null; - aSourceMapConsumer.eachMapping(function(mapping) { - if (lastMapping !== null) { - if (lastGeneratedLine < mapping.generatedLine) { - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - } else { - var nextLine = remainingLines[remainingLinesIndex] || ""; - var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - lastMapping = mapping; - return; - } - } - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex] || ""; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - addMappingWithCode(lastMapping, shiftNextLine()); - } - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - aSourceMapConsumer.sources.forEach(function(sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - return node; - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === void 0) { - node.add(code); - } else { - var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source; - node.add(new SourceNode( - mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name - )); - } - } - }; - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function(chunk) { - this.add(chunk); - }, this); - } else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length - 1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } else { - if (chunk !== "") { - aFn(chunk, { - source: this.source, - line: this.line, - column: this.column, - name: this.name - }); - } - } - } - }; - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len - 1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } else if (typeof lastChild === "string") { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } else { - this.children.push("".replace(aPattern, aReplacement)); - } - return this; - }; - SourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - SourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function(chunk) { - str += chunk; - }); - return str; - }; - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function(chunk, original) { - generated.code += chunk; - if (original.source !== null && original.line !== null && original.column !== null) { - if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function(sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - return { code: generated.code, map }; - }; - exports.SourceNode = SourceNode; - } -}); - -// node_modules/source-map/source-map.js -var require_source_map = __commonJS({ - "node_modules/source-map/source-map.js"(exports) { - exports.SourceMapGenerator = require_source_map_generator().SourceMapGenerator; - exports.SourceMapConsumer = require_source_map_consumer().SourceMapConsumer; - exports.SourceNode = require_source_node().SourceNode; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js -var require_code_gen = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js"(exports, module) { - "use strict"; - exports.__esModule = true; - var _utils = require_utils(); - var SourceNode = void 0; - try { - if (typeof define !== "function" || !define.amd) { - SourceMap = require_source_map(); - SourceNode = SourceMap.SourceNode; - } - } catch (err) { - } - var SourceMap; - if (!SourceNode) { - SourceNode = function(line, column, srcFile, chunks) { - this.src = ""; - if (chunks) { - this.add(chunks); - } - }; - SourceNode.prototype = { - add: function add(chunks) { - if (_utils.isArray(chunks)) { - chunks = chunks.join(""); - } - this.src += chunks; - }, - prepend: function prepend(chunks) { - if (_utils.isArray(chunks)) { - chunks = chunks.join(""); - } - this.src = chunks + this.src; - }, - toStringWithSourceMap: function toStringWithSourceMap() { - return { code: this.toString() }; - }, - toString: function toString() { - return this.src; - } - }; - } - function castChunk(chunk, codeGen, loc) { - if (_utils.isArray(chunk)) { - var ret = []; - for (var i = 0, len = chunk.length; i < len; i++) { - ret.push(codeGen.wrap(chunk[i], loc)); - } - return ret; - } else if (typeof chunk === "boolean" || typeof chunk === "number") { - return chunk + ""; - } - return chunk; - } - function CodeGen(srcFile) { - this.srcFile = srcFile; - this.source = []; - } - CodeGen.prototype = { - isEmpty: function isEmpty() { - return !this.source.length; - }, - prepend: function prepend(source, loc) { - this.source.unshift(this.wrap(source, loc)); - }, - push: function push(source, loc) { - this.source.push(this.wrap(source, loc)); - }, - merge: function merge() { - var source = this.empty(); - this.each(function(line) { - source.add([" ", line, "\n"]); - }); - return source; - }, - each: function each(iter) { - for (var i = 0, len = this.source.length; i < len; i++) { - iter(this.source[i]); - } - }, - empty: function empty() { - var loc = this.currentLocation || { start: {} }; - return new SourceNode(loc.start.line, loc.start.column, this.srcFile); - }, - wrap: function wrap(chunk) { - var loc = arguments.length <= 1 || arguments[1] === void 0 ? this.currentLocation || { start: {} } : arguments[1]; - if (chunk instanceof SourceNode) { - return chunk; - } - chunk = castChunk(chunk, this, loc); - return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk); - }, - functionCall: function functionCall(fn, type, params) { - params = this.generateList(params); - return this.wrap([fn, type ? "." + type + "(" : "(", params, ")"]); - }, - quotedString: function quotedString(str) { - return '"' + (str + "").replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029") + '"'; - }, - objectLiteral: function objectLiteral(obj) { - var _this = this; - var pairs = []; - Object.keys(obj).forEach(function(key) { - var value = castChunk(obj[key], _this); - if (value !== "undefined") { - pairs.push([_this.quotedString(key), ":", value]); - } - }); - var ret = this.generateList(pairs); - ret.prepend("{"); - ret.add("}"); - return ret; - }, - generateList: function generateList(entries) { - var ret = this.empty(); - for (var i = 0, len = entries.length; i < len; i++) { - if (i) { - ret.add(","); - } - ret.add(castChunk(entries[i], this)); - } - return ret; - }, - generateArray: function generateArray(entries) { - var ret = this.generateList(entries); - ret.prepend("["); - ret.add("]"); - return ret; - } - }; - exports["default"] = CodeGen; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js -var require_javascript_compiler = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _base = require_base(); - var _exception = require_exception(); - var _exception2 = _interopRequireDefault(_exception); - var _utils = require_utils(); - var _codeGen = require_code_gen(); - var _codeGen2 = _interopRequireDefault(_codeGen); - function Literal(value) { - this.value = value; - } - function JavaScriptCompiler() { - } - JavaScriptCompiler.prototype = { - // PUBLIC API: You can override these methods in a subclass to provide - // alternative compiled forms for name lookup and buffering semantics - nameLookup: function nameLookup(parent, name) { - return this.internalNameLookup(parent, name); - }, - depthedLookup: function depthedLookup(name) { - return [this.aliasable("container.lookup"), "(depths, ", JSON.stringify(name), ")"]; - }, - compilerInfo: function compilerInfo() { - var revision = _base.COMPILER_REVISION, versions = _base.REVISION_CHANGES[revision]; - return [revision, versions]; - }, - appendToBuffer: function appendToBuffer(source, location, explicit) { - if (!_utils.isArray(source)) { - source = [source]; - } - source = this.source.wrap(source, location); - if (this.environment.isSimple) { - return ["return ", source, ";"]; - } else if (explicit) { - return ["buffer += ", source, ";"]; - } else { - source.appendToBuffer = true; - return source; - } - }, - initializeBuffer: function initializeBuffer() { - return this.quotedString(""); - }, - // END PUBLIC API - internalNameLookup: function internalNameLookup(parent, name) { - this.lookupPropertyFunctionIsUsed = true; - return ["lookupProperty(", parent, ",", JSON.stringify(name), ")"]; - }, - lookupPropertyFunctionIsUsed: false, - compile: function compile(environment, options, context, asObject) { - this.environment = environment; - this.options = options; - this.stringParams = this.options.stringParams; - this.trackIds = this.options.trackIds; - this.precompile = !asObject; - this.name = this.environment.name; - this.isChild = !!context; - this.context = context || { - decorators: [], - programs: [], - environments: [] - }; - this.preamble(); - this.stackSlot = 0; - this.stackVars = []; - this.aliases = {}; - this.registers = { list: [] }; - this.hashes = []; - this.compileStack = []; - this.inlineStack = []; - this.blockParams = []; - this.compileChildren(environment, options); - this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat; - this.useBlockParams = this.useBlockParams || environment.useBlockParams; - var opcodes = environment.opcodes, opcode = void 0, firstLoc = void 0, i = void 0, l = void 0; - for (i = 0, l = opcodes.length; i < l; i++) { - opcode = opcodes[i]; - this.source.currentLocation = opcode.loc; - firstLoc = firstLoc || opcode.loc; - this[opcode.opcode].apply(this, opcode.args); - } - this.source.currentLocation = firstLoc; - this.pushSource(""); - if (this.stackSlot || this.inlineStack.length || this.compileStack.length) { - throw new _exception2["default"]("Compile completed with content left on stack"); - } - if (!this.decorators.isEmpty()) { - this.useDecorators = true; - this.decorators.prepend(["var decorators = container.decorators, ", this.lookupPropertyFunctionVarDeclaration(), ";\n"]); - this.decorators.push("return fn;"); - if (asObject) { - this.decorators = Function.apply(this, ["fn", "props", "container", "depth0", "data", "blockParams", "depths", this.decorators.merge()]); - } else { - this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"); - this.decorators.push("}\n"); - this.decorators = this.decorators.merge(); - } - } else { - this.decorators = void 0; - } - var fn = this.createFunctionContext(asObject); - if (!this.isChild) { - var ret = { - compiler: this.compilerInfo(), - main: fn - }; - if (this.decorators) { - ret.main_d = this.decorators; - ret.useDecorators = true; - } - var _context = this.context; - var programs = _context.programs; - var decorators = _context.decorators; - for (i = 0, l = programs.length; i < l; i++) { - if (programs[i]) { - ret[i] = programs[i]; - if (decorators[i]) { - ret[i + "_d"] = decorators[i]; - ret.useDecorators = true; - } - } - } - if (this.environment.usePartial) { - ret.usePartial = true; - } - if (this.options.data) { - ret.useData = true; - } - if (this.useDepths) { - ret.useDepths = true; - } - if (this.useBlockParams) { - ret.useBlockParams = true; - } - if (this.options.compat) { - ret.compat = true; - } - if (!asObject) { - ret.compiler = JSON.stringify(ret.compiler); - this.source.currentLocation = { start: { line: 1, column: 0 } }; - ret = this.objectLiteral(ret); - if (options.srcName) { - ret = ret.toStringWithSourceMap({ file: options.destName }); - ret.map = ret.map && ret.map.toString(); - } else { - ret = ret.toString(); - } - } else { - ret.compilerOptions = this.options; - } - return ret; - } else { - return fn; - } - }, - preamble: function preamble() { - this.lastContext = 0; - this.source = new _codeGen2["default"](this.options.srcName); - this.decorators = new _codeGen2["default"](this.options.srcName); - }, - createFunctionContext: function createFunctionContext(asObject) { - var _this = this; - var varDeclarations = ""; - var locals = this.stackVars.concat(this.registers.list); - if (locals.length > 0) { - varDeclarations += ", " + locals.join(", "); - } - var aliasCount = 0; - Object.keys(this.aliases).forEach(function(alias) { - var node = _this.aliases[alias]; - if (node.children && node.referenceCount > 1) { - varDeclarations += ", alias" + ++aliasCount + "=" + alias; - node.children[0] = "alias" + aliasCount; - } - }); - if (this.lookupPropertyFunctionIsUsed) { - varDeclarations += ", " + this.lookupPropertyFunctionVarDeclaration(); - } - var params = ["container", "depth0", "helpers", "partials", "data"]; - if (this.useBlockParams || this.useDepths) { - params.push("blockParams"); - } - if (this.useDepths) { - params.push("depths"); - } - var source = this.mergeSource(varDeclarations); - if (asObject) { - params.push(source); - return Function.apply(this, params); - } else { - return this.source.wrap(["function(", params.join(","), ") {\n ", source, "}"]); - } - }, - mergeSource: function mergeSource(varDeclarations) { - var isSimple = this.environment.isSimple, appendOnly = !this.forceBuffer, appendFirst = void 0, sourceSeen = void 0, bufferStart = void 0, bufferEnd = void 0; - this.source.each(function(line) { - if (line.appendToBuffer) { - if (bufferStart) { - line.prepend(" + "); - } else { - bufferStart = line; - } - bufferEnd = line; - } else { - if (bufferStart) { - if (!sourceSeen) { - appendFirst = true; - } else { - bufferStart.prepend("buffer += "); - } - bufferEnd.add(";"); - bufferStart = bufferEnd = void 0; - } - sourceSeen = true; - if (!isSimple) { - appendOnly = false; - } - } - }); - if (appendOnly) { - if (bufferStart) { - bufferStart.prepend("return "); - bufferEnd.add(";"); - } else if (!sourceSeen) { - this.source.push('return "";'); - } - } else { - varDeclarations += ", buffer = " + (appendFirst ? "" : this.initializeBuffer()); - if (bufferStart) { - bufferStart.prepend("return buffer + "); - bufferEnd.add(";"); - } else { - this.source.push("return buffer;"); - } - } - if (varDeclarations) { - this.source.prepend("var " + varDeclarations.substring(2) + (appendFirst ? "" : ";\n")); - } - return this.source.merge(); - }, - lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() { - return "\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n ".trim(); - }, - // [blockValue] - // - // On stack, before: hash, inverse, program, value - // On stack, after: return value of blockHelperMissing - // - // The purpose of this opcode is to take a block of the form - // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and - // replace it on the stack with the result of properly - // invoking blockHelperMissing. - blockValue: function blockValue(name) { - var blockHelperMissing = this.aliasable("container.hooks.blockHelperMissing"), params = [this.contextName(0)]; - this.setupHelperArgs(name, 0, params); - var blockName = this.popStack(); - params.splice(1, 0, blockName); - this.push(this.source.functionCall(blockHelperMissing, "call", params)); - }, - // [ambiguousBlockValue] - // - // On stack, before: hash, inverse, program, value - // Compiler value, before: lastHelper=value of last found helper, if any - // On stack, after, if no lastHelper: same as [blockValue] - // On stack, after, if lastHelper: value - ambiguousBlockValue: function ambiguousBlockValue() { - var blockHelperMissing = this.aliasable("container.hooks.blockHelperMissing"), params = [this.contextName(0)]; - this.setupHelperArgs("", 0, params, true); - this.flushInline(); - var current = this.topStack(); - params.splice(1, 0, current); - this.pushSource(["if (!", this.lastHelper, ") { ", current, " = ", this.source.functionCall(blockHelperMissing, "call", params), "}"]); - }, - // [appendContent] - // - // On stack, before: ... - // On stack, after: ... - // - // Appends the string value of `content` to the current buffer - appendContent: function appendContent(content) { - if (this.pendingContent) { - content = this.pendingContent + content; - } else { - this.pendingLocation = this.source.currentLocation; - } - this.pendingContent = content; - }, - // [append] - // - // On stack, before: value, ... - // On stack, after: ... - // - // Coerces `value` to a String and appends it to the current buffer. - // - // If `value` is truthy, or 0, it is coerced into a string and appended - // Otherwise, the empty string is appended - append: function append() { - if (this.isInline()) { - this.replaceStack(function(current) { - return [" != null ? ", current, ' : ""']; - }); - this.pushSource(this.appendToBuffer(this.popStack())); - } else { - var local = this.popStack(); - this.pushSource(["if (", local, " != null) { ", this.appendToBuffer(local, void 0, true), " }"]); - if (this.environment.isSimple) { - this.pushSource(["else { ", this.appendToBuffer("''", void 0, true), " }"]); - } - } - }, - // [appendEscaped] - // - // On stack, before: value, ... - // On stack, after: ... - // - // Escape `value` and append it to the buffer - appendEscaped: function appendEscaped() { - this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"), "(", this.popStack(), ")"])); - }, - // [getContext] - // - // On stack, before: ... - // On stack, after: ... - // Compiler value, after: lastContext=depth - // - // Set the value of the `lastContext` compiler value to the depth - getContext: function getContext(depth) { - this.lastContext = depth; - }, - // [pushContext] - // - // On stack, before: ... - // On stack, after: currentContext, ... - // - // Pushes the value of the current context onto the stack. - pushContext: function pushContext() { - this.pushStackLiteral(this.contextName(this.lastContext)); - }, - // [lookupOnContext] - // - // On stack, before: ... - // On stack, after: currentContext[name], ... - // - // Looks up the value of `name` on the current context and pushes - // it onto the stack. - lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) { - var i = 0; - if (!scoped && this.options.compat && !this.lastContext) { - this.push(this.depthedLookup(parts[i++])); - } else { - this.pushContext(); - } - this.resolvePath("context", parts, i, falsy, strict); - }, - // [lookupBlockParam] - // - // On stack, before: ... - // On stack, after: blockParam[name], ... - // - // Looks up the value of `parts` on the given block param and pushes - // it onto the stack. - lookupBlockParam: function lookupBlockParam(blockParamId, parts) { - this.useBlockParams = true; - this.push(["blockParams[", blockParamId[0], "][", blockParamId[1], "]"]); - this.resolvePath("context", parts, 1); - }, - // [lookupData] - // - // On stack, before: ... - // On stack, after: data, ... - // - // Push the data lookup operator - lookupData: function lookupData(depth, parts, strict) { - if (!depth) { - this.pushStackLiteral("data"); - } else { - this.pushStackLiteral("container.data(data, " + depth + ")"); - } - this.resolvePath("data", parts, 0, true, strict); - }, - resolvePath: function resolvePath(type, parts, i, falsy, strict) { - var _this2 = this; - if (this.options.strict || this.options.assumeObjects) { - this.push(strictLookup(this.options.strict && strict, this, parts, i, type)); - return; - } - var len = parts.length; - for (; i < len; i++) { - this.replaceStack(function(current) { - var lookup = _this2.nameLookup(current, parts[i], type); - if (!falsy) { - return [" != null ? ", lookup, " : ", current]; - } else { - return [" && ", lookup]; - } - }); - } - }, - // [resolvePossibleLambda] - // - // On stack, before: value, ... - // On stack, after: resolved value, ... - // - // If the `value` is a lambda, replace it on the stack by - // the return value of the lambda - resolvePossibleLambda: function resolvePossibleLambda() { - this.push([this.aliasable("container.lambda"), "(", this.popStack(), ", ", this.contextName(0), ")"]); - }, - // [pushStringParam] - // - // On stack, before: ... - // On stack, after: string, currentContext, ... - // - // This opcode is designed for use in string mode, which - // provides the string value of a parameter along with its - // depth rather than resolving it immediately. - pushStringParam: function pushStringParam(string, type) { - this.pushContext(); - this.pushString(type); - if (type !== "SubExpression") { - if (typeof string === "string") { - this.pushString(string); - } else { - this.pushStackLiteral(string); - } - } - }, - emptyHash: function emptyHash(omitEmpty) { - if (this.trackIds) { - this.push("{}"); - } - if (this.stringParams) { - this.push("{}"); - this.push("{}"); - } - this.pushStackLiteral(omitEmpty ? "undefined" : "{}"); - }, - pushHash: function pushHash() { - if (this.hash) { - this.hashes.push(this.hash); - } - this.hash = { values: {}, types: [], contexts: [], ids: [] }; - }, - popHash: function popHash() { - var hash = this.hash; - this.hash = this.hashes.pop(); - if (this.trackIds) { - this.push(this.objectLiteral(hash.ids)); - } - if (this.stringParams) { - this.push(this.objectLiteral(hash.contexts)); - this.push(this.objectLiteral(hash.types)); - } - this.push(this.objectLiteral(hash.values)); - }, - // [pushString] - // - // On stack, before: ... - // On stack, after: quotedString(string), ... - // - // Push a quoted version of `string` onto the stack - pushString: function pushString(string) { - this.pushStackLiteral(this.quotedString(string)); - }, - // [pushLiteral] - // - // On stack, before: ... - // On stack, after: value, ... - // - // Pushes a value onto the stack. This operation prevents - // the compiler from creating a temporary variable to hold - // it. - pushLiteral: function pushLiteral(value) { - this.pushStackLiteral(value); - }, - // [pushProgram] - // - // On stack, before: ... - // On stack, after: program(guid), ... - // - // Push a program expression onto the stack. This takes - // a compile-time guid and converts it into a runtime-accessible - // expression. - pushProgram: function pushProgram(guid) { - if (guid != null) { - this.pushStackLiteral(this.programExpression(guid)); - } else { - this.pushStackLiteral(null); - } - }, - // [registerDecorator] - // - // On stack, before: hash, program, params..., ... - // On stack, after: ... - // - // Pops off the decorator's parameters, invokes the decorator, - // and inserts the decorator into the decorators list. - registerDecorator: function registerDecorator(paramSize, name) { - var foundDecorator = this.nameLookup("decorators", name, "decorator"), options = this.setupHelperArgs(name, paramSize); - this.decorators.push(["fn = ", this.decorators.functionCall(foundDecorator, "", ["fn", "props", "container", options]), " || fn;"]); - }, - // [invokeHelper] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of helper invocation - // - // Pops off the helper's parameters, invokes the helper, - // and pushes the helper's return value onto the stack. - // - // If the helper is not found, `helperMissing` is called. - invokeHelper: function invokeHelper(paramSize, name, isSimple) { - var nonHelper = this.popStack(), helper = this.setupHelper(paramSize, name); - var possibleFunctionCalls = []; - if (isSimple) { - possibleFunctionCalls.push(helper.name); - } - possibleFunctionCalls.push(nonHelper); - if (!this.options.strict) { - possibleFunctionCalls.push(this.aliasable("container.hooks.helperMissing")); - } - var functionLookupCode = ["(", this.itemsSeparatedBy(possibleFunctionCalls, "||"), ")"]; - var functionCall = this.source.functionCall(functionLookupCode, "call", helper.callParams); - this.push(functionCall); - }, - itemsSeparatedBy: function itemsSeparatedBy(items, separator) { - var result = []; - result.push(items[0]); - for (var i = 1; i < items.length; i++) { - result.push(separator, items[i]); - } - return result; - }, - // [invokeKnownHelper] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of helper invocation - // - // This operation is used when the helper is known to exist, - // so a `helperMissing` fallback is not required. - invokeKnownHelper: function invokeKnownHelper(paramSize, name) { - var helper = this.setupHelper(paramSize, name); - this.push(this.source.functionCall(helper.name, "call", helper.callParams)); - }, - // [invokeAmbiguous] - // - // On stack, before: hash, inverse, program, params..., ... - // On stack, after: result of disambiguation - // - // This operation is used when an expression like `{{foo}}` - // is provided, but we don't know at compile-time whether it - // is a helper or a path. - // - // This operation emits more code than the other options, - // and can be avoided by passing the `knownHelpers` and - // `knownHelpersOnly` flags at compile-time. - invokeAmbiguous: function invokeAmbiguous(name, helperCall) { - this.useRegister("helper"); - var nonHelper = this.popStack(); - this.emptyHash(); - var helper = this.setupHelper(0, name, helperCall); - var helperName = this.lastHelper = this.nameLookup("helpers", name, "helper"); - var lookup = ["(", "(helper = ", helperName, " || ", nonHelper, ")"]; - if (!this.options.strict) { - lookup[0] = "(helper = "; - lookup.push(" != null ? helper : ", this.aliasable("container.hooks.helperMissing")); - } - this.push(["(", lookup, helper.paramsInit ? ["),(", helper.paramsInit] : [], "),", "(typeof helper === ", this.aliasable('"function"'), " ? ", this.source.functionCall("helper", "call", helper.callParams), " : helper))"]); - }, - // [invokePartial] - // - // On stack, before: context, ... - // On stack after: result of partial invocation - // - // This operation pops off a context, invokes a partial with that context, - // and pushes the result of the invocation back. - invokePartial: function invokePartial(isDynamic, name, indent) { - var params = [], options = this.setupParams(name, 1, params); - if (isDynamic) { - name = this.popStack(); - delete options.name; - } - if (indent) { - options.indent = JSON.stringify(indent); - } - options.helpers = "helpers"; - options.partials = "partials"; - options.decorators = "container.decorators"; - if (!isDynamic) { - params.unshift(this.nameLookup("partials", name, "partial")); - } else { - params.unshift(name); - } - if (this.options.compat) { - options.depths = "depths"; - } - options = this.objectLiteral(options); - params.push(options); - this.push(this.source.functionCall("container.invokePartial", "", params)); - }, - // [assignToHash] - // - // On stack, before: value, ..., hash, ... - // On stack, after: ..., hash, ... - // - // Pops a value off the stack and assigns it to the current hash - assignToHash: function assignToHash(key) { - var value = this.popStack(), context = void 0, type = void 0, id = void 0; - if (this.trackIds) { - id = this.popStack(); - } - if (this.stringParams) { - type = this.popStack(); - context = this.popStack(); - } - var hash = this.hash; - if (context) { - hash.contexts[key] = context; - } - if (type) { - hash.types[key] = type; - } - if (id) { - hash.ids[key] = id; - } - hash.values[key] = value; - }, - pushId: function pushId(type, name, child) { - if (type === "BlockParam") { - this.pushStackLiteral("blockParams[" + name[0] + "].path[" + name[1] + "]" + (child ? " + " + JSON.stringify("." + child) : "")); - } else if (type === "PathExpression") { - this.pushString(name); - } else if (type === "SubExpression") { - this.pushStackLiteral("true"); - } else { - this.pushStackLiteral("null"); - } - }, - // HELPERS - compiler: JavaScriptCompiler, - compileChildren: function compileChildren(environment, options) { - var children = environment.children, child = void 0, compiler = void 0; - for (var i = 0, l = children.length; i < l; i++) { - child = children[i]; - compiler = new this.compiler(); - var existing = this.matchExistingProgram(child); - if (existing == null) { - this.context.programs.push(""); - var index = this.context.programs.length; - child.index = index; - child.name = "program" + index; - this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile); - this.context.decorators[index] = compiler.decorators; - this.context.environments[index] = child; - this.useDepths = this.useDepths || compiler.useDepths; - this.useBlockParams = this.useBlockParams || compiler.useBlockParams; - child.useDepths = this.useDepths; - child.useBlockParams = this.useBlockParams; - } else { - child.index = existing.index; - child.name = "program" + existing.index; - this.useDepths = this.useDepths || existing.useDepths; - this.useBlockParams = this.useBlockParams || existing.useBlockParams; - } - } - }, - matchExistingProgram: function matchExistingProgram(child) { - for (var i = 0, len = this.context.environments.length; i < len; i++) { - var environment = this.context.environments[i]; - if (environment && environment.equals(child)) { - return environment; - } - } - }, - programExpression: function programExpression(guid) { - var child = this.environment.children[guid], programParams = [child.index, "data", child.blockParams]; - if (this.useBlockParams || this.useDepths) { - programParams.push("blockParams"); - } - if (this.useDepths) { - programParams.push("depths"); - } - return "container.program(" + programParams.join(", ") + ")"; - }, - useRegister: function useRegister(name) { - if (!this.registers[name]) { - this.registers[name] = true; - this.registers.list.push(name); - } - }, - push: function push(expr) { - if (!(expr instanceof Literal)) { - expr = this.source.wrap(expr); - } - this.inlineStack.push(expr); - return expr; - }, - pushStackLiteral: function pushStackLiteral(item) { - this.push(new Literal(item)); - }, - pushSource: function pushSource(source) { - if (this.pendingContent) { - this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)); - this.pendingContent = void 0; - } - if (source) { - this.source.push(source); - } - }, - replaceStack: function replaceStack(callback) { - var prefix = ["("], stack = void 0, createdStack = void 0, usedLiteral = void 0; - if (!this.isInline()) { - throw new _exception2["default"]("replaceStack on non-inline"); - } - var top = this.popStack(true); - if (top instanceof Literal) { - stack = [top.value]; - prefix = ["(", stack]; - usedLiteral = true; - } else { - createdStack = true; - var _name = this.incrStack(); - prefix = ["((", this.push(_name), " = ", top, ")"]; - stack = this.topStack(); - } - var item = callback.call(this, stack); - if (!usedLiteral) { - this.popStack(); - } - if (createdStack) { - this.stackSlot--; - } - this.push(prefix.concat(item, ")")); - }, - incrStack: function incrStack() { - this.stackSlot++; - if (this.stackSlot > this.stackVars.length) { - this.stackVars.push("stack" + this.stackSlot); - } - return this.topStackName(); - }, - topStackName: function topStackName() { - return "stack" + this.stackSlot; - }, - flushInline: function flushInline() { - var inlineStack = this.inlineStack; - this.inlineStack = []; - for (var i = 0, len = inlineStack.length; i < len; i++) { - var entry = inlineStack[i]; - if (entry instanceof Literal) { - this.compileStack.push(entry); - } else { - var stack = this.incrStack(); - this.pushSource([stack, " = ", entry, ";"]); - this.compileStack.push(stack); - } - } - }, - isInline: function isInline() { - return this.inlineStack.length; - }, - popStack: function popStack(wrapped) { - var inline = this.isInline(), item = (inline ? this.inlineStack : this.compileStack).pop(); - if (!wrapped && item instanceof Literal) { - return item.value; - } else { - if (!inline) { - if (!this.stackSlot) { - throw new _exception2["default"]("Invalid stack pop"); - } - this.stackSlot--; - } - return item; - } - }, - topStack: function topStack() { - var stack = this.isInline() ? this.inlineStack : this.compileStack, item = stack[stack.length - 1]; - if (item instanceof Literal) { - return item.value; - } else { - return item; - } - }, - contextName: function contextName(context) { - if (this.useDepths && context) { - return "depths[" + context + "]"; - } else { - return "depth" + context; - } - }, - quotedString: function quotedString(str) { - return this.source.quotedString(str); - }, - objectLiteral: function objectLiteral(obj) { - return this.source.objectLiteral(obj); - }, - aliasable: function aliasable(name) { - var ret = this.aliases[name]; - if (ret) { - ret.referenceCount++; - return ret; - } - ret = this.aliases[name] = this.source.wrap(name); - ret.aliasable = true; - ret.referenceCount = 1; - return ret; - }, - setupHelper: function setupHelper(paramSize, name, blockHelper) { - var params = [], paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper); - var foundHelper = this.nameLookup("helpers", name, "helper"), callContext = this.aliasable(this.contextName(0) + " != null ? " + this.contextName(0) + " : (container.nullContext || {})"); - return { - params, - paramsInit, - name: foundHelper, - callParams: [callContext].concat(params) - }; - }, - setupParams: function setupParams(helper, paramSize, params) { - var options = {}, contexts = [], types = [], ids = [], objectArgs = !params, param = void 0; - if (objectArgs) { - params = []; - } - options.name = this.quotedString(helper); - options.hash = this.popStack(); - if (this.trackIds) { - options.hashIds = this.popStack(); - } - if (this.stringParams) { - options.hashTypes = this.popStack(); - options.hashContexts = this.popStack(); - } - var inverse = this.popStack(), program = this.popStack(); - if (program || inverse) { - options.fn = program || "container.noop"; - options.inverse = inverse || "container.noop"; - } - var i = paramSize; - while (i--) { - param = this.popStack(); - params[i] = param; - if (this.trackIds) { - ids[i] = this.popStack(); - } - if (this.stringParams) { - types[i] = this.popStack(); - contexts[i] = this.popStack(); - } - } - if (objectArgs) { - options.args = this.source.generateArray(params); - } - if (this.trackIds) { - options.ids = this.source.generateArray(ids); - } - if (this.stringParams) { - options.types = this.source.generateArray(types); - options.contexts = this.source.generateArray(contexts); - } - if (this.options.data) { - options.data = "data"; - } - if (this.useBlockParams) { - options.blockParams = "blockParams"; - } - return options; - }, - setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) { - var options = this.setupParams(helper, paramSize, params); - options.loc = JSON.stringify(this.source.currentLocation); - options = this.objectLiteral(options); - if (useRegister) { - this.useRegister("options"); - params.push("options"); - return ["options=", options]; - } else if (params) { - params.push(options); - return ""; - } else { - return options; - } - } - }; - (function() { - var reservedWords = "break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "); - var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {}; - for (var i = 0, l = reservedWords.length; i < l; i++) { - compilerWords[reservedWords[i]] = true; - } - })(); - JavaScriptCompiler.isValidJavaScriptVariableName = function(name) { - return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name); - }; - function strictLookup(requireTerminal, compiler, parts, i, type) { - var stack = compiler.popStack(), len = parts.length; - if (requireTerminal) { - len--; - } - for (; i < len; i++) { - stack = compiler.nameLookup(stack, parts[i], type); - } - if (requireTerminal) { - return [compiler.aliasable("container.strict"), "(", stack, ", ", compiler.quotedString(parts[i]), ", ", JSON.stringify(compiler.source.currentLocation), " )"]; - } else { - return stack; - } - } - exports["default"] = JavaScriptCompiler; - module.exports = exports["default"]; - } -}); - -// node_modules/handlebars/dist/cjs/handlebars.js -var require_handlebars = __commonJS({ - "node_modules/handlebars/dist/cjs/handlebars.js"(exports, module) { - "use strict"; - exports.__esModule = true; - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { "default": obj }; - } - var _handlebarsRuntime = require_handlebars_runtime(); - var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime); - var _handlebarsCompilerAst = require_ast(); - var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst); - var _handlebarsCompilerBase = require_base2(); - var _handlebarsCompilerCompiler = require_compiler(); - var _handlebarsCompilerJavascriptCompiler = require_javascript_compiler(); - var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler); - var _handlebarsCompilerVisitor = require_visitor(); - var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor); - var _handlebarsNoConflict = require_no_conflict(); - var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict); - var _create = _handlebarsRuntime2["default"].create; - function create() { - var hb = _create(); - hb.compile = function(input, options) { - return _handlebarsCompilerCompiler.compile(input, options, hb); - }; - hb.precompile = function(input, options) { - return _handlebarsCompilerCompiler.precompile(input, options, hb); - }; - hb.AST = _handlebarsCompilerAst2["default"]; - hb.Compiler = _handlebarsCompilerCompiler.Compiler; - hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2["default"]; - hb.Parser = _handlebarsCompilerBase.parser; - hb.parse = _handlebarsCompilerBase.parse; - hb.parseWithoutProcessing = _handlebarsCompilerBase.parseWithoutProcessing; - return hb; - } - var inst = create(); - inst.create = create; - _handlebarsNoConflict2["default"](inst); - inst.Visitor = _handlebarsCompilerVisitor2["default"]; - inst["default"] = inst; - exports["default"] = inst; - module.exports = exports["default"]; - } -}); - -// node_modules/yomitan-handlebars/src/handlebars.ts -var import_handlebars2 = __toESM(require_handlebars()); - -// node_modules/yomitan-handlebars/src/visitor.ts -var import_handlebars = __toESM(require_handlebars()); -var import_proto_access = __toESM(require_proto_access()); -var import_ast = __toESM(require_ast()); -var import_utils2 = __toESM(require_utils()); -var import_helpers = __toESM(require_helpers()); - -// node_modules/yomitan-handlebars/src/symbols.ts -var kHelper = Symbol("helper"); -var kAmbiguous = Symbol("ambiguous"); -var kSimple = Symbol("simple"); - -// node_modules/yomitan-handlebars/src/utils.ts -var import_utils = __toESM(require_utils()); -function isBlock(node) { - return "program" in node || "inverse" in node; -} -function isDecorator(node) { - return node.type === "Decorator" || node.type === "DecoratorBlock"; -} -function toDecoratorOptions(options) { - delete options.lookupProperty; - return options; -} -function noop() { - return ""; -} -function initData(context, data) { - if (!data || !("root" in data)) { - data = data ? (0, import_utils.createFrame)(data) : {}; - data.root = context; - } - return data; -} -function transformLiteralToPath(node) { - const pathIsLiteral = "parts" in node.path === false; - if (pathIsLiteral) { - const literal = node.path; - const original = literal.original; - node.path = { - type: "PathExpression", - data: false, - depth: 0, - parts: [original + ""], - original: original + "", - loc: literal.loc - }; - } -} - -// node_modules/yomitan-handlebars/src/visitor.ts -var ElasticHandlebarsVisitor = class extends import_handlebars.default.Visitor { - // It's important that a given program node only has its decorators run once, we use this Map to keep track of them - constructor(env, input, options = {}) { - super(); - __publicField(this, "env"); - __publicField(this, "contexts", []); - __publicField(this, "output", []); - __publicField(this, "template"); - __publicField(this, "compileOptions"); - __publicField(this, "runtimeOptions"); - __publicField(this, "blockParamNames", []); - __publicField(this, "blockParamValues", []); - __publicField(this, "ast"); - __publicField(this, "container"); - __publicField(this, "defaultHelperOptions"); - __publicField(this, "processedRootDecorators", false); - // Root decorators should not have access to input arguments. This flag helps us detect them. - __publicField(this, "processedDecoratorsForProgram", /* @__PURE__ */ new Set()); - this.env = env; - if (typeof input !== "string" && input.type === "Program") { - this.ast = input; - } else { - this.template = input; - } - this.compileOptions = { data: true, ...options }; - this.compileOptions.knownHelpers = Object.assign( - /* @__PURE__ */ Object.create(null), - { - helperMissing: true, - blockHelperMissing: true, - each: true, - if: true, - unless: true, - with: true, - log: true, - lookup: true - }, - this.compileOptions.knownHelpers - ); - const protoAccessControl = (0, import_proto_access.createProtoAccessControl)({}); - const container = this.container = { - helpers: {}, - partials: {}, - decorators: {}, - strict(obj, name, loc) { - if (!obj || !(name in obj)) { - throw new import_handlebars.default.Exception('"' + name + '" not defined in ' + obj, { - loc - }); - } - return container.lookupProperty(obj, name); - }, - // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js) - lookupProperty(parent, propertyName) { - const result = parent[propertyName]; - if (result == null) { - return result; - } - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return result; - } - if ((0, import_proto_access.resultIsAllowed)(result, protoAccessControl, propertyName)) { - return result; - } - return void 0; - }, - // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js) - lambda(current, context) { - return typeof current === "function" ? current.call(context) : current; - }, - data(value, depth) { - while (value && depth--) { - value = value._parent; - } - return value; - }, - hooks: {} - }; - this.defaultHelperOptions = { - lookupProperty: container.lookupProperty - }; - } - render(context, options = {}) { - this.contexts = [context]; - this.output = []; - this.runtimeOptions = { ...options }; - this.container.helpers = { ...this.env.helpers, ...options.helpers }; - this.container.partials = { ...this.env.partials, ...options.partials }; - this.container.decorators = { - ...this.env.decorators, - ...options.decorators - }; - this.container.hooks = {}; - this.processedRootDecorators = false; - this.processedDecoratorsForProgram.clear(); - if (this.compileOptions.data) { - this.runtimeOptions.data = initData(context, this.runtimeOptions.data); - } - const keepHelperInHelpers = false; - (0, import_helpers.moveHelperToHooks)(this.container, "helperMissing", keepHelperInHelpers); - (0, import_helpers.moveHelperToHooks)(this.container, "blockHelperMissing", keepHelperInHelpers); - if (!this.ast) { - this.ast = import_handlebars.default.parse(this.template); - } - const defaultMain = (_context) => { - const prog = this.generateProgramFunction(this.ast); - return prog(_context, this.runtimeOptions); - }; - const main = this.processDecorators(this.ast, defaultMain); - this.processedRootDecorators = true; - const result = main(this.context, options); - if (main === defaultMain) { - this.output.push(result); - return this.output.join(""); - } else { - return result; - } - } - // ********************************************** // - // *** Visitor AST Traversal Functions *** // - // ********************************************** // - Program(program) { - this.blockParamNames.unshift(program.blockParams); - super.Program(program); - this.blockParamNames.shift(); - } - MustacheStatement(mustache) { - this.processStatementOrExpression(mustache); - } - BlockStatement(block) { - this.processStatementOrExpression(block); - } - PartialStatement(partial) { - this.invokePartial(partial); - } - PartialBlockStatement(partial) { - this.invokePartial(partial); - } - // This space is intentionally left blank: We want to override the Visitor - // class implementation of this method, but since we handle decorators - // separately before traversing the nodes, we just want to make this a no-op. - DecoratorBlock(decorator) { - } - // This space is intentionally left blank: We want to override the Visitor - // class implementation of this method, but since we handle decorators - // separately before traversing the nodes, we just want to make this a no-op. - Decorator(decorator) { - } - SubExpression(sexpr) { - this.processStatementOrExpression(sexpr); - } - PathExpression(path) { - const blockParamId = !path.depth && !import_ast.default.helpers.scopedId(path) && this.blockParamIndex(path.parts[0]); - let result; - if (blockParamId) { - result = this.lookupBlockParam(blockParamId, path); - } else if (path.data) { - result = this.lookupData(this.runtimeOptions.data, path); - } else { - result = this.resolvePath(this.contexts[path.depth], path); - } - this.output.push(result); - } - ContentStatement(content) { - this.output.push(content.value); - } - StringLiteral(string) { - this.output.push(string.value); - } - NumberLiteral(number) { - this.output.push(number.value); - } - BooleanLiteral(bool) { - this.output.push(bool.value); - } - UndefinedLiteral() { - this.output.push(void 0); - } - NullLiteral() { - this.output.push(null); - } - // ********************************************** // - // *** Visitor AST Helper Functions *** // - // ********************************************** // - /** - * Special code for decorators, since they have to be executed ahead of time (before the wrapping program). - * So we have to look into the program AST body and see if it contains any decorators that we have to process - * before we can finish processing of the wrapping program. - */ - processDecorators(program, prog) { - if (!this.processedDecoratorsForProgram.has(program)) { - this.processedDecoratorsForProgram.add(program); - const props = {}; - for (const node of program.body) { - if (isDecorator(node)) { - prog = this.processDecorator(node, prog, props); - } - } - } - return prog; - } - processDecorator(decorator, prog, props) { - const options = this.setupDecoratorOptions(decorator); - const result = this.container.lookupProperty( - this.container.decorators, - options.name - )(prog, props, this.container, options); - return Object.assign(result || prog, props); - } - processStatementOrExpression(node) { - transformLiteralToPath(node); - switch (this.classifyNode(node)) { - case kSimple: - this.processSimpleNode(node); - break; - case kHelper: - this.processHelperNode(node); - break; - case kAmbiguous: - this.processAmbiguousNode(node); - break; - } - } - // Liftet from lib/handlebars/compiler/compiler.js (original name: classifySexpr) - classifyNode(node) { - const isSimple = import_ast.default.helpers.simpleId(node.path); - const isBlockParam = isSimple && !!this.blockParamIndex(node.path.parts[0]); - let isHelper = !isBlockParam && import_ast.default.helpers.helperExpression(node); - let isEligible = !isBlockParam && (isHelper || isSimple); - if (isEligible && !isHelper) { - const name = node.path.parts[0]; - const options = this.compileOptions; - if (options.knownHelpers && options.knownHelpers[name]) { - isHelper = true; - } else if (options.knownHelpersOnly) { - isEligible = false; - } - } - if (isHelper) { - return kHelper; - } else if (isEligible) { - return kAmbiguous; - } else { - return kSimple; - } - } - // Liftet from lib/handlebars/compiler/compiler.js - blockParamIndex(name) { - for (let depth = 0, len = this.blockParamNames.length; depth < len; depth++) { - const blockParams = this.blockParamNames[depth]; - const param = blockParams && (0, import_utils2.indexOf)(blockParams, name); - if (blockParams && param >= 0) { - return [depth, param]; - } - } - } - // Looks up the value of `parts` on the given block param and pushes - // it onto the stack. - lookupBlockParam(blockParamId, path) { - const value = this.blockParamValues[blockParamId[0]][blockParamId[1]]; - return this.resolvePath(value, path, 1); - } - // Push the data lookup operator - lookupData(data, path) { - if (path.depth) { - data = this.container.data(data, path.depth); - } - return this.resolvePath(data, path); - } - pushToOutputWithEscapeCheck(result, node) { - if (!node.escaped || this.compileOptions.noEscape === true || typeof result !== "string") { - this.output.push(result); - } else { - this.output.push(import_handlebars.default.escapeExpression(result)); - } - } - processSimpleNode(node) { - const path = node.path; - path.strict = true; - const result = this.resolveNodes(path)[0]; - const lambdaResult = this.container.lambda(result, this.context); - if (isBlock(node)) { - this.blockValue(node, lambdaResult); - } else { - this.pushToOutputWithEscapeCheck(lambdaResult, node); - } - } - // The purpose of this opcode is to take a block of the form - // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and - // replace it on the stack with the result of properly - // invoking blockHelperMissing. - blockValue(node, value) { - const name = node.path.original; - const options = this.setupParams(node, name); - const result = this.container.hooks.blockHelperMissing.call(this.context, value, options); - this.output.push(result); - } - processHelperNode(node) { - const path = node.path; - const name = path.parts[0]; - if (this.compileOptions.knownHelpers && this.compileOptions.knownHelpers[name]) { - this.invokeKnownHelper(node); - } else if (this.compileOptions.knownHelpersOnly) { - throw new import_handlebars.default.Exception( - "You specified knownHelpersOnly, but used the unknown helper " + name, - node - ); - } else { - this.invokeHelper(node); - } - } - // This operation is used when the helper is known to exist, - // so a `helperMissing` fallback is not required. - invokeKnownHelper(node) { - const name = node.path.parts[0]; - const helper = this.setupHelper(node, name); - const result = helper.fn.call(helper.context, ...helper.params, helper.options); - this.pushToOutputWithEscapeCheck(result, node); - } - // Pops off the helper's parameters, invokes the helper, - // and pushes the helper's return value onto the stack. - // - // If the helper is not found, `helperMissing` is called. - invokeHelper(node) { - const path = node.path; - const name = path.original; - const isSimple = import_ast.default.helpers.simpleId(path); - const helper = this.setupHelper(node, name); - const loc = isSimple && helper.fn ? node.loc : path.loc; - helper.fn = isSimple && helper.fn || this.resolveNodes(path)[0]; - if (!helper.fn) { - if (this.compileOptions.strict) { - helper.fn = this.container.strict(helper.context, name, loc); - } else { - helper.fn = this.container.hooks.helperMissing; - } - } - const result = helper.fn.call(helper.context, ...helper.params, helper.options); - this.pushToOutputWithEscapeCheck(result, node); - } - invokePartial(partial) { - const { params } = partial; - if (params.length > 1) { - throw new import_handlebars.default.Exception( - `Unsupported number of partial arguments: ${params.length}`, - partial - ); - } - const isDynamic = partial.name.type === "SubExpression"; - const name = isDynamic ? this.resolveNodes(partial.name).join("") : partial.name.original; - const options = this.setupParams(partial, name); - options.helpers = this.container.helpers; - options.partials = this.container.partials; - options.decorators = this.container.decorators; - let partialBlock; - if ("fn" in options && options.fn !== noop) { - const { fn } = options; - const currentPartialBlock = options.data?.["partial-block"]; - options.data = (0, import_utils2.createFrame)(options.data); - partialBlock = options.data["partial-block"] = function partialBlockWrapper(context2, wrapperOptions = {}) { - wrapperOptions.data = (0, import_utils2.createFrame)(wrapperOptions.data); - wrapperOptions.data["partial-block"] = currentPartialBlock; - return fn(context2, wrapperOptions); - }; - if (fn.partials) { - options.partials = { ...options.partials, ...fn.partials }; - } - } - let context = {}; - if (params.length === 0 && !this.compileOptions.explicitPartialContext) { - context = this.context; - } else if (params.length === 1) { - context = this.resolveNodes(params[0])[0]; - } - if (Object.keys(options.hash).length > 0) { - context = Object.assign({}, context, options.hash); - } - const partialTemplate = this.container.partials[name] ?? partialBlock ?? // TypeScript note: We extend ResolvePartialOptions in our types.ts file - // to fix an error in the upstream type. When calling back into the - // upstream code, we just cast back to the non-extended type - import_handlebars.default.VM.resolvePartial( - void 0, - void 0, - options - ); - if (partialTemplate === void 0) { - throw new import_handlebars.default.Exception(`The partial ${name} could not be found`); - } - let render; - if (typeof partialTemplate === "string") { - render = this.env.compileAST(partialTemplate, this.compileOptions); - if (name in this.container.partials) { - this.container.partials[name] = render; - } - } else { - render = partialTemplate; - } - let result = render(context, options); - if ("indent" in partial) { - result = partial.indent + (this.compileOptions.preventIndent ? result : result.replace(/\n(?!$)/g, ` -${partial.indent}`)); - } - this.output.push(result); - } - processAmbiguousNode(node) { - const name = node.path.parts[0]; - const helper = this.setupHelper(node, name); - let { fn: helperFn } = helper; - const loc = helperFn ? node.loc : node.path.loc; - helperFn = helperFn ?? this.resolveNodes(node.path)[0]; - if (helperFn === void 0) { - if (this.compileOptions.strict) { - helperFn = this.container.strict(helper.context, name, loc); - } else { - helperFn = helper.context != null ? this.container.lookupProperty(helper.context, name) : helper.context; - if (helperFn == null) helperFn = this.container.hooks.helperMissing; - } - } - const helperResult = typeof helperFn === "function" ? helperFn.call(helper.context, ...helper.params, helper.options) : helperFn; - if (isBlock(node)) { - const result = helper.fn ? helperResult : this.container.hooks.blockHelperMissing.call(this.context, helperResult, helper.options); - if (result != null) { - this.output.push(result); - } - } else { - if (node.escaped === false || this.compileOptions.noEscape === true || typeof helperResult !== "string") { - this.output.push(helperResult); - } else { - this.output.push(import_handlebars.default.escapeExpression(helperResult)); - } - } - } - setupHelper(node, helperName) { - return { - fn: this.container.lookupProperty(this.container.helpers, helperName), - context: this.context, - params: this.resolveNodes(node.params), - options: this.setupParams(node, helperName) - }; - } - setupDecoratorOptions(decorator) { - const name = decorator.path.original; - const options = toDecoratorOptions(this.setupParams(decorator, name)); - if (decorator.params.length > 0) { - if (!this.processedRootDecorators) { - const context = this.contexts.shift(); - options.args = this.resolveNodes(decorator.params); - this.contexts.unshift(context); - } else { - options.args = this.resolveNodes(decorator.params); - } - } else { - options.args = []; - } - return options; - } - setupParams(node, name) { - const options = { - name, - hash: this.getHash(node), - data: this.runtimeOptions.data, - loc: { start: node.loc.start, end: node.loc.end }, - ...this.defaultHelperOptions - }; - if (isBlock(node)) { - options.fn = node.program ? this.processDecorators(node.program, this.generateProgramFunction(node.program)) : noop; - options.inverse = node.inverse ? this.processDecorators(node.inverse, this.generateProgramFunction(node.inverse)) : noop; - } - return options; - } - generateProgramFunction(program) { - if (!program) return noop; - const prog = (nextContext, runtimeOptions = {}) => { - runtimeOptions = { ...runtimeOptions }; - runtimeOptions.data = runtimeOptions.data || this.runtimeOptions.data; - if (runtimeOptions.blockParams) { - runtimeOptions.blockParams = runtimeOptions.blockParams.concat( - this.runtimeOptions.blockParams - ); - } - runtimeOptions.partials = runtimeOptions.partials || this.runtimeOptions.partials; - const tmpRuntimeOptions = this.runtimeOptions; - this.runtimeOptions = runtimeOptions; - const shiftContext = nextContext !== this.context; - if (shiftContext) this.contexts.unshift(nextContext); - this.blockParamValues.unshift(runtimeOptions.blockParams || []); - const result = this.resolveNodes(program).join(""); - this.blockParamValues.shift(); - if (shiftContext) this.contexts.shift(); - this.runtimeOptions = tmpRuntimeOptions; - return result; - }; - prog.blockParams = program.blockParams?.length ?? 0; - return prog; - } - getHash(statement) { - const result = {}; - if (!statement.hash) return result; - for (const { key, value } of statement.hash.pairs) { - result[key] = this.resolveNodes(value)[0]; - } - return result; - } - resolvePath(obj, path, index = 0) { - if (this.compileOptions.strict || this.compileOptions.assumeObjects) { - return this.strictLookup(obj, path); - } - for (; index < path.parts.length; index++) { - if (obj == null) return; - obj = this.container.lookupProperty(obj, path.parts[index]); - } - return obj; - } - strictLookup(obj, path) { - const requireTerminal = this.compileOptions.strict && path.strict; - const len = path.parts.length - (requireTerminal ? 1 : 0); - for (let i = 0; i < len; i++) { - obj = this.container.lookupProperty(obj, path.parts[i]); - } - if (requireTerminal) { - return this.container.strict(obj, path.parts[len], path.loc); - } else { - return obj; - } - } - resolveNodes(nodes) { - const currentOutput = this.output; - this.output = []; - if (Array.isArray(nodes)) { - this.acceptArray(nodes); - } else { - this.accept(nodes); - } - const result = this.output; - this.output = currentOutput; - return result; - } - get context() { - return this.contexts[0]; - } -}; - -// node_modules/yomitan-handlebars/src/handlebars.ts -var originalCreate = import_handlebars2.default.create; -import_handlebars2.default.create = function() { - const SandboxedHandlebars = originalCreate.call(import_handlebars2.default); - SandboxedHandlebars.compileAST = import_handlebars2.default.compileAST; - return SandboxedHandlebars; -}; -import_handlebars2.default.compileAST = function(input, options) { - if (input == null || typeof input !== "string" && input.type !== "Program") { - throw new import_handlebars2.default.Exception( - `You must pass a string or Handlebars AST to Handlebars.compileAST. You passed ${input}` - ); - } - const visitor = new ElasticHandlebarsVisitor(this ?? import_handlebars2.default, input, options); - return (context, runtimeOptions) => visitor.render(context, runtimeOptions); -}; -var export_Handlebars = import_handlebars2.default; -export { - export_Handlebars as Handlebars -}; -//# sourceMappingURL=handlebars.js.map diff --git a/vendor/yomitan/lib/handlebars.js.map b/vendor/yomitan/lib/handlebars.js.map deleted file mode 100644 index d0a27e54..00000000 --- a/vendor/yomitan/lib/handlebars.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/handlebars/lib/handlebars/utils.js", "../../node_modules/handlebars/lib/handlebars/exception.js", "../../node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js", "../../node_modules/handlebars/lib/handlebars/helpers/each.js", "../../node_modules/handlebars/lib/handlebars/helpers/helper-missing.js", "../../node_modules/handlebars/lib/handlebars/helpers/if.js", "../../node_modules/handlebars/lib/handlebars/helpers/log.js", "../../node_modules/handlebars/lib/handlebars/helpers/lookup.js", "../../node_modules/handlebars/lib/handlebars/helpers/with.js", "../../node_modules/handlebars/lib/handlebars/helpers.js", "../../node_modules/handlebars/lib/handlebars/decorators/inline.js", "../../node_modules/handlebars/lib/handlebars/decorators.js", "../../node_modules/handlebars/lib/handlebars/logger.js", "../../node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js", "../../node_modules/handlebars/lib/handlebars/internal/proto-access.js", "../../node_modules/handlebars/lib/handlebars/base.js", "../../node_modules/handlebars/lib/handlebars/safe-string.js", "../../node_modules/handlebars/lib/handlebars/internal/wrapHelper.js", "../../node_modules/handlebars/lib/handlebars/runtime.js", "../../node_modules/handlebars/lib/handlebars/no-conflict.js", "../../node_modules/handlebars/lib/handlebars.runtime.js", "../../node_modules/handlebars/lib/handlebars/compiler/ast.js", "../../node_modules/handlebars/lib/handlebars/compiler/parser.js", "../../node_modules/handlebars/lib/handlebars/compiler/visitor.js", "../../node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js", "../../node_modules/handlebars/lib/handlebars/compiler/helpers.js", "../../node_modules/handlebars/lib/handlebars/compiler/base.js", "../../node_modules/handlebars/lib/handlebars/compiler/compiler.js", "../../node_modules/source-map/lib/base64.js", "../../node_modules/source-map/lib/base64-vlq.js", "../../node_modules/source-map/lib/util.js", "../../node_modules/source-map/lib/array-set.js", "../../node_modules/source-map/lib/mapping-list.js", "../../node_modules/source-map/lib/source-map-generator.js", "../../node_modules/source-map/lib/binary-search.js", "../../node_modules/source-map/lib/quick-sort.js", "../../node_modules/source-map/lib/source-map-consumer.js", "../../node_modules/source-map/lib/source-node.js", "../../node_modules/source-map/source-map.js", "../../node_modules/handlebars/lib/handlebars/compiler/code-gen.js", "../../node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js", "../../node_modules/handlebars/lib/handlebars.js", "../../node_modules/yomitan-handlebars/src/handlebars.ts", "../../node_modules/yomitan-handlebars/src/visitor.ts", "../../node_modules/yomitan-handlebars/src/symbols.ts", "../../node_modules/yomitan-handlebars/src/utils.ts"], - "sourcesContent": ["const escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n", "const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n", "import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n const newContext = [];\n const iterator = context[Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n", "import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n", "import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n", "export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n", "export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n", "import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n", "import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n", "import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n", "import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n", "import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n", "import { createNewLookupObject } from './create-new-lookup-object';\nimport logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n", "import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.8';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n", "// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n", "export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n", "import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n", "/* global globalThis */\nexport default function(Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function() {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function() {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n const $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n", "import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n", "let AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function(node) {\n return (\n node.type === 'SubExpression' ||\n ((node.type === 'MustacheStatement' ||\n node.type === 'BlockStatement') &&\n !!((node.params && node.params.length) || node.hash))\n );\n },\n\n scopedId: function(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function(path) {\n return (\n path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n );\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n", "// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0-1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n indent: '',\n strip: yy.stripFlags($$[$0-4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n throw new Error(str);\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\")\n this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\")\n this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\nsetInput:function (input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n if (this.options.ranges) this.yylloc.range = [0,0];\n this.offset = 0;\n return this;\n },\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length-1);\n this.matched = this.matched.substr(0, this.matched.length-1);\n\n if (lines.length-1) this.yylineno -= lines.length-1;\n var r = this.yylloc.range;\n\n this.yylloc = {first_line: this.yylloc.first_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\nmore:function () {\n this._more = true;\n return this;\n },\nless:function (n) {\n this.unput(this.match.slice(n));\n },\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n },\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n },\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token,\n match,\n tempMatch,\n index,\n col,\n lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i=0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {first_line: this.yylloc.last_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n {text: \"\", token: null, line: this.yylineno});\n }\n },\nlex:function lex () {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\npopState:function popState () {\n return this.conditionStack.pop();\n },\n_currentRules:function _currentRules () {\n return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n },\ntopState:function () {\n return this.conditionStack[this.conditionStack.length-2];\n },\npushState:function begin (condition) {\n this.begin(condition);\n }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0,1);\n this.begin(\"mu\");\n } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0,1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if(yy_.yytext) return 15;\n \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n this.popState();\n return 15;\n \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n this.popState();\n return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n this.popState();\n this.begin('raw');\n return 23;\n \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\nbreak;\ncase 22:\n this.popState();\n return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n", "import Exception from '../exception';\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function(node, name) {\n let value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception(\n 'Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type\n );\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function(array) {\n for (let i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n let ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function(/* content */) {},\n CommentStatement: function(/* comment */) {},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function(/* path */) {},\n\n StringLiteral: function(/* string */) {},\n NumberLiteral: function(/* number */) {},\n BooleanLiteral: function(/* bool */) {},\n UndefinedLiteral: function(/* literal */) {},\n NullLiteral: function(/* literal */) {},\n\n Hash: function(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n", "import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n const doStandalone = !this.options.ignoreStandalone;\n\n let isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n let body = program.body;\n for (let i = 0, l = body.length; i < l; i++) {\n let current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone =\n strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n block\n) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n let program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n let strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n let inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (\n !this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)\n ) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n mustache\n) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n node\n) {\n /* istanbul ignore next */\n let strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n let prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n prev.original\n );\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n let next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n next.original\n );\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n let current = body[i == null ? 0 : i + 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)\n ) {\n return;\n }\n\n let original = current.value;\n current.value = current.value.replace(\n multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n ''\n );\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n let current = body[i == null ? body.length - 1 : i - 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)\n ) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n let original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n", "import Exception from '../exception';\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n let errorNode = { loc: open.path.loc };\n\n throw new Exception(\n open.path.original + \" doesn't match \" + close,\n errorNode\n );\n }\n}\n\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n let original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (let i = 0, l = parts.length; i < l; i++) {\n let part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data,\n depth,\n parts: dig,\n original,\n loc\n };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n let escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n let decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path,\n params,\n hash,\n escaped,\n strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n let program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nexport function prepareBlock(\n openBlock,\n program,\n inverseAndProgram,\n close,\n inverted,\n locInfo\n) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n let decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n let inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception(\n 'Unexpected inverse block on decorator',\n inverseAndProgram\n );\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program,\n inverse,\n openStrip: openBlock.strip,\n inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n const firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n", "import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function(locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n let ast = parser.parse(input);\n\n return ast;\n}\n\nexport function parse(input, options) {\n let ast = parseWithoutProcessing(input, options);\n let strip = new WhitespaceControl(options);\n\n return strip.accept(ast);\n}\n", "/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function(other) {\n let len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n let opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (\n opcode.opcode !== otherOpcode.opcode ||\n !argEquals(opcode.args, otherOpcode.args)\n ) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (let i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = extend(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true\n },\n options.knownHelpers\n );\n\n return this.accept(program);\n },\n\n compileProgram: function(program) {\n let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new Exception('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n let ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n let body = program.body,\n bodyLength = body.length;\n for (let i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function(block) {\n transformLiteralToPath(block);\n\n let program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n let type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock(decorator) {\n let program = decorator.program && this.compileProgram(decorator.program);\n let params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function(partial) {\n this.usePartial = true;\n\n let program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n let params = partial.params;\n if (params.length > 1) {\n throw new Exception(\n 'Unsupported number of partial arguments: ' + params.length,\n partial\n );\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n let partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n let indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function() {},\n\n SubExpression: function(sexpr) {\n transformLiteralToPath(sexpr);\n let type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function(sexpr, program, inverse) {\n let path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function(sexpr) {\n let path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function(sexpr, program, inverse) {\n let params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n sexpr\n );\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode(\n 'invokeHelper',\n params.length,\n path.original,\n AST.helpers.simpleId(path)\n );\n }\n },\n\n PathExpression: function(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n let name = path.parts[0],\n scoped = AST.helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode(\n 'lookupOnContext',\n path.parts,\n path.falsy,\n path.strict,\n scoped\n );\n }\n },\n\n StringLiteral: function(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function(hash) {\n let pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function(sexpr) {\n let isSimple = AST.helpers.simpleId(sexpr.path);\n\n let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n let name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function(params) {\n for (let i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function(val) {\n let value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n let blockParamIndex;\n if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n let blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value\n .replace(/^this(?:\\.|$)/, '')\n .replace(/^\\.\\//, '')\n .replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n let params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function(name) {\n for (\n let depth = 0, len = this.options.blockParams.length;\n depth < len;\n depth++\n ) {\n let blockParams = this.options.blockParams[depth],\n param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nexport function precompile(input, options, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n input\n );\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n input\n );\n }\n\n options = extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let compiled;\n\n function compileInput() {\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(\n environment,\n options,\n undefined,\n true\n );\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function(setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function(i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b) && a.length === b.length) {\n for (let i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n let literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // \u201Csources\u201D entry. This value is prepended to the individual\n // entries in the \u201Csource\u201D field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // \u201CsourceRoot\u201D, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n", "/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n", "/* global define, require */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we assume that\n // they are running on the browser and thus have no need for the source-map library.\n let SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {\n /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function(line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function() {\n return { code: this.toString() };\n },\n toString: function() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (isArray(chunk)) {\n let ret = [];\n\n for (let i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty() {\n return !this.source.length;\n },\n prepend: function(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function() {\n let source = this.empty();\n this.each(function(line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function(iter) {\n for (let i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function() {\n let loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(\n loc.start.line,\n loc.start.column,\n this.srcFile,\n chunk\n );\n },\n\n functionCall: function(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function(str) {\n return (\n '\"' +\n (str + '')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') +\n '\"'\n );\n },\n\n objectLiteral: function(obj) {\n let pairs = [];\n\n Object.keys(obj).forEach(key => {\n let value = castChunk(obj[key], this);\n if (value !== 'undefined') {\n pairs.push([this.quotedString(key), ':', value]);\n }\n });\n\n let ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function(entries) {\n let ret = this.empty();\n\n for (let i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function(entries) {\n let ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexport default CodeGen;\n", "import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function(name) {\n return [\n this.aliasable('container.lookup'),\n '(depths, ',\n JSON.stringify(name),\n ')'\n ];\n },\n\n compilerInfo: function() {\n const revision = COMPILER_REVISION,\n versions = REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths =\n this.useDepths ||\n environment.useDepths ||\n environment.useDecorators ||\n this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n let opcodes = environment.opcodes,\n opcode,\n firstLoc,\n i,\n l;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new Exception('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend([\n 'var decorators = container.decorators, ',\n this.lookupPropertyFunctionVarDeclaration(),\n ';\\n'\n ]);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, [\n 'fn',\n 'props',\n 'container',\n 'depth0',\n 'data',\n 'blockParams',\n 'depths',\n this.decorators.merge()\n ]);\n } else {\n this.decorators.prepend(\n 'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n );\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n let fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n let ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n let { programs, decorators } = this.context;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new CodeGen(this.options.srcName);\n this.decorators = new CodeGen(this.options.srcName);\n },\n\n createFunctionContext: function(asObject) {\n let varDeclarations = '';\n\n let locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n let aliasCount = 0;\n Object.keys(this.aliases).forEach(alias => {\n let node = this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n let source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap([\n 'function(',\n params.join(','),\n ') {\\n ',\n source,\n '}'\n ]);\n }\n },\n mergeSource: function(varDeclarations) {\n let isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst,\n sourceSeen,\n bufferStart,\n bufferEnd;\n this.source.each(line => {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations +=\n ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend(\n 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n );\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function() {\n return `\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n `.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function(name) {\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n let blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n let current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource([\n 'if (!',\n this.lastHelper,\n ') { ',\n current,\n ' = ',\n this.source.functionCall(blockHelperMissing, 'call', params),\n '}'\n ]);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function() {\n if (this.isInline()) {\n this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n let local = this.popStack();\n this.pushSource([\n 'if (',\n local,\n ' != null) { ',\n this.appendToBuffer(local, undefined, true),\n ' }'\n ]);\n if (this.environment.isSimple) {\n this.pushSource([\n 'else { ',\n this.appendToBuffer(\"''\", undefined, true),\n ' }'\n ]);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function() {\n this.pushSource(\n this.appendToBuffer([\n this.aliasable('container.escapeExpression'),\n '(',\n this.popStack(),\n ')'\n ])\n );\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function(parts, falsy, strict, scoped) {\n let i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function(type, parts, i, falsy, strict) {\n if (this.options.strict || this.options.assumeObjects) {\n this.push(\n strictLookup(this.options.strict && strict, this, parts, i, type)\n );\n return;\n }\n\n let len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(current => {\n let lookup = this.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function() {\n this.push([\n this.aliasable('container.lambda'),\n '(',\n this.popStack(),\n ', ',\n this.contextName(0),\n ')'\n ]);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function() {\n let hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator(paramSize, name) {\n let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push([\n 'fn = ',\n this.decorators.functionCall(foundDecorator, '', [\n 'fn',\n 'props',\n 'container',\n options\n ]),\n ' || fn;'\n ]);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function(paramSize, name, isSimple) {\n let nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n let possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n let functionLookupCode = [\n '(',\n this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n ')'\n ];\n let functionCall = this.source.functionCall(\n functionLookupCode,\n 'call',\n helper.callParams\n );\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function(items, separator) {\n let result = [];\n result.push(items[0]);\n for (let i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function(paramSize, name) {\n let helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function(name, helperCall) {\n this.useRegister('helper');\n\n let nonHelper = this.popStack();\n\n this.emptyHash();\n let helper = this.setupHelper(0, name, helperCall);\n\n let helperName = (this.lastHelper = this.nameLookup(\n 'helpers',\n name,\n 'helper'\n ));\n\n let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(\n ' != null ? helper : ',\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n this.push([\n '(',\n lookup,\n helper.paramsInit ? ['),(', helper.paramsInit] : [],\n '),',\n '(typeof helper === ',\n this.aliasable('\"function\"'),\n ' ? ',\n this.source.functionCall('helper', 'call', helper.callParams),\n ' : helper))'\n ]);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function(isDynamic, name, indent) {\n let params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function(key) {\n let value = this.popStack(),\n context,\n type,\n id;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n let hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral(\n 'blockParams[' +\n name[0] +\n '].path[' +\n name[1] +\n ']' +\n (child ? ' + ' + JSON.stringify('.' + child) : '')\n );\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function(environment, options) {\n let children = environment.children,\n child,\n compiler;\n\n for (let i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n let existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n let index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(\n child,\n options,\n this.context,\n !this.precompile\n );\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function(child) {\n for (let i = 0, len = this.context.environments.length; i < len; i++) {\n let environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function(guid) {\n let child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function(source) {\n if (this.pendingContent) {\n this.source.push(\n this.appendToBuffer(\n this.source.quotedString(this.pendingContent),\n this.pendingLocation\n )\n );\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function(callback) {\n let prefix = ['('],\n stack,\n createdStack,\n usedLiteral;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new Exception('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n let top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n let name = this.incrStack();\n\n prefix = ['((', this.push(name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n let item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function() {\n let inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (let i = 0, len = inlineStack.length; i < len; i++) {\n let entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n let stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function() {\n return this.inlineStack.length;\n },\n\n popStack: function(wrapped) {\n let inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new Exception('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function() {\n let stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function(name) {\n let ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function(paramSize, name, blockHelper) {\n let params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n let foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(\n `${this.contextName(0)} != null ? ${this.contextName(\n 0\n )} : (container.nullContext || {})`\n );\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function(helper, paramSize, params) {\n let options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n let inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n let i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function(helper, paramSize, params, useRegister) {\n let options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function() {\n const reservedWords = (\n 'break else new var' +\n ' case finally return void' +\n ' catch for switch while' +\n ' continue function this with' +\n ' default if throw' +\n ' delete in try' +\n ' do instanceof typeof' +\n ' abstract enum int short' +\n ' boolean export interface static' +\n ' byte extends long super' +\n ' char final native synchronized' +\n ' class float package throws' +\n ' const goto private transient' +\n ' debugger implements protected volatile' +\n ' double import public let yield await' +\n ' null true false'\n ).split(' ');\n\n const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n for (let i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n return (\n !JavaScriptCompiler.RESERVED_WORDS[name] &&\n /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n let stack = compiler.popStack(),\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [\n compiler.aliasable('container.strict'),\n '(',\n stack,\n ', ',\n compiler.quotedString(parts[i]),\n ', ',\n JSON.stringify(compiler.source.currentLocation),\n ' )'\n ];\n } else {\n return stack;\n }\n}\n\nexport default JavaScriptCompiler;\n", "import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n parser as Parser,\n parse,\n parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n let hb = _create();\n\n hb.compile = function(input, options) {\n return compile(input, options, hb);\n };\n hb.precompile = function(input, options) {\n return precompile(input, options, hb);\n };\n\n hb.AST = AST;\n hb.Compiler = Compiler;\n hb.JavaScriptCompiler = JavaScriptCompiler;\n hb.Parser = Parser;\n hb.parse = parse;\n hb.parseWithoutProcessing = parseWithoutProcessing;\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// The handlebars module uses `export =`, so we should technically use `import Handlebars = require('handlebars')`, but Babel will not allow this:\n// https://www.typescriptlang.org/docs/handbook/modules.html#export--and-import--require\nimport Handlebars from 'handlebars';\n\nimport type { CompileOptions, RuntimeOptions, TemplateDelegate } from './types';\nimport { ElasticHandlebarsVisitor } from './visitor';\n\nconst originalCreate = Handlebars.create;\n\nexport { Handlebars };\n\n/**\n * Creates an isolated Handlebars environment.\n *\n * Each environment has its own helpers.\n * This is only necessary for use cases that demand distinct helpers.\n * Most use cases can use the root Handlebars environment directly.\n *\n * @returns A sandboxed/scoped version of the @kbn/handlebars module\n */\nHandlebars.create = function (): typeof Handlebars {\n const SandboxedHandlebars = originalCreate.call(Handlebars) as typeof Handlebars;\n // When creating new Handlebars environments, ensure the custom compileAST function is present in the new environment as well\n SandboxedHandlebars.compileAST = Handlebars.compileAST;\n return SandboxedHandlebars;\n};\n\nHandlebars.compileAST = function (\n input: string | hbs.AST.Program,\n options?: CompileOptions\n): TemplateDelegate {\n if (input == null || (typeof input !== 'string' && input.type !== 'Program')) {\n throw new Handlebars.Exception(\n `You must pass a string or Handlebars AST to Handlebars.compileAST. You passed ${input}`\n );\n }\n\n // If `Handlebars.compileAST` is reassigned, `this` will be undefined.\n const visitor = new ElasticHandlebarsVisitor(this ?? Handlebars, input, options);\n\n return (context: any, runtimeOptions?: RuntimeOptions) => visitor.render(context, runtimeOptions);\n};\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nimport Handlebars from 'handlebars';\nimport {\n createProtoAccessControl,\n resultIsAllowed,\n // @ts-expect-error: Could not find a declaration file for module\n} from 'handlebars/dist/cjs/handlebars/internal/proto-access';\n// @ts-expect-error: Could not find a declaration file for module\nimport AST from 'handlebars/dist/cjs/handlebars/compiler/ast';\n// @ts-expect-error: Could not find a declaration file for module\nimport { indexOf, createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n// @ts-expect-error: Could not find a declaration file for module\nimport { moveHelperToHooks } from 'handlebars/dist/cjs/handlebars/helpers';\n\nimport type {\n AmbiguousHelperOptions,\n CompileOptions,\n Container,\n DecoratorDelegate,\n DecoratorsHash,\n HelperOptions,\n NodeType,\n NonBlockHelperOptions,\n ProcessableBlockStatementNode,\n ProcessableNode,\n ProcessableNodeWithPathParts,\n ProcessableNodeWithPathPartsOrLiteral,\n ProcessableStatementNode,\n ResolvePartialOptions,\n RuntimeOptions,\n Template,\n TemplateDelegate,\n VisitorHelper,\n} from './types';\nimport { kAmbiguous, kHelper, kSimple } from './symbols';\nimport {\n initData,\n isBlock,\n isDecorator,\n noop,\n toDecoratorOptions,\n transformLiteralToPath,\n} from './utils';\n\nexport class ElasticHandlebarsVisitor extends Handlebars.Visitor {\n private env: typeof Handlebars;\n private contexts: any[] = [];\n private output: any[] = [];\n private template?: string;\n private compileOptions: CompileOptions;\n private runtimeOptions?: RuntimeOptions;\n private blockParamNames: any[][] = [];\n private blockParamValues: any[][] = [];\n private ast?: hbs.AST.Program;\n private container: Container;\n private defaultHelperOptions: Pick;\n private processedRootDecorators = false; // Root decorators should not have access to input arguments. This flag helps us detect them.\n private processedDecoratorsForProgram = new Set(); // It's important that a given program node only has its decorators run once, we use this Map to keep track of them\n\n constructor(\n env: typeof Handlebars,\n input: string | hbs.AST.Program,\n options: CompileOptions = {}\n ) {\n super();\n\n this.env = env;\n\n if (typeof input !== 'string' && input.type === 'Program') {\n this.ast = input;\n } else {\n this.template = input as string;\n }\n\n this.compileOptions = { data: true, ...options };\n this.compileOptions.knownHelpers = Object.assign(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true,\n },\n this.compileOptions.knownHelpers\n );\n\n const protoAccessControl = createProtoAccessControl({});\n\n const container: Container = (this.container = {\n helpers: {},\n partials: {},\n decorators: {},\n strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Handlebars.Exception('\"' + name + '\" not defined in ' + obj, {\n loc,\n } as hbs.AST.Node);\n }\n return container.lookupProperty(obj, name);\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lookupProperty(parent, propertyName) {\n const result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n // this function is lifted from the handlebars source and slightly modified (lib/handlebars/runtime.js)\n lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n data(value: any, depth: number) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n hooks: {},\n });\n\n this.defaultHelperOptions = {\n lookupProperty: container.lookupProperty,\n };\n }\n\n render(context: any, options: RuntimeOptions = {}): string {\n this.contexts = [context];\n this.output = [];\n this.runtimeOptions = { ...options };\n this.container.helpers = { ...this.env.helpers, ...options.helpers };\n this.container.partials = { ...this.env.partials, ...options.partials };\n this.container.decorators = {\n ...(this.env.decorators as DecoratorsHash),\n ...options.decorators,\n };\n this.container.hooks = {};\n this.processedRootDecorators = false;\n this.processedDecoratorsForProgram.clear();\n\n if (this.compileOptions.data) {\n this.runtimeOptions.data = initData(context, this.runtimeOptions.data);\n }\n\n const keepHelperInHelpers = false;\n moveHelperToHooks(this.container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(this.container, 'blockHelperMissing', keepHelperInHelpers);\n\n if (!this.ast) {\n this.ast = Handlebars.parse(this.template!);\n }\n\n // The `defaultMain` function contains the default behavior:\n //\n // Generate a \"program\" function based on the root `Program` in the AST and\n // call it. This will start the processing of all the child nodes in the\n // AST.\n const defaultMain: TemplateDelegate = (_context) => {\n const prog = this.generateProgramFunction(this.ast!);\n return prog(_context, this.runtimeOptions);\n };\n\n // Run any decorators that might exist on the root:\n //\n // The `defaultMain` function is passed in, and if there are no root\n // decorators, or if the decorators chooses to do so, the same function is\n // returned from `processDecorators` and the default behavior is retained.\n //\n // Alternatively any of the root decorators might call the `defaultMain`\n // function themselves, process its return value, and return a completely\n // different `main` function.\n const main = this.processDecorators(this.ast, defaultMain);\n this.processedRootDecorators = true;\n\n // Call the `main` function and add the result to the final output.\n const result = main(this.context, options);\n\n if (main === defaultMain) {\n this.output.push(result);\n return this.output.join('');\n } else {\n // We normally expect the return value of `main` to be a string. However,\n // if a decorator is used to override the `defaultMain` function, the\n // return value can be any type. To match the upstream handlebars project\n // behavior, we want the result of rendering the template to be the\n // literal value returned by the decorator.\n //\n // Since the output array in this case always will be empty, we just\n // return that single value instead of attempting to join all the array\n // elements as strings.\n return result;\n }\n }\n\n // ********************************************** //\n // *** Visitor AST Traversal Functions *** //\n // ********************************************** //\n\n Program(program: hbs.AST.Program) {\n this.blockParamNames.unshift(program.blockParams);\n super.Program(program);\n this.blockParamNames.shift();\n }\n\n MustacheStatement(mustache: hbs.AST.MustacheStatement) {\n this.processStatementOrExpression(mustache);\n }\n\n BlockStatement(block: hbs.AST.BlockStatement) {\n this.processStatementOrExpression(block);\n }\n\n PartialStatement(partial: hbs.AST.PartialStatement) {\n this.invokePartial(partial);\n }\n\n PartialBlockStatement(partial: hbs.AST.PartialBlockStatement) {\n this.invokePartial(partial);\n }\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n DecoratorBlock(decorator: hbs.AST.DecoratorBlock) {}\n\n // This space is intentionally left blank: We want to override the Visitor\n // class implementation of this method, but since we handle decorators\n // separately before traversing the nodes, we just want to make this a no-op.\n Decorator(decorator: hbs.AST.Decorator) {}\n\n SubExpression(sexpr: hbs.AST.SubExpression) {\n this.processStatementOrExpression(sexpr);\n }\n\n PathExpression(path: hbs.AST.PathExpression) {\n const blockParamId =\n !path.depth && !AST.helpers.scopedId(path) && this.blockParamIndex(path.parts[0]);\n\n let result;\n if (blockParamId) {\n result = this.lookupBlockParam(blockParamId, path);\n } else if (path.data) {\n result = this.lookupData(this.runtimeOptions!.data, path);\n } else {\n result = this.resolvePath(this.contexts[path.depth], path);\n }\n\n this.output.push(result);\n }\n\n ContentStatement(content: hbs.AST.ContentStatement) {\n this.output.push(content.value);\n }\n\n StringLiteral(string: hbs.AST.StringLiteral) {\n this.output.push(string.value);\n }\n\n NumberLiteral(number: hbs.AST.NumberLiteral) {\n this.output.push(number.value);\n }\n\n BooleanLiteral(bool: hbs.AST.BooleanLiteral) {\n this.output.push(bool.value);\n }\n\n UndefinedLiteral() {\n this.output.push(undefined);\n }\n\n NullLiteral() {\n this.output.push(null);\n }\n\n // ********************************************** //\n // *** Visitor AST Helper Functions *** //\n // ********************************************** //\n\n /**\n * Special code for decorators, since they have to be executed ahead of time (before the wrapping program).\n * So we have to look into the program AST body and see if it contains any decorators that we have to process\n * before we can finish processing of the wrapping program.\n */\n private processDecorators(program: hbs.AST.Program, prog: TemplateDelegate) {\n if (!this.processedDecoratorsForProgram.has(program)) {\n this.processedDecoratorsForProgram.add(program);\n const props = {};\n for (const node of program.body) {\n if (isDecorator(node)) {\n prog = this.processDecorator(node, prog, props);\n }\n }\n }\n\n return prog;\n }\n\n private processDecorator(\n decorator: hbs.AST.DecoratorBlock | hbs.AST.Decorator,\n prog: TemplateDelegate,\n props: Record\n ) {\n const options = this.setupDecoratorOptions(decorator);\n\n const result = this.container.lookupProperty(\n this.container.decorators,\n options.name\n )(prog, props, this.container, options);\n\n return Object.assign(result || prog, props);\n }\n\n private processStatementOrExpression(node: ProcessableNodeWithPathPartsOrLiteral) {\n // Calling `transformLiteralToPath` has side-effects!\n // It converts a node from type `ProcessableNodeWithPathPartsOrLiteral` to `ProcessableNodeWithPathParts`\n transformLiteralToPath(node);\n\n switch (this.classifyNode(node as ProcessableNodeWithPathParts)) {\n case kSimple:\n this.processSimpleNode(node as ProcessableNodeWithPathParts);\n break;\n case kHelper:\n this.processHelperNode(node as ProcessableNodeWithPathParts);\n break;\n case kAmbiguous:\n this.processAmbiguousNode(node as ProcessableNodeWithPathParts);\n break;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js (original name: classifySexpr)\n private classifyNode(node: { path: hbs.AST.PathExpression }): NodeType {\n const isSimple = AST.helpers.simpleId(node.path);\n const isBlockParam = isSimple && !!this.blockParamIndex(node.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(node);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n const name = node.path.parts[0];\n const options = this.compileOptions;\n if (options.knownHelpers && options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return kHelper;\n } else if (isEligible) {\n return kAmbiguous;\n } else {\n return kSimple;\n }\n }\n\n // Liftet from lib/handlebars/compiler/compiler.js\n private blockParamIndex(name: string): [number, any] | undefined {\n for (let depth = 0, len = this.blockParamNames.length; depth < len; depth++) {\n const blockParams = this.blockParamNames[depth];\n const param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n private lookupBlockParam(blockParamId: [number, any], path: hbs.AST.PathExpression) {\n const value = this.blockParamValues[blockParamId[0]][blockParamId[1]];\n return this.resolvePath(value, path, 1);\n }\n\n // Push the data lookup operator\n private lookupData(data: any, path: hbs.AST.PathExpression) {\n if (path.depth) {\n data = this.container.data(data, path.depth);\n }\n\n return this.resolvePath(data, path);\n }\n\n private pushToOutputWithEscapeCheck(result: any, node: ProcessableNodeWithPathParts) {\n if (\n !(node as hbs.AST.MustacheStatement).escaped ||\n this.compileOptions.noEscape === true ||\n typeof result !== 'string'\n ) {\n this.output.push(result);\n } else {\n this.output.push(Handlebars.escapeExpression(result));\n }\n }\n\n private processSimpleNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n path.strict = true;\n const result = this.resolveNodes(path)[0];\n const lambdaResult = this.container.lambda(result, this.context);\n\n if (isBlock(node)) {\n this.blockValue(node, lambdaResult);\n } else {\n this.pushToOutputWithEscapeCheck(lambdaResult, node);\n }\n }\n\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n private blockValue(node: hbs.AST.BlockStatement, value: any) {\n const name = node.path.original;\n const options = this.setupParams(node, name);\n\n const result = this.container.hooks.blockHelperMissing!.call(this.context, value, options);\n\n this.output.push(result);\n }\n\n private processHelperNode(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.parts[0];\n if (this.compileOptions.knownHelpers && this.compileOptions.knownHelpers[name]) {\n this.invokeKnownHelper(node);\n } else if (this.compileOptions.knownHelpersOnly) {\n throw new Handlebars.Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n node\n );\n } else {\n this.invokeHelper(node);\n }\n }\n\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n private invokeKnownHelper(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n\n this.pushToOutputWithEscapeCheck(result, node);\n }\n\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n private invokeHelper(node: ProcessableNodeWithPathParts) {\n const path = node.path;\n const name = path.original;\n const isSimple = AST.helpers.simpleId(path);\n const helper = this.setupHelper(node, name);\n\n const loc = isSimple && helper.fn ? node.loc : path.loc;\n helper.fn = (isSimple && helper.fn) || this.resolveNodes(path)[0];\n\n if (!helper.fn) {\n if (this.compileOptions.strict) {\n helper.fn = this.container.strict(helper.context, name, loc);\n } else {\n helper.fn = this.container.hooks.helperMissing;\n }\n }\n\n // TypeScript: `helper.fn` might be `undefined` at this point, but to match the upstream behavior we call it without any guards\n const result = helper.fn!.call(helper.context, ...helper.params, helper.options);\n\n this.pushToOutputWithEscapeCheck(result, node);\n }\n\n private invokePartial(partial: hbs.AST.PartialStatement | hbs.AST.PartialBlockStatement) {\n const { params } = partial;\n if (params.length > 1) {\n throw new Handlebars.Exception(\n `Unsupported number of partial arguments: ${params.length}`,\n partial\n );\n }\n\n const isDynamic = partial.name.type === 'SubExpression';\n const name = isDynamic\n ? this.resolveNodes(partial.name).join('')\n : (partial.name as hbs.AST.PathExpression).original;\n\n const options: AmbiguousHelperOptions & ResolvePartialOptions = this.setupParams(partial, name);\n options.helpers = this.container.helpers;\n options.partials = this.container.partials;\n options.decorators = this.container.decorators;\n\n let partialBlock;\n if ('fn' in options && options.fn !== noop) {\n const { fn } = options;\n const currentPartialBlock = options.data?.['partial-block'];\n options.data = createFrame(options.data);\n\n // Wrapper function to get access to currentPartialBlock from the closure\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context: any,\n wrapperOptions: { data?: HelperOptions['data'] } = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n wrapperOptions.data = createFrame(wrapperOptions.data);\n wrapperOptions.data['partial-block'] = currentPartialBlock;\n return fn(context, wrapperOptions);\n };\n\n if (fn.partials) {\n options.partials = { ...options.partials, ...fn.partials };\n }\n }\n\n let context = {};\n if (params.length === 0 && !this.compileOptions.explicitPartialContext) {\n context = this.context;\n } else if (params.length === 1) {\n context = this.resolveNodes(params[0])[0];\n }\n\n if (Object.keys(options.hash).length > 0) {\n // TODO: context can be an array, but maybe never when we have a hash???\n context = Object.assign({}, context, options.hash);\n }\n\n const partialTemplate: Template | undefined =\n this.container.partials[name] ??\n partialBlock ??\n // TypeScript note: We extend ResolvePartialOptions in our types.ts file\n // to fix an error in the upstream type. When calling back into the\n // upstream code, we just cast back to the non-extended type\n Handlebars.VM.resolvePartial(\n undefined,\n undefined,\n options as Handlebars.ResolvePartialOptions\n );\n\n if (partialTemplate === undefined) {\n throw new Handlebars.Exception(`The partial ${name} could not be found`);\n }\n\n let render;\n if (typeof partialTemplate === 'string') {\n render = this.env.compileAST(partialTemplate, this.compileOptions);\n if (name in this.container.partials) {\n this.container.partials[name] = render;\n }\n } else {\n render = partialTemplate;\n }\n\n let result = render(context, options);\n\n if ('indent' in partial) {\n result =\n partial.indent +\n (this.compileOptions.preventIndent\n ? result\n : result.replace(/\\n(?!$)/g, `\\n${partial.indent}`)); // indent each line, ignoring any trailing linebreak\n }\n\n this.output.push(result);\n }\n\n private processAmbiguousNode(node: ProcessableNodeWithPathParts) {\n const name = node.path.parts[0];\n const helper = this.setupHelper(node, name);\n let { fn: helperFn } = helper;\n\n const loc = helperFn ? node.loc : node.path.loc;\n helperFn = helperFn ?? this.resolveNodes(node.path)[0];\n\n if (helperFn === undefined) {\n if (this.compileOptions.strict) {\n helperFn = this.container.strict(helper.context, name, loc);\n } else {\n helperFn =\n helper.context != null\n ? this.container.lookupProperty(helper.context, name)\n : helper.context;\n if (helperFn == null) helperFn = this.container.hooks.helperMissing;\n }\n }\n\n const helperResult =\n typeof helperFn === 'function'\n ? helperFn.call(helper.context, ...helper.params, helper.options)\n : helperFn;\n\n if (isBlock(node)) {\n const result = helper.fn\n ? helperResult\n : this.container.hooks.blockHelperMissing!.call(this.context, helperResult, helper.options);\n if (result != null) {\n this.output.push(result);\n }\n } else {\n if (\n (node as hbs.AST.MustacheStatement).escaped === false ||\n this.compileOptions.noEscape === true ||\n typeof helperResult !== 'string'\n ) {\n this.output.push(helperResult);\n } else {\n this.output.push(Handlebars.escapeExpression(helperResult));\n }\n }\n }\n\n private setupHelper(node: ProcessableNode, helperName: string): VisitorHelper {\n return {\n fn: this.container.lookupProperty(this.container.helpers, helperName),\n context: this.context,\n params: this.resolveNodes(node.params),\n options: this.setupParams(node, helperName),\n };\n }\n\n private setupDecoratorOptions(decorator: hbs.AST.Decorator | hbs.AST.DecoratorBlock) {\n // TypeScript: The types indicate that `decorator.path` technically can be an `hbs.AST.Literal`. However, the upstream codebase always treats it as an `hbs.AST.PathExpression`, so we do too.\n const name = (decorator.path as hbs.AST.PathExpression).original;\n const options = toDecoratorOptions(this.setupParams(decorator, name));\n\n if (decorator.params.length > 0) {\n if (!this.processedRootDecorators) {\n // When processing the root decorators, temporarily remove the root context so it's not accessible to the decorator\n const context = this.contexts.shift();\n options.args = this.resolveNodes(decorator.params);\n this.contexts.unshift(context);\n } else {\n options.args = this.resolveNodes(decorator.params);\n }\n } else {\n options.args = [];\n }\n\n return options;\n }\n\n private setupParams(node: ProcessableBlockStatementNode, name: string): HelperOptions;\n private setupParams(node: ProcessableStatementNode, name: string): NonBlockHelperOptions;\n private setupParams(node: ProcessableNode, name: string): AmbiguousHelperOptions;\n private setupParams(node: ProcessableNode, name: string) {\n const options: AmbiguousHelperOptions = {\n name,\n hash: this.getHash(node),\n data: this.runtimeOptions!.data,\n loc: { start: node.loc.start, end: node.loc.end },\n ...this.defaultHelperOptions,\n };\n\n if (isBlock(node)) {\n (options as HelperOptions).fn = node.program\n ? this.processDecorators(node.program, this.generateProgramFunction(node.program))\n : noop;\n (options as HelperOptions).inverse = node.inverse\n ? this.processDecorators(node.inverse, this.generateProgramFunction(node.inverse))\n : noop;\n }\n\n return options;\n }\n\n private generateProgramFunction(program: hbs.AST.Program) {\n if (!program) return noop;\n\n const prog: TemplateDelegate = (nextContext: any, runtimeOptions: RuntimeOptions = {}) => {\n runtimeOptions = { ...runtimeOptions };\n\n // inherit data in blockParams from parent program\n runtimeOptions.data = runtimeOptions.data || this.runtimeOptions!.data;\n if (runtimeOptions.blockParams) {\n runtimeOptions.blockParams = runtimeOptions.blockParams.concat(\n this.runtimeOptions!.blockParams\n );\n }\n\n // inherit partials from parent program\n runtimeOptions.partials = runtimeOptions.partials || this.runtimeOptions!.partials;\n\n // stash parent program data\n const tmpRuntimeOptions = this.runtimeOptions;\n this.runtimeOptions = runtimeOptions;\n const shiftContext = nextContext !== this.context;\n if (shiftContext) this.contexts.unshift(nextContext);\n this.blockParamValues.unshift(runtimeOptions.blockParams || []);\n\n // execute child program\n const result = this.resolveNodes(program).join('');\n\n // unstash parent program data\n this.blockParamValues.shift();\n if (shiftContext) this.contexts.shift();\n this.runtimeOptions = tmpRuntimeOptions;\n\n // return result of child program\n return result;\n };\n\n prog.blockParams = program.blockParams?.length ?? 0;\n return prog;\n }\n\n private getHash(statement: { hash?: hbs.AST.Hash }) {\n const result: { [key: string]: any } = {};\n if (!statement.hash) return result;\n for (const { key, value } of statement.hash.pairs) {\n result[key] = this.resolveNodes(value)[0];\n }\n return result;\n }\n\n private resolvePath(obj: any, path: hbs.AST.PathExpression, index = 0) {\n if (this.compileOptions.strict || this.compileOptions.assumeObjects) {\n return this.strictLookup(obj, path);\n }\n\n for (; index < path.parts.length; index++) {\n if (obj == null) return;\n obj = this.container.lookupProperty(obj, path.parts[index]);\n }\n\n return obj;\n }\n\n private strictLookup(obj: any, path: hbs.AST.PathExpression) {\n // @ts-expect-error strict is not a valid property on PathExpression, but we used in the same way it's also used in the original handlebars\n const requireTerminal = this.compileOptions.strict && path.strict;\n const len = path.parts.length - (requireTerminal ? 1 : 0);\n\n for (let i = 0; i < len; i++) {\n obj = this.container.lookupProperty(obj, path.parts[i]);\n }\n\n if (requireTerminal) {\n return this.container.strict(obj, path.parts[len], path.loc);\n } else {\n return obj;\n }\n }\n\n private resolveNodes(nodes: hbs.AST.Node | hbs.AST.Node[]): any[] {\n const currentOutput = this.output;\n this.output = [];\n\n if (Array.isArray(nodes)) {\n this.acceptArray(nodes);\n } else {\n this.accept(nodes);\n }\n\n const result = this.output;\n\n this.output = currentOutput;\n\n return result;\n }\n\n private get context() {\n return this.contexts[0];\n }\n}\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\nexport const kHelper = Symbol('helper');\nexport const kAmbiguous = Symbol('ambiguous');\nexport const kSimple = Symbol('simple');\n", "/*\n * Elasticsearch B.V licenses this file to you under the MIT License.\n * See `packages/kbn-handlebars/LICENSE` for more information.\n */\n\n// @ts-expect-error: Could not find a declaration file for module\nimport { createFrame } from 'handlebars/dist/cjs/handlebars/utils';\n\nimport type { AmbiguousHelperOptions, DecoratorOptions } from './types';\n\nexport function isBlock(node: hbs.AST.Node): node is hbs.AST.BlockStatement {\n return 'program' in node || 'inverse' in node;\n}\n\nexport function isDecorator(\n node: hbs.AST.Node\n): node is hbs.AST.Decorator | hbs.AST.DecoratorBlock {\n return node.type === 'Decorator' || node.type === 'DecoratorBlock';\n}\n\nexport function toDecoratorOptions(options: AmbiguousHelperOptions) {\n // There's really no tests/documentation on this, but to match the upstream codebase we'll remove `lookupProperty` from the decorator context\n delete (options as any).lookupProperty;\n\n return options as DecoratorOptions;\n}\n\nexport function noop() {\n return '';\n}\n\n// liftet from handlebars lib/handlebars/runtime.js\nexport function initData(context: any, data: any) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\n// liftet from handlebars lib/handlebars/compiler/compiler.js\nexport function transformLiteralToPath(node: { path: hbs.AST.PathExpression | hbs.AST.Literal }) {\n const pathIsLiteral = 'parts' in node.path === false;\n\n if (pathIsLiteral) {\n const literal = node.path;\n // @ts-expect-error: Not all `hbs.AST.Literal` sub-types has an `original` property, but that's ok, in that case we just want `undefined`\n const original = literal.original;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n node.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [original + ''],\n original: original + '',\n loc: literal.loc,\n };\n }\n}\n\nexport function allowUnsafeEval() {\n try {\n new Function();\n return true;\n } catch (e) {\n return false;\n }\n}\n"], - "mappings": "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CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC;QACpsB,eAAe,SAAS,UAAU,QAAO,QAAO,UAAS,IAAG,SAAQ,IAAG,IACrE;AAEF,cAAI,KAAK,GAAG,SAAS;AACrB,kBAAQ,SAAO;YACf,KAAK;AAAG,qBAAO,GAAG,KAAG,CAAC;AACtB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,eAAe,GAAG,EAAE,CAAC;AACxC;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AAAE,mBAAK,IAAI,GAAG,EAAE;AACrB;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,OAAO,GAAG,aAAa,GAAG,EAAE,CAAC;gBAC7B,OAAO,GAAG,WAAW,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;gBACnC,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,UAAU,GAAG,EAAE;gBACf,OAAO,GAAG,EAAE;gBACZ,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,gBAAgB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE;AACvE;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,EAAC;AACnE;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,OAAO,KAAK,EAAE;AACrF;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,KAAK,EAAE;AACpF;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAClJ;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAClI;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAClI;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE,EAAC;AAC5E;YACA,KAAK;AACD,kBAAI,UAAU,GAAG,aAAa,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,KAAK,EAAE,GAC5E,UAAU,GAAG,eAAe,CAAC,OAAO,GAAG,GAAG,KAAG,CAAC,EAAE,GAAG;AACvD,sBAAQ,UAAU;AAElB,mBAAK,IAAI,EAAE,OAAO,GAAG,KAAG,CAAC,EAAE,OAAO,SAAkB,OAAO,KAAI;AAEnE;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AACxE;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,gBAAgB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE;AACpH;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,gBAAgB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE;AACpH;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,MAAM,GAAG,KAAG,CAAC;gBACb,QAAQ,GAAG,KAAG,CAAC;gBACf,MAAM,GAAG,KAAG,CAAC;gBACb,QAAQ;gBACR,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC;gBACrC,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,oBAAoB,GAAG,KAAG,CAAC,GAAG,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE;AAC3E;YACA,KAAK;AAAG,mBAAK,IAAI,EAAE,MAAM,GAAG,KAAG,CAAC,GAAG,QAAQ,GAAG,KAAG,CAAC,GAAG,MAAM,GAAG,KAAG,CAAC,GAAG,OAAO,GAAG,WAAW,GAAG,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC,EAAC;AAC3G;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AACD,mBAAK,IAAI;gBACP,MAAM;gBACN,MAAM,GAAG,KAAG,CAAC;gBACb,QAAQ,GAAG,KAAG,CAAC;gBACf,MAAM,GAAG,KAAG,CAAC;gBACb,KAAK,GAAG,QAAQ,KAAK,EAAE;;AAG7B;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,QAAQ,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AACvE;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,YAAY,KAAK,GAAG,GAAG,GAAG,KAAG,CAAC,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AACjG;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,GAAG,GAAG,KAAG,CAAC,CAAC;AAC/B;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,iBAAiB,OAAO,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAClG;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,iBAAiB,OAAO,OAAO,GAAG,EAAE,CAAC,GAAG,UAAU,OAAO,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAClH;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,kBAAkB,OAAO,GAAG,EAAE,MAAM,QAAQ,UAAU,GAAG,EAAE,MAAM,QAAQ,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AACzH;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,oBAAoB,UAAU,QAAW,OAAO,QAAW,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAC3G;YACA,KAAK;AAAG,mBAAK,IAAI,EAAC,MAAM,eAAe,UAAU,MAAM,OAAO,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,EAAC;AAC5F;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,EAAE;AACtB;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,YAAY,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE;AACrD;YACA,KAAK;AAAG,mBAAK,IAAI,GAAG,YAAY,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE;AACtD;YACA,KAAK;AAAI,iBAAG,KAAG,CAAC,EAAE,KAAK,EAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,UAAU,GAAG,EAAE,GAAG,WAAW,GAAG,KAAG,CAAC,EAAC,CAAC;AAAG,mBAAK,IAAI,GAAG,KAAG,CAAC;AACtG;YACA,KAAK;AAAG,mBAAK,IAAI,CAAC,EAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,UAAU,GAAG,EAAE,EAAC,CAAC;AACzD;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAA;AACjB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAG,mBAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB;YACA,KAAK;AAAG,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC5B;YACA,KAAK;AAAI,mBAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AACzB;YACA,KAAK;AAAI,iBAAG,KAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;AAC7B;UAAM;;QAGN,OAAO,CAAC,EAAC,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,GAAE,EAAE,GAAE,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IA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", - "names": ["isFunction", "indexOf", "createFrame", "moveHelperToHooks", "options", "ret", "createProtoAccessControl", "resultIsAllowed", "wrapper", "ret", "initData", "context", "noop", "options", "Handlebars", "AST", "lexer", "compile", "transformLiteralToPath", "isBlock", "sourceFile", "needle", "section", "import_handlebars", "import_utils", "Handlebars", "AST", "context", "Handlebars", "Handlebars"] -} diff --git a/vendor/yomitan/lib/hangul-js.js b/vendor/yomitan/lib/hangul-js.js deleted file mode 100644 index 63d15105..00000000 --- a/vendor/yomitan/lib/hangul-js.js +++ /dev/null @@ -1,641 +0,0 @@ -// @ts-nocheck -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// node_modules/hangul-js/hangul.js -var require_hangul = __commonJS({ - "node_modules/hangul-js/hangul.js"(exports, module) { - (function() { - "use strict"; - var CHO = [ - "\u3131", - "\u3132", - "\u3134", - "\u3137", - "\u3138", - "\u3139", - "\u3141", - "\u3142", - "\u3143", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u3149", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], JUNG = [ - "\u314F", - "\u3150", - "\u3151", - "\u3152", - "\u3153", - "\u3154", - "\u3155", - "\u3156", - "\u3157", - ["\u3157", "\u314F"], - ["\u3157", "\u3150"], - ["\u3157", "\u3163"], - "\u315B", - "\u315C", - ["\u315C", "\u3153"], - ["\u315C", "\u3154"], - ["\u315C", "\u3163"], - "\u3160", - "\u3161", - ["\u3161", "\u3163"], - "\u3163" - ], JONG = [ - "", - "\u3131", - "\u3132", - ["\u3131", "\u3145"], - "\u3134", - ["\u3134", "\u3148"], - ["\u3134", "\u314E"], - "\u3137", - "\u3139", - ["\u3139", "\u3131"], - ["\u3139", "\u3141"], - ["\u3139", "\u3142"], - ["\u3139", "\u3145"], - ["\u3139", "\u314C"], - ["\u3139", "\u314D"], - ["\u3139", "\u314E"], - "\u3141", - "\u3142", - ["\u3142", "\u3145"], - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], HANGUL_OFFSET = 44032, CONSONANTS = [ - "\u3131", - "\u3132", - "\u3133", - "\u3134", - "\u3135", - "\u3136", - "\u3137", - "\u3138", - "\u3139", - "\u313A", - "\u313B", - "\u313C", - "\u313D", - "\u313E", - "\u313F", - "\u3140", - "\u3141", - "\u3142", - "\u3143", - "\u3144", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u3149", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], COMPLETE_CHO = [ - "\u3131", - "\u3132", - "\u3134", - "\u3137", - "\u3138", - "\u3139", - "\u3141", - "\u3142", - "\u3143", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u3149", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], COMPLETE_JUNG = [ - "\u314F", - "\u3150", - "\u3151", - "\u3152", - "\u3153", - "\u3154", - "\u3155", - "\u3156", - "\u3157", - "\u3158", - "\u3159", - "\u315A", - "\u315B", - "\u315C", - "\u315D", - "\u315E", - "\u315F", - "\u3160", - "\u3161", - "\u3162", - "\u3163" - ], COMPLETE_JONG = [ - "", - "\u3131", - "\u3132", - "\u3133", - "\u3134", - "\u3135", - "\u3136", - "\u3137", - "\u3139", - "\u313A", - "\u313B", - "\u313C", - "\u313D", - "\u313E", - "\u313F", - "\u3140", - "\u3141", - "\u3142", - "\u3144", - "\u3145", - "\u3146", - "\u3147", - "\u3148", - "\u314A", - "\u314B", - "\u314C", - "\u314D", - "\u314E" - ], COMPLEX_CONSONANTS = [ - ["\u3131", "\u3145", "\u3133"], - ["\u3134", "\u3148", "\u3135"], - ["\u3134", "\u314E", "\u3136"], - ["\u3139", "\u3131", "\u313A"], - ["\u3139", "\u3141", "\u313B"], - ["\u3139", "\u3142", "\u313C"], - ["\u3139", "\u3145", "\u313D"], - ["\u3139", "\u314C", "\u313E"], - ["\u3139", "\u314D", "\u313F"], - ["\u3139", "\u314E", "\u3140"], - ["\u3142", "\u3145", "\u3144"] - ], COMPLEX_VOWELS = [ - ["\u3157", "\u314F", "\u3158"], - ["\u3157", "\u3150", "\u3159"], - ["\u3157", "\u3163", "\u315A"], - ["\u315C", "\u3153", "\u315D"], - ["\u315C", "\u3154", "\u315E"], - ["\u315C", "\u3163", "\u315F"], - ["\u3161", "\u3163", "\u3162"] - ], CONSONANTS_HASH, CHO_HASH, JUNG_HASH, JONG_HASH, COMPLEX_CONSONANTS_HASH, COMPLEX_VOWELS_HASH; - function _makeHash(array) { - var length = array.length, hash = { 0: 0 }; - for (var i = 0; i < length; i++) { - if (array[i]) - hash[array[i].charCodeAt(0)] = i; - } - return hash; - } - CONSONANTS_HASH = _makeHash(CONSONANTS); - CHO_HASH = _makeHash(COMPLETE_CHO); - JUNG_HASH = _makeHash(COMPLETE_JUNG); - JONG_HASH = _makeHash(COMPLETE_JONG); - function _makeComplexHash(array) { - var length = array.length, hash = {}, code1, code2; - for (var i = 0; i < length; i++) { - code1 = array[i][0].charCodeAt(0); - code2 = array[i][1].charCodeAt(0); - if (typeof hash[code1] === "undefined") { - hash[code1] = {}; - } - hash[code1][code2] = array[i][2].charCodeAt(0); - } - return hash; - } - COMPLEX_CONSONANTS_HASH = _makeComplexHash(COMPLEX_CONSONANTS); - COMPLEX_VOWELS_HASH = _makeComplexHash(COMPLEX_VOWELS); - function _isConsonant(c) { - return typeof CONSONANTS_HASH[c] !== "undefined"; - } - function _isCho(c) { - return typeof CHO_HASH[c] !== "undefined"; - } - function _isJung(c) { - return typeof JUNG_HASH[c] !== "undefined"; - } - function _isJong(c) { - return typeof JONG_HASH[c] !== "undefined"; - } - function _isHangul(c) { - return 44032 <= c && c <= 55203; - } - function _isJungJoinable(a, b) { - return COMPLEX_VOWELS_HASH[a] && COMPLEX_VOWELS_HASH[a][b] ? COMPLEX_VOWELS_HASH[a][b] : false; - } - function _isJongJoinable(a, b) { - return COMPLEX_CONSONANTS_HASH[a] && COMPLEX_CONSONANTS_HASH[a][b] ? COMPLEX_CONSONANTS_HASH[a][b] : false; - } - var disassemble = function(string, grouped) { - if (string === null) { - throw new Error("Arguments cannot be null"); - } - if (typeof string === "object") { - string = string.join(""); - } - var result = [], length = string.length, cho, jung, jong, code, r; - for (var i = 0; i < length; i++) { - var temp = []; - code = string.charCodeAt(i); - if (_isHangul(code)) { - code -= HANGUL_OFFSET; - jong = code % 28; - jung = (code - jong) / 28 % 21; - cho = parseInt((code - jong) / 28 / 21); - temp.push(CHO[cho]); - if (typeof JUNG[jung] === "object") { - temp = temp.concat(JUNG[jung]); - } else { - temp.push(JUNG[jung]); - } - if (jong > 0) { - if (typeof JONG[jong] === "object") { - temp = temp.concat(JONG[jong]); - } else { - temp.push(JONG[jong]); - } - } - } else if (_isConsonant(code)) { - if (_isCho(code)) { - r = CHO[CHO_HASH[code]]; - } else { - r = JONG[JONG_HASH[code]]; - } - if (typeof r === "string") { - temp.push(r); - } else { - temp = temp.concat(r); - } - } else if (_isJung(code)) { - r = JUNG[JUNG_HASH[code]]; - if (typeof r === "string") { - temp.push(r); - } else { - temp = temp.concat(r); - } - } else { - temp.push(string.charAt(i)); - } - if (grouped) result.push(temp); - else result = result.concat(temp); - } - return result; - }; - var disassembleToString = function(str) { - if (typeof str !== "string") { - return ""; - } - str = disassemble(str); - return str.join(""); - }; - var assemble = function(array) { - if (typeof array === "string") { - array = disassemble(array); - } - var result = [], length = array.length, code, stage = 0, complete_index = -1, previous_code, jong_joined = false; - function _makeHangul(index) { - var code2, cho, jung1, jung2, jong1 = 0, jong2, hangul2 = ""; - jong_joined = false; - if (complete_index + 1 > index) { - return; - } - for (var step = 1; ; step++) { - if (step === 1) { - cho = array[complete_index + step].charCodeAt(0); - if (_isJung(cho)) { - if (complete_index + step + 1 <= index && _isJung(jung1 = array[complete_index + step + 1].charCodeAt(0))) { - result.push(String.fromCharCode(_isJungJoinable(cho, jung1))); - complete_index = index; - return; - } else { - result.push(array[complete_index + step]); - complete_index = index; - return; - } - } else if (!_isCho(cho)) { - result.push(array[complete_index + step]); - complete_index = index; - return; - } - hangul2 = array[complete_index + step]; - } else if (step === 2) { - jung1 = array[complete_index + step].charCodeAt(0); - if (_isCho(jung1)) { - cho = _isJongJoinable(cho, jung1); - hangul2 = String.fromCharCode(cho); - result.push(hangul2); - complete_index = index; - return; - } else { - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + HANGUL_OFFSET); - } - } else if (step === 3) { - jung2 = array[complete_index + step].charCodeAt(0); - if (_isJungJoinable(jung1, jung2)) { - jung1 = _isJungJoinable(jung1, jung2); - } else { - jong1 = jung2; - } - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET); - } else if (step === 4) { - jong2 = array[complete_index + step].charCodeAt(0); - if (_isJongJoinable(jong1, jong2)) { - jong1 = _isJongJoinable(jong1, jong2); - } else { - jong1 = jong2; - } - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET); - } else if (step === 5) { - jong2 = array[complete_index + step].charCodeAt(0); - jong1 = _isJongJoinable(jong1, jong2); - hangul2 = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET); - } - if (complete_index + step >= index) { - result.push(hangul2); - complete_index = index; - return; - } - } - } - for (var i = 0; i < length; i++) { - code = array[i].charCodeAt(0); - if (!_isCho(code) && !_isJung(code) && !_isJong(code)) { - _makeHangul(i - 1); - _makeHangul(i); - stage = 0; - continue; - } - if (stage === 0) { - if (_isCho(code)) { - stage = 1; - } else if (_isJung(code)) { - stage = 4; - } - } else if (stage == 1) { - if (_isJung(code)) { - stage = 2; - } else { - if (_isJongJoinable(previous_code, code)) { - stage = 5; - } else { - _makeHangul(i - 1); - } - } - } else if (stage == 2) { - if (_isJong(code)) { - stage = 3; - } else if (_isJung(code)) { - if (_isJungJoinable(previous_code, code)) { - } else { - _makeHangul(i - 1); - stage = 4; - } - } else { - _makeHangul(i - 1); - stage = 1; - } - } else if (stage == 3) { - if (_isJong(code)) { - if (!jong_joined && _isJongJoinable(previous_code, code)) { - jong_joined = true; - } else { - _makeHangul(i - 1); - stage = 1; - } - } else if (_isCho(code)) { - _makeHangul(i - 1); - stage = 1; - } else if (_isJung(code)) { - _makeHangul(i - 2); - stage = 2; - } - } else if (stage == 4) { - if (_isJung(code)) { - if (_isJungJoinable(previous_code, code)) { - _makeHangul(i); - stage = 0; - } else { - _makeHangul(i - 1); - } - } else { - _makeHangul(i - 1); - stage = 1; - } - } else if (stage == 5) { - if (_isJung(code)) { - _makeHangul(i - 2); - stage = 2; - } else { - _makeHangul(i - 1); - stage = 1; - } - } - previous_code = code; - } - _makeHangul(i - 1); - return result.join(""); - }; - var search = function(a, b) { - var ad = disassemble(a).join(""), bd = disassemble(b).join(""); - return ad.indexOf(bd); - }; - var rangeSearch = function(haystack, needle) { - var hex = disassemble(haystack).join(""), nex = disassemble(needle).join(""), grouped = disassemble(haystack, true), re = new RegExp(nex, "gi"), indices = [], result; - if (!needle.length) return []; - while (result = re.exec(hex)) { - indices.push(result.index); - } - function findStart(index) { - for (var i = 0, length = 0; i < grouped.length; ++i) { - length += grouped[i].length; - if (index < length) return i; - } - } - function findEnd(index) { - for (var i = 0, length = 0; i < grouped.length; ++i) { - length += grouped[i].length; - if (index + nex.length <= length) return i; - } - } - return indices.map(function(i) { - return [findStart(i), findEnd(i)]; - }); - }; - function Searcher(string) { - this.string = string; - this.disassembled = disassemble(string).join(""); - } - Searcher.prototype.search = function(string) { - return disassemble(string).join("").indexOf(this.disassembled); - }; - var endsWithConsonant = function(string) { - if (typeof string === "object") { - string = string.join(""); - } - var code = string.charCodeAt(string.length - 1); - if (_isHangul(code)) { - code -= HANGUL_OFFSET; - var jong = code % 28; - if (jong > 0) { - return true; - } - } else if (_isConsonant(code)) { - return true; - } - return false; - }; - var endsWith = function(string, target) { - return disassemble(string).pop() === target; - }; - var hangul = { - disassemble, - d: disassemble, - // alias for disassemble - disassembleToString, - ds: disassembleToString, - // alias for disassembleToString - assemble, - a: assemble, - // alias for assemble - search, - rangeSearch, - Searcher, - endsWithConsonant, - endsWith, - isHangul: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isHangul(c); - }, - isComplete: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isHangul(c); - }, - isConsonant: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isConsonant(c); - }, - isVowel: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isJung(c); - }, - isCho: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isCho(c); - }, - isJong: function(c) { - if (typeof c === "string") - c = c.charCodeAt(0); - return _isJong(c); - }, - isHangulAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isHangul(str.charCodeAt(i))) return false; - } - return true; - }, - isCompleteAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isHangul(str.charCodeAt(i))) return false; - } - return true; - }, - isConsonantAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isConsonant(str.charCodeAt(i))) return false; - } - return true; - }, - isVowelAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isJung(str.charCodeAt(i))) return false; - } - return true; - }, - isChoAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isCho(str.charCodeAt(i))) return false; - } - return true; - }, - isJongAll: function(str) { - if (typeof str !== "string") return false; - for (var i = 0; i < str.length; i++) { - if (!_isJong(str.charCodeAt(i))) return false; - } - return true; - } - }; - if (typeof define == "function" && define.amd) { - define(function() { - return hangul; - }); - } else if (typeof module !== "undefined") { - module.exports = hangul; - } else { - window.Hangul = hangul; - } - })(); - } -}); - -// dev/lib/hangul-js.js -var Hangul = __toESM(require_hangul(), 1); -export { - Hangul -}; -//# sourceMappingURL=hangul-js.js.map diff --git a/vendor/yomitan/lib/hangul-js.js.map b/vendor/yomitan/lib/hangul-js.js.map deleted file mode 100644 index 9c979f8f..00000000 --- a/vendor/yomitan/lib/hangul-js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/hangul-js/hangul.js", "../../dev/lib/hangul-js.js"], - "sourcesContent": ["/**\r\n * Hangul.js\r\n * https://github.com/e-/Hangul.js\r\n *\r\n * Copyright 2017, Jaemin Jo\r\n * under the MIT license.\r\n */\r\n\r\n(function () {\r\n 'use strict';\r\n var CHO = [\r\n '\u3131', '\u3132', '\u3134', '\u3137', '\u3138',\r\n '\u3139', '\u3141', '\u3142', '\u3143', '\u3145', '\u3146',\r\n '\u3147', '\u3148', '\u3149', '\u314A', '\u314B', '\u314C',\r\n '\u314D', '\u314E'\r\n ],\r\n JUNG = [\r\n '\u314F', '\u3150', '\u3151', '\u3152', '\u3153',\r\n '\u3154', '\u3155', '\u3156', '\u3157', ['\u3157', '\u314F'], ['\u3157', '\u3150'],\r\n ['\u3157', '\u3163'], '\u315B', '\u315C', ['\u315C', '\u3153'], ['\u315C', '\u3154'], ['\u315C', '\u3163'],\r\n '\u3160', '\u3161', ['\u3161', '\u3163'], '\u3163'\r\n ],\r\n JONG = [\r\n '', '\u3131', '\u3132', ['\u3131', '\u3145'], '\u3134', ['\u3134', '\u3148'], ['\u3134', '\u314E'], '\u3137', '\u3139',\r\n ['\u3139', '\u3131'], ['\u3139', '\u3141'], ['\u3139', '\u3142'], ['\u3139', '\u3145'], ['\u3139', '\u314C'], ['\u3139', '\u314D'], ['\u3139', '\u314E'], '\u3141',\r\n '\u3142', ['\u3142', '\u3145'], '\u3145', '\u3146', '\u3147', '\u3148', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n HANGUL_OFFSET = 0xAC00,\r\n CONSONANTS = [\r\n '\u3131', '\u3132', '\u3133', '\u3134', '\u3135', '\u3136', '\u3137', '\u3138',\r\n '\u3139', '\u313A', '\u313B', '\u313C', '\u313D', '\u313E', '\u313F', '\u3140',\r\n '\u3141', '\u3142', '\u3143', '\u3144', '\u3145', '\u3146', '\u3147', '\u3148',\r\n '\u3149', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n COMPLETE_CHO = [\r\n '\u3131', '\u3132', '\u3134', '\u3137', '\u3138',\r\n '\u3139', '\u3141', '\u3142', '\u3143', '\u3145', '\u3146',\r\n '\u3147', '\u3148', '\u3149', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n COMPLETE_JUNG = [\r\n '\u314F', '\u3150', '\u3151', '\u3152', '\u3153',\r\n '\u3154', '\u3155', '\u3156', '\u3157', '\u3158', '\u3159',\r\n '\u315A', '\u315B', '\u315C', '\u315D', '\u315E', '\u315F',\r\n '\u3160', '\u3161', '\u3162', '\u3163'\r\n ],\r\n COMPLETE_JONG = [\r\n '', '\u3131', '\u3132', '\u3133', '\u3134', '\u3135', '\u3136', '\u3137', '\u3139',\r\n '\u313A', '\u313B', '\u313C', '\u313D', '\u313E', '\u313F', '\u3140', '\u3141',\r\n '\u3142', '\u3144', '\u3145', '\u3146', '\u3147', '\u3148', '\u314A', '\u314B', '\u314C', '\u314D', '\u314E'\r\n ],\r\n COMPLEX_CONSONANTS = [\r\n ['\u3131', '\u3145', '\u3133'],\r\n ['\u3134', '\u3148', '\u3135'],\r\n ['\u3134', '\u314E', '\u3136'],\r\n ['\u3139', '\u3131', '\u313A'],\r\n ['\u3139', '\u3141', '\u313B'],\r\n ['\u3139', '\u3142', '\u313C'],\r\n ['\u3139', '\u3145', '\u313D'],\r\n ['\u3139', '\u314C', '\u313E'],\r\n ['\u3139', '\u314D', '\u313F'],\r\n ['\u3139', '\u314E', '\u3140'],\r\n ['\u3142', '\u3145', '\u3144']\r\n ],\r\n COMPLEX_VOWELS = [\r\n ['\u3157', '\u314F', '\u3158'],\r\n ['\u3157', '\u3150', '\u3159'],\r\n ['\u3157', '\u3163', '\u315A'],\r\n ['\u315C', '\u3153', '\u315D'],\r\n ['\u315C', '\u3154', '\u315E'],\r\n ['\u315C', '\u3163', '\u315F'],\r\n ['\u3161', '\u3163', '\u3162']\r\n ],\r\n CONSONANTS_HASH,\r\n CHO_HASH,\r\n JUNG_HASH,\r\n JONG_HASH,\r\n COMPLEX_CONSONANTS_HASH,\r\n COMPLEX_VOWELS_HASH\r\n ;\r\n\r\n function _makeHash(array) {\r\n var length = array.length,\r\n hash = { 0: 0 }\r\n ;\r\n for (var i = 0; i < length; i++) {\r\n if (array[i])\r\n hash[array[i].charCodeAt(0)] = i;\r\n }\r\n return hash;\r\n }\r\n\r\n CONSONANTS_HASH = _makeHash(CONSONANTS);\r\n CHO_HASH = _makeHash(COMPLETE_CHO);\r\n JUNG_HASH = _makeHash(COMPLETE_JUNG);\r\n JONG_HASH = _makeHash(COMPLETE_JONG);\r\n\r\n function _makeComplexHash(array) {\r\n var length = array.length,\r\n hash = {},\r\n code1,\r\n code2\r\n ;\r\n for (var i = 0; i < length; i++) {\r\n code1 = array[i][0].charCodeAt(0);\r\n code2 = array[i][1].charCodeAt(0);\r\n if (typeof hash[code1] === 'undefined') {\r\n hash[code1] = {};\r\n }\r\n hash[code1][code2] = array[i][2].charCodeAt(0);\r\n }\r\n return hash;\r\n }\r\n\r\n COMPLEX_CONSONANTS_HASH = _makeComplexHash(COMPLEX_CONSONANTS);\r\n COMPLEX_VOWELS_HASH = _makeComplexHash(COMPLEX_VOWELS);\r\n\r\n function _isConsonant(c) {\r\n return typeof CONSONANTS_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isCho(c) {\r\n return typeof CHO_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isJung(c) {\r\n return typeof JUNG_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isJong(c) {\r\n return typeof JONG_HASH[c] !== 'undefined';\r\n }\r\n\r\n function _isHangul(c /* code number */) {\r\n return 0xAC00 <= c && c <= 0xd7a3;\r\n }\r\n\r\n function _isJungJoinable(a, b) {\r\n return (COMPLEX_VOWELS_HASH[a] && COMPLEX_VOWELS_HASH[a][b]) ? COMPLEX_VOWELS_HASH[a][b] : false;\r\n }\r\n\r\n function _isJongJoinable(a, b) {\r\n return COMPLEX_CONSONANTS_HASH[a] && COMPLEX_CONSONANTS_HASH[a][b] ? COMPLEX_CONSONANTS_HASH[a][b] : false;\r\n }\r\n\r\n var disassemble = function (string, grouped) {\r\n if (string === null) {\r\n throw new Error('Arguments cannot be null');\r\n }\r\n\r\n if (typeof string === 'object') {\r\n string = string.join('');\r\n }\r\n\r\n var result = [],\r\n length = string.length,\r\n cho,\r\n jung,\r\n jong,\r\n code,\r\n r\r\n ;\r\n\r\n for (var i = 0; i < length; i++) {\r\n var temp = [];\r\n\r\n code = string.charCodeAt(i);\r\n if (_isHangul(code)) { // \uC644\uC131\uB41C \uD55C\uAE00\uC774\uBA74\r\n code -= HANGUL_OFFSET;\r\n jong = code % 28;\r\n jung = (code - jong) / 28 % 21;\r\n cho = parseInt((code - jong) / 28 / 21);\r\n temp.push(CHO[cho]);\r\n if (typeof JUNG[jung] === 'object') {\r\n temp = temp.concat(JUNG[jung]);\r\n } else {\r\n temp.push(JUNG[jung]);\r\n }\r\n if (jong > 0) {\r\n if (typeof JONG[jong] === 'object') {\r\n temp = temp.concat(JONG[jong]);\r\n } else {\r\n temp.push(JONG[jong]);\r\n }\r\n }\r\n } else if (_isConsonant(code)) { //\uC790\uC74C\uC774\uBA74\r\n if (_isCho(code)) {\r\n r = CHO[CHO_HASH[code]];\r\n } else {\r\n r = JONG[JONG_HASH[code]];\r\n }\r\n if (typeof r === 'string') {\r\n temp.push(r);\r\n } else {\r\n temp = temp.concat(r);\r\n }\r\n } else if (_isJung(code)) {\r\n r = JUNG[JUNG_HASH[code]];\r\n if (typeof r === 'string') {\r\n temp.push(r);\r\n } else {\r\n temp = temp.concat(r);\r\n }\r\n } else {\r\n temp.push(string.charAt(i));\r\n }\r\n\r\n if (grouped) result.push(temp);\r\n else result = result.concat(temp);\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var disassembleToString = function (str) {\r\n if (typeof str !== 'string') {\r\n return '';\r\n }\r\n str = disassemble(str);\r\n return str.join('');\r\n };\r\n\r\n var assemble = function (array) {\r\n if (typeof array === 'string') {\r\n array = disassemble(array);\r\n }\r\n\r\n var result = [],\r\n length = array.length,\r\n code,\r\n stage = 0,\r\n complete_index = -1, //\uC644\uC131\uB41C \uACF3\uC758 \uC778\uB371\uC2A4\r\n previous_code,\r\n jong_joined = false\r\n ;\r\n\r\n function _makeHangul(index) { // complete_index + 1\uBD80\uD130 index\uAE4C\uC9C0\uB97C greedy\uD558\uAC8C \uD55C\uAE00\uB85C \uB9CC\uB4E0\uB2E4.\r\n var code,\r\n cho,\r\n jung1,\r\n jung2,\r\n jong1 = 0,\r\n jong2,\r\n hangul = ''\r\n ;\r\n\r\n jong_joined = false;\r\n if (complete_index + 1 > index) {\r\n return;\r\n }\r\n for (var step = 1; ; step++) {\r\n if (step === 1) {\r\n cho = array[complete_index + step].charCodeAt(0);\r\n if (_isJung(cho)) { // \uCCAB\uBC88\uC9F8 \uAC83\uC774 \uBAA8\uC74C\uC774\uBA74 1) \u314F\uAC19\uC740 \uACBD\uC6B0\uC774\uAC70\uB098 2) \u3159\uAC19\uC740 \uACBD\uC6B0\uC774\uB2E4\r\n if (complete_index + step + 1 <= index && _isJung(jung1 = array[complete_index + step + 1].charCodeAt(0))) { //\uB2E4\uC74C\uAC83\uC774 \uC788\uACE0 \uBAA8\uC74C\uC774\uBA74\r\n result.push(String.fromCharCode(_isJungJoinable(cho, jung1)));\r\n complete_index = index;\r\n return;\r\n } else {\r\n result.push(array[complete_index + step]);\r\n complete_index = index;\r\n return;\r\n }\r\n } else if (!_isCho(cho)) {\r\n result.push(array[complete_index + step]);\r\n complete_index = index;\r\n return;\r\n }\r\n hangul = array[complete_index + step];\r\n } else if (step === 2) {\r\n jung1 = array[complete_index + step].charCodeAt(0);\r\n if (_isCho(jung1)) { //\uB450\uBC88\uC9F8 \uB610 \uC790\uC74C\uC774 \uC624\uBA74 \u3133 \uC5D0\uC11C \u3145\uAC19\uC740 \uACBD\uC6B0\uC774\uB2E4\r\n cho = _isJongJoinable(cho, jung1);\r\n hangul = String.fromCharCode(cho);\r\n result.push(hangul);\r\n complete_index = index;\r\n return;\r\n } else {\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + HANGUL_OFFSET);\r\n }\r\n } else if (step === 3) {\r\n jung2 = array[complete_index + step].charCodeAt(0);\r\n if (_isJungJoinable(jung1, jung2)) {\r\n jung1 = _isJungJoinable(jung1, jung2);\r\n } else {\r\n jong1 = jung2;\r\n }\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET);\r\n \r\n } else if (step === 4) {\r\n jong2 = array[complete_index + step].charCodeAt(0);\r\n if (_isJongJoinable(jong1, jong2)) {\r\n jong1 = _isJongJoinable(jong1, jong2);\r\n } else {\r\n jong1 = jong2;\r\n }\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET);\r\n } else if (step === 5) {\r\n jong2 = array[complete_index + step].charCodeAt(0);\r\n jong1 = _isJongJoinable(jong1, jong2);\r\n hangul = String.fromCharCode((CHO_HASH[cho] * 21 + JUNG_HASH[jung1]) * 28 + JONG_HASH[jong1] + HANGUL_OFFSET);\r\n }\r\n\r\n if (complete_index + step >= index) {\r\n result.push(hangul);\r\n complete_index = index;\r\n return;\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < length; i++) {\r\n code = array[i].charCodeAt(0);\r\n if (!_isCho(code) && !_isJung(code) && !_isJong(code)) { //\uCD08, \uC911, \uC885\uC131 \uB2E4 \uC544\uB2C8\uBA74\r\n _makeHangul(i - 1);\r\n _makeHangul(i);\r\n stage = 0;\r\n continue;\r\n }\r\n //console.log(stage, array[i]);\r\n if (stage === 0) { // \uCD08\uC131\uC774 \uC62C \uCC28\uB840\r\n if (_isCho(code)) { // \uCD08\uC131\uC774 \uC624\uBA74 \uC544\uBB34 \uBB38\uC81C \uC5C6\uB2E4.\r\n stage = 1;\r\n } else if (_isJung(code)) {\r\n // \uC911\uC131\uC774\uC624\uBA74 \u3150 \uB610\uB294 \u3158 \uC778\uAC83\uC774\uB2E4. \uBC14\uB85C \uAD6C\uBD84\uC744 \uBABB\uD55C\uB2E4. \uB530\uB77C\uC11C \uD2B9\uC218\uD55C stage\uC778 stage4\uB85C \uC774\uB3D9\r\n stage = 4;\r\n }\r\n } else if (stage == 1) { //\uC911\uC131\uC774 \uC62C \uCC28\uB840\r\n if (_isJung(code)) { //\uC911\uC131\uC774 \uC624\uBA74 \uBB38\uC81C\uC5C6\uC74C \uC9C4\uD589.\r\n stage = 2;\r\n } else { //\uC544\uB2C8\uACE0 \uC790\uC74C\uC774\uC624\uBA74 \u313B\uAC19\uC740 \uACBD\uC6B0\uAC00 \uC788\uACE0 \u3139\u314B\uAC19\uC740 \uACBD\uC6B0\uAC00 \uC788\uB2E4.\r\n if (_isJongJoinable(previous_code, code)) {\r\n // \uD569\uCCD0\uC9C8 \uC218 \uC788\uB2E4\uBA74 \u313B \uAC19\uC740 \uACBD\uC6B0\uC778\uB370 \uC774 \uB4A4\uC5D0 \uBAA8\uC74C\uC774 \uC640\uC11C \u3139\uB9C8 \uAC00 \uB420\uC218\uB3C4 \uC788\uACE0 \uCD08\uC131\uC774 \uC62C \uC218\uB3C4 \uC788\uB2E4. \uB530\uB77C\uC11C \uC123\uBD88\uB9AC \uC644\uC131\uD560 \uC218 \uC5C6\uB2E4. \uC774\uB550 stage5\uB85C \uAC04\uB2E4.\r\n stage = 5;\r\n } else { //\uD569\uCCD0\uC9C8 \uC218 \uC5C6\uB2E4\uBA74 \uC55E \uAE00\uC790 \uC644\uC131 \uD6C4 \uC5EC\uC804\uD788 \uC911\uC131\uC774 \uC62C \uCC28\uB840\r\n _makeHangul(i - 1);\r\n }\r\n }\r\n } else if (stage == 2) { //\uC885\uC131\uC774 \uC62C \uCC28\uB840\r\n if (_isJong(code)) { //\uC885\uC131\uC774 \uC624\uBA74 \uB2E4\uC74C\uC5D4 \uC790\uC74C \uB610\uB294 \uBAA8\uC74C\uC774 \uC628\uB2E4.\r\n stage = 3;\r\n } else if (_isJung(code)) { //\uADF8\uB7F0\uB370 \uC911\uC131\uC774 \uC624\uBA74 \uC55E\uC758 \uBAA8\uC74C\uACFC \uD569\uCE60 \uC218 \uC788\uB294\uC9C0 \uBCF8\uB2E4.\r\n if (_isJungJoinable(previous_code, code)) { //\uD569\uCE60 \uC218 \uC788\uC73C\uBA74 \uC5EC\uC804\uD788 \uC885\uC131\uC774 \uC62C \uCC28\uB840\uACE0 \uADF8\uB300\uB85C \uC9C4\uD589\r\n } else { // \uD569\uCE60 \uC218 \uC5C6\uB2E4\uBA74 \uC624\uD0C0\uAC00 \uC0DD\uAE34 \uACBD\uC6B0\r\n _makeHangul(i - 1);\r\n stage = 4;\r\n }\r\n } else { // \uBC1B\uCE68\uC774 \uC548\uB418\uB294 \uC790\uC74C\uC774 \uC624\uBA74 \u3138 \uAC19\uC740 \uC774\uC804\uAE4C\uC9C0 \uC644\uC131\uD558\uACE0 \uB2E4\uC2DC\uC2DC\uC791\r\n _makeHangul(i - 1);\r\n stage = 1;\r\n }\r\n } else if (stage == 3) { // \uC885\uC131\uC774 \uD558\uB098 \uC628 \uC0C1\uD0DC.\r\n if (_isJong(code)) { // \uB610 \uC885\uC131\uC774\uBA74 \uD569\uCE60\uC218 \uC788\uB294\uC9C0 \uBCF8\uB2E4.\r\n if (!jong_joined && _isJongJoinable(previous_code, code)) { //\uD569\uCE60 \uC218 \uC788\uC73C\uBA74 \uACC4\uC18D \uC9C4\uD589. \uC65C\uB0D0\uD558\uBA74 \uC774\uBC88\uC5D0 \uC628 \uC790\uC74C\uC774 \uB2E4\uC74C \uAE00\uC790\uC758 \uCD08\uC131\uC774 \uB420 \uC218\uB3C4 \uC788\uAE30 \uB54C\uBB38. \uB300\uC2E0 \uC774 \uAE30\uD68C\uB294 \uD55C\uBC88\uB9CC\r\n jong_joined = true;\r\n } else { //\uC5C6\uC73C\uBA74 \uD55C\uAE00\uC790 \uC644\uC131\r\n _makeHangul(i - 1);\r\n stage = 1; // \uC774 \uC885\uC131\uC774 \uCD08\uC131\uC774 \uB418\uACE0 \uC911\uC131\uBD80\uD130 \uC2DC\uC791\r\n }\r\n } else if (_isCho(code)) { // \uCD08\uC131\uC774\uBA74 \uD55C\uAE00\uC790 \uC644\uC131.\r\n _makeHangul(i - 1);\r\n stage = 1; //\uC774 \uAE00\uC790\uAC00 \uCD08\uC131\uC774\uB418\uBBC0\uB85C \uC911\uC131\uBD80\uD130 \uC2DC\uC791\r\n } else if (_isJung(code)) { // \uC911\uC131\uC774\uBA74 \uC774\uC804 \uC885\uC131\uC740 \uC774 \uC911\uC131\uACFC \uD569\uCCD0\uC9C0\uACE0 \uC55E \uAE00\uC790\uB294 \uBC1B\uCE68\uC774 \uC5C6\uB2E4.\r\n _makeHangul(i - 2);\r\n stage = 2;\r\n }\r\n } else if (stage == 4) { // \uC911\uC131\uC774 \uD558\uB098 \uC628 \uC0C1\uD0DC\r\n if (_isJung(code)) { //\uC911\uC131\uC774 \uC628 \uACBD\uC6B0\r\n if (_isJungJoinable(previous_code, code)) { //\uC774\uC804 \uC911\uC131\uACFC \uD569\uCCD0\uC9C8 \uC218 \uC788\uB294 \uACBD\uC6B0\r\n _makeHangul(i);\r\n stage = 0;\r\n } else { //\uC911\uC131\uC774 \uC654\uC9C0\uB9CC \uBABB\uD569\uCE58\uB294 \uACBD\uC6B0. \u3152\u3157 \uAC19\uC740\r\n _makeHangul(i - 1);\r\n }\r\n } else { // \uC544\uB2C8\uBA74 \uC790\uC74C\uC774 \uC628 \uACBD\uC6B0.\r\n _makeHangul(i - 1);\r\n stage = 1;\r\n }\r\n } else if (stage == 5) { // \uCD08\uC131\uC774 \uC5F0\uC18D\uD574\uC11C \uB450\uAC1C \uC628 \uC0C1\uD0DC \u313A\r\n if (_isJung(code)) { //\uC774\uBC88\uC5D0 \uC911\uC131\uC774\uBA74 \u3139\uAC00\r\n _makeHangul(i - 2);\r\n stage = 2;\r\n } else {\r\n _makeHangul(i - 1);\r\n stage = 1;\r\n }\r\n }\r\n previous_code = code;\r\n }\r\n _makeHangul(i - 1);\r\n return result.join('');\r\n };\r\n\r\n var search = function (a, b) {\r\n var ad = disassemble(a).join(''),\r\n bd = disassemble(b).join('')\r\n ;\r\n\r\n return ad.indexOf(bd);\r\n };\r\n\r\n var rangeSearch = function (haystack, needle) {\r\n var hex = disassemble(haystack).join(''),\r\n nex = disassemble(needle).join(''),\r\n grouped = disassemble(haystack, true),\r\n re = new RegExp(nex, 'gi'),\r\n indices = [],\r\n result;\r\n\r\n if (!needle.length) return [];\r\n\r\n while ((result = re.exec(hex))) {\r\n indices.push(result.index);\r\n }\r\n\r\n function findStart(index) {\r\n for (var i = 0, length = 0; i < grouped.length; ++i) {\r\n length += grouped[i].length;\r\n if (index < length) return i;\r\n }\r\n }\r\n\r\n function findEnd(index) {\r\n for (var i = 0, length = 0; i < grouped.length; ++i) {\r\n length += grouped[i].length;\r\n if (index + nex.length <= length) return i;\r\n }\r\n }\r\n\r\n return indices.map(function (i) {\r\n return [findStart(i), findEnd(i)];\r\n });\r\n };\r\n\r\n function Searcher(string) {\r\n this.string = string;\r\n this.disassembled = disassemble(string).join('');\r\n }\r\n\r\n Searcher.prototype.search = function (string) {\r\n return disassemble(string).join('').indexOf(this.disassembled);\r\n };\r\n var endsWithConsonant = function (string) {\r\n if (typeof string === 'object') {\r\n string = string.join('');\r\n }\r\n\r\n var code = string.charCodeAt(string.length - 1);\r\n\r\n if (_isHangul(code)) { // \uC644\uC131\uB41C \uD55C\uAE00\uC774\uBA74\r\n code -= HANGUL_OFFSET;\r\n var jong = code % 28;\r\n if (jong > 0) {\r\n return true;\r\n }\r\n } else if (_isConsonant(code)) { //\uC790\uC74C\uC774\uBA74\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n var endsWith = function (string, target) {\r\n return disassemble(string).pop() === target;\r\n };\r\n\r\n\r\n var hangul = {\r\n disassemble: disassemble,\r\n d: disassemble, // alias for disassemble\r\n disassembleToString: disassembleToString,\r\n ds: disassembleToString, // alias for disassembleToString\r\n assemble: assemble,\r\n a: assemble, // alias for assemble\r\n search: search,\r\n rangeSearch: rangeSearch,\r\n Searcher: Searcher,\r\n endsWithConsonant: endsWithConsonant,\r\n endsWith: endsWith,\r\n isHangul: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isHangul(c);\r\n },\r\n isComplete: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isHangul(c);\r\n },\r\n isConsonant: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isConsonant(c);\r\n },\r\n isVowel: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isJung(c);\r\n },\r\n isCho: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isCho(c);\r\n },\r\n isJong: function (c) {\r\n if (typeof c === 'string')\r\n c = c.charCodeAt(0);\r\n return _isJong(c);\r\n },\r\n isHangulAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isHangul(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isCompleteAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isHangul(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isConsonantAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isConsonant(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isVowelAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isJung(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isChoAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isCho(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n },\r\n isJongAll: function (str) {\r\n if (typeof str !== 'string') return false;\r\n for (var i = 0; i < str.length; i++) {\r\n if (!_isJong(str.charCodeAt(i))) return false;\r\n }\r\n return true;\r\n }\r\n };\r\n\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return hangul;\r\n });\r\n } else if (typeof module !== 'undefined') {\r\n module.exports = hangul;\r\n } else {\r\n window.Hangul = hangul;\r\n }\r\n})();\r\n\r\n", "/*\n * Copyright (C) 2024-2025 Yomitan Authors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport * as Hangul from 'hangul-js';\n"], - "mappings": "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", - "names": ["code", "hangul"] -} diff --git a/vendor/yomitan/lib/kanji-processor.js b/vendor/yomitan/lib/kanji-processor.js deleted file mode 100644 index 9c5464ba..00000000 --- a/vendor/yomitan/lib/kanji-processor.js +++ /dev/null @@ -1,13367 +0,0 @@ -// @ts-nocheck - -// node_modules/kanji-processor/dist/full_list.json -var full_list_default = [ - { - oyaji: "\u3FC9", - itaiji: [ - "\u3FD7" - ] - }, - { - oyaji: "\u460C", - itaiji: [ - "\u{273FE}" - ] - }, - { - oyaji: "\u49E2", - itaiji: [ - "\u{28E1F}" - ] - }, - { - oyaji: "\u4E00", - itaiji: [ - "\u5F0C" - ] - }, - { - oyaji: "\u4E07", - itaiji: [ - "\u842C" - ] - }, - { - oyaji: "\u4E08", - itaiji: [ - "\u{2000B}" - ] - }, - { - oyaji: "\u4E09", - itaiji: [ - "\u5F0E" - ] - }, - { - oyaji: "\u4E0E", - itaiji: [ - "\u8207" - ] - }, - { - oyaji: "\u4E11", - itaiji: [ - "\u4E12" - ] - }, - { - oyaji: "\u4E16", - itaiji: [ - "\u4E17", - "\u534B" - ] - }, - { - oyaji: "\u4E18", - itaiji: [ - "\u90B1", - "\u3400", - "\u5775" - ] - }, - { - oyaji: "\u4E21", - itaiji: [ - "\u5169" - ] - }, - { - oyaji: "\u4E26", - itaiji: [ - "\u7ADD" - ] - }, - { - oyaji: "\u4E31", - itaiji: [ - "\u535D" - ] - }, - { - oyaji: "\u4E45", - itaiji: [ - "\u4E46", - "\u9579" - ] - }, - { - oyaji: "\u4E57", - itaiji: [ - "\u4E58" - ] - }, - { - oyaji: "\u4E71", - itaiji: [ - "\u4E82" - ] - }, - { - oyaji: "\u4E7E", - itaiji: [ - "\u4E79" - ] - }, - { - oyaji: "\u4E80", - itaiji: [ - "\u9F9C" - ] - }, - { - oyaji: "\u4E88", - itaiji: [ - "\u8C6B" - ] - }, - { - oyaji: "\u4E89", - itaiji: [ - "\u722D" - ] - }, - { - oyaji: "\u4E8B", - itaiji: [ - "\u4E8A", - "\u53D3", - "\u355D" - ] - }, - { - oyaji: "\u4E8C", - itaiji: [ - "\u5F0D" - ] - }, - { - oyaji: "\u4E8E", - itaiji: [ - "\u4E8F", - "\u4E90" - ] - }, - { - oyaji: "\u4E9C", - itaiji: [ - "\u4E9E" - ] - }, - { - oyaji: "\u4E9F", - itaiji: [ - "\u710F" - ] - }, - { - oyaji: "\u4EA8", - itaiji: [ - "\u4EAF" - ] - }, - { - oyaji: "\u4EAC", - itaiji: [ - "\u4EB0" - ] - }, - { - oyaji: "\u4EAD", - itaiji: [ - "\u{20158}" - ] - }, - { - oyaji: "\u4EAE", - itaiji: [ - "\u{20159}" - ] - }, - { - oyaji: "\u4EBA", - itaiji: [ - "\u4EBB", - "\u{201A2}" - ] - }, - { - oyaji: "\u4ECA", - itaiji: [ - "\u4ED0", - "\u{2B746}" - ] - }, - { - oyaji: "\u4ECF", - itaiji: [ - "\u4F5B" - ] - }, - { - oyaji: "\u4EDE", - itaiji: [ - "\u4EED" - ] - }, - { - oyaji: "\u4EE5", - itaiji: [ - "\u382F" - ] - }, - { - oyaji: "\u4EEE", - itaiji: [ - "\u5047" - ] - }, - { - oyaji: "\u4F1A", - itaiji: [ - "\u6703" - ] - }, - { - oyaji: "\u4F1D", - itaiji: [ - "\u50B3" - ] - }, - { - oyaji: "\u4F3C", - itaiji: [ - "\u4F40" - ] - }, - { - oyaji: "\u4F47", - itaiji: [ - "\u7ADA" - ] - }, - { - oyaji: "\u4F53", - itaiji: [ - "\u9AD4" - ] - }, - { - oyaji: "\u4F59", - itaiji: [ - "\u9918" - ] - }, - { - oyaji: "\u4F5C", - itaiji: [ - "\u505A" - ] - }, - { - oyaji: "\u4F5E", - itaiji: [ - "\u4FAB" - ] - }, - { - oyaji: "\u4F69", - itaiji: [ - "\u73EE" - ] - }, - { - oyaji: "\u4F75", - itaiji: [ - "\u5002" - ] - }, - { - oyaji: "\u4F78", - itaiji: [ - "\u{20232}" - ] - }, - { - oyaji: "\u4F7F", - itaiji: [ - "\u{20255}" - ] - }, - { - oyaji: "\u4F83", - itaiji: [ - "\u{20209}", - "\u5058" - ] - }, - { - oyaji: "\u4FA1", - itaiji: [ - "\u50F9" - ] - }, - { - oyaji: "\u4FAE", - itaiji: [ - "\uFA30" - ] - }, - { - oyaji: "\u4FAF", - itaiji: [ - "\u77E6", - "\u{253A6}" - ] - }, - { - oyaji: "\u4FBF", - itaiji: [ - "\u{202B3}" - ] - }, - { - oyaji: "\u4FCE", - itaiji: [ - "\u723C" - ] - }, - { - oyaji: "\u4FD0", - itaiji: [ - "\u60A7" - ] - }, - { - oyaji: "\u4FDF", - itaiji: [ - "\u7AE2" - ] - }, - { - oyaji: "\u4FE0", - itaiji: [ - "\u4FA0" - ] - }, - { - oyaji: "\u4FE3", - itaiji: [ - "\u3468" - ] - }, - { - oyaji: "\u4FF1", - itaiji: [ - "\u5036" - ] - }, - { - oyaji: "\u5005", - itaiji: [ - "\u4F1C" - ] - }, - { - oyaji: "\u5006", - itaiji: [ - "\u{20213}" - ] - }, - { - oyaji: "\u500D", - itaiji: [ - "\u4FD6" - ] - }, - { - oyaji: "\u500F", - itaiji: [ - "\u5010", - "\u7102" - ] - }, - { - oyaji: "\u5019", - itaiji: [ - "\u{202B1}" - ] - }, - { - oyaji: "\u501A", - itaiji: [ - "\u{202E3}" - ] - }, - { - oyaji: "\u5026", - itaiji: [ - "\u52CC" - ] - }, - { - oyaji: "\u5039", - itaiji: [ - "\u5109" - ] - }, - { - oyaji: "\u5065", - itaiji: [ - "\u5FA4" - ] - }, - { - oyaji: "\u506C", - itaiji: [ - "\u500A", - "\u50AF" - ] - }, - { - oyaji: "\u5078", - itaiji: [ - "\u5077" - ] - }, - { - oyaji: "\u507D", - itaiji: [ - "\u50DE" - ] - }, - { - oyaji: "\u5098", - itaiji: [ - "\u{20358}" - ] - }, - { - oyaji: "\u5099", - itaiji: [ - "\u50C3", - "\u5079" - ] - }, - { - oyaji: "\u509A", - itaiji: [ - "\u4FF2" - ] - }, - { - oyaji: "\u50B2", - itaiji: [ - "\u6160" - ] - }, - { - oyaji: "\u50C2", - itaiji: [ - "\u507B" - ] - }, - { - oyaji: "\u50C9", - itaiji: [ - "\u3452" - ] - }, - { - oyaji: "\u50CF", - itaiji: [ - "\u{2F80B}" - ] - }, - { - oyaji: "\u50D5", - itaiji: [ - "\u3492", - "\u4451" - ] - }, - { - oyaji: "\u50E7", - itaiji: [ - "\uFA31" - ] - }, - { - oyaji: "\u50ED", - itaiji: [ - "\u50E3" - ] - }, - { - oyaji: "\u5101", - itaiji: [ - "\u349E" - ] - }, - { - oyaji: "\u5114", - itaiji: [ - "\u4FE6", - "\u{2037B}" - ] - }, - { - oyaji: "\u5115", - itaiji: [ - "\u346A" - ] - }, - { - oyaji: "\u5118", - itaiji: [ - "\u4FAD" - ] - }, - { - oyaji: "\u511A", - itaiji: [ - "\u{20427}" - ] - }, - { - oyaji: "\u511E", - itaiji: [ - "\u4F60" - ] - }, - { - oyaji: "\u513B", - itaiji: [ - "\u50A5" - ] - }, - { - oyaji: "\u513C", - itaiji: [ - "\u{2044A}" - ] - }, - { - oyaji: "\u5145", - itaiji: [ - "\uFA74" - ] - }, - { - oyaji: "\u5146", - itaiji: [ - "\u{209DE}" - ] - }, - { - oyaji: "\u5149", - itaiji: [ - "\u706E", - "\u7097" - ] - }, - { - oyaji: "\u514C", - itaiji: [ - "\u514A", - "\u5151" - ] - }, - { - oyaji: "\u514D", - itaiji: [ - "\uFA32" - ] - }, - { - oyaji: "\u514E", - itaiji: [ - "\u{2F80F}", - "\u5154" - ] - }, - { - oyaji: "\u5150", - itaiji: [ - "\u5152" - ] - }, - { - oyaji: "\u5155", - itaiji: [ - "\u{27C3D}", - "\u{24261}" - ] - }, - { - oyaji: "\u5157", - itaiji: [ - "\u5156" - ] - }, - { - oyaji: "\u515A", - itaiji: [ - "\u9EE8" - ] - }, - { - oyaji: "\u515C", - itaiji: [ - "\u5160" - ] - }, - { - oyaji: "\u516A", - itaiji: [ - "\u4FDE" - ] - }, - { - oyaji: "\u5180", - itaiji: [ - "\uFA75", - "\u517E" - ] - }, - { - oyaji: "\u5182", - itaiji: [ - "\u518B" - ] - }, - { - oyaji: "\u5185", - itaiji: [ - "\u5167" - ] - }, - { - oyaji: "\u5186", - itaiji: [ - "\u5713" - ] - }, - { - oyaji: "\u5189", - itaiji: [ - "\u5184" - ] - }, - { - oyaji: "\u518A", - itaiji: [ - "\u518C" - ] - }, - { - oyaji: "\u518F", - itaiji: [ - "\u56E7" - ] - }, - { - oyaji: "\u5197", - itaiji: [ - "\u{2F817}", - "\u5B82" - ] - }, - { - oyaji: "\u5199", - itaiji: [ - "\u5BEB" - ] - }, - { - oyaji: "\u51A2", - itaiji: [ - "\u{208E5}" - ] - }, - { - oyaji: "\u51A4", - itaiji: [ - "\u5BC3" - ] - }, - { - oyaji: "\u51A5", - itaiji: [ - "\u3760" - ] - }, - { - oyaji: "\u51AA", - itaiji: [ - "\u7F83", - "\u5E42" - ] - }, - { - oyaji: "\u51AC", - itaiji: [ - "\u{2F81A}" - ] - }, - { - oyaji: "\u51B1", - itaiji: [ - "\u{205B1}" - ] - }, - { - oyaji: "\u51C4", - itaiji: [ - "\u6DD2" - ] - }, - { - oyaji: "\u51DC", - itaiji: [ - "\u51DB", - "\u{20621}", - "\u6F9F" - ] - }, - { - oyaji: "\u51E6", - itaiji: [ - "\u8655" - ] - }, - { - oyaji: "\u51ED", - itaiji: [ - "\u51F4" - ] - }, - { - oyaji: "\u51F6", - itaiji: [ - "\u{239D1}" - ] - }, - { - oyaji: "\u51FD", - itaiji: [ - "\u51FE", - "\u5705" - ] - }, - { - oyaji: "\u5200", - itaiji: [ - "\u91D6" - ] - }, - { - oyaji: "\u5208", - itaiji: [ - "\u82C5", - "\u{206C4}" - ] - }, - { - oyaji: "\u520A", - itaiji: [ - "\u520B" - ] - }, - { - oyaji: "\u5211", - itaiji: [ - "\u{206EC}", - "\u34DD" - ] - }, - { - oyaji: "\u5213", - itaiji: [ - "\u3774" - ] - }, - { - oyaji: "\u5220", - itaiji: [ - "\u522A", - "\u{20702}" - ] - }, - { - oyaji: "\u5225", - itaiji: [ - "\u{206F0}" - ] - }, - { - oyaji: "\u5229", - itaiji: [ - "\u{25764}" - ] - }, - { - oyaji: "\u522E", - itaiji: [ - "\u{2071C}" - ] - }, - { - oyaji: "\u5231", - itaiji: [ - "\u524F", - "\u5259" - ] - }, - { - oyaji: "\u5232", - itaiji: [ - "\u{20765}" - ] - }, - { - oyaji: "\u5239", - itaiji: [ - "\u{2073D}" - ] - }, - { - oyaji: "\u5243", - itaiji: [ - "\u9B00" - ] - }, - { - oyaji: "\u5247", - itaiji: [ - "\u{207ED}" - ] - }, - { - oyaji: "\u524B", - itaiji: [ - "\u52CA", - "\u5C05" - ] - }, - { - oyaji: "\u5254", - itaiji: [ - "\u{20713}" - ] - }, - { - oyaji: "\u525B", - itaiji: [ - "\u34FB" - ] - }, - { - oyaji: "\u525C", - itaiji: [ - "\u{206E0}" - ] - }, - { - oyaji: "\u525D", - itaiji: [ - "\u5265" - ] - }, - { - oyaji: "\u5263", - itaiji: [ - "\u528D" - ] - }, - { - oyaji: "\u5264", - itaiji: [ - "\u5291" - ] - }, - { - oyaji: "\u526A", - itaiji: [ - "\u7FE6" - ] - }, - { - oyaji: "\u5270", - itaiji: [ - "\u5269" - ] - }, - { - oyaji: "\u5272", - itaiji: [ - "\u{2F822}" - ] - }, - { - oyaji: "\u5275", - itaiji: [ - "\u5205", - "\u6227", - "\u{207D0}" - ] - }, - { - oyaji: "\u527F", - itaiji: [ - "\u{207B0}", - "\u528B" - ] - }, - { - oyaji: "\u529F", - itaiji: [ - "\u34DB" - ] - }, - { - oyaji: "\u52AB", - itaiji: [ - "\u5227", - "\u5226" - ] - }, - { - oyaji: "\u52B1", - itaiji: [ - "\u52F5" - ] - }, - { - oyaji: "\u52B4", - itaiji: [ - "\u52DE" - ] - }, - { - oyaji: "\u52B9", - itaiji: [ - "\u6548" - ] - }, - { - oyaji: "\u52C1", - itaiji: [ - "\u52A4" - ] - }, - { - oyaji: "\u52C5", - itaiji: [ - "\u6555" - ] - }, - { - oyaji: "\u52C9", - itaiji: [ - "\uFA33" - ] - }, - { - oyaji: "\u52D6", - itaiji: [ - "\u52D7" - ] - }, - { - oyaji: "\u52E2", - itaiji: [ - "\u351F" - ] - }, - { - oyaji: "\u52E4", - itaiji: [ - "\uFA34" - ] - }, - { - oyaji: "\u52E7", - itaiji: [ - "\u52F8" - ] - }, - { - oyaji: "\u52F2", - itaiji: [ - "\u52F3" - ] - }, - { - oyaji: "\u52FA", - itaiji: [ - "\u{2F828}" - ] - }, - { - oyaji: "\u52FB", - itaiji: [ - "\u5300" - ] - }, - { - oyaji: "\u5303", - itaiji: [ - "\u5304" - ] - }, - { - oyaji: "\u5306", - itaiji: [ - "\u56F1", - "\u{2F82A}", - "\u5307" - ] - }, - { - oyaji: "\u531D", - itaiji: [ - "\u5E00", - "\u8FCA" - ] - }, - { - oyaji: "\u532F", - itaiji: [ - "\u6ED9" - ] - }, - { - oyaji: "\u5333", - itaiji: [ - "\u5332", - "\u5969", - "\u7C62" - ] - }, - { - oyaji: "\u533B", - itaiji: [ - "\u91AB" - ] - }, - { - oyaji: "\u5345", - itaiji: [ - "\u{20983}" - ] - }, - { - oyaji: "\u5349", - itaiji: [ - "\u{2F82C}", - "\u8294" - ] - }, - { - oyaji: "\u5351", - itaiji: [ - "\uFA35" - ] - }, - { - oyaji: "\u5352", - itaiji: [ - "\u5346", - "\u461A" - ] - }, - { - oyaji: "\u5353", - itaiji: [ - "\u684C" - ] - }, - { - oyaji: "\u5354", - itaiji: [ - "\u604A", - "\u65EA" - ] - }, - { - oyaji: "\u5358", - itaiji: [ - "\u55AE" - ] - }, - { - oyaji: "\u5363", - itaiji: [ - "\u{209EA}" - ] - }, - { - oyaji: "\u536E", - itaiji: [ - "\u5DF5" - ] - }, - { - oyaji: "\u536F", - itaiji: [ - "\u5918", - "\u623C" - ] - }, - { - oyaji: "\u5373", - itaiji: [ - "\u537D" - ] - }, - { - oyaji: "\u5374", - itaiji: [ - "\u537B", - "\u3541" - ] - }, - { - oyaji: "\u537A", - itaiji: [ - "\u5DF9", - "\u{27BE2}", - "\u{2203E}" - ] - }, - { - oyaji: "\u537F", - itaiji: [ - "\u{2F833}" - ] - }, - { - oyaji: "\u5384", - itaiji: [ - "\u{22034}" - ] - }, - { - oyaji: "\u539A", - itaiji: [ - "\u3AD7" - ] - }, - { - oyaji: "\u539F", - itaiji: [ - "\u53A1" - ] - }, - { - oyaji: "\u53A8", - itaiji: [ - "\u5EDA", - "\u3551" - ] - }, - { - oyaji: "\u53A9", - itaiji: [ - "\u5ECF", - "\u5ED0" - ] - }, - { - oyaji: "\u53AD", - itaiji: [ - "\u7312" - ] - }, - { - oyaji: "\u53B2", - itaiji: [ - "\u5389" - ] - }, - { - oyaji: "\u53B3", - itaiji: [ - "\u56B4" - ] - }, - { - oyaji: "\u53BB", - itaiji: [ - "\u53BA" - ] - }, - { - oyaji: "\u53C2", - itaiji: [ - "\u53C3" - ] - }, - { - oyaji: "\u53CC", - itaiji: [ - "\u96D9" - ] - }, - { - oyaji: "\u53CE", - itaiji: [ - "\u6536" - ] - }, - { - oyaji: "\u53D4", - itaiji: [ - "\u{20991}" - ] - }, - { - oyaji: "\u53D9", - itaiji: [ - "\u654D" - ] - }, - { - oyaji: "\u53DF", - itaiji: [ - "\u53DC" - ] - }, - { - oyaji: "\u53E1", - itaiji: [ - "\u777F" - ] - }, - { - oyaji: "\u53E2", - itaiji: [ - "\u6A37", - "\u85C2" - ] - }, - { - oyaji: "\u53EB", - itaiji: [ - "\u{2F839}" - ] - }, - { - oyaji: "\u53F0", - itaiji: [ - "\u81FA" - ] - }, - { - oyaji: "\u53F2", - itaiji: [ - "\u355C" - ] - }, - { - oyaji: "\u53F7", - itaiji: [ - "\u865F" - ] - }, - { - oyaji: "\u5403", - itaiji: [ - "\u{20BCF}" - ] - }, - { - oyaji: "\u5409", - itaiji: [ - "\u{20BB7}" - ] - }, - { - oyaji: "\u540C", - itaiji: [ - "\u4EDD" - ] - }, - { - oyaji: "\u541D", - itaiji: [ - "\u3581" - ] - }, - { - oyaji: "\u541E", - itaiji: [ - "\u5451" - ] - }, - { - oyaji: "\u541F", - itaiji: [ - "\u8A21" - ] - }, - { - oyaji: "\u5439", - itaiji: [ - "\u9FA1" - ] - }, - { - oyaji: "\u543B", - itaiji: [ - "\u8117", - "\u4407" - ] - }, - { - oyaji: "\u543D", - itaiji: [ - "\u544D" - ] - }, - { - oyaji: "\u5449", - itaiji: [ - "\u5433" - ] - }, - { - oyaji: "\u544A", - itaiji: [ - "\u543F" - ] - }, - { - oyaji: "\u5468", - itaiji: [ - "\u{2F83F}" - ] - }, - { - oyaji: "\u546A", - itaiji: [ - "\u5492" - ] - }, - { - oyaji: "\u548C", - itaiji: [ - "\u548A", - "\u9FA2" - ] - }, - { - oyaji: "\u54A2", - itaiji: [ - "\u35BE" - ] - }, - { - oyaji: "\u54A4", - itaiji: [ - "\u5412", - "\u549C" - ] - }, - { - oyaji: "\u54E1", - itaiji: [ - "\u8C9F" - ] - }, - { - oyaji: "\u54F2", - itaiji: [ - "\u608A", - "\u569E", - "\u5586", - "\u5560" - ] - }, - { - oyaji: "\u5507", - itaiji: [ - "\u8123" - ] - }, - { - oyaji: "\u5540", - itaiji: [ - "\u560A" - ] - }, - { - oyaji: "\u5556", - itaiji: [ - "\u5557", - "\u5649" - ] - }, - { - oyaji: "\u555E", - itaiji: [ - "\u5516" - ] - }, - { - oyaji: "\u5584", - itaiji: [ - "\u8B71" - ] - }, - { - oyaji: "\u5589", - itaiji: [ - "\u35CB" - ] - }, - { - oyaji: "\u559C", - itaiji: [ - "\u3402", - "\u6B56" - ] - }, - { - oyaji: "\u559D", - itaiji: [ - "\uFA36" - ] - }, - { - oyaji: "\u55A9", - itaiji: [ - "\u55BB" - ] - }, - { - oyaji: "\u55AA", - itaiji: [ - "\u462E", - "\u{20DD4}" - ] - }, - { - oyaji: "\u55B6", - itaiji: [ - "\u71DF" - ] - }, - { - oyaji: "\u55C5", - itaiji: [ - "\u9F45" - ] - }, - { - oyaji: "\u55F7", - itaiji: [ - "\u55F8" - ] - }, - { - oyaji: "\u5606", - itaiji: [ - "\uFA37" - ] - }, - { - oyaji: "\u5611", - itaiji: [ - "\u8B3C" - ] - }, - { - oyaji: "\u5614", - itaiji: [ - "\u5455" - ] - }, - { - oyaji: "\u5617", - itaiji: [ - "\u751E", - "\u{20E49}" - ] - }, - { - oyaji: "\u5629", - itaiji: [ - "\u{20D45}" - ] - }, - { - oyaji: "\u562F", - itaiji: [ - "\u5628" - ] - }, - { - oyaji: "\u5631", - itaiji: [ - "\u56D1" - ] - }, - { - oyaji: "\u5637", - itaiji: [ - "\u55E5" - ] - }, - { - oyaji: "\u5653", - itaiji: [ - "\u5618" - ] - }, - { - oyaji: "\u5668", - itaiji: [ - "\uFA38" - ] - }, - { - oyaji: "\u5674", - itaiji: [ - "\u{2F84F}" - ] - }, - { - oyaji: "\u5694", - itaiji: [ - "\u568F" - ] - }, - { - oyaji: "\u5699", - itaiji: [ - "\u565B" - ] - }, - { - oyaji: "\u56C2", - itaiji: [ - "\u56BB" - ] - }, - { - oyaji: "\u56CA", - itaiji: [ - "\u56A2" - ] - }, - { - oyaji: "\u56DE", - itaiji: [ - "\u56D8", - "\u56EC" - ] - }, - { - oyaji: "\u56DF", - itaiji: [ - "\u9856" - ] - }, - { - oyaji: "\u56E0", - itaiji: [ - "\u56D9" - ] - }, - { - oyaji: "\u56E3", - itaiji: [ - "\u5718" - ] - }, - { - oyaji: "\u56F2", - itaiji: [ - "\u570D" - ] - }, - { - oyaji: "\u56F3", - itaiji: [ - "\u5716" - ] - }, - { - oyaji: "\u56FD", - itaiji: [ - "\u570B" - ] - }, - { - oyaji: "\u570F", - itaiji: [ - "\u5708" - ] - }, - { - oyaji: "\u5712", - itaiji: [ - "\u8597" - ] - }, - { - oyaji: "\u571F", - itaiji: [ - "\u{2123D}", - "\u5721" - ] - }, - { - oyaji: "\u5727", - itaiji: [ - "\u58D3" - ] - }, - { - oyaji: "\u572D", - itaiji: [ - "\u73EA" - ] - }, - { - oyaji: "\u5740", - itaiji: [ - "\u962F" - ] - }, - { - oyaji: "\u574C", - itaiji: [ - "\u574B" - ] - }, - { - oyaji: "\u574E", - itaiji: [ - "\u57F3" - ] - }, - { - oyaji: "\u574F", - itaiji: [ - "\u962B", - "\u576F" - ] - }, - { - oyaji: "\u5750", - itaiji: [ - "\u3634" - ] - }, - { - oyaji: "\u5751", - itaiji: [ - "\u962C" - ] - }, - { - oyaji: "\u577C", - itaiji: [ - "\u{21369}" - ] - }, - { - oyaji: "\u5782", - itaiji: [ - "\u57C0" - ] - }, - { - oyaji: "\u5793", - itaiji: [ - "\u7561" - ] - }, - { - oyaji: "\u579B", - itaiji: [ - "\u579C" - ] - }, - { - oyaji: "\u57A0", - itaiji: [ - "\u{212F3}" - ] - }, - { - oyaji: "\u57CB", - itaiji: [ - "\u85B6" - ] - }, - { - oyaji: "\u57CE", - itaiji: [ - "\u{2F852}" - ] - }, - { - oyaji: "\u57D2", - itaiji: [ - "\u57D3" - ] - }, - { - oyaji: "\u57E0", - itaiji: [ - "\u57D7" - ] - }, - { - oyaji: "\u57E3", - itaiji: [ - "\u{2127B}" - ] - }, - { - oyaji: "\u57F7", - itaiji: [ - "\u79C7" - ] - }, - { - oyaji: "\u5806", - itaiji: [ - "\u{200A4}" - ] - }, - { - oyaji: "\u5815", - itaiji: [ - "\u58AE" - ] - }, - { - oyaji: "\u5821", - itaiji: [ - "\u5822" - ] - }, - { - oyaji: "\u5824", - itaiji: [ - "\u57DE" - ] - }, - { - oyaji: "\u5830", - itaiji: [ - "\u9681" - ] - }, - { - oyaji: "\u5834", - itaiji: [ - "\u5872" - ] - }, - { - oyaji: "\u5840", - itaiji: [ - "\uFA39" - ] - }, - { - oyaji: "\u5841", - itaiji: [ - "\u58D8" - ] - }, - { - oyaji: "\u584D", - itaiji: [ - "\u5818", - "\u{23392}", - "\u757B" - ] - }, - { - oyaji: "\u585A", - itaiji: [ - "\uFA10" - ] - }, - { - oyaji: "\u5861", - itaiji: [ - "\u586B" - ] - }, - { - oyaji: "\u5869", - itaiji: [ - "\u9E7D" - ] - }, - { - oyaji: "\u5879", - itaiji: [ - "\u{2141B}", - "\u58CD" - ] - }, - { - oyaji: "\u5881", - itaiji: [ - "\u3662" - ] - }, - { - oyaji: "\u588D", - itaiji: [ - "\u{213F2}" - ] - }, - { - oyaji: "\u5897", - itaiji: [ - "\u589E" - ] - }, - { - oyaji: "\u58A8", - itaiji: [ - "\uFA3A" - ] - }, - { - oyaji: "\u58A9", - itaiji: [ - "\u58AA" - ] - }, - { - oyaji: "\u58B3", - itaiji: [ - "\uFA7D" - ] - }, - { - oyaji: "\u58C5", - itaiji: [ - "\u3672" - ] - }, - { - oyaji: "\u58CA", - itaiji: [ - "\u58DE" - ] - }, - { - oyaji: "\u58CC", - itaiji: [ - "\u58E4" - ] - }, - { - oyaji: "\u58CE", - itaiji: [ - "\u5864" - ] - }, - { - oyaji: "\u58D7", - itaiji: [ - "\u{212E4}" - ] - }, - { - oyaji: "\u58DA", - itaiji: [ - "\u{21274}" - ] - }, - { - oyaji: "\u58DC", - itaiji: [ - "\u7F4E" - ] - }, - { - oyaji: "\u58DF", - itaiji: [ - "\u58E0" - ] - }, - { - oyaji: "\u58EE", - itaiji: [ - "\u58EF" - ] - }, - { - oyaji: "\u58F0", - itaiji: [ - "\u8072" - ] - }, - { - oyaji: "\u58F1", - itaiji: [ - "\u58F9" - ] - }, - { - oyaji: "\u58F2", - itaiji: [ - "\u8CE3" - ] - }, - { - oyaji: "\u58FA", - itaiji: [ - "\u58F7" - ] - }, - { - oyaji: "\u5909", - itaiji: [ - "\u8B8A" - ] - }, - { - oyaji: "\u591A", - itaiji: [ - "\u591B" - ] - }, - { - oyaji: "\u5947", - itaiji: [ - "\u7AD2" - ] - }, - { - oyaji: "\u5951", - itaiji: [ - "\uF909" - ] - }, - { - oyaji: "\u5954", - itaiji: [ - "\uFA7F" - ] - }, - { - oyaji: "\u5958", - itaiji: [ - "\u5F09" - ] - }, - { - oyaji: "\u5965", - itaiji: [ - "\u5967" - ] - }, - { - oyaji: "\u5968", - itaiji: [ - "\u596C" - ] - }, - { - oyaji: "\u598A", - itaiji: [ - "\u59D9" - ] - }, - { - oyaji: "\u5996", - itaiji: [ - "\u{21769}" - ] - }, - { - oyaji: "\u5999", - itaiji: [ - "\u7385" - ] - }, - { - oyaji: "\u599D", - itaiji: [ - "\u{21742}", - "\u5A24" - ] - }, - { - oyaji: "\u59AC", - itaiji: [ - "\u5992" - ] - }, - { - oyaji: "\u59C9", - itaiji: [ - "\u59CA" - ] - }, - { - oyaji: "\u59E6", - itaiji: [ - "\u59E7" - ] - }, - { - oyaji: "\u59EA", - itaiji: [ - "\u4F84" - ] - }, - { - oyaji: "\u59EB", - itaiji: [ - "\u{2F862}" - ] - }, - { - oyaji: "\u59EE", - itaiji: [ - "\u5AE6" - ] - }, - { - oyaji: "\u59F8", - itaiji: [ - "\u598D" - ] - }, - { - oyaji: "\u59FB", - itaiji: [ - "\u5A63" - ] - }, - { - oyaji: "\u5A1F", - itaiji: [ - "\u59E2" - ] - }, - { - oyaji: "\u5A2F", - itaiji: [ - "\u5A1B" - ] - }, - { - oyaji: "\u5A3F", - itaiji: [ - "\u5A40", - "\u59B8" - ] - }, - { - oyaji: "\u5A5A", - itaiji: [ - "\u36F0" - ] - }, - { - oyaji: "\u5A7F", - itaiji: [ - "\u58FB", - "\u805F" - ] - }, - { - oyaji: "\u5ABC", - itaiji: [ - "\u5AAA" - ] - }, - { - oyaji: "\u5AC9", - itaiji: [ - "\u3475" - ] - }, - { - oyaji: "\u5AE9", - itaiji: [ - "\u5AF0", - "\u5A86" - ] - }, - { - oyaji: "\u5AEB", - itaiji: [ - "\u{2181C}" - ] - }, - { - oyaji: "\u5AF5", - itaiji: [ - "\u5A2C" - ] - }, - { - oyaji: "\u5AFA", - itaiji: [ - "\u5AFB", - "\u{21883}" - ] - }, - { - oyaji: "\u5B22", - itaiji: [ - "\u5B43" - ] - }, - { - oyaji: "\u5B32", - itaiji: [ - "\u5AD0", - "\u5A1A" - ] - }, - { - oyaji: "\u5B3E", - itaiji: [ - "\u{2F86B}" - ] - }, - { - oyaji: "\u5B50", - itaiji: [ - "\u373D" - ] - }, - { - oyaji: "\u5B66", - itaiji: [ - "\u5B78" - ] - }, - { - oyaji: "\u5B76", - itaiji: [ - "\u5B73" - ] - }, - { - oyaji: "\u5B7A", - itaiji: [ - "\u{21998}" - ] - }, - { - oyaji: "\u5B7C", - itaiji: [ - "\u5B7D" - ] - }, - { - oyaji: "\u5B85", - itaiji: [ - "\u386F" - ] - }, - { - oyaji: "\u5B87", - itaiji: [ - "\u{219C3}", - "\u3762" - ] - }, - { - oyaji: "\u5B88", - itaiji: [ - "\u57A8" - ] - }, - { - oyaji: "\u5B89", - itaiji: [ - "\u{216B4}" - ] - }, - { - oyaji: "\u5B9C", - itaiji: [ - "\u5B90", - "\u519D" - ] - }, - { - oyaji: "\u5B9D", - itaiji: [ - "\u5BF6" - ] - }, - { - oyaji: "\u5B9F", - itaiji: [ - "\u5BE6" - ] - }, - { - oyaji: "\u5BBF", - itaiji: [ - "\u375B" - ] - }, - { - oyaji: "\u5BC7", - itaiji: [ - "\u51A6", - "\u{21A25}" - ] - }, - { - oyaji: "\u5BCC", - itaiji: [ - "\u51A8" - ] - }, - { - oyaji: "\u5BD3", - itaiji: [ - "\u5EBD" - ] - }, - { - oyaji: "\u5BDB", - itaiji: [ - "\u5BEC" - ] - }, - { - oyaji: "\u5BDD", - itaiji: [ - "\u5BE2" - ] - }, - { - oyaji: "\u5BE7", - itaiji: [ - "\uF95F" - ] - }, - { - oyaji: "\u5BF1", - itaiji: [ - "\u41BF" - ] - }, - { - oyaji: "\u5BFE", - itaiji: [ - "\u5C0D" - ] - }, - { - oyaji: "\u5BFF", - itaiji: [ - "\u58FD" - ] - }, - { - oyaji: "\u5C02", - itaiji: [ - "\u5C08" - ] - }, - { - oyaji: "\u5C06", - itaiji: [ - "\u5C07" - ] - }, - { - oyaji: "\u5C1A", - itaiji: [ - "\u5C19" - ] - }, - { - oyaji: "\u5C20", - itaiji: [ - "\u5C1F" - ] - }, - { - oyaji: "\u5C22", - itaiji: [ - "\u5C23" - ] - }, - { - oyaji: "\u5C29", - itaiji: [ - "\u5C2B", - "\u5C2A", - "\u{21BEA}" - ] - }, - { - oyaji: "\u5C2D", - itaiji: [ - "\u582F" - ] - }, - { - oyaji: "\u5C3B", - itaiji: [ - "\u378D" - ] - }, - { - oyaji: "\u5C3D", - itaiji: [ - "\u76E1" - ] - }, - { - oyaji: "\u5C41", - itaiji: [ - "\u{259D4}" - ] - }, - { - oyaji: "\u5C4A", - itaiji: [ - "\u5C46" - ] - }, - { - oyaji: "\u5C4E", - itaiji: [ - "\u{21C41}" - ] - }, - { - oyaji: "\u5C5B", - itaiji: [ - "\u5C4F" - ] - }, - { - oyaji: "\u5C5E", - itaiji: [ - "\u5C6C" - ] - }, - { - oyaji: "\u5C62", - itaiji: [ - "\u5C61" - ] - }, - { - oyaji: "\u5C64", - itaiji: [ - "\uFA3B" - ] - }, - { - oyaji: "\u5C6D", - itaiji: [ - "\u5C53" - ] - }, - { - oyaji: "\u5CA1", - itaiji: [ - "\u5D17", - "\u583D" - ] - }, - { - oyaji: "\u5CAA", - itaiji: [ - "\u{21D92}" - ] - }, - { - oyaji: "\u5CAD", - itaiji: [ - "\u5CBA" - ] - }, - { - oyaji: "\u5CB3", - itaiji: [ - "\u5DBD" - ] - }, - { - oyaji: "\u5CB8", - itaiji: [ - "\u37C1", - "\u{21D9C}" - ] - }, - { - oyaji: "\u5CE1", - itaiji: [ - "\u5CFD" - ] - }, - { - oyaji: "\u5CE8", - itaiji: [ - "\u5CE9" - ] - }, - { - oyaji: "\u5CF0", - itaiji: [ - "\u5CEF" - ] - }, - { - oyaji: "\u5CF6", - itaiji: [ - "\u5D8B", - "\u5D8C", - "\u3800", - "\u5DB9", - "\u9666", - "\u969D", - "\u96AF" - ] - }, - { - oyaji: "\u5D0E", - itaiji: [ - "\uFA11", - "\u5D5C", - "\u37E2", - "\u966D" - ] - }, - { - oyaji: "\u5D11", - itaiji: [ - "\u5D10" - ] - }, - { - oyaji: "\u5D12", - itaiji: [ - "\u5D2A" - ] - }, - { - oyaji: "\u5D16", - itaiji: [ - "\u5D15" - ] - }, - { - oyaji: "\u5D19", - itaiji: [ - "\u5D18" - ] - }, - { - oyaji: "\u5D1B", - itaiji: [ - "\u5D2B" - ] - }, - { - oyaji: "\u5D46", - itaiji: [ - "\u5D47" - ] - }, - { - oyaji: "\u5D4C", - itaiji: [ - "\u7BCF" - ] - }, - { - oyaji: "\u5D52", - itaiji: [ - "\u5D53" - ] - }, - { - oyaji: "\u5D69", - itaiji: [ - "\u5D27" - ] - }, - { - oyaji: "\u5D6C", - itaiji: [ - "\u37F4" - ] - }, - { - oyaji: "\u5D6F", - itaiji: [ - "\u5D73" - ] - }, - { - oyaji: "\u5D83", - itaiji: [ - "\u5D84" - ] - }, - { - oyaji: "\u5DA2", - itaiji: [ - "\u{21E33}", - "\u5DA4" - ] - }, - { - oyaji: "\u5DA7", - itaiji: [ - "\u{21D78}" - ] - }, - { - oyaji: "\u5DCC", - itaiji: [ - "\u5DD6" - ] - }, - { - oyaji: "\u5DDD", - itaiji: [ - "\u5DDB" - ] - }, - { - oyaji: "\u5DE3", - itaiji: [ - "\u5DE2" - ] - }, - { - oyaji: "\u5DE6", - itaiji: [ - "\u352B" - ] - }, - { - oyaji: "\u5DF7", - itaiji: [ - "\u8856" - ] - }, - { - oyaji: "\u5DFB", - itaiji: [ - "\u5377" - ] - }, - { - oyaji: "\u5DFD", - itaiji: [ - "\u{2F884}" - ] - }, - { - oyaji: "\u5E0C", - itaiji: [ - "\u{2206B}" - ] - }, - { - oyaji: "\u5E11", - itaiji: [ - "\u4F16" - ] - }, - { - oyaji: "\u5E1A", - itaiji: [ - "\u83F7" - ] - }, - { - oyaji: "\u5E2B", - itaiji: [ - "\u5E08" - ] - }, - { - oyaji: "\u5E2F", - itaiji: [ - "\u5E36" - ] - }, - { - oyaji: "\u5E30", - itaiji: [ - "\u6B78" - ] - }, - { - oyaji: "\u5E55", - itaiji: [ - "\u5E59" - ] - }, - { - oyaji: "\u5E6B", - itaiji: [ - "\u5E47", - "\u5E2E" - ] - }, - { - oyaji: "\u5E6C", - itaiji: [ - "\u{220D6}" - ] - }, - { - oyaji: "\u5E6E", - itaiji: [ - "\u3861" - ] - }, - { - oyaji: "\u5E74", - itaiji: [ - "\u79CA" - ] - }, - { - oyaji: "\u5E75", - itaiji: [ - "\u5F00" - ] - }, - { - oyaji: "\u5E77", - itaiji: [ - "\u5E76" - ] - }, - { - oyaji: "\u5E78", - itaiji: [ - "\u{200B7}" - ] - }, - { - oyaji: "\u5E79", - itaiji: [ - "\u69A6" - ] - }, - { - oyaji: "\u5E7A", - itaiji: [ - "\u4E48" - ] - }, - { - oyaji: "\u5E7C", - itaiji: [ - "\u{221B2}" - ] - }, - { - oyaji: "\u5E81", - itaiji: [ - "\u5EF3" - ] - }, - { - oyaji: "\u5E83", - itaiji: [ - "\u5EE3" - ] - }, - { - oyaji: "\u5EA7", - itaiji: [ - "\u{2B777}" - ] - }, - { - oyaji: "\u5EB6", - itaiji: [ - "\u5EBB" - ] - }, - { - oyaji: "\u5EC1", - itaiji: [ - "\u53A0" - ] - }, - { - oyaji: "\u5EC2", - itaiji: [ - "\u53A2" - ] - }, - { - oyaji: "\u5EC3", - itaiji: [ - "\u5EE2" - ] - }, - { - oyaji: "\u5EC8", - itaiji: [ - "\u53A6" - ] - }, - { - oyaji: "\u5EC9", - itaiji: [ - "\uF9A2" - ] - }, - { - oyaji: "\u5ECA", - itaiji: [ - "\uF928" - ] - }, - { - oyaji: "\u5EDB", - itaiji: [ - "\u58E5", - "\u913D", - "\u367B" - ] - }, - { - oyaji: "\u5EDD", - itaiji: [ - "\u53AE" - ] - }, - { - oyaji: "\u5EDF", - itaiji: [ - "\u5EBF", - "\u5E99" - ] - }, - { - oyaji: "\u5EE8", - itaiji: [ - "\u{2A818}" - ] - }, - { - oyaji: "\u5EE9", - itaiji: [ - "\u342D", - "\u5EEA" - ] - }, - { - oyaji: "\u5EFB", - itaiji: [ - "\u5EFD", - "\u{2231E}", - "\u8FF4" - ] - }, - { - oyaji: "\u5EFF", - itaiji: [ - "\u5344" - ] - }, - { - oyaji: "\u5F01", - itaiji: [ - "\u8FA8", - "\u8FAF", - "\u74E3" - ] - }, - { - oyaji: "\u5F04", - itaiji: [ - "\u630A", - "\u6335" - ] - }, - { - oyaji: "\u5F10", - itaiji: [ - "\u8CB3" - ] - }, - { - oyaji: "\u5F11", - itaiji: [ - "\u5F12" - ] - }, - { - oyaji: "\u5F1B", - itaiji: [ - "\u38AE" - ] - }, - { - oyaji: "\u5F25", - itaiji: [ - "\u5F4C" - ] - }, - { - oyaji: "\u5F37", - itaiji: [ - "\u5F3A" - ] - }, - { - oyaji: "\u5F3C", - itaiji: [ - "\u5F3B", - "\u{22400}" - ] - }, - { - oyaji: "\u5F3E", - itaiji: [ - "\u5F48" - ] - }, - { - oyaji: "\u5F45", - itaiji: [ - "\u{26FF6}" - ] - }, - { - oyaji: "\u5F4E", - itaiji: [ - "\u5F2F" - ] - }, - { - oyaji: "\u5F50", - itaiji: [ - "\u5F51" - ] - }, - { - oyaji: "\u5F53", - itaiji: [ - "\u7576" - ] - }, - { - oyaji: "\u5F59", - itaiji: [ - "\u5F5A" - ] - }, - { - oyaji: "\u5F5D", - itaiji: [ - "\u5F5C" - ] - }, - { - oyaji: "\u5F62", - itaiji: [ - "\u{2F899}", - "\u{22488}" - ] - }, - { - oyaji: "\u5F66", - itaiji: [ - "\u5F65" - ] - }, - { - oyaji: "\u5F6B", - itaiji: [ - "\u{2F89A}" - ] - }, - { - oyaji: "\u5F6C", - itaiji: [ - "\u658C" - ] - }, - { - oyaji: "\u5F81", - itaiji: [ - "\u{2848C}" - ] - }, - { - oyaji: "\u5F82", - itaiji: [ - "\u4890" - ] - }, - { - oyaji: "\u5F84", - itaiji: [ - "\u5F91" - ] - }, - { - oyaji: "\u5F87", - itaiji: [ - "\u{224C8}" - ] - }, - { - oyaji: "\u5F92", - itaiji: [ - "\u{28452}" - ] - }, - { - oyaji: "\u5F93", - itaiji: [ - "\u5F9E" - ] - }, - { - oyaji: "\u5F97", - itaiji: [ - "\u3775", - "\u{22536}" - ] - }, - { - oyaji: "\u5F99", - itaiji: [ - "\u{2846D}" - ] - }, - { - oyaji: "\u5FAD", - itaiji: [ - "\u509C" - ] - }, - { - oyaji: "\u5FB3", - itaiji: [ - "\u5FB7" - ] - }, - { - oyaji: "\u5FB4", - itaiji: [ - "\u5FB5" - ] - }, - { - oyaji: "\u5FDC", - itaiji: [ - "\u61C9" - ] - }, - { - oyaji: "\u5FFD", - itaiji: [ - "\u{225D8}" - ] - }, - { - oyaji: "\u6015", - itaiji: [ - "\u{225CC}" - ] - }, - { - oyaji: "\u6016", - itaiji: [ - "\u6091" - ] - }, - { - oyaji: "\u6019", - itaiji: [ - "\u{226C5}" - ] - }, - { - oyaji: "\u601D", - itaiji: [ - "\u6056" - ] - }, - { - oyaji: "\u602A", - itaiji: [ - "\u6060" - ] - }, - { - oyaji: "\u6031", - itaiji: [ - "\u5FE9", - "\u60A4" - ] - }, - { - oyaji: "\u604B", - itaiji: [ - "\u6200" - ] - }, - { - oyaji: "\u6052", - itaiji: [ - "\u6046" - ] - }, - { - oyaji: "\u605A", - itaiji: [ - "\u392C", - "\u3707" - ] - }, - { - oyaji: "\u605F", - itaiji: [ - "\u5FF7" - ] - }, - { - oyaji: "\u6063", - itaiji: [ - "\u{2264A}" - ] - }, - { - oyaji: "\u6064", - itaiji: [ - "\u5379", - "\u460F" - ] - }, - { - oyaji: "\u6065", - itaiji: [ - "\u803B" - ] - }, - { - oyaji: "\u6068", - itaiji: [ - "\u{22643}" - ] - }, - { - oyaji: "\u606A", - itaiji: [ - "\u3929", - "\u6119" - ] - }, - { - oyaji: "\u606D", - itaiji: [ - "\u{22644}" - ] - }, - { - oyaji: "\u6075", - itaiji: [ - "\u60E0" - ] - }, - { - oyaji: "\u6084", - itaiji: [ - "\u{225B9}" - ] - }, - { - oyaji: "\u608B", - itaiji: [ - "\u6061" - ] - }, - { - oyaji: "\u6094", - itaiji: [ - "\uFA3D" - ] - }, - { - oyaji: "\u609F", - itaiji: [ - "\u5FE2" - ] - }, - { - oyaji: "\u60A6", - itaiji: [ - "\u6085" - ] - }, - { - oyaji: "\u60A9", - itaiji: [ - "\u60F1" - ] - }, - { - oyaji: "\u60AA", - itaiji: [ - "\u60E1" - ] - }, - { - oyaji: "\u60B1", - itaiji: [ - "\u3971" - ] - }, - { - oyaji: "\u60B4", - itaiji: [ - "\u5FF0" - ] - }, - { - oyaji: "\u60B6", - itaiji: [ - "\u3943" - ] - }, - { - oyaji: "\u60BD", - itaiji: [ - "\u6053" - ] - }, - { - oyaji: "\u60C7", - itaiji: [ - "\u{2F8A5}" - ] - }, - { - oyaji: "\u60D5", - itaiji: [ - "\u6090" - ] - }, - { - oyaji: "\u60DB", - itaiji: [ - "\u60FD" - ] - }, - { - oyaji: "\u60DD", - itaiji: [ - "\u{22835}" - ] - }, - { - oyaji: "\u60E8", - itaiji: [ - "\u6158" - ] - }, - { - oyaji: "\u60F0", - itaiji: [ - "\u619C" - ] - }, - { - oyaji: "\u60F8", - itaiji: [ - "\u{2279B}" - ] - }, - { - oyaji: "\u6106", - itaiji: [ - "\u8AD0" - ] - }, - { - oyaji: "\u6112", - itaiji: [ - "\u{2289A}" - ] - }, - { - oyaji: "\u611B", - itaiji: [ - "\u3905" - ] - }, - { - oyaji: "\u611C", - itaiji: [ - "\u3966" - ] - }, - { - oyaji: "\u6127", - itaiji: [ - "\u5ABF" - ] - }, - { - oyaji: "\u6128", - itaiji: [ - "\u6164" - ] - }, - { - oyaji: "\u6148", - itaiji: [ - "\u{2F8A6}" - ] - }, - { - oyaji: "\u614C", - itaiji: [ - "\u393A" - ] - }, - { - oyaji: "\u614D", - itaiji: [ - "\u6120" - ] - }, - { - oyaji: "\u614E", - itaiji: [ - "\u613C" - ] - }, - { - oyaji: "\u6159", - itaiji: [ - "\u615A" - ] - }, - { - oyaji: "\u6162", - itaiji: [ - "\u{22894}" - ] - }, - { - oyaji: "\u6177", - itaiji: [ - "\u5FFC" - ] - }, - { - oyaji: "\u617C", - itaiji: [ - "\u617D" - ] - }, - { - oyaji: "\u6181", - itaiji: [ - "\u6121" - ] - }, - { - oyaji: "\u6182", - itaiji: [ - "\u{2274A}" - ] - }, - { - oyaji: "\u618A", - itaiji: [ - "\u{227E1}" - ] - }, - { - oyaji: "\u618E", - itaiji: [ - "\uFA3F" - ] - }, - { - oyaji: "\u6191", - itaiji: [ - "\u617F" - ] - }, - { - oyaji: "\u6196", - itaiji: [ - "\u6197" - ] - }, - { - oyaji: "\u6199", - itaiji: [ - "\u6198" - ] - }, - { - oyaji: "\u619A", - itaiji: [ - "\u60EE" - ] - }, - { - oyaji: "\u619D", - itaiji: [ - "\u619E" - ] - }, - { - oyaji: "\u61A4", - itaiji: [ - "\u{2F8AD}" - ] - }, - { - oyaji: "\u61A9", - itaiji: [ - "\u6187" - ] - }, - { - oyaji: "\u61AB", - itaiji: [ - "\u{2287B}" - ] - }, - { - oyaji: "\u61B2", - itaiji: [ - "\u{2F8AC}" - ] - }, - { - oyaji: "\u61C7", - itaiji: [ - "\u{22846}" - ] - }, - { - oyaji: "\u61C8", - itaiji: [ - "\u{228A3}" - ] - }, - { - oyaji: "\u61CA", - itaiji: [ - "\u3907" - ] - }, - { - oyaji: "\u61CD", - itaiji: [ - "\u61D4" - ] - }, - { - oyaji: "\u61D0", - itaiji: [ - "\u61F7" - ] - }, - { - oyaji: "\u61D5", - itaiji: [ - "\u3994" - ] - }, - { - oyaji: "\u61E3", - itaiji: [ - "\u{2285B}" - ] - }, - { - oyaji: "\u61E6", - itaiji: [ - "\u611E" - ] - }, - { - oyaji: "\u61F2", - itaiji: [ - "\uFA40" - ] - }, - { - oyaji: "\u61F6", - itaiji: [ - "\u{2F8B1}" - ] - }, - { - oyaji: "\u61FA", - itaiji: [ - "\u61F4" - ] - }, - { - oyaji: "\u61FC", - itaiji: [ - "\u6133" - ] - }, - { - oyaji: "\u61FF", - itaiji: [ - "\u39A4" - ] - }, - { - oyaji: "\u6210", - itaiji: [ - "\u{2F8B2}" - ] - }, - { - oyaji: "\u6216", - itaiji: [ - "\u39AF" - ] - }, - { - oyaji: "\u621B", - itaiji: [ - "\u621E" - ] - }, - { - oyaji: "\u621F", - itaiji: [ - "\u{229E2}" - ] - }, - { - oyaji: "\u6226", - itaiji: [ - "\u6230" - ] - }, - { - oyaji: "\u622A", - itaiji: [ - "\u{229F5}" - ] - }, - { - oyaji: "\u622F", - itaiji: [ - "\u6232" - ] - }, - { - oyaji: "\u6234", - itaiji: [ - "\uFA8C" - ] - }, - { - oyaji: "\u6238", - itaiji: [ - "\u6236" - ] - }, - { - oyaji: "\u623B", - itaiji: [ - "\u623E" - ] - }, - { - oyaji: "\u6255", - itaiji: [ - "\u62C2" - ] - }, - { - oyaji: "\u6279", - itaiji: [ - "\u{22C67}" - ] - }, - { - oyaji: "\u627C", - itaiji: [ - "\u6439", - "\u39D6" - ] - }, - { - oyaji: "\u6298", - itaiji: [ - "\u3ABF" - ] - }, - { - oyaji: "\u629C", - itaiji: [ - "\u62D4" - ] - }, - { - oyaji: "\u629E", - itaiji: [ - "\u64C7" - ] - }, - { - oyaji: "\u62BD", - itaiji: [ - "\u{22B46}" - ] - }, - { - oyaji: "\u62C5", - itaiji: [ - "\u64D4" - ] - }, - { - oyaji: "\u62C7", - itaiji: [ - "\u80DF" - ] - }, - { - oyaji: "\u62CB", - itaiji: [ - "\u629B" - ] - }, - { - oyaji: "\u62CD", - itaiji: [ - "\u{22AE6}" - ] - }, - { - oyaji: "\u62D5", - itaiji: [ - "\u6261", - "\u62D6" - ] - }, - { - oyaji: "\u62D8", - itaiji: [ - "\u6285" - ] - }, - { - oyaji: "\u62DD", - itaiji: [ - "\u62DC" - ] - }, - { - oyaji: "\u62E0", - itaiji: [ - "\u64DA" - ] - }, - { - oyaji: "\u62E1", - itaiji: [ - "\u64F4" - ] - }, - { - oyaji: "\u62EF", - itaiji: [ - "\u628D" - ] - }, - { - oyaji: "\u62FD", - itaiji: [ - "\u6359" - ] - }, - { - oyaji: "\u62FF", - itaiji: [ - "\u62CF" - ] - }, - { - oyaji: "\u6307", - itaiji: [ - "\u{22AFE}" - ] - }, - { - oyaji: "\u6319", - itaiji: [ - "\u64E7" - ] - }, - { - oyaji: "\u631F", - itaiji: [ - "\u633E" - ] - }, - { - oyaji: "\u633F", - itaiji: [ - "\u63D2" - ] - }, - { - oyaji: "\u6350", - itaiji: [ - "\u{2F8B7}" - ] - }, - { - oyaji: "\u6365", - itaiji: [ - "\u{22AB8}" - ] - }, - { - oyaji: "\u638E", - itaiji: [ - "\u{22C24}" - ] - }, - { - oyaji: "\u6394", - itaiji: [ - "\u5B6F" - ] - }, - { - oyaji: "\u63AC", - itaiji: [ - "\u530A" - ] - }, - { - oyaji: "\u63B2", - itaiji: [ - "\u63ED" - ] - }, - { - oyaji: "\u63C4", - itaiji: [ - "\u{22D96}" - ] - }, - { - oyaji: "\u63F6", - itaiji: [ - "\u6353" - ] - }, - { - oyaji: "\u63FA", - itaiji: [ - "\u6416" - ] - }, - { - oyaji: "\u6412", - itaiji: [ - "\u{22B94}" - ] - }, - { - oyaji: "\u6414", - itaiji: [ - "\u63BB" - ] - }, - { - oyaji: "\u6422", - itaiji: [ - "\u{2F8BF}" - ] - }, - { - oyaji: "\u642D", - itaiji: [ - "\u6498" - ] - }, - { - oyaji: "\u643A", - itaiji: [ - "\u651C", - "\u64D5", - "\u3A57", - "\u{22E42}" - ] - }, - { - oyaji: "\u6442", - itaiji: [ - "\u651D" - ] - }, - { - oyaji: "\u6451", - itaiji: [ - "\u63B4" - ] - }, - { - oyaji: "\u647B", - itaiji: [ - "\u64A1" - ] - }, - { - oyaji: "\u6483", - itaiji: [ - "\u64CA" - ] - }, - { - oyaji: "\u6488", - itaiji: [ - "\u{22B50}" - ] - }, - { - oyaji: "\u6490", - itaiji: [ - "\u6491" - ] - }, - { - oyaji: "\u64AD", - itaiji: [ - "\u{22FE5}" - ] - }, - { - oyaji: "\u64BC", - itaiji: [ - "\u3A14" - ] - }, - { - oyaji: "\u64BF", - itaiji: [ - "\u{22BA6}" - ] - }, - { - oyaji: "\u64C1", - itaiji: [ - "\u{22E6C}" - ] - }, - { - oyaji: "\u64C2", - itaiji: [ - "\u6502" - ] - }, - { - oyaji: "\u64CE", - itaiji: [ - "\u38A3", - "\u64CF" - ] - }, - { - oyaji: "\u64E1", - itaiji: [ - "\u62AC" - ] - }, - { - oyaji: "\u64E3", - itaiji: [ - "\u{22B4F}", - "\u6417" - ] - }, - { - oyaji: "\u6522", - itaiji: [ - "\u6505" - ] - }, - { - oyaji: "\u652A", - itaiji: [ - "\u64B9" - ] - }, - { - oyaji: "\u652B", - itaiji: [ - "\u7234" - ] - }, - { - oyaji: "\u652C", - itaiji: [ - "\u64E5", - "\u3A5C" - ] - }, - { - oyaji: "\u6534", - itaiji: [ - "\u6535" - ] - }, - { - oyaji: "\u654F", - itaiji: [ - "\uFA41" - ] - }, - { - oyaji: "\u6559", - itaiji: [ - "\u654E" - ] - }, - { - oyaji: "\u6562", - itaiji: [ - "\u{20B56}" - ] - }, - { - oyaji: "\u6566", - itaiji: [ - "\u3A9F" - ] - }, - { - oyaji: "\u6570", - itaiji: [ - "\u6578" - ] - }, - { - oyaji: "\u6572", - itaiji: [ - "\u3AA3", - "\u641E" - ] - }, - { - oyaji: "\u6574", - itaiji: [ - "\u{22FEB}" - ] - }, - { - oyaji: "\u6575", - itaiji: [ - "\u{22FEA}" - ] - }, - { - oyaji: "\u6589", - itaiji: [ - "\u9F4A" - ] - }, - { - oyaji: "\u658E", - itaiji: [ - "\u9F4B" - ] - }, - { - oyaji: "\u6591", - itaiji: [ - "\u8FAC" - ] - }, - { - oyaji: "\u659F", - itaiji: [ - "\u9159" - ] - }, - { - oyaji: "\u65A5", - itaiji: [ - "\u387F" - ] - }, - { - oyaji: "\u65A7", - itaiji: [ - "\u{28A1E}" - ] - }, - { - oyaji: "\u65AD", - itaiji: [ - "\u65B7" - ] - }, - { - oyaji: "\u65B2", - itaiji: [ - "\u65B5", - "\u{20807}" - ] - }, - { - oyaji: "\u65BC", - itaiji: [ - "\u6275" - ] - }, - { - oyaji: "\u65C1", - itaiji: [ - "\u3AC4" - ] - }, - { - oyaji: "\u65C3", - itaiji: [ - "\u65DC", - "\u{230FC}" - ] - }, - { - oyaji: "\u65C5", - itaiji: [ - "\uF983" - ] - }, - { - oyaji: "\u65C6", - itaiji: [ - "\u65BE" - ] - }, - { - oyaji: "\u65D2", - itaiji: [ - "\u342C" - ] - }, - { - oyaji: "\u65D7", - itaiji: [ - "\u7C4F", - "\u7C31" - ] - }, - { - oyaji: "\u65DB", - itaiji: [ - "\u65D9" - ] - }, - { - oyaji: "\u65E2", - itaiji: [ - "\u65E3" - ] - }, - { - oyaji: "\u65E7", - itaiji: [ - "\u820A" - ] - }, - { - oyaji: "\u65E8", - itaiji: [ - "\u3AD6", - "\u{20914}" - ] - }, - { - oyaji: "\u6602", - itaiji: [ - "\u663B" - ] - }, - { - oyaji: "\u6603", - itaiji: [ - "\u{23166}" - ] - }, - { - oyaji: "\u6607", - itaiji: [ - "\u66FB" - ] - }, - { - oyaji: "\u660F", - itaiji: [ - "\u662C" - ] - }, - { - oyaji: "\u661F", - itaiji: [ - "\u66D0", - "\u76A8" - ] - }, - { - oyaji: "\u6620", - itaiji: [ - "\u668E" - ] - }, - { - oyaji: "\u6625", - itaiji: [ - "\u65FE", - "\u8405" - ] - }, - { - oyaji: "\u662F", - itaiji: [ - "\u6630" - ] - }, - { - oyaji: "\u6634", - itaiji: [ - "\u{231BB}" - ] - }, - { - oyaji: "\u6635", - itaiji: [ - "\u66B1" - ] - }, - { - oyaji: "\u663A", - itaiji: [ - "\u661E" - ] - }, - { - oyaji: "\u663C", - itaiji: [ - "\u665D" - ] - }, - { - oyaji: "\u6642", - itaiji: [ - "\u65F9", - "\u65F6" - ] - }, - { - oyaji: "\u6643", - itaiji: [ - "\u6644" - ] - }, - { - oyaji: "\u664B", - itaiji: [ - "\u6649" - ] - }, - { - oyaji: "\u6652", - itaiji: [ - "\u66EC" - ] - }, - { - oyaji: "\u6662", - itaiji: [ - "\u6663" - ] - }, - { - oyaji: "\u6669", - itaiji: [ - "\u665A" - ] - }, - { - oyaji: "\u666E", - itaiji: [ - "\u669C" - ] - }, - { - oyaji: "\u6670", - itaiji: [ - "\u6673" - ] - }, - { - oyaji: "\u6674", - itaiji: [ - "\uFA12" - ] - }, - { - oyaji: "\u6676", - itaiji: [ - "\u{231F5}" - ] - }, - { - oyaji: "\u6681", - itaiji: [ - "\u66C9" - ] - }, - { - oyaji: "\u6684", - itaiji: [ - "\u714A" - ] - }, - { - oyaji: "\u6691", - itaiji: [ - "\uFA43" - ] - }, - { - oyaji: "\u66A6", - itaiji: [ - "\u66C6" - ] - }, - { - oyaji: "\u66B4", - itaiji: [ - "\u3B25" - ] - }, - { - oyaji: "\u66E0", - itaiji: [ - "\u663F" - ] - }, - { - oyaji: "\u66E6", - itaiji: [ - "\u3B22" - ] - }, - { - oyaji: "\u66F3", - itaiji: [ - "\u66F5" - ] - }, - { - oyaji: "\u66F4", - itaiji: [ - "\u3A85" - ] - }, - { - oyaji: "\u66F9", - itaiji: [ - "\u66FA", - "\u{23358}" - ] - }, - { - oyaji: "\u66FC", - itaiji: [ - "\u3B05" - ] - }, - { - oyaji: "\u66FD", - itaiji: [ - "\u66FE" - ] - }, - { - oyaji: "\u66FF", - itaiji: [ - "\u3B31" - ] - }, - { - oyaji: "\u6700", - itaiji: [ - "\u51A3", - "\u3761" - ] - }, - { - oyaji: "\u6708", - itaiji: [ - "\u2F49" - ] - }, - { - oyaji: "\u6717", - itaiji: [ - "\uF929" - ] - }, - { - oyaji: "\u6736", - itaiji: [ - "\u6735", - "\u44B3" - ] - }, - { - oyaji: "\u673D", - itaiji: [ - "\u{233D3}" - ] - }, - { - oyaji: "\u6746", - itaiji: [ - "\u687F" - ] - }, - { - oyaji: "\u6749", - itaiji: [ - "\u6766" - ] - }, - { - oyaji: "\u6751", - itaiji: [ - "\u90A8" - ] - }, - { - oyaji: "\u6753", - itaiji: [ - "\u{233D0}" - ] - }, - { - oyaji: "\u6761", - itaiji: [ - "\u689D" - ] - }, - { - oyaji: "\u6765", - itaiji: [ - "\u4F86" - ] - }, - { - oyaji: "\u676E", - itaiji: [ - "\u{233D5}" - ] - }, - { - oyaji: "\u676F", - itaiji: [ - "\u76C3", - "\u686E", - "\u3B8E" - ] - }, - { - oyaji: "\u677E", - itaiji: [ - "\u67A9", - "\u6780", - "\u67D7", - "\u68A5", - "\u3BA4" - ] - }, - { - oyaji: "\u6795", - itaiji: [ - "\u{233DD}" - ] - }, - { - oyaji: "\u67A1", - itaiji: [ - "\u685D" - ] - }, - { - oyaji: "\u67A2", - itaiji: [ - "\u6A1E" - ] - }, - { - oyaji: "\u67BB", - itaiji: [ - "\u6827" - ] - }, - { - oyaji: "\u67CF", - itaiji: [ - "\u6822" - ] - }, - { - oyaji: "\u67E9", - itaiji: [ - "\u531B" - ] - }, - { - oyaji: "\u67F0", - itaiji: [ - "\u3B88" - ] - }, - { - oyaji: "\u67F3", - itaiji: [ - "\u687A", - "\u6801" - ] - }, - { - oyaji: "\u67F5", - itaiji: [ - "\u6805" - ] - }, - { - oyaji: "\u67FA", - itaiji: [ - "\u67B4" - ] - }, - { - oyaji: "\u67FB", - itaiji: [ - "\u67E5" - ] - }, - { - oyaji: "\u67FF", - itaiji: [ - "\u67F9" - ] - }, - { - oyaji: "\u6803", - itaiji: [ - "\u6764", - "\u{2371C}" - ] - }, - { - oyaji: "\u6804", - itaiji: [ - "\u69AE" - ] - }, - { - oyaji: "\u6817", - itaiji: [ - "\u3B9A" - ] - }, - { - oyaji: "\u681F", - itaiji: [ - "\u{2F8E5}" - ] - }, - { - oyaji: "\u6821", - itaiji: [ - "\u630D" - ] - }, - { - oyaji: "\u6832", - itaiji: [ - "\u{23465}" - ] - }, - { - oyaji: "\u6834", - itaiji: [ - "\u3BB5" - ] - }, - { - oyaji: "\u6848", - itaiji: [ - "\u6849" - ] - }, - { - oyaji: "\u6851", - itaiji: [ - "\u6852", - "\u{2F8E1}" - ] - }, - { - oyaji: "\u6854", - itaiji: [ - "\u3BAE" - ] - }, - { - oyaji: "\u685C", - itaiji: [ - "\u6AFB" - ] - }, - { - oyaji: "\u685F", - itaiji: [ - "\u68E7" - ] - }, - { - oyaji: "\u6885", - itaiji: [ - "\uFA44" - ] - }, - { - oyaji: "\u6893", - itaiji: [ - "\u674D", - "\u699F" - ] - }, - { - oyaji: "\u6894", - itaiji: [ - "\u6800" - ] - }, - { - oyaji: "\u68A8", - itaiji: [ - "\u68C3" - ] - }, - { - oyaji: "\u68B1", - itaiji: [ - "\u68DE" - ] - }, - { - oyaji: "\u68CB", - itaiji: [ - "\u68CA" - ] - }, - { - oyaji: "\u68EC", - itaiji: [ - "\u6926" - ] - }, - { - oyaji: "\u68F2", - itaiji: [ - "\u6816" - ] - }, - { - oyaji: "\u6901", - itaiji: [ - "\u69E8" - ] - }, - { - oyaji: "\u690D", - itaiji: [ - "\u3BF0" - ] - }, - { - oyaji: "\u691C", - itaiji: [ - "\u6AA2" - ] - }, - { - oyaji: "\u6930", - itaiji: [ - "\u3B68" - ] - }, - { - oyaji: "\u6936", - itaiji: [ - "\u68D5" - ] - }, - { - oyaji: "\u6955", - itaiji: [ - "\u6A62" - ] - }, - { - oyaji: "\u6960", - itaiji: [ - "\u678F", - "\u67DF" - ] - }, - { - oyaji: "\u696B", - itaiji: [ - "\u6A9D" - ] - }, - { - oyaji: "\u696E", - itaiji: [ - "\u67E0" - ] - }, - { - oyaji: "\u697C", - itaiji: [ - "\u6A13" - ] - }, - { - oyaji: "\u697D", - itaiji: [ - "\u6A02" - ] - }, - { - oyaji: "\u697E", - itaiji: [ - "\u{24B6F}" - ] - }, - { - oyaji: "\u6982", - itaiji: [ - "\u69EA" - ] - }, - { - oyaji: "\u6993", - itaiji: [ - "\u6A12", - "\u6AC1" - ] - }, - { - oyaji: "\u69B4", - itaiji: [ - "\u6A4A" - ] - }, - { - oyaji: "\u69BC", - itaiji: [ - "\u{23581}" - ] - }, - { - oyaji: "\u69C1", - itaiji: [ - "\u69C0" - ] - }, - { - oyaji: "\u69C3", - itaiji: [ - "\u67C8" - ] - }, - { - oyaji: "\u69D8", - itaiji: [ - "\u6A23" - ] - }, - { - oyaji: "\u69D9", - itaiji: [ - "\u69C7" - ] - }, - { - oyaji: "\u69F3", - itaiji: [ - "\u3BCD" - ] - }, - { - oyaji: "\u69F5", - itaiji: [ - "\u6899" - ] - }, - { - oyaji: "\u69F6", - itaiji: [ - "\u6922" - ] - }, - { - oyaji: "\u6A21", - itaiji: [ - "\u7CE2", - "\u6A45" - ] - }, - { - oyaji: "\u6A29", - itaiji: [ - "\u6B0A" - ] - }, - { - oyaji: "\u6A2A", - itaiji: [ - "\u6A6B" - ] - }, - { - oyaji: "\u6A38", - itaiji: [ - "\u6A8F" - ] - }, - { - oyaji: "\u6A39", - itaiji: [ - "\u{235F3}" - ] - }, - { - oyaji: "\u6A3D", - itaiji: [ - "\u58AB", - "\u7F47" - ] - }, - { - oyaji: "\u6A48", - itaiji: [ - "\u{234E4}" - ] - }, - { - oyaji: "\u6A4B", - itaiji: [ - "\u69D7", - "\u{2363A}" - ] - }, - { - oyaji: "\u6A4C", - itaiji: [ - "\u6A7A" - ] - }, - { - oyaji: "\u6A50", - itaiji: [ - "\u69D6" - ] - }, - { - oyaji: "\u6A5B", - itaiji: [ - "\u6A5C" - ] - }, - { - oyaji: "\u6A83", - itaiji: [ - "\u6AFD" - ] - }, - { - oyaji: "\u6A94", - itaiji: [ - "\u6863" - ] - }, - { - oyaji: "\u6A97", - itaiji: [ - "\u6A98", - "\u8617" - ] - }, - { - oyaji: "\u6A9C", - itaiji: [ - "\u6867" - ] - }, - { - oyaji: "\u6AA3", - itaiji: [ - "\u6A2F" - ] - }, - { - oyaji: "\u6AAE", - itaiji: [ - "\u68BC" - ] - }, - { - oyaji: "\u6AB3", - itaiji: [ - "\u68B9" - ] - }, - { - oyaji: "\u6ADB", - itaiji: [ - "\u{2F8ED}" - ] - }, - { - oyaji: "\u6ADF", - itaiji: [ - "\u6AAA" - ] - }, - { - oyaji: "\u6AE8", - itaiji: [ - "\u67A6" - ] - }, - { - oyaji: "\u6AF1", - itaiji: [ - "\u8616" - ] - }, - { - oyaji: "\u6AF3", - itaiji: [ - "\u69DE", - "\u3C0D" - ] - }, - { - oyaji: "\u6AFA", - itaiji: [ - "\u6B1E" - ] - }, - { - oyaji: "\u6B04", - itaiji: [ - "\uF91D" - ] - }, - { - oyaji: "\u6B05", - itaiji: [ - "\uFA14" - ] - }, - { - oyaji: "\u6B12", - itaiji: [ - "\u683E" - ] - }, - { - oyaji: "\u6B16", - itaiji: [ - "\u3C16" - ] - }, - { - oyaji: "\u6B1B", - itaiji: [ - "\u{2383D}" - ] - }, - { - oyaji: "\u6B20", - itaiji: [ - "\u7F3A" - ] - }, - { - oyaji: "\u6B27", - itaiji: [ - "\u6B50" - ] - }, - { - oyaji: "\u6B3B", - itaiji: [ - "\u6B58" - ] - }, - { - oyaji: "\u6B3E", - itaiji: [ - "\u3C41", - "\u6B35" - ] - }, - { - oyaji: "\u6B4C", - itaiji: [ - "\u8B0C" - ] - }, - { - oyaji: "\u6B53", - itaiji: [ - "\u6B61" - ] - }, - { - oyaji: "\u6B54", - itaiji: [ - "\u{2F8F1}" - ] - }, - { - oyaji: "\u6B69", - itaiji: [ - "\u6B65" - ] - }, - { - oyaji: "\u6B6F", - itaiji: [ - "\u9F52" - ] - }, - { - oyaji: "\u6B73", - itaiji: [ - "\u6B72" - ] - }, - { - oyaji: "\u6B74", - itaiji: [ - "\u6B77" - ] - }, - { - oyaji: "\u6B79", - itaiji: [ - "\u6B7A" - ] - }, - { - oyaji: "\u6B7F", - itaiji: [ - "\u6B81", - "\u6B7E" - ] - }, - { - oyaji: "\u6B82", - itaiji: [ - "\u{239EB}" - ] - }, - { - oyaji: "\u6B8B", - itaiji: [ - "\u6B98" - ] - }, - { - oyaji: "\u6BB2", - itaiji: [ - "\u6BB1" - ] - }, - { - oyaji: "\u6BB4", - itaiji: [ - "\u6BC6" - ] - }, - { - oyaji: "\u6BBA", - itaiji: [ - "\uF970" - ] - }, - { - oyaji: "\u6BBB", - itaiji: [ - "\u6BBC" - ] - }, - { - oyaji: "\u6BC0", - itaiji: [ - "\u6BC1" - ] - }, - { - oyaji: "\u6BCE", - itaiji: [ - "\u6BCF" - ] - }, - { - oyaji: "\u6BD8", - itaiji: [ - "\u6BD7", - "\u{23B08}" - ] - }, - { - oyaji: "\u6BDF", - itaiji: [ - "\u6BEE", - "\u6318" - ] - }, - { - oyaji: "\u6C05", - itaiji: [ - "\u{2A176}" - ] - }, - { - oyaji: "\u6C08", - itaiji: [ - "\u6BE1", - "\u6C0A" - ] - }, - { - oyaji: "\u6C10", - itaiji: [ - "\u5F16" - ] - }, - { - oyaji: "\u6C17", - itaiji: [ - "\u6C23" - ] - }, - { - oyaji: "\u6C1B", - itaiji: [ - "\u{23C66}" - ] - }, - { - oyaji: "\u6C37", - itaiji: [ - "\u51B0" - ] - }, - { - oyaji: "\u6C5A", - itaiji: [ - "\u6C59", - "\u6D3F", - "\u6C61" - ] - }, - { - oyaji: "\u6C74", - itaiji: [ - "\u6C73" - ] - }, - { - oyaji: "\u6C7A", - itaiji: [ - "\u51B3" - ] - }, - { - oyaji: "\u6C83", - itaiji: [ - "\u{23D7D}" - ] - }, - { - oyaji: "\u6C88", - itaiji: [ - "\u6C89" - ] - }, - { - oyaji: "\u6C96", - itaiji: [ - "\u51B2" - ] - }, - { - oyaji: "\u6CA1", - itaiji: [ - "\u6C92" - ] - }, - { - oyaji: "\u6CA2", - itaiji: [ - "\u6FA4" - ] - }, - { - oyaji: "\u6CB1", - itaiji: [ - "\u6CB2", - "\u{23D7A}" - ] - }, - { - oyaji: "\u6CBF", - itaiji: [ - "\u3CC2", - "\u{2F8FC}" - ] - }, - { - oyaji: "\u6CC1", - itaiji: [ - "\u51B5", - "\uFA71" - ] - }, - { - oyaji: "\u6CC4", - itaiji: [ - "\u{23CD8}" - ] - }, - { - oyaji: "\u6CC9", - itaiji: [ - "\u6D24" - ] - }, - { - oyaji: "\u6CD5", - itaiji: [ - "\u704B", - "\u3CD2" - ] - }, - { - oyaji: "\u6CDD", - itaiji: [ - "\u3D11" - ] - }, - { - oyaji: "\u6CE5", - itaiji: [ - "\u57FF" - ] - }, - { - oyaji: "\u6CF0", - itaiji: [ - "\u{23CFE}", - "\u51AD", - "\u3917" - ] - }, - { - oyaji: "\u6D25", - itaiji: [ - "\u{23E01}" - ] - }, - { - oyaji: "\u6D3B", - itaiji: [ - "\u{23D20}" - ] - }, - { - oyaji: "\u6D41", - itaiji: [ - "\uFA97" - ] - }, - { - oyaji: "\u6D44", - itaiji: [ - "\u6DE8" - ] - }, - { - oyaji: "\u6D45", - itaiji: [ - "\u6DFA" - ] - }, - { - oyaji: "\u6D59", - itaiji: [ - "\u6DDB" - ] - }, - { - oyaji: "\u6D5C", - itaiji: [ - "\u6FF1" - ] - }, - { - oyaji: "\u6D63", - itaiji: [ - "\u6FA3" - ] - }, - { - oyaji: "\u6D69", - itaiji: [ - "\u{2F903}" - ] - }, - { - oyaji: "\u6D77", - itaiji: [ - "\uFA45" - ] - }, - { - oyaji: "\u6D79", - itaiji: [ - "\u6D43" - ] - }, - { - oyaji: "\u6D82", - itaiji: [ - "\u51C3" - ] - }, - { - oyaji: "\u6D85", - itaiji: [ - "\u{23D40}" - ] - }, - { - oyaji: "\u6D93", - itaiji: [ - "\u3CD9" - ] - }, - { - oyaji: "\u6D99", - itaiji: [ - "\u6DDA" - ] - }, - { - oyaji: "\u6DB5", - itaiji: [ - "\u{23E62}" - ] - }, - { - oyaji: "\u6DBC", - itaiji: [ - "\u51C9" - ] - }, - { - oyaji: "\u6DEC", - itaiji: [ - "\u3CC3" - ] - }, - { - oyaji: "\u6DF1", - itaiji: [ - "\u3D31" - ] - }, - { - oyaji: "\u6DF3", - itaiji: [ - "\u6E7B" - ] - }, - { - oyaji: "\u6DF5", - itaiji: [ - "\u6E15", - "\u6E0A" - ] - }, - { - oyaji: "\u6E05", - itaiji: [ - "\u6DF8" - ] - }, - { - oyaji: "\u6E07", - itaiji: [ - "\u6E34" - ] - }, - { - oyaji: "\u6E08", - itaiji: [ - "\u6FDF" - ] - }, - { - oyaji: "\u6E09", - itaiji: [ - "\u6D89" - ] - }, - { - oyaji: "\u6E0B", - itaiji: [ - "\u6F81" - ] - }, - { - oyaji: "\u6E13", - itaiji: [ - "\u6EAA" - ] - }, - { - oyaji: "\u6E1A", - itaiji: [ - "\uFA46" - ] - }, - { - oyaji: "\u6E1B", - itaiji: [ - "\u51CF" - ] - }, - { - oyaji: "\u6E29", - itaiji: [ - "\u6EAB" - ] - }, - { - oyaji: "\u6E38", - itaiji: [ - "\u3CFA" - ] - }, - { - oyaji: "\u6E7E", - itaiji: [ - "\u7063" - ] - }, - { - oyaji: "\u6E7F", - itaiji: [ - "\u6FD5" - ] - }, - { - oyaji: "\u6E80", - itaiji: [ - "\u6EFF" - ] - }, - { - oyaji: "\u6E96", - itaiji: [ - "\u51D6" - ] - }, - { - oyaji: "\u6E9C", - itaiji: [ - "\u6F91" - ] - }, - { - oyaji: "\u6EB2", - itaiji: [ - "\u{23E08}" - ] - }, - { - oyaji: "\u6EC2", - itaiji: [ - "\u9736" - ] - }, - { - oyaji: "\u6ECB", - itaiji: [ - "\u{2F90B}" - ] - }, - { - oyaji: "\u6ECE", - itaiji: [ - "\u6FDA" - ] - }, - { - oyaji: "\u6ED4", - itaiji: [ - "\u3D1E" - ] - }, - { - oyaji: "\u6EDD", - itaiji: [ - "\u7027" - ] - }, - { - oyaji: "\u6EDE", - itaiji: [ - "\u6EEF" - ] - }, - { - oyaji: "\u6EF2", - itaiji: [ - "\u6D81", - "\u6E17" - ] - }, - { - oyaji: "\u6EFE", - itaiji: [ - "\u6EDA" - ] - }, - { - oyaji: "\u6F06", - itaiji: [ - "\u67D2", - "\u3BC3" - ] - }, - { - oyaji: "\u6F0F", - itaiji: [ - "\u5C5A" - ] - }, - { - oyaji: "\u6F15", - itaiji: [ - "\u{2414D}" - ] - }, - { - oyaji: "\u6F22", - itaiji: [ - "\uFA47" - ] - }, - { - oyaji: "\u6F51", - itaiji: [ - "\u6E8C" - ] - }, - { - oyaji: "\u6F5C", - itaiji: [ - "\u6F5B" - ] - }, - { - oyaji: "\u6F68", - itaiji: [ - "\u6F40", - "\u7047" - ] - }, - { - oyaji: "\u6F6E", - itaiji: [ - "\u{2F90F}" - ] - }, - { - oyaji: "\u6F78", - itaiji: [ - "\u6F98" - ] - }, - { - oyaji: "\u6F84", - itaiji: [ - "\u6F82" - ] - }, - { - oyaji: "\u6F97", - itaiji: [ - "\u3D4E", - "\u7900" - ] - }, - { - oyaji: "\u6FC1", - itaiji: [ - "\u6D4A" - ] - }, - { - oyaji: "\u6FE4", - itaiji: [ - "\u6D9B" - ] - }, - { - oyaji: "\u6FEC", - itaiji: [ - "\u{23F4A}" - ] - }, - { - oyaji: "\u6FFE", - itaiji: [ - "\u6CAA" - ] - }, - { - oyaji: "\u7006", - itaiji: [ - "\u6D9C" - ] - }, - { - oyaji: "\u7009", - itaiji: [ - "\u6CFB" - ] - }, - { - oyaji: "\u700F", - itaiji: [ - "\u56A0" - ] - }, - { - oyaji: "\u701E", - itaiji: [ - "\uFA9B" - ] - }, - { - oyaji: "\u7026", - itaiji: [ - "\u6F74" - ] - }, - { - oyaji: "\u702C", - itaiji: [ - "\u7028" - ] - }, - { - oyaji: "\u7030", - itaiji: [ - "\u3CFD" - ] - }, - { - oyaji: "\u704C", - itaiji: [ - "\u6F45" - ] - }, - { - oyaji: "\u7051", - itaiji: [ - "\u{240A2}" - ] - }, - { - oyaji: "\u705D", - itaiji: [ - "\u{24096}" - ] - }, - { - oyaji: "\u705E", - itaiji: [ - "\u3D9A" - ] - }, - { - oyaji: "\u7069", - itaiji: [ - "\u704E", - "\u7054" - ] - }, - { - oyaji: "\u706F", - itaiji: [ - "\u71C8" - ] - }, - { - oyaji: "\u707D", - itaiji: [ - "\u70D6", - "\u707E" - ] - }, - { - oyaji: "\u7089", - itaiji: [ - "\u7210" - ] - }, - { - oyaji: "\u70AF", - itaiji: [ - "\u70F1" - ] - }, - { - oyaji: "\u70B1", - itaiji: [ - "\u70B2" - ] - }, - { - oyaji: "\u70B9", - itaiji: [ - "\u9EDE" - ] - }, - { - oyaji: "\u70BA", - itaiji: [ - "\u7232" - ] - }, - { - oyaji: "\u70FD", - itaiji: [ - "\u3DED", - "\u71A2" - ] - }, - { - oyaji: "\u711A", - itaiji: [ - "\u71D3" - ] - }, - { - oyaji: "\u7130", - itaiji: [ - "\u7114", - "\u71C4", - "\u3DD4", - "\u7196" - ] - }, - { - oyaji: "\u713C", - itaiji: [ - "\u71D2" - ] - }, - { - oyaji: "\u716E", - itaiji: [ - "\uFA48" - ] - }, - { - oyaji: "\u718F", - itaiji: [ - "\u71FB" - ] - }, - { - oyaji: "\u7199", - itaiji: [ - "\u7155" - ] - }, - { - oyaji: "\u719F", - itaiji: [ - "\u{243BC}" - ] - }, - { - oyaji: "\u71B1", - itaiji: [ - "\u70ED" - ] - }, - { - oyaji: "\u71EE", - itaiji: [ - "\u7215" - ] - }, - { - oyaji: "\u71FC", - itaiji: [ - "\u70EC", - "\u3DB3" - ] - }, - { - oyaji: "\u721B", - itaiji: [ - "\u71D7", - "\u7224" - ] - }, - { - oyaji: "\u723A", - itaiji: [ - "\u{24553}" - ] - }, - { - oyaji: "\u723E", - itaiji: [ - "\u5C13", - "\u5C12" - ] - }, - { - oyaji: "\u7246", - itaiji: [ - "\u58BB" - ] - }, - { - oyaji: "\u7256", - itaiji: [ - "\u7257" - ] - }, - { - oyaji: "\u7259", - itaiji: [ - "\u2F5B" - ] - }, - { - oyaji: "\u7262", - itaiji: [ - "\u7A82" - ] - }, - { - oyaji: "\u7282", - itaiji: [ - "\u7281" - ] - }, - { - oyaji: "\u72A0", - itaiji: [ - "\u72A7" - ] - }, - { - oyaji: "\u72A2", - itaiji: [ - "\u3E3F" - ] - }, - { - oyaji: "\u72B6", - itaiji: [ - "\u72C0" - ] - }, - { - oyaji: "\u72C9", - itaiji: [ - "\u8C7E" - ] - }, - { - oyaji: "\u72D7", - itaiji: [ - "\u3E83" - ] - }, - { - oyaji: "\u72EC", - itaiji: [ - "\u7368" - ] - }, - { - oyaji: "\u72ED", - itaiji: [ - "\u72F9" - ] - }, - { - oyaji: "\u72F8", - itaiji: [ - "\u8C8D" - ] - }, - { - oyaji: "\u72FB", - itaiji: [ - "\u475C" - ] - }, - { - oyaji: "\u730A", - itaiji: [ - "\u8C8E" - ] - }, - { - oyaji: "\u7317", - itaiji: [ - "\u475D" - ] - }, - { - oyaji: "\u731F", - itaiji: [ - "\u7375" - ] - }, - { - oyaji: "\u732A", - itaiji: [ - "\uFA16" - ] - }, - { - oyaji: "\u732B", - itaiji: [ - "\u8C93" - ] - }, - { - oyaji: "\u732E", - itaiji: [ - "\u737B" - ] - }, - { - oyaji: "\u7334", - itaiji: [ - "\u3E85" - ] - }, - { - oyaji: "\u733F", - itaiji: [ - "\u7328" - ] - }, - { - oyaji: "\u7344", - itaiji: [ - "\u{2122D}" - ] - }, - { - oyaji: "\u734F", - itaiji: [ - "\u8C98" - ] - }, - { - oyaji: "\u7360", - itaiji: [ - "\u4764" - ] - }, - { - oyaji: "\u7363", - itaiji: [ - "\u7378" - ] - }, - { - oyaji: "\u736E", - itaiji: [ - "\u{248D0}" - ] - }, - { - oyaji: "\u737A", - itaiji: [ - "\u3E9A" - ] - }, - { - oyaji: "\u739E", - itaiji: [ - "\u7806" - ] - }, - { - oyaji: "\u73A8", - itaiji: [ - "\u73CF" - ] - }, - { - oyaji: "\u73C9", - itaiji: [ - "\u739F", - "\u7449", - "\u40C9" - ] - }, - { - oyaji: "\u73CD", - itaiji: [ - "\u73CE", - "\u73CE", - "\u{2493D}" - ] - }, - { - oyaji: "\u73ED", - itaiji: [ - "\u{2493B}" - ] - }, - { - oyaji: "\u7405", - itaiji: [ - "\u746F" - ] - }, - { - oyaji: "\u7422", - itaiji: [ - "\uFA4A" - ] - }, - { - oyaji: "\u7434", - itaiji: [ - "\u73E1", - "\u7439" - ] - }, - { - oyaji: "\u743A", - itaiji: [ - "\u73D0" - ] - }, - { - oyaji: "\u7441", - itaiji: [ - "\u8750" - ] - }, - { - oyaji: "\u7447", - itaiji: [ - "\u73B3" - ] - }, - { - oyaji: "\u7460", - itaiji: [ - "\u74A2" - ] - }, - { - oyaji: "\u7463", - itaiji: [ - "\u{24A0F}" - ] - }, - { - oyaji: "\u7470", - itaiji: [ - "\u74CC" - ] - }, - { - oyaji: "\u7476", - itaiji: [ - "\u7464" - ] - }, - { - oyaji: "\u7483", - itaiji: [ - "\u74C8" - ] - }, - { - oyaji: "\u7487", - itaiji: [ - "\u74BF" - ] - }, - { - oyaji: "\u74D4", - itaiji: [ - "\u73F1" - ] - }, - { - oyaji: "\u74DA", - itaiji: [ - "\u74C9" - ] - }, - { - oyaji: "\u74E6", - itaiji: [ - "\u{24B26}" - ] - }, - { - oyaji: "\u74F6", - itaiji: [ - "\u7501" - ] - }, - { - oyaji: "\u74F7", - itaiji: [ - "\u7506", - "\u{26231}" - ] - }, - { - oyaji: "\u74FA", - itaiji: [ - "\u{24B56}" - ] - }, - { - oyaji: "\u750C", - itaiji: [ - "\u74EF" - ] - }, - { - oyaji: "\u7511", - itaiji: [ - "\u4C1D" - ] - }, - { - oyaji: "\u7515", - itaiji: [ - "\u7F4B" - ] - }, - { - oyaji: "\u751C", - itaiji: [ - "\u751B" - ] - }, - { - oyaji: "\u7523", - itaiji: [ - "\u7522" - ] - }, - { - oyaji: "\u7526", - itaiji: [ - "\u{24BF3}" - ] - }, - { - oyaji: "\u753A", - itaiji: [ - "\u753C" - ] - }, - { - oyaji: "\u753B", - itaiji: [ - "\u756B" - ] - }, - { - oyaji: "\u7540", - itaiji: [ - "\u7541" - ] - }, - { - oyaji: "\u754C", - itaiji: [ - "\u583A", - "\u754D", - "\u{28EAC}" - ] - }, - { - oyaji: "\u754E", - itaiji: [ - "\u753D", - "\u{24C1D}" - ] - }, - { - oyaji: "\u7559", - itaiji: [ - "\u7571", - "\u7544" - ] - }, - { - oyaji: "\u755A", - itaiji: [ - "\u{20AFB}" - ] - }, - { - oyaji: "\u755D", - itaiji: [ - "\u3F57", - "\u{24C16}", - "\u7546", - "\u7552", - "\u755E", - "\u756E" - ] - }, - { - oyaji: "\u7565", - itaiji: [ - "\u7567" - ] - }, - { - oyaji: "\u756C", - itaiji: [ - "\u756D", - "\u7572" - ] - }, - { - oyaji: "\u7570", - itaiji: [ - "\u{2F938}" - ] - }, - { - oyaji: "\u7573", - itaiji: [ - "\u758A" - ] - }, - { - oyaji: "\u7586", - itaiji: [ - "\u757A", - "\u58C3", - "\u7585" - ] - }, - { - oyaji: "\u7587", - itaiji: [ - "\u7574" - ] - }, - { - oyaji: "\u758E", - itaiji: [ - "\u8E08" - ] - }, - { - oyaji: "\u758F", - itaiji: [ - "\u47FD" - ] - }, - { - oyaji: "\u7590", - itaiji: [ - "\u{24D21}" - ] - }, - { - oyaji: "\u75B9", - itaiji: [ - "\u{24E8B}" - ] - }, - { - oyaji: "\u75C0", - itaiji: [ - "\u{24E6A}" - ] - }, - { - oyaji: "\u75E9", - itaiji: [ - "\u7626" - ] - }, - { - oyaji: "\u75F4", - itaiji: [ - "\u7661" - ] - }, - { - oyaji: "\u75FE", - itaiji: [ - "\u75B4" - ] - }, - { - oyaji: "\u7601", - itaiji: [ - "\u75A9" - ] - }, - { - oyaji: "\u761E", - itaiji: [ - "\u{28ECA}" - ] - }, - { - oyaji: "\u7624", - itaiji: [ - "\u7645" - ] - }, - { - oyaji: "\u763B", - itaiji: [ - "\u7618" - ] - }, - { - oyaji: "\u7670", - itaiji: [ - "\u81C3", - "\u7655" - ] - }, - { - oyaji: "\u767A", - itaiji: [ - "\u767C" - ] - }, - { - oyaji: "\u7681", - itaiji: [ - "\u688D", - "\u7682" - ] - }, - { - oyaji: "\u768E", - itaiji: [ - "\u6648" - ] - }, - { - oyaji: "\u7690", - itaiji: [ - "\u768B", - "\u81EF" - ] - }, - { - oyaji: "\u7696", - itaiji: [ - "\u6665" - ] - }, - { - oyaji: "\u769A", - itaiji: [ - "\u6EB0" - ] - }, - { - oyaji: "\u769E", - itaiji: [ - "\u76A1", - "\u76A5", - "\u66A4", - "\u66AD" - ] - }, - { - oyaji: "\u76B0", - itaiji: [ - "\u9764" - ] - }, - { - oyaji: "\u76B8", - itaiji: [ - "\u76B9" - ] - }, - { - oyaji: "\u76C2", - itaiji: [ - "\u{2F93D}", - "\u{25044}" - ] - }, - { - oyaji: "\u76CA", - itaiji: [ - "\uFA17" - ] - }, - { - oyaji: "\u76CD", - itaiji: [ - "\u76C7" - ] - }, - { - oyaji: "\u76CE", - itaiji: [ - "\u3F1C" - ] - }, - { - oyaji: "\u76D7", - itaiji: [ - "\u76DC" - ] - }, - { - oyaji: "\u76DE", - itaiji: [ - "\u9186" - ] - }, - { - oyaji: "\u76F1", - itaiji: [ - "\u{2F941}", - "\u{2515A}" - ] - }, - { - oyaji: "\u76F8", - itaiji: [ - "\u{25122}" - ] - }, - { - oyaji: "\u770C", - itaiji: [ - "\u7E23" - ] - }, - { - oyaji: "\u771F", - itaiji: [ - "\u771E" - ] - }, - { - oyaji: "\u7725", - itaiji: [ - "\u7726" - ] - }, - { - oyaji: "\u773C", - itaiji: [ - "\u{251A2}" - ] - }, - { - oyaji: "\u7765", - itaiji: [ - "\u7764" - ] - }, - { - oyaji: "\u7768", - itaiji: [ - "\u{251A9}" - ] - }, - { - oyaji: "\u7779", - itaiji: [ - "\u89A9" - ] - }, - { - oyaji: "\u778D", - itaiji: [ - "\u{2521F}" - ] - }, - { - oyaji: "\u778F", - itaiji: [ - "\u7758" - ] - }, - { - oyaji: "\u779E", - itaiji: [ - "\u{2521E}" - ] - }, - { - oyaji: "\u77A0", - itaiji: [ - "\u77AA" - ] - }, - { - oyaji: "\u77AF", - itaiji: [ - "\u{252BA}" - ] - }, - { - oyaji: "\u77B0", - itaiji: [ - "\u77D9" - ] - }, - { - oyaji: "\u77BC", - itaiji: [ - "\u{251E5}" - ] - }, - { - oyaji: "\u77DA", - itaiji: [ - "\u77A9" - ] - }, - { - oyaji: "\u77DB", - itaiji: [ - "\u{229A7}", - "\u{28968}" - ] - }, - { - oyaji: "\u77E2", - itaiji: [ - "\u7B36" - ] - }, - { - oyaji: "\u77E7", - itaiji: [ - "\u77E4" - ] - }, - { - oyaji: "\u77F0", - itaiji: [ - "\u{22392}" - ] - }, - { - oyaji: "\u7812", - itaiji: [ - "\u78C7" - ] - }, - { - oyaji: "\u7814", - itaiji: [ - "\u784F" - ] - }, - { - oyaji: "\u7815", - itaiji: [ - "\u788E" - ] - }, - { - oyaji: "\u7827", - itaiji: [ - "\u78AA" - ] - }, - { - oyaji: "\u7830", - itaiji: [ - "\u7851" - ] - }, - { - oyaji: "\u786E", - itaiji: [ - "\u57C6" - ] - }, - { - oyaji: "\u7887", - itaiji: [ - "\u77F4" - ] - }, - { - oyaji: "\u788A", - itaiji: [ - "\u{2548E}" - ] - }, - { - oyaji: "\u7891", - itaiji: [ - "\uFA4B" - ] - }, - { - oyaji: "\u7895", - itaiji: [ - "\u{2550E}" - ] - }, - { - oyaji: "\u7897", - itaiji: [ - "\u76CC" - ] - }, - { - oyaji: "\u78A9", - itaiji: [ - "\u78B5" - ] - }, - { - oyaji: "\u78AF", - itaiji: [ - "\u7459" - ] - }, - { - oyaji: "\u78BA", - itaiji: [ - "\u78BB" - ] - }, - { - oyaji: "\u78BE", - itaiji: [ - "\u{2544A}" - ] - }, - { - oyaji: "\u78C1", - itaiji: [ - "\u{25535}" - ] - }, - { - oyaji: "\u78FD", - itaiji: [ - "\u589D" - ] - }, - { - oyaji: "\u7926", - itaiji: [ - "\u783F" - ] - }, - { - oyaji: "\u792A", - itaiji: [ - "\u783A" - ] - }, - { - oyaji: "\u793C", - itaiji: [ - "\u79AE" - ] - }, - { - oyaji: "\u793E", - itaiji: [ - "\uFA4C" - ] - }, - { - oyaji: "\u7940", - itaiji: [ - "\u79A9" - ] - }, - { - oyaji: "\u7948", - itaiji: [ - "\uFA4E" - ] - }, - { - oyaji: "\u7949", - itaiji: [ - "\uFA4D" - ] - }, - { - oyaji: "\u7950", - itaiji: [ - "\uFA4F" - ] - }, - { - oyaji: "\u7953", - itaiji: [ - "\u{2562C}" - ] - }, - { - oyaji: "\u7956", - itaiji: [ - "\uFA50" - ] - }, - { - oyaji: "\u795D", - itaiji: [ - "\uFA51" - ] - }, - { - oyaji: "\u795E", - itaiji: [ - "\uFA19" - ] - }, - { - oyaji: "\u7965", - itaiji: [ - "\uFA1A" - ] - }, - { - oyaji: "\u7968", - itaiji: [ - "\u{2442B}" - ] - }, - { - oyaji: "\u7984", - itaiji: [ - "\u797F" - ] - }, - { - oyaji: "\u7985", - itaiji: [ - "\u79AA" - ] - }, - { - oyaji: "\u798D", - itaiji: [ - "\uFA52" - ] - }, - { - oyaji: "\u798E", - itaiji: [ - "\uFA53" - ] - }, - { - oyaji: "\u798F", - itaiji: [ - "\uFA1B" - ] - }, - { - oyaji: "\u79B0", - itaiji: [ - "\u7962" - ] - }, - { - oyaji: "\u79B1", - itaiji: [ - "\u7977" - ] - }, - { - oyaji: "\u79CB", - itaiji: [ - "\u79CC", - "\u7A50", - "\u9F9D", - "\u{2A6C1}" - ] - }, - { - oyaji: "\u79D2", - itaiji: [ - "\u417A" - ] - }, - { - oyaji: "\u79D5", - itaiji: [ - "\u7C83" - ] - }, - { - oyaji: "\u79D8", - itaiji: [ - "\u7955" - ] - }, - { - oyaji: "\u79E3", - itaiji: [ - "\u4B34" - ] - }, - { - oyaji: "\u79ED", - itaiji: [ - "\u{25771}" - ] - }, - { - oyaji: "\u79F0", - itaiji: [ - "\u7A31" - ] - }, - { - oyaji: "\u7A08", - itaiji: [ - "\u79C6" - ] - }, - { - oyaji: "\u7A0E", - itaiji: [ - "\u7A05" - ] - }, - { - oyaji: "\u7A1A", - itaiji: [ - "\u7A3A", - "\u7A49" - ] - }, - { - oyaji: "\u7A1F", - itaiji: [ - "\u7980" - ] - }, - { - oyaji: "\u7A32", - itaiji: [ - "\u7A3B" - ] - }, - { - oyaji: "\u7A37", - itaiji: [ - "\u799D" - ] - }, - { - oyaji: "\u7A3D", - itaiji: [ - "\u{25874}" - ] - }, - { - oyaji: "\u7A3F", - itaiji: [ - "\u85C1", - "\u7A3E", - "\u85F3" - ] - }, - { - oyaji: "\u7A40", - itaiji: [ - "\uFA54" - ] - }, - { - oyaji: "\u7A42", - itaiji: [ - "\u7A57" - ] - }, - { - oyaji: "\u7A4E", - itaiji: [ - "\u9834" - ] - }, - { - oyaji: "\u7A4F", - itaiji: [ - "\u7A69" - ] - }, - { - oyaji: "\u7A63", - itaiji: [ - "\u7A70" - ] - }, - { - oyaji: "\u7A7D", - itaiji: [ - "\u9631" - ] - }, - { - oyaji: "\u7A81", - itaiji: [ - "\uFA55" - ] - }, - { - oyaji: "\u7A83", - itaiji: [ - "\u7ACA" - ] - }, - { - oyaji: "\u7A93", - itaiji: [ - "\u7A97", - "\u7ABB", - "\u41AB", - "\u7255" - ] - }, - { - oyaji: "\u7AAA", - itaiji: [ - "\u6F25" - ] - }, - { - oyaji: "\u7AAE", - itaiji: [ - "\u7AC6" - ] - }, - { - oyaji: "\u7AAF", - itaiji: [ - "\u7AB0", - "\u7A91" - ] - }, - { - oyaji: "\u7ABA", - itaiji: [ - "\u95DA" - ] - }, - { - oyaji: "\u7ABF", - itaiji: [ - "\u376B" - ] - }, - { - oyaji: "\u7AC8", - itaiji: [ - "\u7AC3", - "\u{259C4}", - "\u41B4", - "\u7076" - ] - }, - { - oyaji: "\u7ADC", - itaiji: [ - "\u9F8D" - ] - }, - { - oyaji: "\u7AEA", - itaiji: [ - "\u8C4E" - ] - }, - { - oyaji: "\u7AEF", - itaiji: [ - "\u8011" - ] - }, - { - oyaji: "\u7AF6", - itaiji: [ - "\u7AF8" - ] - }, - { - oyaji: "\u7AFD", - itaiji: [ - "\u{25AE1}" - ] - }, - { - oyaji: "\u7B31", - itaiji: [ - "\u{26292}" - ] - }, - { - oyaji: "\u7B46", - itaiji: [ - "\u7B14" - ] - }, - { - oyaji: "\u7B47", - itaiji: [ - "\u7B3B" - ] - }, - { - oyaji: "\u7B4B", - itaiji: [ - "\u8355", - "\u89D4" - ] - }, - { - oyaji: "\u7B4D", - itaiji: [ - "\u7B0B" - ] - }, - { - oyaji: "\u7B4F", - itaiji: [ - "\u6830" - ] - }, - { - oyaji: "\u7B50", - itaiji: [ - "\u7B7A" - ] - }, - { - oyaji: "\u7B52", - itaiji: [ - "\u7B69" - ] - }, - { - oyaji: "\u7B53", - itaiji: [ - "\u7B04" - ] - }, - { - oyaji: "\u7B56", - itaiji: [ - "\u8417" - ] - }, - { - oyaji: "\u7B8B", - itaiji: [ - "\u724B", - "\u3B8D", - "\u41F3" - ] - }, - { - oyaji: "\u7B8F", - itaiji: [ - "\u7B5D" - ] - }, - { - oyaji: "\u7B97", - itaiji: [ - "\u7958" - ] - }, - { - oyaji: "\u7B98", - itaiji: [ - "\u7B9F" - ] - }, - { - oyaji: "\u7B9A", - itaiji: [ - "\u5284" - ] - }, - { - oyaji: "\u7BC0", - itaiji: [ - "\uFA56" - ] - }, - { - oyaji: "\u7BD9", - itaiji: [ - "\u3C0F" - ] - }, - { - oyaji: "\u7BDD", - itaiji: [ - "\u{25D61}" - ] - }, - { - oyaji: "\u7BE0", - itaiji: [ - "\u7B71", - "\u7B7F" - ] - }, - { - oyaji: "\u7BE1", - itaiji: [ - "\u7C12" - ] - }, - { - oyaji: "\u7BE4", - itaiji: [ - "\u450D" - ] - }, - { - oyaji: "\u7BE6", - itaiji: [ - "\u7B86" - ] - }, - { - oyaji: "\u7BE9", - itaiji: [ - "\u7C6D" - ] - }, - { - oyaji: "\u7BEA", - itaiji: [ - "\u7B8E", - "\u4DB5" - ] - }, - { - oyaji: "\u7C0B", - itaiji: [ - "\u{23A98}" - ] - }, - { - oyaji: "\u7C0F", - itaiji: [ - "\u7B93" - ] - }, - { - oyaji: "\u7C1E", - itaiji: [ - "\u7BAA" - ] - }, - { - oyaji: "\u7C20", - itaiji: [ - "\u376C" - ] - }, - { - oyaji: "\u7C21", - itaiji: [ - "\u{25CD1}" - ] - }, - { - oyaji: "\u7C45", - itaiji: [ - "\u{25AE3}" - ] - }, - { - oyaji: "\u7C4C", - itaiji: [ - "\u7B79" - ] - }, - { - oyaji: "\u7C52", - itaiji: [ - "\u7C40" - ] - }, - { - oyaji: "\u7C54", - itaiji: [ - "\u4264" - ] - }, - { - oyaji: "\u7C60", - itaiji: [ - "\u7BED" - ] - }, - { - oyaji: "\u7C64", - itaiji: [ - "\u7C56" - ] - }, - { - oyaji: "\u7C70", - itaiji: [ - "\u7BD7" - ] - }, - { - oyaji: "\u7C8B", - itaiji: [ - "\u7CB9" - ] - }, - { - oyaji: "\u7C98", - itaiji: [ - "\u9ECF" - ] - }, - { - oyaji: "\u7C9B", - itaiji: [ - "\u8085" - ] - }, - { - oyaji: "\u7CB3", - itaiji: [ - "\u7A09", - "\u79D4" - ] - }, - { - oyaji: "\u7CBD", - itaiji: [ - "\u7CC9" - ] - }, - { - oyaji: "\u7CBE", - itaiji: [ - "\uFA1D" - ] - }, - { - oyaji: "\u7CC2", - itaiji: [ - "\u7CDD" - ] - }, - { - oyaji: "\u7CCD", - itaiji: [ - "\u{29750}" - ] - }, - { - oyaji: "\u7CD5", - itaiji: [ - "\u993B" - ] - }, - { - oyaji: "\u7CD6", - itaiji: [ - "\uFA03" - ] - }, - { - oyaji: "\u7CE0", - itaiji: [ - "\u7A45" - ] - }, - { - oyaji: "\u7CE7", - itaiji: [ - "\u7CAE" - ] - }, - { - oyaji: "\u7CEF", - itaiji: [ - "\u7A2C", - "\u7A64" - ] - }, - { - oyaji: "\u7CF1", - itaiji: [ - "\u7CF5" - ] - }, - { - oyaji: "\u7CF2", - itaiji: [ - "\u42AA" - ] - }, - { - oyaji: "\u7CF4", - itaiji: [ - "\u7C74" - ] - }, - { - oyaji: "\u7CF6", - itaiji: [ - "\u7C9C" - ] - }, - { - oyaji: "\u7CF8", - itaiji: [ - "\u7D72" - ] - }, - { - oyaji: "\u7D18", - itaiji: [ - "\u7D8B" - ] - }, - { - oyaji: "\u7D19", - itaiji: [ - "\u5E0B" - ] - }, - { - oyaji: "\u7D1D", - itaiji: [ - "\u7D4D" - ] - }, - { - oyaji: "\u7D2E", - itaiji: [ - "\u7D25" - ] - }, - { - oyaji: "\u7D2F", - itaiji: [ - "\u7E8D", - "\u7D6B" - ] - }, - { - oyaji: "\u7D32", - itaiji: [ - "\u7D4F", - "\u7DE4" - ] - }, - { - oyaji: "\u7D4C", - itaiji: [ - "\u7D93" - ] - }, - { - oyaji: "\u7D5B", - itaiji: [ - "\u7E27" - ] - }, - { - oyaji: "\u7D63", - itaiji: [ - "\u{2F96C}" - ] - }, - { - oyaji: "\u7D75", - itaiji: [ - "\u7E6A" - ] - }, - { - oyaji: "\u7D76", - itaiji: [ - "\u7D55" - ] - }, - { - oyaji: "\u7D99", - itaiji: [ - "\u7E7C" - ] - }, - { - oyaji: "\u7D9A", - itaiji: [ - "\u7E8C" - ] - }, - { - oyaji: "\u7DB7", - itaiji: [ - "\u7D23" - ] - }, - { - oyaji: "\u7DBF", - itaiji: [ - "\u7DDC" - ] - }, - { - oyaji: "\u7DC7", - itaiji: [ - "\u{2F96E}" - ] - }, - { - oyaji: "\u7DCF", - itaiji: [ - "\u7E3D" - ] - }, - { - oyaji: "\u7DD1", - itaiji: [ - "\u7DA0" - ] - }, - { - oyaji: "\u7DD2", - itaiji: [ - "\u7DD6" - ] - }, - { - oyaji: "\u7DDA", - itaiji: [ - "\u7DAB" - ] - }, - { - oyaji: "\u7DE1", - itaiji: [ - "\u7DCD" - ] - }, - { - oyaji: "\u7DEA", - itaiji: [ - "\u7D5A" - ] - }, - { - oyaji: "\u7DF4", - itaiji: [ - "\uFA57" - ] - }, - { - oyaji: "\u7E01", - itaiji: [ - "\u7DE3" - ] - }, - { - oyaji: "\u7E04", - itaiji: [ - "\u7E69" - ] - }, - { - oyaji: "\u7E09", - itaiji: [ - "\uFA58" - ] - }, - { - oyaji: "\u7E15", - itaiji: [ - "\u7DFC" - ] - }, - { - oyaji: "\u7E26", - itaiji: [ - "\u7E31" - ] - }, - { - oyaji: "\u7E36", - itaiji: [ - "\u99BD" - ] - }, - { - oyaji: "\u7E41", - itaiji: [ - "\uFA59" - ] - }, - { - oyaji: "\u7E48", - itaiji: [ - "\u7E66" - ] - }, - { - oyaji: "\u7E4A", - itaiji: [ - "\u7E96" - ] - }, - { - oyaji: "\u7E54", - itaiji: [ - "\u{26017}" - ] - }, - { - oyaji: "\u7E61", - itaiji: [ - "\u7E4D", - "\u7D89" - ] - }, - { - oyaji: "\u7E6B", - itaiji: [ - "\u7E4B" - ] - }, - { - oyaji: "\u7E83", - itaiji: [ - "\u7DD5" - ] - }, - { - oyaji: "\u7E8A", - itaiji: [ - "\u7D4B", - "\u7D56" - ] - }, - { - oyaji: "\u7E8F", - itaiji: [ - "\u7E92" - ] - }, - { - oyaji: "\u7E91", - itaiji: [ - "\u42C6" - ] - }, - { - oyaji: "\u7E93", - itaiji: [ - "\u42DD" - ] - }, - { - oyaji: "\u7E98", - itaiji: [ - "\u7E89" - ] - }, - { - oyaji: "\u7E9B", - itaiji: [ - "\u{220F6}" - ] - }, - { - oyaji: "\u7E9C", - itaiji: [ - "\u432B" - ] - }, - { - oyaji: "\u7F36", - itaiji: [ - "\u7F50" - ] - }, - { - oyaji: "\u7F4C", - itaiji: [ - "\u7516" - ] - }, - { - oyaji: "\u7F61", - itaiji: [ - "\u{26286}" - ] - }, - { - oyaji: "\u7F69", - itaiji: [ - "\u4207" - ] - }, - { - oyaji: "\u7F6A", - itaiji: [ - "\u8FA0" - ] - }, - { - oyaji: "\u7F70", - itaiji: [ - "\u7F78" - ] - }, - { - oyaji: "\u7F72", - itaiji: [ - "\uFA5A" - ] - }, - { - oyaji: "\u7F87", - itaiji: [ - "\u8989" - ] - }, - { - oyaji: "\u7F88", - itaiji: [ - "\u898A" - ] - }, - { - oyaji: "\u7F8A", - itaiji: [ - "\u{2634C}" - ] - }, - { - oyaji: "\u7F8C", - itaiji: [ - "\u7F97" - ] - }, - { - oyaji: "\u7F91", - itaiji: [ - "\u7F90" - ] - }, - { - oyaji: "\u7F95", - itaiji: [ - "\u{23D0E}" - ] - }, - { - oyaji: "\u7FA4", - itaiji: [ - "\u7FA3" - ] - }, - { - oyaji: "\u7FB9", - itaiji: [ - "\u7FAE" - ] - }, - { - oyaji: "\u7FBD", - itaiji: [ - "\uFA1E" - ] - }, - { - oyaji: "\u7FEC", - itaiji: [ - "\u{26469}" - ] - }, - { - oyaji: "\u7FFA", - itaiji: [ - "\u7FF1" - ] - }, - { - oyaji: "\u8005", - itaiji: [ - "\uFA5B" - ] - }, - { - oyaji: "\u8007", - itaiji: [ - "\u8008" - ] - }, - { - oyaji: "\u800B", - itaiji: [ - "\u800A" - ] - }, - { - oyaji: "\u8019", - itaiji: [ - "\u43B1" - ] - }, - { - oyaji: "\u801C", - itaiji: [ - "\u3B52" - ] - }, - { - oyaji: "\u8028", - itaiji: [ - "\u69C8" - ] - }, - { - oyaji: "\u803C", - itaiji: [ - "\u8043" - ] - }, - { - oyaji: "\u803D", - itaiji: [ - "\u8EAD" - ] - }, - { - oyaji: "\u8052", - itaiji: [ - "\u{2657E}" - ] - }, - { - oyaji: "\u805E", - itaiji: [ - "\u{25E62}" - ] - }, - { - oyaji: "\u8061", - itaiji: [ - "\u8070" - ] - }, - { - oyaji: "\u806F", - itaiji: [ - "\u8068" - ] - }, - { - oyaji: "\u8074", - itaiji: [ - "\u807D" - ] - }, - { - oyaji: "\u8077", - itaiji: [ - "\u8EC4" - ] - }, - { - oyaji: "\u8089", - itaiji: [ - "\u5B8D" - ] - }, - { - oyaji: "\u80AF", - itaiji: [ - "\u808E", - "\u{2335F}" - ] - }, - { - oyaji: "\u80B1", - itaiji: [ - "\u53B7" - ] - }, - { - oyaji: "\u80B2", - itaiji: [ - "\u6BD3" - ] - }, - { - oyaji: "\u80B4", - itaiji: [ - "\u991A" - ] - }, - { - oyaji: "\u80C4", - itaiji: [ - "\u4F37" - ] - }, - { - oyaji: "\u80C6", - itaiji: [ - "\u81BD" - ] - }, - { - oyaji: "\u80DA", - itaiji: [ - "\u80A7" - ] - }, - { - oyaji: "\u80ED", - itaiji: [ - "\u81D9" - ] - }, - { - oyaji: "\u80F8", - itaiji: [ - "\u80F7" - ] - }, - { - oyaji: "\u8106", - itaiji: [ - "\u8103" - ] - }, - { - oyaji: "\u8107", - itaiji: [ - "\u{266B0}", - "\u43EE" - ] - }, - { - oyaji: "\u811A", - itaiji: [ - "\u8173" - ] - }, - { - oyaji: "\u811B", - itaiji: [ - "\u{2667E}" - ] - }, - { - oyaji: "\u8131", - itaiji: [ - "\u812B" - ] - }, - { - oyaji: "\u8133", - itaiji: [ - "\u8166" - ] - }, - { - oyaji: "\u8141", - itaiji: [ - "\u80FC" - ] - }, - { - oyaji: "\u8155", - itaiji: [ - "\u{22BF2}" - ] - }, - { - oyaji: "\u8165", - itaiji: [ - "\u80DC" - ] - }, - { - oyaji: "\u8178", - itaiji: [ - "\u8193" - ] - }, - { - oyaji: "\u8180", - itaiji: [ - "\u9AC8" - ] - }, - { - oyaji: "\u819A", - itaiji: [ - "\u80A4" - ] - }, - { - oyaji: "\u819D", - itaiji: [ - "\u5380" - ] - }, - { - oyaji: "\u81A9", - itaiji: [ - "\u{27E10}", - "\u{26878}" - ] - }, - { - oyaji: "\u81B3", - itaiji: [ - "\u994D" - ] - }, - { - oyaji: "\u81BE", - itaiji: [ - "\u810D", - "\u9C60" - ] - }, - { - oyaji: "\u81C6", - itaiji: [ - "\u808A" - ] - }, - { - oyaji: "\u81CD", - itaiji: [ - "\u{2671D}" - ] - }, - { - oyaji: "\u81CF", - itaiji: [ - "\u9AD5" - ] - }, - { - oyaji: "\u81D3", - itaiji: [ - "\u81DF" - ] - }, - { - oyaji: "\u81D8", - itaiji: [ - "\uFA1F", - "\u81C8" - ] - }, - { - oyaji: "\u81E5", - itaiji: [ - "\u5367" - ] - }, - { - oyaji: "\u81ED", - itaiji: [ - "\uFA5C" - ] - }, - { - oyaji: "\u81F4", - itaiji: [ - "\u{26936}" - ] - }, - { - oyaji: "\u81FE", - itaiji: [ - "\u3B30" - ] - }, - { - oyaji: "\u81FF", - itaiji: [ - "\u{2695B}" - ] - }, - { - oyaji: "\u8202", - itaiji: [ - "\u3AEA", - "\u{231C3}" - ] - }, - { - oyaji: "\u8203", - itaiji: [ - "\u8204", - "\u{29346}" - ] - }, - { - oyaji: "\u820E", - itaiji: [ - "\u820D" - ] - }, - { - oyaji: "\u8210", - itaiji: [ - "\u445B", - "\u8213" - ] - }, - { - oyaji: "\u8217", - itaiji: [ - "\u8216" - ] - }, - { - oyaji: "\u8235", - itaiji: [ - "\u4468" - ] - }, - { - oyaji: "\u8239", - itaiji: [ - "\u8229" - ] - }, - { - oyaji: "\u826A", - itaiji: [ - "\u8263" - ] - }, - { - oyaji: "\u826B", - itaiji: [ - "\u822E" - ] - }, - { - oyaji: "\u826E", - itaiji: [ - "\u{250E9}" - ] - }, - { - oyaji: "\u8271", - itaiji: [ - "\u56CF" - ] - }, - { - oyaji: "\u8276", - itaiji: [ - "\u8277" - ] - }, - { - oyaji: "\u827E", - itaiji: [ - "\u{26AFF}" - ] - }, - { - oyaji: "\u8292", - itaiji: [ - "\u{25755}" - ] - }, - { - oyaji: "\u82A6", - itaiji: [ - "\u8606" - ] - }, - { - oyaji: "\u82B8", - itaiji: [ - "\u85DD" - ] - }, - { - oyaji: "\u82BB", - itaiji: [ - "\u84AD" - ] - }, - { - oyaji: "\u82BD", - itaiji: [ - "\u{2F995}" - ] - }, - { - oyaji: "\u82D4", - itaiji: [ - "\u83ED" - ] - }, - { - oyaji: "\u82E1", - itaiji: [ - "\u82E2" - ] - }, - { - oyaji: "\u82F1", - itaiji: [ - "\u5040" - ] - }, - { - oyaji: "\u82FA", - itaiji: [ - "\u8393" - ] - }, - { - oyaji: "\u830E", - itaiji: [ - "\u8396" - ] - }, - { - oyaji: "\u8318", - itaiji: [ - "\u8354" - ] - }, - { - oyaji: "\u831D", - itaiji: [ - "\u{2F999}" - ] - }, - { - oyaji: "\u8347", - itaiji: [ - "\u8395" - ] - }, - { - oyaji: "\u834A", - itaiji: [ - "\u8346" - ] - }, - { - oyaji: "\u8358", - itaiji: [ - "\u838A" - ] - }, - { - oyaji: "\u837B", - itaiji: [ - "\u85E1" - ] - }, - { - oyaji: "\u8385", - itaiji: [ - "\u849E" - ] - }, - { - oyaji: "\u83CA", - itaiji: [ - "\u861C" - ] - }, - { - oyaji: "\u83D1", - itaiji: [ - "\u8458" - ] - }, - { - oyaji: "\u83EB", - itaiji: [ - "\u84F3" - ] - }, - { - oyaji: "\u83EF", - itaiji: [ - "\uFAB4" - ] - }, - { - oyaji: "\u83F0", - itaiji: [ - "\u82FD" - ] - }, - { - oyaji: "\u83F4", - itaiji: [ - "\u844A" - ] - }, - { - oyaji: "\u83F9", - itaiji: [ - "\u8445" - ] - }, - { - oyaji: "\u840A", - itaiji: [ - "\u83B1" - ] - }, - { - oyaji: "\u840D", - itaiji: [ - "\u84F1" - ] - }, - { - oyaji: "\u8431", - itaiji: [ - "\u8610", - "\u857F", - "\u85FC" - ] - }, - { - oyaji: "\u8438", - itaiji: [ - "\u8330" - ] - }, - { - oyaji: "\u843C", - itaiji: [ - "\u855A" - ] - }, - { - oyaji: "\u8457", - itaiji: [ - "\uFA5F" - ] - }, - { - oyaji: "\u846C", - itaiji: [ - "\u585F" - ] - }, - { - oyaji: "\u8471", - itaiji: [ - "\u8525" - ] - }, - { - oyaji: "\u84C4", - itaiji: [ - "\u7A38" - ] - }, - { - oyaji: "\u84CB", - itaiji: [ - "\u8462", - "\u76D6" - ] - }, - { - oyaji: "\u84D1", - itaiji: [ - "\u7C11", - "\u7C14" - ] - }, - { - oyaji: "\u84E8", - itaiji: [ - "\u84DA" - ] - }, - { - oyaji: "\u84EE", - itaiji: [ - "\uF999" - ] - }, - { - oyaji: "\u8515", - itaiji: [ - "\u8482" - ] - }, - { - oyaji: "\u8518", - itaiji: [ - "\u8593" - ] - }, - { - oyaji: "\u8523", - itaiji: [ - "\u848B" - ] - }, - { - oyaji: "\u852D", - itaiji: [ - "\u{26E65}", - "\u4543", - "\u{28F32}" - ] - }, - { - oyaji: "\u8535", - itaiji: [ - "\u85CF" - ] - }, - { - oyaji: "\u854A", - itaiji: [ - "\u854B", - "\u8602" - ] - }, - { - oyaji: "\u8569", - itaiji: [ - "\u862F" - ] - }, - { - oyaji: "\u856D", - itaiji: [ - "\u4525" - ] - }, - { - oyaji: "\u859B", - itaiji: [ - "\u{270CE}" - ] - }, - { - oyaji: "\u85A9", - itaiji: [ - "\u856F" - ] - }, - { - oyaji: "\u85AB", - itaiji: [ - "\u85B0" - ] - }, - { - oyaji: "\u85AC", - itaiji: [ - "\u85E5" - ] - }, - { - oyaji: "\u85BA", - itaiji: [ - "\u8415" - ] - }, - { - oyaji: "\u85D0", - itaiji: [ - "\u{27080}" - ] - }, - { - oyaji: "\u85EA", - itaiji: [ - "\u85AE" - ] - }, - { - oyaji: "\u8607", - itaiji: [ - "\u8613", - "\u7A4C" - ] - }, - { - oyaji: "\u860B", - itaiji: [ - "\u85B2" - ] - }, - { - oyaji: "\u862D", - itaiji: [ - "\uF91F" - ] - }, - { - oyaji: "\u864E", - itaiji: [ - "\u4E55" - ] - }, - { - oyaji: "\u865A", - itaiji: [ - "\u865B" - ] - }, - { - oyaji: "\u865C", - itaiji: [ - "\uF936" - ] - }, - { - oyaji: "\u866B", - itaiji: [ - "\u87F2" - ] - }, - { - oyaji: "\u866F", - itaiji: [ - "\u866C" - ] - }, - { - oyaji: "\u867B", - itaiji: [ - "\u8771" - ] - }, - { - oyaji: "\u868A", - itaiji: [ - "\u8689", - "\u87C1" - ] - }, - { - oyaji: "\u868B", - itaiji: [ - "\u8739" - ] - }, - { - oyaji: "\u868C", - itaiji: [ - "\u872F" - ] - }, - { - oyaji: "\u8693", - itaiji: [ - "\u87BE" - ] - }, - { - oyaji: "\u8695", - itaiji: [ - "\u8836" - ] - }, - { - oyaji: "\u86A3", - itaiji: [ - "\u8719" - ] - }, - { - oyaji: "\u86C7", - itaiji: [ - "\u8675", - "\u{2726E}" - ] - }, - { - oyaji: "\u86CD", - itaiji: [ - "\u87A2" - ] - }, - { - oyaji: "\u86D4", - itaiji: [ - "\u8698", - "\u86D5" - ] - }, - { - oyaji: "\u86D7", - itaiji: [ - "\u{27449}" - ] - }, - { - oyaji: "\u86D9", - itaiji: [ - "\u4D77", - "\u9F03" - ] - }, - { - oyaji: "\u86EE", - itaiji: [ - "\u883B" - ] - }, - { - oyaji: "\u86FE", - itaiji: [ - "\u45B8" - ] - }, - { - oyaji: "\u8702", - itaiji: [ - "\u882D" - ] - }, - { - oyaji: "\u8703", - itaiji: [ - "\u8704" - ] - }, - { - oyaji: "\u8708", - itaiji: [ - "\u{272CB}" - ] - }, - { - oyaji: "\u870B", - itaiji: [ - "\u8782" - ] - }, - { - oyaji: "\u872E", - itaiji: [ - "\u{27312}" - ] - }, - { - oyaji: "\u873F", - itaiji: [ - "\u45A4" - ] - }, - { - oyaji: "\u875F", - itaiji: [ - "\u732C" - ] - }, - { - oyaji: "\u8765", - itaiji: [ - "\u87CA" - ] - }, - { - oyaji: "\u8768", - itaiji: [ - "\u8671" - ] - }, - { - oyaji: "\u87AD", - itaiji: [ - "\u5F72" - ] - }, - { - oyaji: "\u87BB", - itaiji: [ - "\u877C" - ] - }, - { - oyaji: "\u87C7", - itaiji: [ - "\u87C6" - ] - }, - { - oyaji: "\u87EC", - itaiji: [ - "\u8749" - ] - }, - { - oyaji: "\u87F9", - itaiji: [ - "\u880F" - ] - }, - { - oyaji: "\u87FB", - itaiji: [ - "\u8798" - ] - }, - { - oyaji: "\u8805", - itaiji: [ - "\u877F" - ] - }, - { - oyaji: "\u8815", - itaiji: [ - "\u8761" - ] - }, - { - oyaji: "\u881F", - itaiji: [ - "\u874B", - "\u45F6" - ] - }, - { - oyaji: "\u8823", - itaiji: [ - "\u86CE", - "\u8807" - ] - }, - { - oyaji: "\u8839", - itaiji: [ - "\u8827", - "\u8799" - ] - }, - { - oyaji: "\u8844", - itaiji: [ - "\u8842" - ] - }, - { - oyaji: "\u8846", - itaiji: [ - "\u773E" - ] - }, - { - oyaji: "\u885B", - itaiji: [ - "\u885E" - ] - }, - { - oyaji: "\u886E", - itaiji: [ - "\u889E" - ] - }, - { - oyaji: "\u887D", - itaiji: [ - "\u88B5" - ] - }, - { - oyaji: "\u888B", - itaiji: [ - "\u5E12" - ] - }, - { - oyaji: "\u8897", - itaiji: [ - "\u88AE" - ] - }, - { - oyaji: "\u88A0", - itaiji: [ - "\u889F" - ] - }, - { - oyaji: "\u88B4", - itaiji: [ - "\u7D5D", - "\u8932" - ] - }, - { - oyaji: "\u88B7", - itaiji: [ - "\u88CC" - ] - }, - { - oyaji: "\u88BD", - itaiji: [ - "\u{2600C}" - ] - }, - { - oyaji: "\u88C5", - itaiji: [ - "\u88DD" - ] - }, - { - oyaji: "\u88CA", - itaiji: [ - "\u892D" - ] - }, - { - oyaji: "\u88CF", - itaiji: [ - "\u88E1" - ] - }, - { - oyaji: "\u88D9", - itaiji: [ - "\u88E0", - "\u5E2C" - ] - }, - { - oyaji: "\u88F4", - itaiji: [ - "\u88F5", - "\u88F6" - ] - }, - { - oyaji: "\u88F8", - itaiji: [ - "\u8EB6" - ] - }, - { - oyaji: "\u890C", - itaiji: [ - "\u88E9" - ] - }, - { - oyaji: "\u890E", - itaiji: [ - "\u890F" - ] - }, - { - oyaji: "\u8910", - itaiji: [ - "\uFA60" - ] - }, - { - oyaji: "\u8912", - itaiji: [ - "\u8943" - ] - }, - { - oyaji: "\u8913", - itaiji: [ - "\u7DE5" - ] - }, - { - oyaji: "\u8944", - itaiji: [ - "\u342E" - ] - }, - { - oyaji: "\u894C", - itaiji: [ - "\u891D" - ] - }, - { - oyaji: "\u8952", - itaiji: [ - "\u{2776C}" - ] - }, - { - oyaji: "\u895F", - itaiji: [ - "\u4633" - ] - }, - { - oyaji: "\u8964", - itaiji: [ - "\u7E7F" - ] - }, - { - oyaji: "\u896A", - itaiji: [ - "\u97C8", - "\u97E4" - ] - }, - { - oyaji: "\u8977", - itaiji: [ - "\u{2770E}" - ] - }, - { - oyaji: "\u898F", - itaiji: [ - "\u4093" - ] - }, - { - oyaji: "\u8993", - itaiji: [ - "\u8994" - ] - }, - { - oyaji: "\u8996", - itaiji: [ - "\uFA61" - ] - }, - { - oyaji: "\u899A", - itaiji: [ - "\u89BA" - ] - }, - { - oyaji: "\u89A7", - itaiji: [ - "\u89BD" - ] - }, - { - oyaji: "\u89B0", - itaiji: [ - "\u89B7" - ] - }, - { - oyaji: "\u89B3", - itaiji: [ - "\u89C0" - ] - }, - { - oyaji: "\u89E3", - itaiji: [ - "\u89E7" - ] - }, - { - oyaji: "\u89E5", - itaiji: [ - "\u89F5" - ] - }, - { - oyaji: "\u89E6", - itaiji: [ - "\u89F8" - ] - }, - { - oyaji: "\u89E9", - itaiji: [ - "\u89D3", - "\u{24660}" - ] - }, - { - oyaji: "\u89F6", - itaiji: [ - "\u89D7" - ] - }, - { - oyaji: "\u89FF", - itaiji: [ - "\u89FD" - ] - }, - { - oyaji: "\u8A18", - itaiji: [ - "\u{27A84}" - ] - }, - { - oyaji: "\u8A1B", - itaiji: [ - "\u8B4C" - ] - }, - { - oyaji: "\u8A33", - itaiji: [ - "\u8B6F" - ] - }, - { - oyaji: "\u8A3A", - itaiji: [ - "\u{2799C}" - ] - }, - { - oyaji: "\u8A3C", - itaiji: [ - "\u8B49" - ] - }, - { - oyaji: "\u8A3E", - itaiji: [ - "\u8A3F" - ] - }, - { - oyaji: "\u8A46", - itaiji: [ - "\u5467" - ] - }, - { - oyaji: "\u8A60", - itaiji: [ - "\u548F" - ] - }, - { - oyaji: "\u8A6C", - itaiji: [ - "\u8A3D" - ] - }, - { - oyaji: "\u8A71", - itaiji: [ - "\u46E1" - ] - }, - { - oyaji: "\u8A89", - itaiji: [ - "\u8B7D" - ] - }, - { - oyaji: "\u8AAC", - itaiji: [ - "\u8AAA" - ] - }, - { - oyaji: "\u8AAD", - itaiji: [ - "\u8B80" - ] - }, - { - oyaji: "\u8ABC", - itaiji: [ - "\u{279FC}" - ] - }, - { - oyaji: "\u8AC2", - itaiji: [ - "\u8B87" - ] - }, - { - oyaji: "\u8AE4", - itaiji: [ - "\u8B8D" - ] - }, - { - oyaji: "\u8AED", - itaiji: [ - "\u{2F9D0}" - ] - }, - { - oyaji: "\u8AF8", - itaiji: [ - "\uFA22" - ] - }, - { - oyaji: "\u8B01", - itaiji: [ - "\uFA62" - ] - }, - { - oyaji: "\u8B21", - itaiji: [ - "\u8B20" - ] - }, - { - oyaji: "\u8B28", - itaiji: [ - "\u{2272F}" - ] - }, - { - oyaji: "\u8B2B", - itaiji: [ - "\u8B81" - ] - }, - { - oyaji: "\u8B33", - itaiji: [ - "\u{27985}" - ] - }, - { - oyaji: "\u8B37", - itaiji: [ - "\u8B38" - ] - }, - { - oyaji: "\u8B39", - itaiji: [ - "\uFA63" - ] - }, - { - oyaji: "\u8B56", - itaiji: [ - "\u8B5B" - ] - }, - { - oyaji: "\u8B72", - itaiji: [ - "\u8B93" - ] - }, - { - oyaji: "\u8B7E", - itaiji: [ - "\u8B2D" - ] - }, - { - oyaji: "\u8B83", - itaiji: [ - "\u8B9A" - ] - }, - { - oyaji: "\u8B8C", - itaiji: [ - "\u91BC" - ] - }, - { - oyaji: "\u8B90", - itaiji: [ - "\u8B8E" - ] - }, - { - oyaji: "\u8B92", - itaiji: [ - "\u471B" - ] - }, - { - oyaji: "\u8B95", - itaiji: [ - "\u8B4B" - ] - }, - { - oyaji: "\u8B96", - itaiji: [ - "\u471F" - ] - }, - { - oyaji: "\u8C39", - itaiji: [ - "\u{27BAF}" - ] - }, - { - oyaji: "\u8C3F", - itaiji: [ - "\u{27BBE}", - "\u78CE" - ] - }, - { - oyaji: "\u8C45", - itaiji: [ - "\u{27BC7}" - ] - }, - { - oyaji: "\u8C4A", - itaiji: [ - "\u8C50" - ] - }, - { - oyaji: "\u8C4C", - itaiji: [ - "\u{27BE1}" - ] - }, - { - oyaji: "\u8C5A", - itaiji: [ - "\u8C58", - "\u3E60" - ] - }, - { - oyaji: "\u8C61", - itaiji: [ - "\u{27C3C}" - ] - }, - { - oyaji: "\u8C63", - itaiji: [ - "\u{27C5A}", - "\u730F" - ] - }, - { - oyaji: "\u8C6D", - itaiji: [ - "\u7333" - ] - }, - { - oyaji: "\u8C7A", - itaiji: [ - "\u72B2" - ] - }, - { - oyaji: "\u8C7B", - itaiji: [ - "\u72B4" - ] - }, - { - oyaji: "\u8C82", - itaiji: [ - "\u9F26" - ] - }, - { - oyaji: "\u8C89", - itaiji: [ - "\u72E2" - ] - }, - { - oyaji: "\u8C8A", - itaiji: [ - "\u8C83" - ] - }, - { - oyaji: "\u8C8C", - itaiji: [ - "\u4AC9", - "\u7683", - "\u34B5" - ] - }, - { - oyaji: "\u8C94", - itaiji: [ - "\u8C7C" - ] - }, - { - oyaji: "\u8C9D", - itaiji: [ - "\u86FD" - ] - }, - { - oyaji: "\u8CA1", - itaiji: [ - "\u621D" - ] - }, - { - oyaji: "\u8CB4", - itaiji: [ - "\u477F" - ] - }, - { - oyaji: "\u8CD3", - itaiji: [ - "\uFA64" - ] - }, - { - oyaji: "\u8CD6", - itaiji: [ - "\u8CD2" - ] - }, - { - oyaji: "\u8CDA", - itaiji: [ - "\u{27D9B}" - ] - }, - { - oyaji: "\u8CDB", - itaiji: [ - "\u8D0A" - ] - }, - { - oyaji: "\u8CE2", - itaiji: [ - "\u8D12" - ] - }, - { - oyaji: "\u8CE4", - itaiji: [ - "\u8CCE" - ] - }, - { - oyaji: "\u8CEA", - itaiji: [ - "\u8CAD" - ] - }, - { - oyaji: "\u8CFA", - itaiji: [ - "\u{27E16}" - ] - }, - { - oyaji: "\u8CFE", - itaiji: [ - "\u{27DE4}" - ] - }, - { - oyaji: "\u8D08", - itaiji: [ - "\uFA65" - ] - }, - { - oyaji: "\u8D0B", - itaiji: [ - "\u8D17" - ] - }, - { - oyaji: "\u8D0D", - itaiji: [ - "\u{297CB}" - ] - }, - { - oyaji: "\u8D10", - itaiji: [ - "\u8CEE" - ] - }, - { - oyaji: "\u8D13", - itaiji: [ - "\u8CCD" - ] - }, - { - oyaji: "\u8D6B", - itaiji: [ - "\u7200" - ] - }, - { - oyaji: "\u8D6C", - itaiji: [ - "\u4793", - "\u9833" - ] - }, - { - oyaji: "\u8D70", - itaiji: [ - "\u8D71", - "\u{27E86}" - ] - }, - { - oyaji: "\u8D81", - itaiji: [ - "\u8D82" - ] - }, - { - oyaji: "\u8D91", - itaiji: [ - "\u8DA6", - "\u4816" - ] - }, - { - oyaji: "\u8DCB", - itaiji: [ - "\u47E6" - ] - }, - { - oyaji: "\u8DD6", - itaiji: [ - "\u8E60" - ] - }, - { - oyaji: "\u8DEC", - itaiji: [ - "\u47A8", - "\u8E5E" - ] - }, - { - oyaji: "\u8DF5", - itaiji: [ - "\u8E10" - ] - }, - { - oyaji: "\u8E0A", - itaiji: [ - "\u8E34" - ] - }, - { - oyaji: "\u8E27", - itaiji: [ - "\u{2801A}" - ] - }, - { - oyaji: "\u8E2A", - itaiji: [ - "\u{28330}", - "\u8E64" - ] - }, - { - oyaji: "\u8E44", - itaiji: [ - "\u8E4F" - ] - }, - { - oyaji: "\u8E48", - itaiji: [ - "\u{280BB}" - ] - }, - { - oyaji: "\u8E55", - itaiji: [ - "\u{2032B}" - ] - }, - { - oyaji: "\u8E6F", - itaiji: [ - "\u7C75" - ] - }, - { - oyaji: "\u8E74", - itaiji: [ - "\u8E75" - ] - }, - { - oyaji: "\u8E76", - itaiji: [ - "\u8E77" - ] - }, - { - oyaji: "\u8E4B", - itaiji: [ - "\u8E79" - ] - }, - { - oyaji: "\u8E81", - itaiji: [ - "\u8DAE" - ] - }, - { - oyaji: "\u8E84", - itaiji: [ - "\u8E83" - ] - }, - { - oyaji: "\u8E87", - itaiji: [ - "\u4827", - "\u58B8" - ] - }, - { - oyaji: "\u8E8A", - itaiji: [ - "\u8E0C" - ] - }, - { - oyaji: "\u8E94", - itaiji: [ - "\u{281E0}" - ] - }, - { - oyaji: "\u8E99", - itaiji: [ - "\u8EAA", - "\u8E78" - ] - }, - { - oyaji: "\u8E9A", - itaiji: [ - "\u8E6E" - ] - }, - { - oyaji: "\u8EAC", - itaiji: [ - "\u8EB3" - ] - }, - { - oyaji: "\u8EC0", - itaiji: [ - "\u8EAF" - ] - }, - { - oyaji: "\u8ECC", - itaiji: [ - "\u4844" - ] - }, - { - oyaji: "\u8ECD", - itaiji: [ - "\u{208DE}" - ] - }, - { - oyaji: "\u8EDB", - itaiji: [ - "\u8EF6" - ] - }, - { - oyaji: "\u8EDF", - itaiji: [ - "\u8F2D" - ] - }, - { - oyaji: "\u8EE2", - itaiji: [ - "\u8F49" - ] - }, - { - oyaji: "\u8EEB", - itaiji: [ - "\u{282CF}" - ] - }, - { - oyaji: "\u8EFD", - itaiji: [ - "\u8F15" - ] - }, - { - oyaji: "\u8F12", - itaiji: [ - "\u8F19" - ] - }, - { - oyaji: "\u8F1B", - itaiji: [ - "\u8F0C" - ] - }, - { - oyaji: "\u8F1C", - itaiji: [ - "\u8F3A" - ] - }, - { - oyaji: "\u8F29", - itaiji: [ - "\u8EF0" - ] - }, - { - oyaji: "\u8F38", - itaiji: [ - "\u{2F9DF}" - ] - }, - { - oyaji: "\u8F3F", - itaiji: [ - "\u8F5D" - ] - }, - { - oyaji: "\u8F5C", - itaiji: [ - "\u8F00" - ] - }, - { - oyaji: "\u8F5F", - itaiji: [ - "\u8EE3" - ] - }, - { - oyaji: "\u8F64", - itaiji: [ - "\u484E" - ] - }, - { - oyaji: "\u8F9B", - itaiji: [ - "\u{2840C}" - ] - }, - { - oyaji: "\u8F9E", - itaiji: [ - "\u8FAD" - ] - }, - { - oyaji: "\u8FBA", - itaiji: [ - "\u908A" - ] - }, - { - oyaji: "\u8FE4", - itaiji: [ - "\u8FC6" - ] - }, - { - oyaji: "\u8FE5", - itaiji: [ - "\u9008", - "\u489B" - ] - }, - { - oyaji: "\u8FFA", - itaiji: [ - "\u5EFC" - ] - }, - { - oyaji: "\u9013", - itaiji: [ - "\u905E" - ] - }, - { - oyaji: "\u9016", - itaiji: [ - "\u9037" - ] - }, - { - oyaji: "\u9019", - itaiji: [ - "\u8FD9" - ] - }, - { - oyaji: "\u9023", - itaiji: [ - "\uF99A" - ] - }, - { - oyaji: "\u902C", - itaiji: [ - "\u8FF8" - ] - }, - { - oyaji: "\u9038", - itaiji: [ - "\uFA67" - ] - }, - { - oyaji: "\u9045", - itaiji: [ - "\u9072" - ] - }, - { - oyaji: "\u9052", - itaiji: [ - "\u900E" - ] - }, - { - oyaji: "\u9065", - itaiji: [ - "\u9059" - ] - }, - { - oyaji: "\u907C", - itaiji: [ - "\uF9C3" - ] - }, - { - oyaji: "\u9085", - itaiji: [ - "\u{27F8D}" - ] - }, - { - oyaji: "\u9087", - itaiji: [ - "\u8FE9" - ] - }, - { - oyaji: "\u9088", - itaiji: [ - "\u{28637}" - ] - }, - { - oyaji: "\u909B", - itaiji: [ - "\u536D" - ] - }, - { - oyaji: "\u90A2", - itaiji: [ - "\u90C9" - ] - }, - { - oyaji: "\u90CE", - itaiji: [ - "\u90DE" - ] - }, - { - oyaji: "\u90E4", - itaiji: [ - "\u90C4" - ] - }, - { - oyaji: "\u90E8", - itaiji: [ - "\u90F6" - ] - }, - { - oyaji: "\u90F0", - itaiji: [ - "\u9139" - ] - }, - { - oyaji: "\u90F7", - itaiji: [ - "\u9115" - ] - }, - { - oyaji: "\u90FD", - itaiji: [ - "\uFA26" - ] - }, - { - oyaji: "\u9116", - itaiji: [ - "\u48B5" - ] - }, - { - oyaji: "\u9146", - itaiji: [ - "\u9137" - ] - }, - { - oyaji: "\u9154", - itaiji: [ - "\u9189" - ] - }, - { - oyaji: "\u9157", - itaiji: [ - "\u48F1" - ] - }, - { - oyaji: "\u9162", - itaiji: [ - "\u918B" - ] - }, - { - oyaji: "\u916C", - itaiji: [ - "\u9167", - "\u91BB" - ] - }, - { - oyaji: "\u9187", - itaiji: [ - "\u48E9", - "\u9195" - ] - }, - { - oyaji: "\u919C", - itaiji: [ - "\u9B57" - ] - }, - { - oyaji: "\u91AC", - itaiji: [ - "\u91A4" - ] - }, - { - oyaji: "\u91B1", - itaiji: [ - "\u9197" - ] - }, - { - oyaji: "\u91B8", - itaiji: [ - "\u91C0" - ] - }, - { - oyaji: "\u91BE", - itaiji: [ - "\u91C4" - ] - }, - { - oyaji: "\u91C8", - itaiji: [ - "\u91CB" - ] - }, - { - oyaji: "\u91CE", - itaiji: [ - "\u57DC", - "\u58C4", - "\u3652", - "\u{2131B}" - ] - }, - { - oyaji: "\u91DC", - itaiji: [ - "\u91E1" - ] - }, - { - oyaji: "\u91E4", - itaiji: [ - "\u{28946}" - ] - }, - { - oyaji: "\u91EC", - itaiji: [ - "\u92B2" - ] - }, - { - oyaji: "\u9244", - itaiji: [ - "\u9435" - ] - }, - { - oyaji: "\u9248", - itaiji: [ - "\u9247" - ] - }, - { - oyaji: "\u925A", - itaiji: [ - "\u{2896B}" - ] - }, - { - oyaji: "\u925B", - itaiji: [ - "\u9206" - ] - }, - { - oyaji: "\u9262", - itaiji: [ - "\u{2504A}", - "\u76CB", - "\u7F3D" - ] - }, - { - oyaji: "\u9264", - itaiji: [ - "\u920E" - ] - }, - { - oyaji: "\u9271", - itaiji: [ - "\u945B" - ] - }, - { - oyaji: "\u927C", - itaiji: [ - "\u{2F9EA}" - ] - }, - { - oyaji: "\u929C", - itaiji: [ - "\u5563", - "\u3605", - "\u8858" - ] - }, - { - oyaji: "\u92AD", - itaiji: [ - "\u9322" - ] - }, - { - oyaji: "\u92B9", - itaiji: [ - "\u93E5", - "\u93FD" - ] - }, - { - oyaji: "\u92CF", - itaiji: [ - "\u{28987}" - ] - }, - { - oyaji: "\u92D2", - itaiji: [ - "\u93E0" - ] - }, - { - oyaji: "\u92ED", - itaiji: [ - "\u92B3" - ] - }, - { - oyaji: "\u92F3", - itaiji: [ - "\u9444" - ] - }, - { - oyaji: "\u932C", - itaiji: [ - "\u934A" - ] - }, - { - oyaji: "\u9332", - itaiji: [ - "\u9304" - ] - }, - { - oyaji: "\u9350", - itaiji: [ - "\u9441" - ] - }, - { - oyaji: "\u936C", - itaiji: [ - "\u936B" - ] - }, - { - oyaji: "\u93AE", - itaiji: [ - "\u93AD" - ] - }, - { - oyaji: "\u93D6", - itaiji: [ - "\u495D" - ] - }, - { - oyaji: "\u93D8", - itaiji: [ - "\u{28A99}" - ] - }, - { - oyaji: "\u93DE", - itaiji: [ - "\u92BF" - ] - }, - { - oyaji: "\u93DF", - itaiji: [ - "\u{28A71}" - ] - }, - { - oyaji: "\u93E4", - itaiji: [ - "\u{28A50}" - ] - }, - { - oyaji: "\u93E8", - itaiji: [ - "\u93E9" - ] - }, - { - oyaji: "\u93F8", - itaiji: [ - "\u{28ACD}" - ] - }, - { - oyaji: "\u942B", - itaiji: [ - "\u93B8" - ] - }, - { - oyaji: "\u9438", - itaiji: [ - "\u922C" - ] - }, - { - oyaji: "\u9451", - itaiji: [ - "\u9373", - "\u9452" - ] - }, - { - oyaji: "\u9453", - itaiji: [ - "\u{28BEF}" - ] - }, - { - oyaji: "\u9463", - itaiji: [ - "\u4BBD" - ] - }, - { - oyaji: "\u946A", - itaiji: [ - "\u9229" - ] - }, - { - oyaji: "\u9475", - itaiji: [ - "\u{28ADD}" - ] - }, - { - oyaji: "\u947D", - itaiji: [ - "\u945A" - ] - }, - { - oyaji: "\u9577", - itaiji: [ - "\u9578" - ] - }, - { - oyaji: "\u9589", - itaiji: [ - "\u9587" - ] - }, - { - oyaji: "\u958F", - itaiji: [ - "\u95A0" - ] - }, - { - oyaji: "\u9593", - itaiji: [ - "\u9592" - ] - }, - { - oyaji: "\u95A2", - itaiji: [ - "\u95DC" - ] - }, - { - oyaji: "\u95B2", - itaiji: [ - "\u95B1" - ] - }, - { - oyaji: "\u95BB", - itaiji: [ - "\u9586" - ] - }, - { - oyaji: "\u95C3", - itaiji: [ - "\u95B4" - ] - }, - { - oyaji: "\u95CA", - itaiji: [ - "\u6FF6", - "\u{24103}" - ] - }, - { - oyaji: "\u95D8", - itaiji: [ - "\u9B2A" - ] - }, - { - oyaji: "\u9624", - itaiji: [ - "\u9641" - ] - }, - { - oyaji: "\u9628", - itaiji: [ - "\u9638" - ] - }, - { - oyaji: "\u964B", - itaiji: [ - "\u{28E5F}" - ] - }, - { - oyaji: "\u965B", - itaiji: [ - "\u3644" - ] - }, - { - oyaji: "\u965F", - itaiji: [ - "\u5F8F" - ] - }, - { - oyaji: "\u9665", - itaiji: [ - "\u9677" - ] - }, - { - oyaji: "\u9670", - itaiji: [ - "\u9634", - "\u9682" - ] - }, - { - oyaji: "\u967A", - itaiji: [ - "\u96AA" - ] - }, - { - oyaji: "\u967D", - itaiji: [ - "\u9633" - ] - }, - { - oyaji: "\u9686", - itaiji: [ - "\uF9DC" - ] - }, - { - oyaji: "\u968E", - itaiji: [ - "\u5826" - ] - }, - { - oyaji: "\u968F", - itaiji: [ - "\u96A8" - ] - }, - { - oyaji: "\u9699", - itaiji: [ - "\u{28EF6}" - ] - }, - { - oyaji: "\u96A0", - itaiji: [ - "\u96B1" - ] - }, - { - oyaji: "\u96B4", - itaiji: [ - "\u{28EEB}" - ] - }, - { - oyaji: "\u96B7", - itaiji: [ - "\u96B8" - ] - }, - { - oyaji: "\u96BA", - itaiji: [ - "\u5BC9" - ] - }, - { - oyaji: "\u96C1", - itaiji: [ - "\u9CEB", - "\u9D08" - ] - }, - { - oyaji: "\u96C4", - itaiji: [ - "\u49FA" - ] - }, - { - oyaji: "\u96C6", - itaiji: [ - "\u96E7", - "\u4EBC", - "\u{20371}" - ] - }, - { - oyaji: "\u96CB", - itaiji: [ - "\u96BD" - ] - }, - { - oyaji: "\u96CC", - itaiji: [ - "\u4CC4" - ] - }, - { - oyaji: "\u96CD", - itaiji: [ - "\u96DD" - ] - }, - { - oyaji: "\u96D1", - itaiji: [ - "\u96DC" - ] - }, - { - oyaji: "\u96D5", - itaiji: [ - "\u9D70" - ] - }, - { - oyaji: "\u96D6", - itaiji: [ - "\u{28FFD}" - ] - }, - { - oyaji: "\u96DB", - itaiji: [ - "\u9DB5" - ] - }, - { - oyaji: "\u96E3", - itaiji: [ - "\uFA68" - ] - }, - { - oyaji: "\u96F7", - itaiji: [ - "\u9741" - ] - }, - { - oyaji: "\u970A", - itaiji: [ - "\u9748" - ] - }, - { - oyaji: "\u9722", - itaiji: [ - "\u9721" - ] - }, - { - oyaji: "\u974A", - itaiji: [ - "\u973B" - ] - }, - { - oyaji: "\u9752", - itaiji: [ - "\u9751" - ] - }, - { - oyaji: "\u9756", - itaiji: [ - "\uFA1C" - ] - }, - { - oyaji: "\u9759", - itaiji: [ - "\u975C" - ] - }, - { - oyaji: "\u9762", - itaiji: [ - "\u9763" - ] - }, - { - oyaji: "\u9771", - itaiji: [ - "\u976D", - "\u97CC" - ] - }, - { - oyaji: "\u9774", - itaiji: [ - "\u97BE" - ] - }, - { - oyaji: "\u978B", - itaiji: [ - "\u97B5" - ] - }, - { - oyaji: "\u978D", - itaiji: [ - "\u978C" - ] - }, - { - oyaji: "\u9798", - itaiji: [ - "\u97D2" - ] - }, - { - oyaji: "\u97A0", - itaiji: [ - "\u6BF1" - ] - }, - { - oyaji: "\u97AB", - itaiji: [ - "\u{25DDA}" - ] - }, - { - oyaji: "\u97B9", - itaiji: [ - "\u979F" - ] - }, - { - oyaji: "\u97CA", - itaiji: [ - "\u4A8D" - ] - }, - { - oyaji: "\u97DD", - itaiji: [ - "\u97B2" - ] - }, - { - oyaji: "\u97E0", - itaiji: [ - "\u97B8" - ] - }, - { - oyaji: "\u97ED", - itaiji: [ - "\u97EE" - ] - }, - { - oyaji: "\u97F3", - itaiji: [ - "\u2FB3" - ] - }, - { - oyaji: "\u97FB", - itaiji: [ - "\u97F5" - ] - }, - { - oyaji: "\u97FF", - itaiji: [ - "\uFA69" - ] - }, - { - oyaji: "\u9824", - itaiji: [ - "\u{268DD}", - "\u9825" - ] - }, - { - oyaji: "\u9830", - itaiji: [ - "\u982C" - ] - }, - { - oyaji: "\u9838", - itaiji: [ - "\u981A" - ] - }, - { - oyaji: "\u983B", - itaiji: [ - "\uFA6A" - ] - }, - { - oyaji: "\u983C", - itaiji: [ - "\u8CF4" - ] - }, - { - oyaji: "\u983D", - itaiji: [ - "\u9839", - "\u983A" - ] - }, - { - oyaji: "\u984B", - itaiji: [ - "\u816E" - ] - }, - { - oyaji: "\u9854", - itaiji: [ - "\u984F" - ] - }, - { - oyaji: "\u9855", - itaiji: [ - "\u986F" - ] - }, - { - oyaji: "\u985A", - itaiji: [ - "\u985B" - ] - }, - { - oyaji: "\u985E", - itaiji: [ - "\uF9D0" - ] - }, - { - oyaji: "\u98A8", - itaiji: [ - "\u51EE", - "\u51EC", - "\u98CC" - ] - }, - { - oyaji: "\u98C4", - itaiji: [ - "\u98C3" - ] - }, - { - oyaji: "\u98C6", - itaiji: [ - "\u98C7", - "\u98C8", - "\u98B7" - ] - }, - { - oyaji: "\u98DF", - itaiji: [ - "\u2FB7" - ] - }, - { - oyaji: "\u98E7", - itaiji: [ - "\u98F1", - "\u98E1" - ] - }, - { - oyaji: "\u98EF", - itaiji: [ - "\uFA2A" - ] - }, - { - oyaji: "\u98F2", - itaiji: [ - "\u98EE" - ] - }, - { - oyaji: "\u98FC", - itaiji: [ - "\uFA2B" - ] - }, - { - oyaji: "\u9905", - itaiji: [ - "\u9920" - ] - }, - { - oyaji: "\u9909", - itaiji: [ - "\u{2970B}", - "\u995F" - ] - }, - { - oyaji: "\u9910", - itaiji: [ - "\u6E4C" - ] - }, - { - oyaji: "\u991E", - itaiji: [ - "\u4B3B" - ] - }, - { - oyaji: "\u9928", - itaiji: [ - "\uFA2C" - ] - }, - { - oyaji: "\u992C", - itaiji: [ - "\u{296A9}" - ] - }, - { - oyaji: "\u9931", - itaiji: [ - "\u7CC7" - ] - }, - { - oyaji: "\u9934", - itaiji: [ - "\u9959" - ] - }, - { - oyaji: "\u9945", - itaiji: [ - "\u{2A369}" - ] - }, - { - oyaji: "\u994C", - itaiji: [ - "\u4275" - ] - }, - { - oyaji: "\u994E", - itaiji: [ - "\u7CE6" - ] - }, - { - oyaji: "\u9952", - itaiji: [ - "\u{29719}" - ] - }, - { - oyaji: "\u9958", - itaiji: [ - "\u98E6" - ] - }, - { - oyaji: "\u9998", - itaiji: [ - "\u805D" - ] - }, - { - oyaji: "\u99C4", - itaiji: [ - "\u99B1" - ] - }, - { - oyaji: "\u99C5", - itaiji: [ - "\u9A5B" - ] - }, - { - oyaji: "\u99C6", - itaiji: [ - "\u9A45" - ] - }, - { - oyaji: "\u99DD", - itaiji: [ - "\u99DE" - ] - }, - { - oyaji: "\u99FB", - itaiji: [ - "\u99AF" - ] - }, - { - oyaji: "\u9A08", - itaiji: [ - "\u99E2" - ] - }, - { - oyaji: "\u9A12", - itaiji: [ - "\u9A37" - ] - }, - { - oyaji: "\u9A13", - itaiji: [ - "\u9A57" - ] - }, - { - oyaji: "\u9A2D", - itaiji: [ - "\u96B2" - ] - }, - { - oyaji: "\u9A3E", - itaiji: [ - "\u9A58" - ] - }, - { - oyaji: "\u9A41", - itaiji: [ - "\u4BAF" - ] - }, - { - oyaji: "\u9A51", - itaiji: [ - "\u9A2E" - ] - }, - { - oyaji: "\u9A52", - itaiji: [ - "\u9A28" - ] - }, - { - oyaji: "\u9A62", - itaiji: [ - "\u99BF" - ] - }, - { - oyaji: "\u9AC4", - itaiji: [ - "\u9AD3" - ] - }, - { - oyaji: "\u9AD8", - itaiji: [ - "\u9AD9" - ] - }, - { - oyaji: "\u9AE1", - itaiji: [ - "\u9AE0", - "\u9AE8" - ] - }, - { - oyaji: "\u9AE5", - itaiji: [ - "\u9AEF" - ] - }, - { - oyaji: "\u9AEA", - itaiji: [ - "\u9AEE" - ] - }, - { - oyaji: "\u9AED", - itaiji: [ - "\u983E" - ] - }, - { - oyaji: "\u9B22", - itaiji: [ - "\u9B02", - "\u9AE9" - ] - }, - { - oyaji: "\u9B23", - itaiji: [ - "\u3CB1" - ] - }, - { - oyaji: "\u9B27", - itaiji: [ - "\u9599" - ] - }, - { - oyaji: "\u9B2E", - itaiji: [ - "\u4C17", - "\u49B0" - ] - }, - { - oyaji: "\u9B31", - itaiji: [ - "\u6B1D", - "\u{23878}" - ] - }, - { - oyaji: "\u9B32", - itaiji: [ - "\u4C1B" - ] - }, - { - oyaji: "\u9B42", - itaiji: [ - "\u4C1F" - ] - }, - { - oyaji: "\u9B45", - itaiji: [ - "\u9B3D" - ] - }, - { - oyaji: "\u9B5A", - itaiji: [ - "\u{29D4B}" - ] - }, - { - oyaji: "\u9B91", - itaiji: [ - "\u86AB" - ] - }, - { - oyaji: "\u9B92", - itaiji: [ - "\u{29DFA}" - ] - }, - { - oyaji: "\u9BA8", - itaiji: [ - "\u4C48" - ] - }, - { - oyaji: "\u9BBE", - itaiji: [ - "\u9BD8" - ] - }, - { - oyaji: "\u9BCA", - itaiji: [ - "\u9BCB", - "\u9B66" - ] - }, - { - oyaji: "\u9C0C", - itaiji: [ - "\u9C0D" - ] - }, - { - oyaji: "\u9C10", - itaiji: [ - "\u9C77" - ] - }, - { - oyaji: "\u9C25", - itaiji: [ - "\u{29EC4}" - ] - }, - { - oyaji: "\u9C2E", - itaiji: [ - "\u9C1B" - ] - }, - { - oyaji: "\u9C3A", - itaiji: [ - "\u9BF5" - ] - }, - { - oyaji: "\u9C6A", - itaiji: [ - "\u9C70" - ] - }, - { - oyaji: "\u9C6D", - itaiji: [ - "\u9B86" - ] - }, - { - oyaji: "\u9C76", - itaiji: [ - "\u9BD7" - ] - }, - { - oyaji: "\u9C78", - itaiji: [ - "\u9B72" - ] - }, - { - oyaji: "\u9CE7", - itaiji: [ - "\u9CEC" - ] - }, - { - oyaji: "\u9D03", - itaiji: [ - "\u9D02" - ] - }, - { - oyaji: "\u9D09", - itaiji: [ - "\u{29FCE}", - "\u9D76" - ] - }, - { - oyaji: "\u9D1D", - itaiji: [ - "\u9E1C" - ] - }, - { - oyaji: "\u9D1F", - itaiji: [ - "\u9D44", - "\u{28FA6}" - ] - }, - { - oyaji: "\u9D25", - itaiji: [ - "\u9D2A" - ] - }, - { - oyaji: "\u9D59", - itaiji: [ - "\u9DAA" - ] - }, - { - oyaji: "\u9D5D", - itaiji: [ - "\u9D5E" - ] - }, - { - oyaji: "\u9D61", - itaiji: [ - "\u4CC7" - ] - }, - { - oyaji: "\u9D6A", - itaiji: [ - "\u4A04" - ] - }, - { - oyaji: "\u9D72", - itaiji: [ - "\u49FF" - ] - }, - { - oyaji: "\u9D89", - itaiji: [ - "\u{28FE1}" - ] - }, - { - oyaji: "\u9D8F", - itaiji: [ - "\u9DC4" - ] - }, - { - oyaji: "\u9DA4", - itaiji: [ - "\u9D7E" - ] - }, - { - oyaji: "\u9DAF", - itaiji: [ - "\u9D2C", - "\u9E0E" - ] - }, - { - oyaji: "\u9DB4", - itaiji: [ - "\u974D", - "\u974E", - "\u974F", - "\uFA2D" - ] - }, - { - oyaji: "\u9DBA", - itaiji: [ - "\u{2A0F9}" - ] - }, - { - oyaji: "\u9DC0", - itaiji: [ - "\u9DBF" - ] - }, - { - oyaji: "\u9DC6", - itaiji: [ - "\u9DCF" - ] - }, - { - oyaji: "\u9DD7", - itaiji: [ - "\u9D0E" - ] - }, - { - oyaji: "\u9E1B", - itaiji: [ - "\u96DA" - ] - }, - { - oyaji: "\u9E79", - itaiji: [ - "\u918E" - ] - }, - { - oyaji: "\u9E7C", - itaiji: [ - "\u9E78", - "\u9E7B" - ] - }, - { - oyaji: "\u9E7F", - itaiji: [ - "\u{22218}" - ] - }, - { - oyaji: "\u9E87", - itaiji: [ - "\u9E95" - ] - }, - { - oyaji: "\u9E97", - itaiji: [ - "\u4D21" - ] - }, - { - oyaji: "\u9E9E", - itaiji: [ - "\u7350" - ] - }, - { - oyaji: "\u9EA4", - itaiji: [ - "\u9E81" - ] - }, - { - oyaji: "\u9EA6", - itaiji: [ - "\u9EA5" - ] - }, - { - oyaji: "\u9EB3", - itaiji: [ - "\u{2A38C}" - ] - }, - { - oyaji: "\u9EB4", - itaiji: [ - "\u9EB9", - "\u9EAF" - ] - }, - { - oyaji: "\u9EBA", - itaiji: [ - "\u9EB5" - ] - }, - { - oyaji: "\u9EBB", - itaiji: [ - "\u2FC7" - ] - }, - { - oyaji: "\u9EBC", - itaiji: [ - "\u9EBD" - ] - }, - { - oyaji: "\u9EC4", - itaiji: [ - "\u9EC3" - ] - }, - { - oyaji: "\u9ED2", - itaiji: [ - "\u9ED1" - ] - }, - { - oyaji: "\u9ED9", - itaiji: [ - "\u9ED8" - ] - }, - { - oyaji: "\u9F07", - itaiji: [ - "\u9C32" - ] - }, - { - oyaji: "\u9F08", - itaiji: [ - "\u9C49" - ] - }, - { - oyaji: "\u9F0E", - itaiji: [ - "\u{2A502}", - "\u{231C4}" - ] - }, - { - oyaji: "\u9F13", - itaiji: [ - "\u76B7" - ] - }, - { - oyaji: "\u9F16", - itaiji: [ - "\u{2A535}", - "\u4A7F" - ] - }, - { - oyaji: "\u9F20", - itaiji: [ - "\u9F21" - ] - }, - { - oyaji: "\u9F34", - itaiji: [ - "\u9F39" - ] - }, - { - oyaji: "\u9F3B", - itaiji: [ - "\u2FD0" - ] - }, - { - oyaji: "\u9F4F", - itaiji: [ - "\u97F2", - "\u8640", - "\u4AA1" - ] - }, - { - oyaji: "\u9F54", - itaiji: [ - "\u9F53" - ] - }, - { - oyaji: "\u9F5F", - itaiji: [ - "\u{2A5F1}" - ] - }, - { - oyaji: "\u9F62", - itaiji: [ - "\u9F61" - ] - }, - { - oyaji: "\u9F67", - itaiji: [ - "\u{2A602}", - "\u56D3" - ] - }, - { - oyaji: "\u9F6C", - itaiji: [ - "\u{2A61A}" - ] - }, - { - oyaji: "\u9F76", - itaiji: [ - "\u816D" - ] - }, - { - oyaji: "\uFA20", - itaiji: [ - "\u8612" - ] - }, - { - oyaji: "\u{200A3}", - itaiji: [ - "\u3406" - ] - }, - { - oyaji: "\u{20B9F}", - itaiji: [ - "\u53F1" - ] - }, - { - oyaji: "\u{2146D}", - itaiji: [ - "\u{212D7}" - ] - }, - { - oyaji: "\u{21582}", - itaiji: [ - "\u8641", - "\u5914" - ] - }, - { - oyaji: "\u{218CD}", - itaiji: [ - "\u5B34", - "\u{21894}" - ] - }, - { - oyaji: "\u{25E24}", - itaiji: [ - "\u9FA5" - ] - }, - { - oyaji: "\u{28AE4}", - itaiji: [ - "\u{28BC1}" - ] - }, - { - oyaji: "\u{29178}", - itaiji: [ - "\u9724" - ] - }, - { - oyaji: "\u{297B7}", - itaiji: [ - "\u993E" - ] - } -]; - -// node_modules/kanji-processor/dist/itaiji_list.json -var itaiji_list_default = [ - "\u3FD7", - "\u{273FE}", - "\u{28E1F}", - "\u5F0C", - "\u842C", - "\u{2000B}", - "\u5F0E", - "\u8207", - "\u4E12", - "\u4E17", - "\u534B", - "\u90B1", - "\u3400", - "\u5775", - "\u5169", - "\u7ADD", - "\u535D", - "\u4E46", - "\u9579", - "\u4E58", - "\u4E82", - "\u4E79", - "\u9F9C", - "\u8C6B", - "\u722D", - "\u4E8A", - "\u53D3", - "\u355D", - "\u5F0D", - "\u4E8F", - "\u4E90", - "\u4E9E", - "\u710F", - "\u4EAF", - "\u4EB0", - "\u{20158}", - "\u{20159}", - "\u4EBB", - "\u{201A2}", - "\u4ED0", - "\u{2B746}", - "\u4F5B", - "\u4EED", - "\u382F", - "\u5047", - "\u6703", - "\u50B3", - "\u4F40", - "\u7ADA", - "\u9AD4", - "\u9918", - "\u505A", - "\u4FAB", - "\u73EE", - "\u5002", - "\u{20232}", - "\u{20255}", - "\u{20209}", - "\u5058", - "\u50F9", - "\uFA30", - "\u77E6", - "\u{253A6}", - "\u{202B3}", - "\u723C", - "\u60A7", - "\u7AE2", - "\u4FA0", - "\u3468", - "\u5036", - "\u4F1C", - "\u{20213}", - "\u4FD6", - "\u5010", - "\u7102", - "\u{202B1}", - "\u{202E3}", - "\u52CC", - "\u5109", - "\u5FA4", - "\u500A", - "\u50AF", - "\u5077", - "\u50DE", - "\u{20358}", - "\u50C3", - "\u5079", - "\u4FF2", - "\u6160", - "\u507B", - "\u3452", - "\u{2F80B}", - "\u3492", - "\u4451", - "\uFA31", - "\u50E3", - "\u349E", - "\u4FE6", - "\u{2037B}", - "\u346A", - "\u4FAD", - "\u{20427}", - "\u4F60", - "\u50A5", - "\u{2044A}", - "\uFA74", - "\u{209DE}", - "\u706E", - "\u7097", - "\u514A", - "\u5151", - "\uFA32", - "\u{2F80F}", - "\u5154", - "\u5152", - "\u{27C3D}", - "\u{24261}", - "\u5156", - "\u9EE8", - "\u5160", - "\u4FDE", - "\uFA75", - "\u517E", - "\u518B", - "\u5167", - "\u5713", - "\u5184", - "\u518C", - "\u56E7", - "\u{2F817}", - "\u5B82", - "\u5BEB", - "\u{208E5}", - "\u5BC3", - "\u3760", - "\u7F83", - "\u5E42", - "\u{2F81A}", - "\u{205B1}", - "\u6DD2", - "\u51DB", - "\u{20621}", - "\u6F9F", - "\u8655", - "\u51F4", - "\u{239D1}", - "\u51FE", - "\u5705", - "\u91D6", - "\u82C5", - "\u{206C4}", - "\u520B", - "\u{206EC}", - "\u34DD", - "\u3774", - "\u522A", - "\u{20702}", - "\u{206F0}", - "\u{25764}", - "\u{2071C}", - "\u524F", - "\u5259", - "\u{20765}", - "\u{2073D}", - "\u9B00", - "\u{207ED}", - "\u52CA", - "\u5C05", - "\u{20713}", - "\u34FB", - "\u{206E0}", - "\u5265", - "\u528D", - "\u5291", - "\u7FE6", - "\u5269", - "\u{2F822}", - "\u5205", - "\u6227", - "\u{207D0}", - "\u{207B0}", - "\u528B", - "\u34DB", - "\u5227", - "\u5226", - "\u52F5", - "\u52DE", - "\u6548", - "\u52A4", - "\u6555", - "\uFA33", - "\u52D7", - "\u351F", - "\uFA34", - "\u52F8", - "\u52F3", - "\u{2F828}", - "\u5300", - "\u5304", - "\u56F1", - "\u{2F82A}", - "\u5307", - "\u5E00", - "\u8FCA", - "\u6ED9", - "\u5332", - "\u5969", - "\u7C62", - "\u91AB", - "\u{20983}", - "\u{2F82C}", - "\u8294", - "\uFA35", - "\u5346", - "\u461A", - "\u684C", - "\u604A", - "\u65EA", - "\u55AE", - "\u{209EA}", - "\u5DF5", - "\u5918", - "\u623C", - "\u537D", - "\u537B", - "\u3541", - "\u5DF9", - "\u{27BE2}", - "\u{2203E}", - "\u{2F833}", - "\u{22034}", - "\u3AD7", - "\u53A1", - "\u5EDA", - "\u3551", - "\u5ECF", - "\u5ED0", - "\u7312", - "\u5389", - "\u56B4", - "\u53BA", - "\u53C3", - "\u96D9", - "\u6536", - "\u{20991}", - "\u654D", - "\u53DC", - "\u777F", - "\u6A37", - "\u85C2", - "\u{2F839}", - "\u81FA", - "\u355C", - "\u865F", - "\u{20BCF}", - "\u{20BB7}", - "\u4EDD", - "\u3581", - "\u5451", - "\u8A21", - "\u9FA1", - "\u8117", - "\u4407", - "\u544D", - "\u5433", - "\u543F", - "\u{2F83F}", - "\u5492", - "\u548A", - "\u9FA2", - "\u35BE", - "\u5412", - "\u549C", - "\u8C9F", - "\u608A", - "\u569E", - "\u5586", - "\u5560", - "\u8123", - "\u560A", - "\u5557", - "\u5649", - "\u5516", - "\u8B71", - "\u35CB", - "\u3402", - "\u6B56", - "\uFA36", - "\u55BB", - "\u462E", - "\u{20DD4}", - "\u71DF", - "\u9F45", - "\u55F8", - "\uFA37", - "\u8B3C", - "\u5455", - "\u751E", - "\u{20E49}", - "\u{20D45}", - "\u5628", - "\u56D1", - "\u55E5", - "\u5618", - "\uFA38", - "\u{2F84F}", - "\u568F", - "\u565B", - "\u56BB", - "\u56A2", - "\u56D8", - "\u56EC", - "\u9856", - "\u56D9", - "\u5718", - "\u570D", - "\u5716", - "\u570B", - "\u5708", - "\u8597", - "\u{2123D}", - "\u5721", - "\u58D3", - "\u73EA", - "\u962F", - "\u574B", - "\u57F3", - "\u962B", - "\u576F", - "\u3634", - "\u962C", - "\u{21369}", - "\u57C0", - "\u7561", - "\u579C", - "\u{212F3}", - "\u85B6", - "\u{2F852}", - "\u57D3", - "\u57D7", - "\u{2127B}", - "\u79C7", - "\u{200A4}", - "\u58AE", - "\u5822", - "\u57DE", - "\u9681", - "\u5872", - "\uFA39", - "\u58D8", - "\u5818", - "\u{23392}", - "\u757B", - "\uFA10", - "\u586B", - "\u9E7D", - "\u{2141B}", - "\u58CD", - "\u3662", - "\u{213F2}", - "\u589E", - "\uFA3A", - "\u58AA", - "\uFA7D", - "\u3672", - "\u58DE", - "\u58E4", - "\u5864", - "\u{212E4}", - "\u{21274}", - "\u7F4E", - "\u58E0", - "\u58EF", - "\u8072", - "\u58F9", - "\u8CE3", - "\u58F7", - "\u8B8A", - "\u591B", - "\u7AD2", - "\uF909", - "\uFA7F", - "\u5F09", - "\u5967", - "\u596C", - "\u59D9", - "\u{21769}", - "\u7385", - "\u{21742}", - "\u5A24", - "\u5992", - "\u59CA", - "\u59E7", - "\u4F84", - "\u{2F862}", - "\u5AE6", - "\u598D", - "\u5A63", - "\u59E2", - "\u5A1B", - "\u5A40", - "\u59B8", - "\u36F0", - "\u58FB", - "\u805F", - "\u5AAA", - "\u3475", - "\u5AF0", - "\u5A86", - "\u{2181C}", - "\u5A2C", - "\u5AFB", - "\u{21883}", - "\u5B43", - "\u5AD0", - "\u5A1A", - "\u{2F86B}", - "\u373D", - "\u5B78", - "\u5B73", - "\u{21998}", - "\u5B7D", - "\u386F", - "\u{219C3}", - "\u3762", - "\u57A8", - "\u{216B4}", - "\u5B90", - "\u519D", - "\u5BF6", - "\u5BE6", - "\u375B", - "\u51A6", - "\u{21A25}", - "\u51A8", - "\u5EBD", - "\u5BEC", - "\u5BE2", - "\uF95F", - "\u41BF", - "\u5C0D", - "\u58FD", - "\u5C08", - "\u5C07", - "\u5C19", - "\u5C1F", - "\u5C23", - "\u5C2B", - "\u5C2A", - "\u{21BEA}", - "\u582F", - "\u378D", - "\u76E1", - "\u{259D4}", - "\u5C46", - "\u{21C41}", - "\u5C4F", - "\u5C6C", - "\u5C61", - "\uFA3B", - "\u5C53", - "\u5D17", - "\u583D", - "\u{21D92}", - "\u5CBA", - "\u5DBD", - "\u37C1", - "\u{21D9C}", - "\u5CFD", - "\u5CE9", - "\u5CEF", - "\u5D8B", - "\u5D8C", - "\u3800", - "\u5DB9", - "\u9666", - "\u969D", - "\u96AF", - "\uFA11", - "\u5D5C", - "\u37E2", - "\u966D", - "\u5D10", - "\u5D2A", - "\u5D15", - "\u5D18", - "\u5D2B", - "\u5D47", - "\u7BCF", - "\u5D53", - "\u5D27", - "\u37F4", - "\u5D73", - "\u5D84", - "\u{21E33}", - "\u5DA4", - "\u{21D78}", - "\u5DD6", - "\u5DDB", - "\u5DE2", - "\u352B", - "\u8856", - "\u5377", - "\u{2F884}", - "\u{2206B}", - "\u4F16", - "\u83F7", - "\u5E08", - "\u5E36", - "\u6B78", - "\u5E59", - "\u5E47", - "\u5E2E", - "\u{220D6}", - "\u3861", - "\u79CA", - "\u5F00", - "\u5E76", - "\u{200B7}", - "\u69A6", - "\u4E48", - "\u{221B2}", - "\u5EF3", - "\u5EE3", - "\u{2B777}", - "\u5EBB", - "\u53A0", - "\u53A2", - "\u5EE2", - "\u53A6", - "\uF9A2", - "\uF928", - "\u58E5", - "\u913D", - "\u367B", - "\u53AE", - "\u5EBF", - "\u5E99", - "\u{2A818}", - "\u342D", - "\u5EEA", - "\u5EFD", - "\u{2231E}", - "\u8FF4", - "\u5344", - "\u8FA8", - "\u8FAF", - "\u74E3", - "\u630A", - "\u6335", - "\u8CB3", - "\u5F12", - "\u38AE", - "\u5F4C", - "\u5F3A", - "\u5F3B", - "\u{22400}", - "\u5F48", - "\u{26FF6}", - "\u5F2F", - "\u5F51", - "\u7576", - "\u5F5A", - "\u5F5C", - "\u{2F899}", - "\u{22488}", - "\u5F65", - "\u{2F89A}", - "\u658C", - "\u{2848C}", - "\u4890", - "\u5F91", - "\u{224C8}", - "\u{28452}", - "\u5F9E", - "\u3775", - "\u{22536}", - "\u{2846D}", - "\u509C", - "\u5FB7", - "\u5FB5", - "\u61C9", - "\u{225D8}", - "\u{225CC}", - "\u6091", - "\u{226C5}", - "\u6056", - "\u6060", - "\u5FE9", - "\u60A4", - "\u6200", - "\u6046", - "\u392C", - "\u3707", - "\u5FF7", - "\u{2264A}", - "\u5379", - "\u460F", - "\u803B", - "\u{22643}", - "\u3929", - "\u6119", - "\u{22644}", - "\u60E0", - "\u{225B9}", - "\u6061", - "\uFA3D", - "\u5FE2", - "\u6085", - "\u60F1", - "\u60E1", - "\u3971", - "\u5FF0", - "\u3943", - "\u6053", - "\u{2F8A5}", - "\u6090", - "\u60FD", - "\u{22835}", - "\u6158", - "\u619C", - "\u{2279B}", - "\u8AD0", - "\u{2289A}", - "\u3905", - "\u3966", - "\u5ABF", - "\u6164", - "\u{2F8A6}", - "\u393A", - "\u6120", - "\u613C", - "\u615A", - "\u{22894}", - "\u5FFC", - "\u617D", - "\u6121", - "\u{2274A}", - "\u{227E1}", - "\uFA3F", - "\u617F", - "\u6197", - "\u6198", - "\u60EE", - "\u619E", - "\u{2F8AD}", - "\u6187", - "\u{2287B}", - "\u{2F8AC}", - "\u{22846}", - "\u{228A3}", - "\u3907", - "\u61D4", - "\u61F7", - "\u3994", - "\u{2285B}", - "\u611E", - "\uFA40", - "\u{2F8B1}", - "\u61F4", - "\u6133", - "\u39A4", - "\u{2F8B2}", - "\u39AF", - "\u621E", - "\u{229E2}", - "\u6230", - "\u{229F5}", - "\u6232", - "\uFA8C", - "\u6236", - "\u623E", - "\u62C2", - "\u{22C67}", - "\u6439", - "\u39D6", - "\u3ABF", - "\u62D4", - "\u64C7", - "\u{22B46}", - "\u64D4", - "\u80DF", - "\u629B", - "\u{22AE6}", - "\u6261", - "\u62D6", - "\u6285", - "\u62DC", - "\u64DA", - "\u64F4", - "\u628D", - "\u6359", - "\u62CF", - "\u{22AFE}", - "\u64E7", - "\u633E", - "\u63D2", - "\u{2F8B7}", - "\u{22AB8}", - "\u{22C24}", - "\u5B6F", - "\u530A", - "\u63ED", - "\u{22D96}", - "\u6353", - "\u6416", - "\u{22B94}", - "\u63BB", - "\u{2F8BF}", - "\u6498", - "\u651C", - "\u64D5", - "\u3A57", - "\u{22E42}", - "\u651D", - "\u63B4", - "\u64A1", - "\u64CA", - "\u{22B50}", - "\u6491", - "\u{22FE5}", - "\u3A14", - "\u{22BA6}", - "\u{22E6C}", - "\u6502", - "\u38A3", - "\u64CF", - "\u62AC", - "\u{22B4F}", - "\u6417", - "\u6505", - "\u64B9", - "\u7234", - "\u64E5", - "\u3A5C", - "\u6535", - "\uFA41", - "\u654E", - "\u{20B56}", - "\u3A9F", - "\u6578", - "\u3AA3", - "\u641E", - "\u{22FEB}", - "\u{22FEA}", - "\u9F4A", - "\u9F4B", - "\u8FAC", - "\u9159", - "\u387F", - "\u{28A1E}", - "\u65B7", - "\u65B5", - "\u{20807}", - "\u6275", - "\u3AC4", - "\u65DC", - "\u{230FC}", - "\uF983", - "\u65BE", - "\u342C", - "\u7C4F", - "\u7C31", - "\u65D9", - "\u65E3", - "\u820A", - "\u3AD6", - "\u{20914}", - "\u663B", - "\u{23166}", - "\u66FB", - "\u662C", - "\u66D0", - "\u76A8", - "\u668E", - "\u65FE", - "\u8405", - "\u6630", - "\u{231BB}", - "\u66B1", - "\u661E", - "\u665D", - "\u65F9", - "\u65F6", - "\u6644", - "\u6649", - "\u66EC", - "\u6663", - "\u665A", - "\u669C", - "\u6673", - "\uFA12", - "\u{231F5}", - "\u66C9", - "\u714A", - "\uFA43", - "\u66C6", - "\u3B25", - "\u663F", - "\u3B22", - "\u66F5", - "\u3A85", - "\u66FA", - "\u{23358}", - "\u3B05", - "\u66FE", - "\u3B31", - "\u51A3", - "\u3761", - "\u2F49", - "\uF929", - "\u6735", - "\u44B3", - "\u{233D3}", - "\u687F", - "\u6766", - "\u90A8", - "\u{233D0}", - "\u689D", - "\u4F86", - "\u{233D5}", - "\u76C3", - "\u686E", - "\u3B8E", - "\u67A9", - "\u6780", - "\u67D7", - "\u68A5", - "\u3BA4", - "\u{233DD}", - "\u685D", - "\u6A1E", - "\u6827", - "\u6822", - "\u531B", - "\u3B88", - "\u687A", - "\u6801", - "\u6805", - "\u67B4", - "\u67E5", - "\u67F9", - "\u6764", - "\u{2371C}", - "\u69AE", - "\u3B9A", - "\u{2F8E5}", - "\u630D", - "\u{23465}", - "\u3BB5", - "\u6849", - "\u6852", - "\u{2F8E1}", - "\u3BAE", - "\u6AFB", - "\u68E7", - "\uFA44", - "\u674D", - "\u699F", - "\u6800", - "\u68C3", - "\u68DE", - "\u68CA", - "\u6926", - "\u6816", - "\u69E8", - "\u3BF0", - "\u6AA2", - "\u3B68", - "\u68D5", - "\u6A62", - "\u678F", - "\u67DF", - "\u6A9D", - "\u67E0", - "\u6A13", - "\u6A02", - "\u{24B6F}", - "\u69EA", - "\u6A12", - "\u6AC1", - "\u6A4A", - "\u{23581}", - "\u69C0", - "\u67C8", - "\u6A23", - "\u69C7", - "\u3BCD", - "\u6899", - "\u6922", - "\u7CE2", - "\u6A45", - "\u6B0A", - "\u6A6B", - "\u6A8F", - "\u{235F3}", - "\u58AB", - "\u7F47", - "\u{234E4}", - "\u69D7", - "\u{2363A}", - "\u6A7A", - "\u69D6", - "\u6A5C", - "\u6AFD", - "\u6863", - "\u6A98", - "\u8617", - "\u6867", - "\u6A2F", - "\u68BC", - "\u68B9", - "\u{2F8ED}", - "\u6AAA", - "\u67A6", - "\u8616", - "\u69DE", - "\u3C0D", - "\u6B1E", - "\uF91D", - "\uFA14", - "\u683E", - "\u3C16", - "\u{2383D}", - "\u7F3A", - "\u6B50", - "\u6B58", - "\u3C41", - "\u6B35", - "\u8B0C", - "\u6B61", - "\u{2F8F1}", - "\u6B65", - "\u9F52", - "\u6B72", - "\u6B77", - "\u6B7A", - "\u6B81", - "\u6B7E", - "\u{239EB}", - "\u6B98", - "\u6BB1", - "\u6BC6", - "\uF970", - "\u6BBC", - "\u6BC1", - "\u6BCF", - "\u6BD7", - "\u{23B08}", - "\u6BEE", - "\u6318", - "\u{2A176}", - "\u6BE1", - "\u6C0A", - "\u5F16", - "\u6C23", - "\u{23C66}", - "\u51B0", - "\u6C59", - "\u6D3F", - "\u6C61", - "\u6C73", - "\u51B3", - "\u{23D7D}", - "\u6C89", - "\u51B2", - "\u6C92", - "\u6FA4", - "\u6CB2", - "\u{23D7A}", - "\u3CC2", - "\u{2F8FC}", - "\u51B5", - "\uFA71", - "\u{23CD8}", - "\u6D24", - "\u704B", - "\u3CD2", - "\u3D11", - "\u57FF", - "\u{23CFE}", - "\u51AD", - "\u3917", - "\u{23E01}", - "\u{23D20}", - "\uFA97", - "\u6DE8", - "\u6DFA", - "\u6DDB", - "\u6FF1", - "\u6FA3", - "\u{2F903}", - "\uFA45", - "\u6D43", - "\u51C3", - "\u{23D40}", - "\u3CD9", - "\u6DDA", - "\u{23E62}", - "\u51C9", - "\u3CC3", - "\u3D31", - "\u6E7B", - "\u6E15", - "\u6E0A", - "\u6DF8", - "\u6E34", - "\u6FDF", - "\u6D89", - "\u6F81", - "\u6EAA", - "\uFA46", - "\u51CF", - "\u6EAB", - "\u3CFA", - "\u7063", - "\u6FD5", - "\u6EFF", - "\u51D6", - "\u6F91", - "\u{23E08}", - "\u9736", - "\u{2F90B}", - "\u6FDA", - "\u3D1E", - "\u7027", - "\u6EEF", - "\u6D81", - "\u6E17", - "\u6EDA", - "\u67D2", - "\u3BC3", - "\u5C5A", - "\u{2414D}", - "\uFA47", - "\u6E8C", - "\u6F5B", - "\u6F40", - "\u7047", - "\u{2F90F}", - "\u6F98", - "\u6F82", - "\u3D4E", - "\u7900", - "\u6D4A", - "\u6D9B", - "\u{23F4A}", - "\u6CAA", - "\u6D9C", - "\u6CFB", - "\u56A0", - "\uFA9B", - "\u6F74", - "\u7028", - "\u3CFD", - "\u6F45", - "\u{240A2}", - "\u{24096}", - "\u3D9A", - "\u704E", - "\u7054", - "\u71C8", - "\u70D6", - "\u707E", - "\u7210", - "\u70F1", - "\u70B2", - "\u9EDE", - "\u7232", - "\u3DED", - "\u71A2", - "\u71D3", - "\u7114", - "\u71C4", - "\u3DD4", - "\u7196", - "\u71D2", - "\uFA48", - "\u71FB", - "\u7155", - "\u{243BC}", - "\u70ED", - "\u7215", - "\u70EC", - "\u3DB3", - "\u71D7", - "\u7224", - "\u{24553}", - "\u5C13", - "\u5C12", - "\u58BB", - "\u7257", - "\u2F5B", - "\u7A82", - "\u7281", - "\u72A7", - "\u3E3F", - "\u72C0", - "\u8C7E", - "\u3E83", - "\u7368", - "\u72F9", - "\u8C8D", - "\u475C", - "\u8C8E", - "\u475D", - "\u7375", - "\uFA16", - "\u8C93", - "\u737B", - "\u3E85", - "\u7328", - "\u{2122D}", - "\u8C98", - "\u4764", - "\u7378", - "\u{248D0}", - "\u3E9A", - "\u7806", - "\u73CF", - "\u739F", - "\u7449", - "\u40C9", - "\u73CE", - "\u73CE", - "\u{2493D}", - "\u{2493B}", - "\u746F", - "\uFA4A", - "\u73E1", - "\u7439", - "\u73D0", - "\u8750", - "\u73B3", - "\u74A2", - "\u{24A0F}", - "\u74CC", - "\u7464", - "\u74C8", - "\u74BF", - "\u73F1", - "\u74C9", - "\u{24B26}", - "\u7501", - "\u7506", - "\u{26231}", - "\u{24B56}", - "\u74EF", - "\u4C1D", - "\u7F4B", - "\u751B", - "\u7522", - "\u{24BF3}", - "\u753C", - "\u756B", - "\u7541", - "\u583A", - "\u754D", - "\u{28EAC}", - "\u753D", - "\u{24C1D}", - "\u7571", - "\u7544", - "\u{20AFB}", - "\u3F57", - "\u{24C16}", - "\u7546", - "\u7552", - "\u755E", - "\u756E", - "\u7567", - "\u756D", - "\u7572", - "\u{2F938}", - "\u758A", - "\u757A", - "\u58C3", - "\u7585", - "\u7574", - "\u8E08", - "\u47FD", - "\u{24D21}", - "\u{24E8B}", - "\u{24E6A}", - "\u7626", - "\u7661", - "\u75B4", - "\u75A9", - "\u{28ECA}", - "\u7645", - "\u7618", - "\u81C3", - "\u7655", - "\u767C", - "\u688D", - "\u7682", - "\u6648", - "\u768B", - "\u81EF", - "\u6665", - "\u6EB0", - "\u76A1", - "\u76A5", - "\u66A4", - "\u66AD", - "\u9764", - "\u76B9", - "\u{2F93D}", - "\u{25044}", - "\uFA17", - "\u76C7", - "\u3F1C", - "\u76DC", - "\u9186", - "\u{2F941}", - "\u{2515A}", - "\u{25122}", - "\u7E23", - "\u771E", - "\u7726", - "\u{251A2}", - "\u7764", - "\u{251A9}", - "\u89A9", - "\u{2521F}", - "\u7758", - "\u{2521E}", - "\u77AA", - "\u{252BA}", - "\u77D9", - "\u{251E5}", - "\u77A9", - "\u{229A7}", - "\u{28968}", - "\u7B36", - "\u77E4", - "\u{22392}", - "\u78C7", - "\u784F", - "\u788E", - "\u78AA", - "\u7851", - "\u57C6", - "\u77F4", - "\u{2548E}", - "\uFA4B", - "\u{2550E}", - "\u76CC", - "\u78B5", - "\u7459", - "\u78BB", - "\u{2544A}", - "\u{25535}", - "\u589D", - "\u783F", - "\u783A", - "\u79AE", - "\uFA4C", - "\u79A9", - "\uFA4E", - "\uFA4D", - "\uFA4F", - "\u{2562C}", - "\uFA50", - "\uFA51", - "\uFA19", - "\uFA1A", - "\u{2442B}", - "\u797F", - "\u79AA", - "\uFA52", - "\uFA53", - "\uFA1B", - "\u7962", - "\u7977", - "\u79CC", - "\u7A50", - "\u9F9D", - "\u{2A6C1}", - "\u417A", - "\u7C83", - "\u7955", - "\u4B34", - "\u{25771}", - "\u7A31", - "\u79C6", - "\u7A05", - "\u7A3A", - "\u7A49", - "\u7980", - "\u7A3B", - "\u799D", - "\u{25874}", - "\u85C1", - "\u7A3E", - "\u85F3", - "\uFA54", - "\u7A57", - "\u9834", - "\u7A69", - "\u7A70", - "\u9631", - "\uFA55", - "\u7ACA", - "\u7A97", - "\u7ABB", - "\u41AB", - "\u7255", - "\u6F25", - "\u7AC6", - "\u7AB0", - "\u7A91", - "\u95DA", - "\u376B", - "\u7AC3", - "\u{259C4}", - "\u41B4", - "\u7076", - "\u9F8D", - "\u8C4E", - "\u8011", - "\u7AF8", - "\u{25AE1}", - "\u{26292}", - "\u7B14", - "\u7B3B", - "\u8355", - "\u89D4", - "\u7B0B", - "\u6830", - "\u7B7A", - "\u7B69", - "\u7B04", - "\u8417", - "\u724B", - "\u3B8D", - "\u41F3", - "\u7B5D", - "\u7958", - "\u7B9F", - "\u5284", - "\uFA56", - "\u3C0F", - "\u{25D61}", - "\u7B71", - "\u7B7F", - "\u7C12", - "\u450D", - "\u7B86", - "\u7C6D", - "\u7B8E", - "\u4DB5", - "\u{23A98}", - "\u7B93", - "\u7BAA", - "\u376C", - "\u{25CD1}", - "\u{25AE3}", - "\u7B79", - "\u7C40", - "\u4264", - "\u7BED", - "\u7C56", - "\u7BD7", - "\u7CB9", - "\u9ECF", - "\u8085", - "\u7A09", - "\u79D4", - "\u7CC9", - "\uFA1D", - "\u7CDD", - "\u{29750}", - "\u993B", - "\uFA03", - "\u7A45", - "\u7CAE", - "\u7A2C", - "\u7A64", - "\u7CF5", - "\u42AA", - "\u7C74", - "\u7C9C", - "\u7D72", - "\u7D8B", - "\u5E0B", - "\u7D4D", - "\u7D25", - "\u7E8D", - "\u7D6B", - "\u7D4F", - "\u7DE4", - "\u7D93", - "\u7E27", - "\u{2F96C}", - "\u7E6A", - "\u7D55", - "\u7E7C", - "\u7E8C", - "\u7D23", - "\u7DDC", - "\u{2F96E}", - "\u7E3D", - "\u7DA0", - "\u7DD6", - "\u7DAB", - "\u7DCD", - "\u7D5A", - "\uFA57", - "\u7DE3", - "\u7E69", - "\uFA58", - "\u7DFC", - "\u7E31", - "\u99BD", - "\uFA59", - "\u7E66", - "\u7E96", - "\u{26017}", - "\u7E4D", - "\u7D89", - "\u7E4B", - "\u7DD5", - "\u7D4B", - "\u7D56", - "\u7E92", - "\u42C6", - "\u42DD", - "\u7E89", - "\u{220F6}", - "\u432B", - "\u7F50", - "\u7516", - "\u{26286}", - "\u4207", - "\u8FA0", - "\u7F78", - "\uFA5A", - "\u8989", - "\u898A", - "\u{2634C}", - "\u7F97", - "\u7F90", - "\u{23D0E}", - "\u7FA3", - "\u7FAE", - "\uFA1E", - "\u{26469}", - "\u7FF1", - "\uFA5B", - "\u8008", - "\u800A", - "\u43B1", - "\u3B52", - "\u69C8", - "\u8043", - "\u8EAD", - "\u{2657E}", - "\u{25E62}", - "\u8070", - "\u8068", - "\u807D", - "\u8EC4", - "\u5B8D", - "\u808E", - "\u{2335F}", - "\u53B7", - "\u6BD3", - "\u991A", - "\u4F37", - "\u81BD", - "\u80A7", - "\u81D9", - "\u80F7", - "\u8103", - "\u{266B0}", - "\u43EE", - "\u8173", - "\u{2667E}", - "\u812B", - "\u8166", - "\u80FC", - "\u{22BF2}", - "\u80DC", - "\u8193", - "\u9AC8", - "\u80A4", - "\u5380", - "\u{27E10}", - "\u{26878}", - "\u994D", - "\u810D", - "\u9C60", - "\u808A", - "\u{2671D}", - "\u9AD5", - "\u81DF", - "\uFA1F", - "\u81C8", - "\u5367", - "\uFA5C", - "\u{26936}", - "\u3B30", - "\u{2695B}", - "\u3AEA", - "\u{231C3}", - "\u8204", - "\u{29346}", - "\u820D", - "\u445B", - "\u8213", - "\u8216", - "\u4468", - "\u8229", - "\u8263", - "\u822E", - "\u{250E9}", - "\u56CF", - "\u8277", - "\u{26AFF}", - "\u{25755}", - "\u8606", - "\u85DD", - "\u84AD", - "\u{2F995}", - "\u83ED", - "\u82E2", - "\u5040", - "\u8393", - "\u8396", - "\u8354", - "\u{2F999}", - "\u8395", - "\u8346", - "\u838A", - "\u85E1", - "\u849E", - "\u861C", - "\u8458", - "\u84F3", - "\uFAB4", - "\u82FD", - "\u844A", - "\u8445", - "\u83B1", - "\u84F1", - "\u8610", - "\u857F", - "\u85FC", - "\u8330", - "\u855A", - "\uFA5F", - "\u585F", - "\u8525", - "\u7A38", - "\u8462", - "\u76D6", - "\u7C11", - "\u7C14", - "\u84DA", - "\uF999", - "\u8482", - "\u8593", - "\u848B", - "\u{26E65}", - "\u4543", - "\u{28F32}", - "\u85CF", - "\u854B", - "\u8602", - "\u862F", - "\u4525", - "\u{270CE}", - "\u856F", - "\u85B0", - "\u85E5", - "\u8415", - "\u{27080}", - "\u85AE", - "\u8613", - "\u7A4C", - "\u85B2", - "\uF91F", - "\u4E55", - "\u865B", - "\uF936", - "\u87F2", - "\u866C", - "\u8771", - "\u8689", - "\u87C1", - "\u8739", - "\u872F", - "\u87BE", - "\u8836", - "\u8719", - "\u8675", - "\u{2726E}", - "\u87A2", - "\u8698", - "\u86D5", - "\u{27449}", - "\u4D77", - "\u9F03", - "\u883B", - "\u45B8", - "\u882D", - "\u8704", - "\u{272CB}", - "\u8782", - "\u{27312}", - "\u45A4", - "\u732C", - "\u87CA", - "\u8671", - "\u5F72", - "\u877C", - "\u87C6", - "\u8749", - "\u880F", - "\u8798", - "\u877F", - "\u8761", - "\u874B", - "\u45F6", - "\u86CE", - "\u8807", - "\u8827", - "\u8799", - "\u8842", - "\u773E", - "\u885E", - "\u889E", - "\u88B5", - "\u5E12", - "\u88AE", - "\u889F", - "\u7D5D", - "\u8932", - "\u88CC", - "\u{2600C}", - "\u88DD", - "\u892D", - "\u88E1", - "\u88E0", - "\u5E2C", - "\u88F5", - "\u88F6", - "\u8EB6", - "\u88E9", - "\u890F", - "\uFA60", - "\u8943", - "\u7DE5", - "\u342E", - "\u891D", - "\u{2776C}", - "\u4633", - "\u7E7F", - "\u97C8", - "\u97E4", - "\u{2770E}", - "\u4093", - "\u8994", - "\uFA61", - "\u89BA", - "\u89BD", - "\u89B7", - "\u89C0", - "\u89E7", - "\u89F5", - "\u89F8", - "\u89D3", - "\u{24660}", - "\u89D7", - "\u89FD", - "\u{27A84}", - "\u8B4C", - "\u8B6F", - "\u{2799C}", - "\u8B49", - "\u8A3F", - "\u5467", - "\u548F", - "\u8A3D", - "\u46E1", - "\u8B7D", - "\u8AAA", - "\u8B80", - "\u{279FC}", - "\u8B87", - "\u8B8D", - "\u{2F9D0}", - "\uFA22", - "\uFA62", - "\u8B20", - "\u{2272F}", - "\u8B81", - "\u{27985}", - "\u8B38", - "\uFA63", - "\u8B5B", - "\u8B93", - "\u8B2D", - "\u8B9A", - "\u91BC", - "\u8B8E", - "\u471B", - "\u8B4B", - "\u471F", - "\u{27BAF}", - "\u{27BBE}", - "\u78CE", - "\u{27BC7}", - "\u8C50", - "\u{27BE1}", - "\u8C58", - "\u3E60", - "\u{27C3C}", - "\u{27C5A}", - "\u730F", - "\u7333", - "\u72B2", - "\u72B4", - "\u9F26", - "\u72E2", - "\u8C83", - "\u4AC9", - "\u7683", - "\u34B5", - "\u8C7C", - "\u86FD", - "\u621D", - "\u477F", - "\uFA64", - "\u8CD2", - "\u{27D9B}", - "\u8D0A", - "\u8D12", - "\u8CCE", - "\u8CAD", - "\u{27E16}", - "\u{27DE4}", - "\uFA65", - "\u8D17", - "\u{297CB}", - "\u8CEE", - "\u8CCD", - "\u7200", - "\u4793", - "\u9833", - "\u8D71", - "\u{27E86}", - "\u8D82", - "\u8DA6", - "\u4816", - "\u47E6", - "\u8E60", - "\u47A8", - "\u8E5E", - "\u8E10", - "\u8E34", - "\u{2801A}", - "\u{28330}", - "\u8E64", - "\u8E4F", - "\u{280BB}", - "\u{2032B}", - "\u7C75", - "\u8E75", - "\u8E77", - "\u8E79", - "\u8DAE", - "\u8E83", - "\u4827", - "\u58B8", - "\u8E0C", - "\u{281E0}", - "\u8EAA", - "\u8E78", - "\u8E6E", - "\u8EB3", - "\u8EAF", - "\u4844", - "\u{208DE}", - "\u8EF6", - "\u8F2D", - "\u8F49", - "\u{282CF}", - "\u8F15", - "\u8F19", - "\u8F0C", - "\u8F3A", - "\u8EF0", - "\u{2F9DF}", - "\u8F5D", - "\u8F00", - "\u8EE3", - "\u484E", - "\u{2840C}", - "\u8FAD", - "\u908A", - "\u8FC6", - "\u9008", - "\u489B", - "\u5EFC", - "\u905E", - "\u9037", - "\u8FD9", - "\uF99A", - "\u8FF8", - "\uFA67", - "\u9072", - "\u900E", - "\u9059", - "\uF9C3", - "\u{27F8D}", - "\u8FE9", - "\u{28637}", - "\u536D", - "\u90C9", - "\u90DE", - "\u90C4", - "\u90F6", - "\u9139", - "\u9115", - "\uFA26", - "\u48B5", - "\u9137", - "\u9189", - "\u48F1", - "\u918B", - "\u9167", - "\u91BB", - "\u48E9", - "\u9195", - "\u9B57", - "\u91A4", - "\u9197", - "\u91C0", - "\u91C4", - "\u91CB", - "\u57DC", - "\u58C4", - "\u3652", - "\u{2131B}", - "\u91E1", - "\u{28946}", - "\u92B2", - "\u9435", - "\u9247", - "\u{2896B}", - "\u9206", - "\u{2504A}", - "\u76CB", - "\u7F3D", - "\u920E", - "\u945B", - "\u{2F9EA}", - "\u5563", - "\u3605", - "\u8858", - "\u9322", - "\u93E5", - "\u93FD", - "\u{28987}", - "\u93E0", - "\u92B3", - "\u9444", - "\u934A", - "\u9304", - "\u9441", - "\u936B", - "\u93AD", - "\u495D", - "\u{28A99}", - "\u92BF", - "\u{28A71}", - "\u{28A50}", - "\u93E9", - "\u{28ACD}", - "\u93B8", - "\u922C", - "\u9373", - "\u9452", - "\u{28BEF}", - "\u4BBD", - "\u9229", - "\u{28ADD}", - "\u945A", - "\u9578", - "\u9587", - "\u95A0", - "\u9592", - "\u95DC", - "\u95B1", - "\u9586", - "\u95B4", - "\u6FF6", - "\u{24103}", - "\u9B2A", - "\u9641", - "\u9638", - "\u{28E5F}", - "\u3644", - "\u5F8F", - "\u9677", - "\u9634", - "\u9682", - "\u96AA", - "\u9633", - "\uF9DC", - "\u5826", - "\u96A8", - "\u{28EF6}", - "\u96B1", - "\u{28EEB}", - "\u96B8", - "\u5BC9", - "\u9CEB", - "\u9D08", - "\u49FA", - "\u96E7", - "\u4EBC", - "\u{20371}", - "\u96BD", - "\u4CC4", - "\u96DD", - "\u96DC", - "\u9D70", - "\u{28FFD}", - "\u9DB5", - "\uFA68", - "\u9741", - "\u9748", - "\u9721", - "\u973B", - "\u9751", - "\uFA1C", - "\u975C", - "\u9763", - "\u976D", - "\u97CC", - "\u97BE", - "\u97B5", - "\u978C", - "\u97D2", - "\u6BF1", - "\u{25DDA}", - "\u979F", - "\u4A8D", - "\u97B2", - "\u97B8", - "\u97EE", - "\u2FB3", - "\u97F5", - "\uFA69", - "\u{268DD}", - "\u9825", - "\u982C", - "\u981A", - "\uFA6A", - "\u8CF4", - "\u9839", - "\u983A", - "\u816E", - "\u984F", - "\u986F", - "\u985B", - "\uF9D0", - "\u51EE", - "\u51EC", - "\u98CC", - "\u98C3", - "\u98C7", - "\u98C8", - "\u98B7", - "\u2FB7", - "\u98F1", - "\u98E1", - "\uFA2A", - "\u98EE", - "\uFA2B", - "\u9920", - "\u{2970B}", - "\u995F", - "\u6E4C", - "\u4B3B", - "\uFA2C", - "\u{296A9}", - "\u7CC7", - "\u9959", - "\u{2A369}", - "\u4275", - "\u7CE6", - "\u{29719}", - "\u98E6", - "\u805D", - "\u99B1", - "\u9A5B", - "\u9A45", - "\u99DE", - "\u99AF", - "\u99E2", - "\u9A37", - "\u9A57", - "\u96B2", - "\u9A58", - "\u4BAF", - "\u9A2E", - "\u9A28", - "\u99BF", - "\u9AD3", - "\u9AD9", - "\u9AE0", - "\u9AE8", - "\u9AEF", - "\u9AEE", - "\u983E", - "\u9B02", - "\u9AE9", - "\u3CB1", - "\u9599", - "\u4C17", - "\u49B0", - "\u6B1D", - "\u{23878}", - "\u4C1B", - "\u4C1F", - "\u9B3D", - "\u{29D4B}", - "\u86AB", - "\u{29DFA}", - "\u4C48", - "\u9BD8", - "\u9BCB", - "\u9B66", - "\u9C0D", - "\u9C77", - "\u{29EC4}", - "\u9C1B", - "\u9BF5", - "\u9C70", - "\u9B86", - "\u9BD7", - "\u9B72", - "\u9CEC", - "\u9D02", - "\u{29FCE}", - "\u9D76", - "\u9E1C", - "\u9D44", - "\u{28FA6}", - "\u9D2A", - "\u9DAA", - "\u9D5E", - "\u4CC7", - "\u4A04", - "\u49FF", - "\u{28FE1}", - "\u9DC4", - "\u9D7E", - "\u9D2C", - "\u9E0E", - "\u974D", - "\u974E", - "\u974F", - "\uFA2D", - "\u{2A0F9}", - "\u9DBF", - "\u9DCF", - "\u9D0E", - "\u96DA", - "\u918E", - "\u9E78", - "\u9E7B", - "\u{22218}", - "\u9E95", - "\u4D21", - "\u7350", - "\u9E81", - "\u9EA5", - "\u{2A38C}", - "\u9EB9", - "\u9EAF", - "\u9EB5", - "\u2FC7", - "\u9EBD", - "\u9EC3", - "\u9ED1", - "\u9ED8", - "\u9C32", - "\u9C49", - "\u{2A502}", - "\u{231C4}", - "\u76B7", - "\u{2A535}", - "\u4A7F", - "\u9F21", - "\u9F39", - "\u2FD0", - "\u97F2", - "\u8640", - "\u4AA1", - "\u9F53", - "\u{2A5F1}", - "\u9F61", - "\u{2A602}", - "\u56D3", - "\u{2A61A}", - "\u816D", - "\u8612", - "\u3406", - "\u53F1", - "\u{212D7}", - "\u8641", - "\u5914", - "\u5B34", - "\u{21894}", - "\u9FA5", - "\u{28BC1}", - "\u9724", - "\u993E" -]; - -// node_modules/kanji-processor/dist/index.js -var KanjiProcessor = class { - constructor() { - this.mappings = full_list_default; - const regexString = itaiji_list_default.join(""); - this.regex = new RegExp(`[${regexString}]`, "g"); - this.conversionMap = {}; - for (const mapping of this.mappings) { - for (const itaiji of mapping.itaiji) { - this.conversionMap[itaiji] = mapping.oyaji; - } - } - } - convertToParent(text) { - return text.replace(this.regex, (match) => this.conversionMap[match] || match); - } -}; -var defaultProcessor = new KanjiProcessor(); -function convertVariants(text) { - return defaultProcessor.convertToParent(text); -} -export { - convertVariants, - defaultProcessor -}; -//# sourceMappingURL=kanji-processor.js.map diff --git a/vendor/yomitan/lib/kanji-processor.js.map b/vendor/yomitan/lib/kanji-processor.js.map deleted file mode 100644 index 073bd0df..00000000 --- a/vendor/yomitan/lib/kanji-processor.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/kanji-processor/dist/full_list.json", "../../node_modules/kanji-processor/dist/itaiji_list.json", "../../node_modules/kanji-processor/dist/index.js"], - "sourcesContent": ["[\r\n {\r\n \"oyaji\": \"\u3FC9\",\r\n \"itaiji\": [\r\n \"\u3FD7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u460C\",\r\n \"itaiji\": [\r\n \"\uD85C\uDFFE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u49E2\",\r\n \"itaiji\": [\r\n \"\uD863\uDE1F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E00\",\r\n \"itaiji\": [\r\n \"\u5F0C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E07\",\r\n \"itaiji\": [\r\n \"\u842C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E08\",\r\n \"itaiji\": [\r\n \"\uD840\uDC0B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E09\",\r\n \"itaiji\": [\r\n \"\u5F0E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E0E\",\r\n \"itaiji\": [\r\n \"\u8207\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E11\",\r\n \"itaiji\": [\r\n \"\u4E12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E16\",\r\n \"itaiji\": [\r\n \"\u4E17\",\r\n \"\u534B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E18\",\r\n \"itaiji\": [\r\n \"\u90B1\",\r\n \"\u3400\",\r\n \"\u5775\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E21\",\r\n \"itaiji\": [\r\n \"\u5169\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E26\",\r\n \"itaiji\": [\r\n \"\u7ADD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E31\",\r\n \"itaiji\": [\r\n \"\u535D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E45\",\r\n \"itaiji\": [\r\n \"\u4E46\",\r\n \"\u9579\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E57\",\r\n \"itaiji\": [\r\n \"\u4E58\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E71\",\r\n \"itaiji\": [\r\n \"\u4E82\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E7E\",\r\n \"itaiji\": [\r\n \"\u4E79\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E80\",\r\n \"itaiji\": [\r\n \"\u9F9C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E88\",\r\n \"itaiji\": [\r\n \"\u8C6B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E89\",\r\n \"itaiji\": [\r\n \"\u722D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E8B\",\r\n \"itaiji\": [\r\n \"\u4E8A\",\r\n \"\u53D3\",\r\n \"\u355D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E8C\",\r\n \"itaiji\": [\r\n \"\u5F0D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E8E\",\r\n \"itaiji\": [\r\n \"\u4E8F\",\r\n \"\u4E90\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E9C\",\r\n \"itaiji\": [\r\n \"\u4E9E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4E9F\",\r\n \"itaiji\": [\r\n \"\u710F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EA8\",\r\n \"itaiji\": [\r\n \"\u4EAF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EAC\",\r\n \"itaiji\": [\r\n \"\u4EB0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EAD\",\r\n \"itaiji\": [\r\n \"\uD840\uDD58\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EAE\",\r\n \"itaiji\": [\r\n \"\uD840\uDD59\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EBA\",\r\n \"itaiji\": [\r\n \"\u4EBB\",\r\n \"\uD840\uDDA2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4ECA\",\r\n \"itaiji\": [\r\n \"\u4ED0\",\r\n \"\uD86D\uDF46\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4ECF\",\r\n \"itaiji\": [\r\n \"\u4F5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EDE\",\r\n \"itaiji\": [\r\n \"\u4EED\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EE5\",\r\n \"itaiji\": [\r\n \"\u382F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4EEE\",\r\n \"itaiji\": [\r\n \"\u5047\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F1A\",\r\n \"itaiji\": [\r\n \"\u6703\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F1D\",\r\n \"itaiji\": [\r\n \"\u50B3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F3C\",\r\n \"itaiji\": [\r\n \"\u4F40\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F47\",\r\n \"itaiji\": [\r\n \"\u7ADA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F53\",\r\n \"itaiji\": [\r\n \"\u9AD4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F59\",\r\n \"itaiji\": [\r\n \"\u9918\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F5C\",\r\n \"itaiji\": [\r\n \"\u505A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F5E\",\r\n \"itaiji\": [\r\n \"\u4FAB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F69\",\r\n \"itaiji\": [\r\n \"\u73EE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F75\",\r\n \"itaiji\": [\r\n \"\u5002\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F78\",\r\n \"itaiji\": [\r\n \"\uD840\uDE32\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F7F\",\r\n \"itaiji\": [\r\n \"\uD840\uDE55\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4F83\",\r\n \"itaiji\": [\r\n \"\uD840\uDE09\",\r\n \"\u5058\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FA1\",\r\n \"itaiji\": [\r\n \"\u50F9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FAE\",\r\n \"itaiji\": [\r\n \"\uFA30\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FAF\",\r\n \"itaiji\": [\r\n \"\u77E6\",\r\n \"\uD854\uDFA6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FBF\",\r\n \"itaiji\": [\r\n \"\uD840\uDEB3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FCE\",\r\n \"itaiji\": [\r\n \"\u723C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FD0\",\r\n \"itaiji\": [\r\n \"\u60A7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FDF\",\r\n \"itaiji\": [\r\n \"\u7AE2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FE0\",\r\n \"itaiji\": [\r\n \"\u4FA0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FE3\",\r\n \"itaiji\": [\r\n \"\u3468\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u4FF1\",\r\n \"itaiji\": [\r\n \"\u5036\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5005\",\r\n \"itaiji\": [\r\n \"\u4F1C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5006\",\r\n \"itaiji\": [\r\n \"\uD840\uDE13\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u500D\",\r\n \"itaiji\": [\r\n \"\u4FD6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u500F\",\r\n \"itaiji\": [\r\n \"\u5010\",\r\n \"\u7102\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5019\",\r\n \"itaiji\": [\r\n \"\uD840\uDEB1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u501A\",\r\n \"itaiji\": [\r\n \"\uD840\uDEE3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5026\",\r\n \"itaiji\": [\r\n \"\u52CC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5039\",\r\n \"itaiji\": [\r\n \"\u5109\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5065\",\r\n \"itaiji\": [\r\n \"\u5FA4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u506C\",\r\n \"itaiji\": [\r\n \"\u500A\",\r\n \"\u50AF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5078\",\r\n \"itaiji\": [\r\n \"\u5077\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u507D\",\r\n \"itaiji\": [\r\n \"\u50DE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5098\",\r\n \"itaiji\": [\r\n \"\uD840\uDF58\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5099\",\r\n \"itaiji\": [\r\n \"\u50C3\",\r\n \"\u5079\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u509A\",\r\n \"itaiji\": [\r\n \"\u4FF2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u50B2\",\r\n \"itaiji\": [\r\n \"\u6160\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u50C2\",\r\n \"itaiji\": [\r\n \"\u507B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u50C9\",\r\n \"itaiji\": [\r\n \"\u3452\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u50CF\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC0B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u50D5\",\r\n \"itaiji\": [\r\n \"\u3492\",\r\n \"\u4451\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u50E7\",\r\n \"itaiji\": [\r\n \"\uFA31\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u50ED\",\r\n \"itaiji\": [\r\n \"\u50E3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5101\",\r\n \"itaiji\": [\r\n \"\u349E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5114\",\r\n \"itaiji\": [\r\n \"\u4FE6\",\r\n \"\uD840\uDF7B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5115\",\r\n \"itaiji\": [\r\n \"\u346A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5118\",\r\n \"itaiji\": [\r\n \"\u4FAD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u511A\",\r\n \"itaiji\": [\r\n \"\uD841\uDC27\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u511E\",\r\n \"itaiji\": [\r\n \"\u4F60\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u513B\",\r\n \"itaiji\": [\r\n \"\u50A5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u513C\",\r\n \"itaiji\": [\r\n \"\uD841\uDC4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5145\",\r\n \"itaiji\": [\r\n \"\uFA74\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5146\",\r\n \"itaiji\": [\r\n \"\uD842\uDDDE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5149\",\r\n \"itaiji\": [\r\n \"\u706E\",\r\n \"\u7097\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u514C\",\r\n \"itaiji\": [\r\n \"\u514A\",\r\n \"\u5151\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u514D\",\r\n \"itaiji\": [\r\n \"\uFA32\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u514E\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC0F\",\r\n \"\u5154\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5150\",\r\n \"itaiji\": [\r\n \"\u5152\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5155\",\r\n \"itaiji\": [\r\n \"\uD85F\uDC3D\",\r\n \"\uD850\uDE61\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5157\",\r\n \"itaiji\": [\r\n \"\u5156\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u515A\",\r\n \"itaiji\": [\r\n \"\u9EE8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u515C\",\r\n \"itaiji\": [\r\n \"\u5160\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u516A\",\r\n \"itaiji\": [\r\n \"\u4FDE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5180\",\r\n \"itaiji\": [\r\n \"\uFA75\",\r\n \"\u517E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5182\",\r\n \"itaiji\": [\r\n \"\u518B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5185\",\r\n \"itaiji\": [\r\n \"\u5167\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5186\",\r\n \"itaiji\": [\r\n \"\u5713\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5189\",\r\n \"itaiji\": [\r\n \"\u5184\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u518A\",\r\n \"itaiji\": [\r\n \"\u518C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u518F\",\r\n \"itaiji\": [\r\n \"\u56E7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5197\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC17\",\r\n \"\u5B82\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5199\",\r\n \"itaiji\": [\r\n \"\u5BEB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51A2\",\r\n \"itaiji\": [\r\n \"\uD842\uDCE5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51A4\",\r\n \"itaiji\": [\r\n \"\u5BC3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51A5\",\r\n \"itaiji\": [\r\n \"\u3760\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51AA\",\r\n \"itaiji\": [\r\n \"\u7F83\",\r\n \"\u5E42\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51AC\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC1A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51B1\",\r\n \"itaiji\": [\r\n \"\uD841\uDDB1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51C4\",\r\n \"itaiji\": [\r\n \"\u6DD2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51DC\",\r\n \"itaiji\": [\r\n \"\u51DB\",\r\n \"\uD841\uDE21\",\r\n \"\u6F9F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51E6\",\r\n \"itaiji\": [\r\n \"\u8655\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51ED\",\r\n \"itaiji\": [\r\n \"\u51F4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51F6\",\r\n \"itaiji\": [\r\n \"\uD84E\uDDD1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u51FD\",\r\n \"itaiji\": [\r\n \"\u51FE\",\r\n \"\u5705\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5200\",\r\n \"itaiji\": [\r\n \"\u91D6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5208\",\r\n \"itaiji\": [\r\n \"\u82C5\",\r\n \"\uD841\uDEC4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u520A\",\r\n \"itaiji\": [\r\n \"\u520B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5211\",\r\n \"itaiji\": [\r\n \"\uD841\uDEEC\",\r\n \"\u34DD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5213\",\r\n \"itaiji\": [\r\n \"\u3774\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5220\",\r\n \"itaiji\": [\r\n \"\u522A\",\r\n \"\uD841\uDF02\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5225\",\r\n \"itaiji\": [\r\n \"\uD841\uDEF0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5229\",\r\n \"itaiji\": [\r\n \"\uD855\uDF64\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u522E\",\r\n \"itaiji\": [\r\n \"\uD841\uDF1C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5231\",\r\n \"itaiji\": [\r\n \"\u524F\",\r\n \"\u5259\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5232\",\r\n \"itaiji\": [\r\n \"\uD841\uDF65\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5239\",\r\n \"itaiji\": [\r\n \"\uD841\uDF3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5243\",\r\n \"itaiji\": [\r\n \"\u9B00\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5247\",\r\n \"itaiji\": [\r\n \"\uD841\uDFED\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u524B\",\r\n \"itaiji\": [\r\n \"\u52CA\",\r\n \"\u5C05\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5254\",\r\n \"itaiji\": [\r\n \"\uD841\uDF13\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u525B\",\r\n \"itaiji\": [\r\n \"\u34FB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u525C\",\r\n \"itaiji\": [\r\n \"\uD841\uDEE0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u525D\",\r\n \"itaiji\": [\r\n \"\u5265\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5263\",\r\n \"itaiji\": [\r\n \"\u528D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5264\",\r\n \"itaiji\": [\r\n \"\u5291\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u526A\",\r\n \"itaiji\": [\r\n \"\u7FE6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5270\",\r\n \"itaiji\": [\r\n \"\u5269\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5272\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC22\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5275\",\r\n \"itaiji\": [\r\n \"\u5205\",\r\n \"\u6227\",\r\n \"\uD841\uDFD0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u527F\",\r\n \"itaiji\": [\r\n \"\uD841\uDFB0\",\r\n \"\u528B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u529F\",\r\n \"itaiji\": [\r\n \"\u34DB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52AB\",\r\n \"itaiji\": [\r\n \"\u5227\",\r\n \"\u5226\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52B1\",\r\n \"itaiji\": [\r\n \"\u52F5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52B4\",\r\n \"itaiji\": [\r\n \"\u52DE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52B9\",\r\n \"itaiji\": [\r\n \"\u6548\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52C1\",\r\n \"itaiji\": [\r\n \"\u52A4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52C5\",\r\n \"itaiji\": [\r\n \"\u6555\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52C9\",\r\n \"itaiji\": [\r\n \"\uFA33\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52D6\",\r\n \"itaiji\": [\r\n \"\u52D7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52E2\",\r\n \"itaiji\": [\r\n \"\u351F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52E4\",\r\n \"itaiji\": [\r\n \"\uFA34\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52E7\",\r\n \"itaiji\": [\r\n \"\u52F8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52F2\",\r\n \"itaiji\": [\r\n \"\u52F3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52FA\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC28\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u52FB\",\r\n \"itaiji\": [\r\n \"\u5300\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5303\",\r\n \"itaiji\": [\r\n \"\u5304\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5306\",\r\n \"itaiji\": [\r\n \"\u56F1\",\r\n \"\uD87E\uDC2A\",\r\n \"\u5307\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u531D\",\r\n \"itaiji\": [\r\n \"\u5E00\",\r\n \"\u8FCA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u532F\",\r\n \"itaiji\": [\r\n \"\u6ED9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5333\",\r\n \"itaiji\": [\r\n \"\u5332\",\r\n \"\u5969\",\r\n \"\u7C62\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u533B\",\r\n \"itaiji\": [\r\n \"\u91AB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5345\",\r\n \"itaiji\": [\r\n \"\uD842\uDD83\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5349\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC2C\",\r\n \"\u8294\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5351\",\r\n \"itaiji\": [\r\n \"\uFA35\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5352\",\r\n \"itaiji\": [\r\n \"\u5346\",\r\n \"\u461A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5353\",\r\n \"itaiji\": [\r\n \"\u684C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5354\",\r\n \"itaiji\": [\r\n \"\u604A\",\r\n \"\u65EA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5358\",\r\n \"itaiji\": [\r\n \"\u55AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5363\",\r\n \"itaiji\": [\r\n \"\uD842\uDDEA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u536E\",\r\n \"itaiji\": [\r\n \"\u5DF5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u536F\",\r\n \"itaiji\": [\r\n \"\u5918\",\r\n \"\u623C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5373\",\r\n \"itaiji\": [\r\n \"\u537D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5374\",\r\n \"itaiji\": [\r\n \"\u537B\",\r\n \"\u3541\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u537A\",\r\n \"itaiji\": [\r\n \"\u5DF9\",\r\n \"\uD85E\uDFE2\",\r\n \"\uD848\uDC3E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u537F\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC33\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5384\",\r\n \"itaiji\": [\r\n \"\uD848\uDC34\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u539A\",\r\n \"itaiji\": [\r\n \"\u3AD7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u539F\",\r\n \"itaiji\": [\r\n \"\u53A1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53A8\",\r\n \"itaiji\": [\r\n \"\u5EDA\",\r\n \"\u3551\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53A9\",\r\n \"itaiji\": [\r\n \"\u5ECF\",\r\n \"\u5ED0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53AD\",\r\n \"itaiji\": [\r\n \"\u7312\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53B2\",\r\n \"itaiji\": [\r\n \"\u5389\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53B3\",\r\n \"itaiji\": [\r\n \"\u56B4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53BB\",\r\n \"itaiji\": [\r\n \"\u53BA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53C2\",\r\n \"itaiji\": [\r\n \"\u53C3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53CC\",\r\n \"itaiji\": [\r\n \"\u96D9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53CE\",\r\n \"itaiji\": [\r\n \"\u6536\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53D4\",\r\n \"itaiji\": [\r\n \"\uD842\uDD91\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53D9\",\r\n \"itaiji\": [\r\n \"\u654D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53DF\",\r\n \"itaiji\": [\r\n \"\u53DC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53E1\",\r\n \"itaiji\": [\r\n \"\u777F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53E2\",\r\n \"itaiji\": [\r\n \"\u6A37\",\r\n \"\u85C2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53EB\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC39\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53F0\",\r\n \"itaiji\": [\r\n \"\u81FA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53F2\",\r\n \"itaiji\": [\r\n \"\u355C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u53F7\",\r\n \"itaiji\": [\r\n \"\u865F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5403\",\r\n \"itaiji\": [\r\n \"\uD842\uDFCF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5409\",\r\n \"itaiji\": [\r\n \"\uD842\uDFB7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u540C\",\r\n \"itaiji\": [\r\n \"\u4EDD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u541D\",\r\n \"itaiji\": [\r\n \"\u3581\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u541E\",\r\n \"itaiji\": [\r\n \"\u5451\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u541F\",\r\n \"itaiji\": [\r\n \"\u8A21\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5439\",\r\n \"itaiji\": [\r\n \"\u9FA1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u543B\",\r\n \"itaiji\": [\r\n \"\u8117\",\r\n \"\u4407\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u543D\",\r\n \"itaiji\": [\r\n \"\u544D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5449\",\r\n \"itaiji\": [\r\n \"\u5433\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u544A\",\r\n \"itaiji\": [\r\n \"\u543F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5468\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC3F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u546A\",\r\n \"itaiji\": [\r\n \"\u5492\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u548C\",\r\n \"itaiji\": [\r\n \"\u548A\",\r\n \"\u9FA2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u54A2\",\r\n \"itaiji\": [\r\n \"\u35BE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u54A4\",\r\n \"itaiji\": [\r\n \"\u5412\",\r\n \"\u549C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u54E1\",\r\n \"itaiji\": [\r\n \"\u8C9F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u54F2\",\r\n \"itaiji\": [\r\n \"\u608A\",\r\n \"\u569E\",\r\n \"\u5586\",\r\n \"\u5560\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5507\",\r\n \"itaiji\": [\r\n \"\u8123\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5540\",\r\n \"itaiji\": [\r\n \"\u560A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5556\",\r\n \"itaiji\": [\r\n \"\u5557\",\r\n \"\u5649\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u555E\",\r\n \"itaiji\": [\r\n \"\u5516\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5584\",\r\n \"itaiji\": [\r\n \"\u8B71\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5589\",\r\n \"itaiji\": [\r\n \"\u35CB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u559C\",\r\n \"itaiji\": [\r\n \"\u3402\",\r\n \"\u6B56\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u559D\",\r\n \"itaiji\": [\r\n \"\uFA36\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u55A9\",\r\n \"itaiji\": [\r\n \"\u55BB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u55AA\",\r\n \"itaiji\": [\r\n \"\u462E\",\r\n \"\uD843\uDDD4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u55B6\",\r\n \"itaiji\": [\r\n \"\u71DF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u55C5\",\r\n \"itaiji\": [\r\n \"\u9F45\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u55F7\",\r\n \"itaiji\": [\r\n \"\u55F8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5606\",\r\n \"itaiji\": [\r\n \"\uFA37\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5611\",\r\n \"itaiji\": [\r\n \"\u8B3C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5614\",\r\n \"itaiji\": [\r\n \"\u5455\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5617\",\r\n \"itaiji\": [\r\n \"\u751E\",\r\n \"\uD843\uDE49\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5629\",\r\n \"itaiji\": [\r\n \"\uD843\uDD45\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u562F\",\r\n \"itaiji\": [\r\n \"\u5628\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5631\",\r\n \"itaiji\": [\r\n \"\u56D1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5637\",\r\n \"itaiji\": [\r\n \"\u55E5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5653\",\r\n \"itaiji\": [\r\n \"\u5618\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5668\",\r\n \"itaiji\": [\r\n \"\uFA38\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5674\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC4F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5694\",\r\n \"itaiji\": [\r\n \"\u568F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5699\",\r\n \"itaiji\": [\r\n \"\u565B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56C2\",\r\n \"itaiji\": [\r\n \"\u56BB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56CA\",\r\n \"itaiji\": [\r\n \"\u56A2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56DE\",\r\n \"itaiji\": [\r\n \"\u56D8\",\r\n \"\u56EC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56DF\",\r\n \"itaiji\": [\r\n \"\u9856\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56E0\",\r\n \"itaiji\": [\r\n \"\u56D9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56E3\",\r\n \"itaiji\": [\r\n \"\u5718\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56F2\",\r\n \"itaiji\": [\r\n \"\u570D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56F3\",\r\n \"itaiji\": [\r\n \"\u5716\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u56FD\",\r\n \"itaiji\": [\r\n \"\u570B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u570F\",\r\n \"itaiji\": [\r\n \"\u5708\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5712\",\r\n \"itaiji\": [\r\n \"\u8597\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u571F\",\r\n \"itaiji\": [\r\n \"\uD844\uDE3D\",\r\n \"\u5721\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5727\",\r\n \"itaiji\": [\r\n \"\u58D3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u572D\",\r\n \"itaiji\": [\r\n \"\u73EA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5740\",\r\n \"itaiji\": [\r\n \"\u962F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u574C\",\r\n \"itaiji\": [\r\n \"\u574B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u574E\",\r\n \"itaiji\": [\r\n \"\u57F3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u574F\",\r\n \"itaiji\": [\r\n \"\u962B\",\r\n \"\u576F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5750\",\r\n \"itaiji\": [\r\n \"\u3634\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5751\",\r\n \"itaiji\": [\r\n \"\u962C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u577C\",\r\n \"itaiji\": [\r\n \"\uD844\uDF69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5782\",\r\n \"itaiji\": [\r\n \"\u57C0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5793\",\r\n \"itaiji\": [\r\n \"\u7561\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u579B\",\r\n \"itaiji\": [\r\n \"\u579C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u57A0\",\r\n \"itaiji\": [\r\n \"\uD844\uDEF3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u57CB\",\r\n \"itaiji\": [\r\n \"\u85B6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u57CE\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC52\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u57D2\",\r\n \"itaiji\": [\r\n \"\u57D3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u57E0\",\r\n \"itaiji\": [\r\n \"\u57D7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u57E3\",\r\n \"itaiji\": [\r\n \"\uD844\uDE7B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u57F7\",\r\n \"itaiji\": [\r\n \"\u79C7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5806\",\r\n \"itaiji\": [\r\n \"\uD840\uDCA4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5815\",\r\n \"itaiji\": [\r\n \"\u58AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5821\",\r\n \"itaiji\": [\r\n \"\u5822\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5824\",\r\n \"itaiji\": [\r\n \"\u57DE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5830\",\r\n \"itaiji\": [\r\n \"\u9681\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5834\",\r\n \"itaiji\": [\r\n \"\u5872\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5840\",\r\n \"itaiji\": [\r\n \"\uFA39\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5841\",\r\n \"itaiji\": [\r\n \"\u58D8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u584D\",\r\n \"itaiji\": [\r\n \"\u5818\",\r\n \"\uD84C\uDF92\",\r\n \"\u757B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u585A\",\r\n \"itaiji\": [\r\n \"\uFA10\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5861\",\r\n \"itaiji\": [\r\n \"\u586B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5869\",\r\n \"itaiji\": [\r\n \"\u9E7D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5879\",\r\n \"itaiji\": [\r\n \"\uD845\uDC1B\",\r\n \"\u58CD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5881\",\r\n \"itaiji\": [\r\n \"\u3662\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u588D\",\r\n \"itaiji\": [\r\n \"\uD844\uDFF2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5897\",\r\n \"itaiji\": [\r\n \"\u589E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58A8\",\r\n \"itaiji\": [\r\n \"\uFA3A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58A9\",\r\n \"itaiji\": [\r\n \"\u58AA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58B3\",\r\n \"itaiji\": [\r\n \"\uFA7D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58C5\",\r\n \"itaiji\": [\r\n \"\u3672\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58CA\",\r\n \"itaiji\": [\r\n \"\u58DE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58CC\",\r\n \"itaiji\": [\r\n \"\u58E4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58CE\",\r\n \"itaiji\": [\r\n \"\u5864\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58D7\",\r\n \"itaiji\": [\r\n \"\uD844\uDEE4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58DA\",\r\n \"itaiji\": [\r\n \"\uD844\uDE74\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58DC\",\r\n \"itaiji\": [\r\n \"\u7F4E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58DF\",\r\n \"itaiji\": [\r\n \"\u58E0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58EE\",\r\n \"itaiji\": [\r\n \"\u58EF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58F0\",\r\n \"itaiji\": [\r\n \"\u8072\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58F1\",\r\n \"itaiji\": [\r\n \"\u58F9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58F2\",\r\n \"itaiji\": [\r\n \"\u8CE3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u58FA\",\r\n \"itaiji\": [\r\n \"\u58F7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5909\",\r\n \"itaiji\": [\r\n \"\u8B8A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u591A\",\r\n \"itaiji\": [\r\n \"\u591B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5947\",\r\n \"itaiji\": [\r\n \"\u7AD2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5951\",\r\n \"itaiji\": [\r\n \"\uF909\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5954\",\r\n \"itaiji\": [\r\n \"\uFA7F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5958\",\r\n \"itaiji\": [\r\n \"\u5F09\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5965\",\r\n \"itaiji\": [\r\n \"\u5967\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5968\",\r\n \"itaiji\": [\r\n \"\u596C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u598A\",\r\n \"itaiji\": [\r\n \"\u59D9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5996\",\r\n \"itaiji\": [\r\n \"\uD845\uDF69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5999\",\r\n \"itaiji\": [\r\n \"\u7385\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u599D\",\r\n \"itaiji\": [\r\n \"\uD845\uDF42\",\r\n \"\u5A24\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59AC\",\r\n \"itaiji\": [\r\n \"\u5992\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59C9\",\r\n \"itaiji\": [\r\n \"\u59CA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59E6\",\r\n \"itaiji\": [\r\n \"\u59E7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59EA\",\r\n \"itaiji\": [\r\n \"\u4F84\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59EB\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC62\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59EE\",\r\n \"itaiji\": [\r\n \"\u5AE6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59F8\",\r\n \"itaiji\": [\r\n \"\u598D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u59FB\",\r\n \"itaiji\": [\r\n \"\u5A63\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5A1F\",\r\n \"itaiji\": [\r\n \"\u59E2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5A2F\",\r\n \"itaiji\": [\r\n \"\u5A1B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5A3F\",\r\n \"itaiji\": [\r\n \"\u5A40\",\r\n \"\u59B8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5A5A\",\r\n \"itaiji\": [\r\n \"\u36F0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5A7F\",\r\n \"itaiji\": [\r\n \"\u58FB\",\r\n \"\u805F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5ABC\",\r\n \"itaiji\": [\r\n \"\u5AAA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5AC9\",\r\n \"itaiji\": [\r\n \"\u3475\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5AE9\",\r\n \"itaiji\": [\r\n \"\u5AF0\",\r\n \"\u5A86\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5AEB\",\r\n \"itaiji\": [\r\n \"\uD846\uDC1C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5AF5\",\r\n \"itaiji\": [\r\n \"\u5A2C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5AFA\",\r\n \"itaiji\": [\r\n \"\u5AFB\",\r\n \"\uD846\uDC83\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B22\",\r\n \"itaiji\": [\r\n \"\u5B43\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B32\",\r\n \"itaiji\": [\r\n \"\u5AD0\",\r\n \"\u5A1A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B3E\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC6B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B50\",\r\n \"itaiji\": [\r\n \"\u373D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B66\",\r\n \"itaiji\": [\r\n \"\u5B78\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B76\",\r\n \"itaiji\": [\r\n \"\u5B73\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B7A\",\r\n \"itaiji\": [\r\n \"\uD846\uDD98\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B7C\",\r\n \"itaiji\": [\r\n \"\u5B7D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B85\",\r\n \"itaiji\": [\r\n \"\u386F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B87\",\r\n \"itaiji\": [\r\n \"\uD846\uDDC3\",\r\n \"\u3762\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B88\",\r\n \"itaiji\": [\r\n \"\u57A8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B89\",\r\n \"itaiji\": [\r\n \"\uD845\uDEB4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B9C\",\r\n \"itaiji\": [\r\n \"\u5B90\",\r\n \"\u519D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B9D\",\r\n \"itaiji\": [\r\n \"\u5BF6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5B9F\",\r\n \"itaiji\": [\r\n \"\u5BE6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BBF\",\r\n \"itaiji\": [\r\n \"\u375B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BC7\",\r\n \"itaiji\": [\r\n \"\u51A6\",\r\n \"\uD846\uDE25\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BCC\",\r\n \"itaiji\": [\r\n \"\u51A8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BD3\",\r\n \"itaiji\": [\r\n \"\u5EBD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BDB\",\r\n \"itaiji\": [\r\n \"\u5BEC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BDD\",\r\n \"itaiji\": [\r\n \"\u5BE2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BE7\",\r\n \"itaiji\": [\r\n \"\uF95F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BF1\",\r\n \"itaiji\": [\r\n \"\u41BF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BFE\",\r\n \"itaiji\": [\r\n \"\u5C0D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5BFF\",\r\n \"itaiji\": [\r\n \"\u58FD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C02\",\r\n \"itaiji\": [\r\n \"\u5C08\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C06\",\r\n \"itaiji\": [\r\n \"\u5C07\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C1A\",\r\n \"itaiji\": [\r\n \"\u5C19\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C20\",\r\n \"itaiji\": [\r\n \"\u5C1F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C22\",\r\n \"itaiji\": [\r\n \"\u5C23\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C29\",\r\n \"itaiji\": [\r\n \"\u5C2B\",\r\n \"\u5C2A\",\r\n \"\uD846\uDFEA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C2D\",\r\n \"itaiji\": [\r\n \"\u582F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C3B\",\r\n \"itaiji\": [\r\n \"\u378D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C3D\",\r\n \"itaiji\": [\r\n \"\u76E1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C41\",\r\n \"itaiji\": [\r\n \"\uD856\uDDD4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C4A\",\r\n \"itaiji\": [\r\n \"\u5C46\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C4E\",\r\n \"itaiji\": [\r\n \"\uD847\uDC41\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C5B\",\r\n \"itaiji\": [\r\n \"\u5C4F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C5E\",\r\n \"itaiji\": [\r\n \"\u5C6C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C62\",\r\n \"itaiji\": [\r\n \"\u5C61\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C64\",\r\n \"itaiji\": [\r\n \"\uFA3B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5C6D\",\r\n \"itaiji\": [\r\n \"\u5C53\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CA1\",\r\n \"itaiji\": [\r\n \"\u5D17\",\r\n \"\u583D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CAA\",\r\n \"itaiji\": [\r\n \"\uD847\uDD92\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CAD\",\r\n \"itaiji\": [\r\n \"\u5CBA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CB3\",\r\n \"itaiji\": [\r\n \"\u5DBD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CB8\",\r\n \"itaiji\": [\r\n \"\u37C1\",\r\n \"\uD847\uDD9C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CE1\",\r\n \"itaiji\": [\r\n \"\u5CFD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CE8\",\r\n \"itaiji\": [\r\n \"\u5CE9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CF0\",\r\n \"itaiji\": [\r\n \"\u5CEF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5CF6\",\r\n \"itaiji\": [\r\n \"\u5D8B\",\r\n \"\u5D8C\",\r\n \"\u3800\",\r\n \"\u5DB9\",\r\n \"\u9666\",\r\n \"\u969D\",\r\n \"\u96AF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D0E\",\r\n \"itaiji\": [\r\n \"\uFA11\",\r\n \"\u5D5C\",\r\n \"\u37E2\",\r\n \"\u966D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D11\",\r\n \"itaiji\": [\r\n \"\u5D10\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D12\",\r\n \"itaiji\": [\r\n \"\u5D2A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D16\",\r\n \"itaiji\": [\r\n \"\u5D15\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D19\",\r\n \"itaiji\": [\r\n \"\u5D18\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D1B\",\r\n \"itaiji\": [\r\n \"\u5D2B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D46\",\r\n \"itaiji\": [\r\n \"\u5D47\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D4C\",\r\n \"itaiji\": [\r\n \"\u7BCF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D52\",\r\n \"itaiji\": [\r\n \"\u5D53\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D69\",\r\n \"itaiji\": [\r\n \"\u5D27\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D6C\",\r\n \"itaiji\": [\r\n \"\u37F4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D6F\",\r\n \"itaiji\": [\r\n \"\u5D73\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5D83\",\r\n \"itaiji\": [\r\n \"\u5D84\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DA2\",\r\n \"itaiji\": [\r\n \"\uD847\uDE33\",\r\n \"\u5DA4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DA7\",\r\n \"itaiji\": [\r\n \"\uD847\uDD78\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DCC\",\r\n \"itaiji\": [\r\n \"\u5DD6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DDD\",\r\n \"itaiji\": [\r\n \"\u5DDB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DE3\",\r\n \"itaiji\": [\r\n \"\u5DE2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DE6\",\r\n \"itaiji\": [\r\n \"\u352B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DF7\",\r\n \"itaiji\": [\r\n \"\u8856\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DFB\",\r\n \"itaiji\": [\r\n \"\u5377\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5DFD\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC84\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E0C\",\r\n \"itaiji\": [\r\n \"\uD848\uDC6B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E11\",\r\n \"itaiji\": [\r\n \"\u4F16\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E1A\",\r\n \"itaiji\": [\r\n \"\u83F7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E2B\",\r\n \"itaiji\": [\r\n \"\u5E08\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E2F\",\r\n \"itaiji\": [\r\n \"\u5E36\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E30\",\r\n \"itaiji\": [\r\n \"\u6B78\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E55\",\r\n \"itaiji\": [\r\n \"\u5E59\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E6B\",\r\n \"itaiji\": [\r\n \"\u5E47\",\r\n \"\u5E2E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E6C\",\r\n \"itaiji\": [\r\n \"\uD848\uDCD6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E6E\",\r\n \"itaiji\": [\r\n \"\u3861\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E74\",\r\n \"itaiji\": [\r\n \"\u79CA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E75\",\r\n \"itaiji\": [\r\n \"\u5F00\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E77\",\r\n \"itaiji\": [\r\n \"\u5E76\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E78\",\r\n \"itaiji\": [\r\n \"\uD840\uDCB7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E79\",\r\n \"itaiji\": [\r\n \"\u69A6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E7A\",\r\n \"itaiji\": [\r\n \"\u4E48\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E7C\",\r\n \"itaiji\": [\r\n \"\uD848\uDDB2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E81\",\r\n \"itaiji\": [\r\n \"\u5EF3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5E83\",\r\n \"itaiji\": [\r\n \"\u5EE3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EA7\",\r\n \"itaiji\": [\r\n \"\uD86D\uDF77\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EB6\",\r\n \"itaiji\": [\r\n \"\u5EBB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EC1\",\r\n \"itaiji\": [\r\n \"\u53A0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EC2\",\r\n \"itaiji\": [\r\n \"\u53A2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EC3\",\r\n \"itaiji\": [\r\n \"\u5EE2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EC8\",\r\n \"itaiji\": [\r\n \"\u53A6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EC9\",\r\n \"itaiji\": [\r\n \"\uF9A2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5ECA\",\r\n \"itaiji\": [\r\n \"\uF928\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EDB\",\r\n \"itaiji\": [\r\n \"\u58E5\",\r\n \"\u913D\",\r\n \"\u367B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EDD\",\r\n \"itaiji\": [\r\n \"\u53AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EDF\",\r\n \"itaiji\": [\r\n \"\u5EBF\",\r\n \"\u5E99\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EE8\",\r\n \"itaiji\": [\r\n \"\uD86A\uDC18\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EE9\",\r\n \"itaiji\": [\r\n \"\u342D\",\r\n \"\u5EEA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EFB\",\r\n \"itaiji\": [\r\n \"\u5EFD\",\r\n \"\uD848\uDF1E\",\r\n \"\u8FF4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5EFF\",\r\n \"itaiji\": [\r\n \"\u5344\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F01\",\r\n \"itaiji\": [\r\n \"\u8FA8\",\r\n \"\u8FAF\",\r\n \"\u74E3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F04\",\r\n \"itaiji\": [\r\n \"\u630A\",\r\n \"\u6335\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F10\",\r\n \"itaiji\": [\r\n \"\u8CB3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F11\",\r\n \"itaiji\": [\r\n \"\u5F12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F1B\",\r\n \"itaiji\": [\r\n \"\u38AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F25\",\r\n \"itaiji\": [\r\n \"\u5F4C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F37\",\r\n \"itaiji\": [\r\n \"\u5F3A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F3C\",\r\n \"itaiji\": [\r\n \"\u5F3B\",\r\n \"\uD849\uDC00\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F3E\",\r\n \"itaiji\": [\r\n \"\u5F48\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F45\",\r\n \"itaiji\": [\r\n \"\uD85B\uDFF6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F4E\",\r\n \"itaiji\": [\r\n \"\u5F2F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F50\",\r\n \"itaiji\": [\r\n \"\u5F51\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F53\",\r\n \"itaiji\": [\r\n \"\u7576\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F59\",\r\n \"itaiji\": [\r\n \"\u5F5A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F5D\",\r\n \"itaiji\": [\r\n \"\u5F5C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F62\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC99\",\r\n \"\uD849\uDC88\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F66\",\r\n \"itaiji\": [\r\n \"\u5F65\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F6B\",\r\n \"itaiji\": [\r\n \"\uD87E\uDC9A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F6C\",\r\n \"itaiji\": [\r\n \"\u658C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F81\",\r\n \"itaiji\": [\r\n \"\uD861\uDC8C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F82\",\r\n \"itaiji\": [\r\n \"\u4890\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F84\",\r\n \"itaiji\": [\r\n \"\u5F91\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F87\",\r\n \"itaiji\": [\r\n \"\uD849\uDCC8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F92\",\r\n \"itaiji\": [\r\n \"\uD861\uDC52\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F93\",\r\n \"itaiji\": [\r\n \"\u5F9E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F97\",\r\n \"itaiji\": [\r\n \"\u3775\",\r\n \"\uD849\uDD36\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5F99\",\r\n \"itaiji\": [\r\n \"\uD861\uDC6D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5FAD\",\r\n \"itaiji\": [\r\n \"\u509C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5FB3\",\r\n \"itaiji\": [\r\n \"\u5FB7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5FB4\",\r\n \"itaiji\": [\r\n \"\u5FB5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5FDC\",\r\n \"itaiji\": [\r\n \"\u61C9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u5FFD\",\r\n \"itaiji\": [\r\n \"\uD849\uDDD8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6015\",\r\n \"itaiji\": [\r\n \"\uD849\uDDCC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6016\",\r\n \"itaiji\": [\r\n \"\u6091\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6019\",\r\n \"itaiji\": [\r\n \"\uD849\uDEC5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u601D\",\r\n \"itaiji\": [\r\n \"\u6056\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u602A\",\r\n \"itaiji\": [\r\n \"\u6060\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6031\",\r\n \"itaiji\": [\r\n \"\u5FE9\",\r\n \"\u60A4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u604B\",\r\n \"itaiji\": [\r\n \"\u6200\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6052\",\r\n \"itaiji\": [\r\n \"\u6046\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u605A\",\r\n \"itaiji\": [\r\n \"\u392C\",\r\n \"\u3707\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u605F\",\r\n \"itaiji\": [\r\n \"\u5FF7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6063\",\r\n \"itaiji\": [\r\n \"\uD849\uDE4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6064\",\r\n \"itaiji\": [\r\n \"\u5379\",\r\n \"\u460F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6065\",\r\n \"itaiji\": [\r\n \"\u803B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6068\",\r\n \"itaiji\": [\r\n \"\uD849\uDE43\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u606A\",\r\n \"itaiji\": [\r\n \"\u3929\",\r\n \"\u6119\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u606D\",\r\n \"itaiji\": [\r\n \"\uD849\uDE44\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6075\",\r\n \"itaiji\": [\r\n \"\u60E0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6084\",\r\n \"itaiji\": [\r\n \"\uD849\uDDB9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u608B\",\r\n \"itaiji\": [\r\n \"\u6061\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6094\",\r\n \"itaiji\": [\r\n \"\uFA3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u609F\",\r\n \"itaiji\": [\r\n \"\u5FE2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60A6\",\r\n \"itaiji\": [\r\n \"\u6085\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60A9\",\r\n \"itaiji\": [\r\n \"\u60F1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60AA\",\r\n \"itaiji\": [\r\n \"\u60E1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60B1\",\r\n \"itaiji\": [\r\n \"\u3971\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60B4\",\r\n \"itaiji\": [\r\n \"\u5FF0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60B6\",\r\n \"itaiji\": [\r\n \"\u3943\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60BD\",\r\n \"itaiji\": [\r\n \"\u6053\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60C7\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCA5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60D5\",\r\n \"itaiji\": [\r\n \"\u6090\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60DB\",\r\n \"itaiji\": [\r\n \"\u60FD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60DD\",\r\n \"itaiji\": [\r\n \"\uD84A\uDC35\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60E8\",\r\n \"itaiji\": [\r\n \"\u6158\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60F0\",\r\n \"itaiji\": [\r\n \"\u619C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u60F8\",\r\n \"itaiji\": [\r\n \"\uD849\uDF9B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6106\",\r\n \"itaiji\": [\r\n \"\u8AD0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6112\",\r\n \"itaiji\": [\r\n \"\uD84A\uDC9A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u611B\",\r\n \"itaiji\": [\r\n \"\u3905\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u611C\",\r\n \"itaiji\": [\r\n \"\u3966\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6127\",\r\n \"itaiji\": [\r\n \"\u5ABF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6128\",\r\n \"itaiji\": [\r\n \"\u6164\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6148\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCA6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u614C\",\r\n \"itaiji\": [\r\n \"\u393A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u614D\",\r\n \"itaiji\": [\r\n \"\u6120\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u614E\",\r\n \"itaiji\": [\r\n \"\u613C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6159\",\r\n \"itaiji\": [\r\n \"\u615A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6162\",\r\n \"itaiji\": [\r\n \"\uD84A\uDC94\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6177\",\r\n \"itaiji\": [\r\n \"\u5FFC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u617C\",\r\n \"itaiji\": [\r\n \"\u617D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6181\",\r\n \"itaiji\": [\r\n \"\u6121\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6182\",\r\n \"itaiji\": [\r\n \"\uD849\uDF4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u618A\",\r\n \"itaiji\": [\r\n \"\uD849\uDFE1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u618E\",\r\n \"itaiji\": [\r\n \"\uFA3F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6191\",\r\n \"itaiji\": [\r\n \"\u617F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6196\",\r\n \"itaiji\": [\r\n \"\u6197\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6199\",\r\n \"itaiji\": [\r\n \"\u6198\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u619A\",\r\n \"itaiji\": [\r\n \"\u60EE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u619D\",\r\n \"itaiji\": [\r\n \"\u619E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61A4\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCAD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61A9\",\r\n \"itaiji\": [\r\n \"\u6187\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61AB\",\r\n \"itaiji\": [\r\n \"\uD84A\uDC7B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61B2\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCAC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61C7\",\r\n \"itaiji\": [\r\n \"\uD84A\uDC46\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61C8\",\r\n \"itaiji\": [\r\n \"\uD84A\uDCA3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61CA\",\r\n \"itaiji\": [\r\n \"\u3907\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61CD\",\r\n \"itaiji\": [\r\n \"\u61D4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61D0\",\r\n \"itaiji\": [\r\n \"\u61F7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61D5\",\r\n \"itaiji\": [\r\n \"\u3994\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61E3\",\r\n \"itaiji\": [\r\n \"\uD84A\uDC5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61E6\",\r\n \"itaiji\": [\r\n \"\u611E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61F2\",\r\n \"itaiji\": [\r\n \"\uFA40\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61F6\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCB1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61FA\",\r\n \"itaiji\": [\r\n \"\u61F4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61FC\",\r\n \"itaiji\": [\r\n \"\u6133\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u61FF\",\r\n \"itaiji\": [\r\n \"\u39A4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6210\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCB2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6216\",\r\n \"itaiji\": [\r\n \"\u39AF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u621B\",\r\n \"itaiji\": [\r\n \"\u621E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u621F\",\r\n \"itaiji\": [\r\n \"\uD84A\uDDE2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6226\",\r\n \"itaiji\": [\r\n \"\u6230\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u622A\",\r\n \"itaiji\": [\r\n \"\uD84A\uDDF5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u622F\",\r\n \"itaiji\": [\r\n \"\u6232\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6234\",\r\n \"itaiji\": [\r\n \"\uFA8C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6238\",\r\n \"itaiji\": [\r\n \"\u6236\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u623B\",\r\n \"itaiji\": [\r\n \"\u623E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6255\",\r\n \"itaiji\": [\r\n \"\u62C2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6279\",\r\n \"itaiji\": [\r\n \"\uD84B\uDC67\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u627C\",\r\n \"itaiji\": [\r\n \"\u6439\",\r\n \"\u39D6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6298\",\r\n \"itaiji\": [\r\n \"\u3ABF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u629C\",\r\n \"itaiji\": [\r\n \"\u62D4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u629E\",\r\n \"itaiji\": [\r\n \"\u64C7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62BD\",\r\n \"itaiji\": [\r\n \"\uD84A\uDF46\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62C5\",\r\n \"itaiji\": [\r\n \"\u64D4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62C7\",\r\n \"itaiji\": [\r\n \"\u80DF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62CB\",\r\n \"itaiji\": [\r\n \"\u629B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62CD\",\r\n \"itaiji\": [\r\n \"\uD84A\uDEE6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62D5\",\r\n \"itaiji\": [\r\n \"\u6261\",\r\n \"\u62D6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62D8\",\r\n \"itaiji\": [\r\n \"\u6285\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62DD\",\r\n \"itaiji\": [\r\n \"\u62DC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62E0\",\r\n \"itaiji\": [\r\n \"\u64DA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62E1\",\r\n \"itaiji\": [\r\n \"\u64F4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62EF\",\r\n \"itaiji\": [\r\n \"\u628D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62FD\",\r\n \"itaiji\": [\r\n \"\u6359\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u62FF\",\r\n \"itaiji\": [\r\n \"\u62CF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6307\",\r\n \"itaiji\": [\r\n \"\uD84A\uDEFE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6319\",\r\n \"itaiji\": [\r\n \"\u64E7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u631F\",\r\n \"itaiji\": [\r\n \"\u633E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u633F\",\r\n \"itaiji\": [\r\n \"\u63D2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6350\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCB7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6365\",\r\n \"itaiji\": [\r\n \"\uD84A\uDEB8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u638E\",\r\n \"itaiji\": [\r\n \"\uD84B\uDC24\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6394\",\r\n \"itaiji\": [\r\n \"\u5B6F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u63AC\",\r\n \"itaiji\": [\r\n \"\u530A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u63B2\",\r\n \"itaiji\": [\r\n \"\u63ED\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u63C4\",\r\n \"itaiji\": [\r\n \"\uD84B\uDD96\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u63F6\",\r\n \"itaiji\": [\r\n \"\u6353\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u63FA\",\r\n \"itaiji\": [\r\n \"\u6416\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6412\",\r\n \"itaiji\": [\r\n \"\uD84A\uDF94\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6414\",\r\n \"itaiji\": [\r\n \"\u63BB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6422\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCBF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u642D\",\r\n \"itaiji\": [\r\n \"\u6498\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u643A\",\r\n \"itaiji\": [\r\n \"\u651C\",\r\n \"\u64D5\",\r\n \"\u3A57\",\r\n \"\uD84B\uDE42\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6442\",\r\n \"itaiji\": [\r\n \"\u651D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6451\",\r\n \"itaiji\": [\r\n \"\u63B4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u647B\",\r\n \"itaiji\": [\r\n \"\u64A1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6483\",\r\n \"itaiji\": [\r\n \"\u64CA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6488\",\r\n \"itaiji\": [\r\n \"\uD84A\uDF50\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6490\",\r\n \"itaiji\": [\r\n \"\u6491\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64AD\",\r\n \"itaiji\": [\r\n \"\uD84B\uDFE5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64BC\",\r\n \"itaiji\": [\r\n \"\u3A14\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64BF\",\r\n \"itaiji\": [\r\n \"\uD84A\uDFA6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64C1\",\r\n \"itaiji\": [\r\n \"\uD84B\uDE6C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64C2\",\r\n \"itaiji\": [\r\n \"\u6502\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64CE\",\r\n \"itaiji\": [\r\n \"\u38A3\",\r\n \"\u64CF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64E1\",\r\n \"itaiji\": [\r\n \"\u62AC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u64E3\",\r\n \"itaiji\": [\r\n \"\uD84A\uDF4F\",\r\n \"\u6417\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6522\",\r\n \"itaiji\": [\r\n \"\u6505\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u652A\",\r\n \"itaiji\": [\r\n \"\u64B9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u652B\",\r\n \"itaiji\": [\r\n \"\u7234\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u652C\",\r\n \"itaiji\": [\r\n \"\u64E5\",\r\n \"\u3A5C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6534\",\r\n \"itaiji\": [\r\n \"\u6535\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u654F\",\r\n \"itaiji\": [\r\n \"\uFA41\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6559\",\r\n \"itaiji\": [\r\n \"\u654E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6562\",\r\n \"itaiji\": [\r\n \"\uD842\uDF56\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6566\",\r\n \"itaiji\": [\r\n \"\u3A9F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6570\",\r\n \"itaiji\": [\r\n \"\u6578\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6572\",\r\n \"itaiji\": [\r\n \"\u3AA3\",\r\n \"\u641E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6574\",\r\n \"itaiji\": [\r\n \"\uD84B\uDFEB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6575\",\r\n \"itaiji\": [\r\n \"\uD84B\uDFEA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6589\",\r\n \"itaiji\": [\r\n \"\u9F4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u658E\",\r\n \"itaiji\": [\r\n \"\u9F4B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6591\",\r\n \"itaiji\": [\r\n \"\u8FAC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u659F\",\r\n \"itaiji\": [\r\n \"\u9159\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65A5\",\r\n \"itaiji\": [\r\n \"\u387F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65A7\",\r\n \"itaiji\": [\r\n \"\uD862\uDE1E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65AD\",\r\n \"itaiji\": [\r\n \"\u65B7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65B2\",\r\n \"itaiji\": [\r\n \"\u65B5\",\r\n \"\uD842\uDC07\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65BC\",\r\n \"itaiji\": [\r\n \"\u6275\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65C1\",\r\n \"itaiji\": [\r\n \"\u3AC4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65C3\",\r\n \"itaiji\": [\r\n \"\u65DC\",\r\n \"\uD84C\uDCFC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65C5\",\r\n \"itaiji\": [\r\n \"\uF983\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65C6\",\r\n \"itaiji\": [\r\n \"\u65BE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65D2\",\r\n \"itaiji\": [\r\n \"\u342C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65D7\",\r\n \"itaiji\": [\r\n \"\u7C4F\",\r\n \"\u7C31\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65DB\",\r\n \"itaiji\": [\r\n \"\u65D9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65E2\",\r\n \"itaiji\": [\r\n \"\u65E3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65E7\",\r\n \"itaiji\": [\r\n \"\u820A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u65E8\",\r\n \"itaiji\": [\r\n \"\u3AD6\",\r\n \"\uD842\uDD14\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6602\",\r\n \"itaiji\": [\r\n \"\u663B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6603\",\r\n \"itaiji\": [\r\n \"\uD84C\uDD66\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6607\",\r\n \"itaiji\": [\r\n \"\u66FB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u660F\",\r\n \"itaiji\": [\r\n \"\u662C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u661F\",\r\n \"itaiji\": [\r\n \"\u66D0\",\r\n \"\u76A8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6620\",\r\n \"itaiji\": [\r\n \"\u668E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6625\",\r\n \"itaiji\": [\r\n \"\u65FE\",\r\n \"\u8405\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u662F\",\r\n \"itaiji\": [\r\n \"\u6630\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6634\",\r\n \"itaiji\": [\r\n \"\uD84C\uDDBB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6635\",\r\n \"itaiji\": [\r\n \"\u66B1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u663A\",\r\n \"itaiji\": [\r\n \"\u661E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u663C\",\r\n \"itaiji\": [\r\n \"\u665D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6642\",\r\n \"itaiji\": [\r\n \"\u65F9\",\r\n \"\u65F6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6643\",\r\n \"itaiji\": [\r\n \"\u6644\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u664B\",\r\n \"itaiji\": [\r\n \"\u6649\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6652\",\r\n \"itaiji\": [\r\n \"\u66EC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6662\",\r\n \"itaiji\": [\r\n \"\u6663\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6669\",\r\n \"itaiji\": [\r\n \"\u665A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u666E\",\r\n \"itaiji\": [\r\n \"\u669C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6670\",\r\n \"itaiji\": [\r\n \"\u6673\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6674\",\r\n \"itaiji\": [\r\n \"\uFA12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6676\",\r\n \"itaiji\": [\r\n \"\uD84C\uDDF5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6681\",\r\n \"itaiji\": [\r\n \"\u66C9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6684\",\r\n \"itaiji\": [\r\n \"\u714A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6691\",\r\n \"itaiji\": [\r\n \"\uFA43\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66A6\",\r\n \"itaiji\": [\r\n \"\u66C6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66B4\",\r\n \"itaiji\": [\r\n \"\u3B25\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66E0\",\r\n \"itaiji\": [\r\n \"\u663F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66E6\",\r\n \"itaiji\": [\r\n \"\u3B22\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66F3\",\r\n \"itaiji\": [\r\n \"\u66F5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66F4\",\r\n \"itaiji\": [\r\n \"\u3A85\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66F9\",\r\n \"itaiji\": [\r\n \"\u66FA\",\r\n \"\uD84C\uDF58\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66FC\",\r\n \"itaiji\": [\r\n \"\u3B05\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66FD\",\r\n \"itaiji\": [\r\n \"\u66FE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u66FF\",\r\n \"itaiji\": [\r\n \"\u3B31\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6700\",\r\n \"itaiji\": [\r\n \"\u51A3\",\r\n \"\u3761\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6708\",\r\n \"itaiji\": [\r\n \"\u2F49\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6717\",\r\n \"itaiji\": [\r\n \"\uF929\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6736\",\r\n \"itaiji\": [\r\n \"\u6735\",\r\n \"\u44B3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u673D\",\r\n \"itaiji\": [\r\n \"\uD84C\uDFD3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6746\",\r\n \"itaiji\": [\r\n \"\u687F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6749\",\r\n \"itaiji\": [\r\n \"\u6766\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6751\",\r\n \"itaiji\": [\r\n \"\u90A8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6753\",\r\n \"itaiji\": [\r\n \"\uD84C\uDFD0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6761\",\r\n \"itaiji\": [\r\n \"\u689D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6765\",\r\n \"itaiji\": [\r\n \"\u4F86\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u676E\",\r\n \"itaiji\": [\r\n \"\uD84C\uDFD5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u676F\",\r\n \"itaiji\": [\r\n \"\u76C3\",\r\n \"\u686E\",\r\n \"\u3B8E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u677E\",\r\n \"itaiji\": [\r\n \"\u67A9\",\r\n \"\u6780\",\r\n \"\u67D7\",\r\n \"\u68A5\",\r\n \"\u3BA4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6795\",\r\n \"itaiji\": [\r\n \"\uD84C\uDFDD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67A1\",\r\n \"itaiji\": [\r\n \"\u685D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67A2\",\r\n \"itaiji\": [\r\n \"\u6A1E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67BB\",\r\n \"itaiji\": [\r\n \"\u6827\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67CF\",\r\n \"itaiji\": [\r\n \"\u6822\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67E9\",\r\n \"itaiji\": [\r\n \"\u531B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67F0\",\r\n \"itaiji\": [\r\n \"\u3B88\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67F3\",\r\n \"itaiji\": [\r\n \"\u687A\",\r\n \"\u6801\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67F5\",\r\n \"itaiji\": [\r\n \"\u6805\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67FA\",\r\n \"itaiji\": [\r\n \"\u67B4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67FB\",\r\n \"itaiji\": [\r\n \"\u67E5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u67FF\",\r\n \"itaiji\": [\r\n \"\u67F9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6803\",\r\n \"itaiji\": [\r\n \"\u6764\",\r\n \"\uD84D\uDF1C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6804\",\r\n \"itaiji\": [\r\n \"\u69AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6817\",\r\n \"itaiji\": [\r\n \"\u3B9A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u681F\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCE5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6821\",\r\n \"itaiji\": [\r\n \"\u630D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6832\",\r\n \"itaiji\": [\r\n \"\uD84D\uDC65\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6834\",\r\n \"itaiji\": [\r\n \"\u3BB5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6848\",\r\n \"itaiji\": [\r\n \"\u6849\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6851\",\r\n \"itaiji\": [\r\n \"\u6852\",\r\n \"\uD87E\uDCE1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6854\",\r\n \"itaiji\": [\r\n \"\u3BAE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u685C\",\r\n \"itaiji\": [\r\n \"\u6AFB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u685F\",\r\n \"itaiji\": [\r\n \"\u68E7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6885\",\r\n \"itaiji\": [\r\n \"\uFA44\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6893\",\r\n \"itaiji\": [\r\n \"\u674D\",\r\n \"\u699F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6894\",\r\n \"itaiji\": [\r\n \"\u6800\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u68A8\",\r\n \"itaiji\": [\r\n \"\u68C3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u68B1\",\r\n \"itaiji\": [\r\n \"\u68DE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u68CB\",\r\n \"itaiji\": [\r\n \"\u68CA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u68EC\",\r\n \"itaiji\": [\r\n \"\u6926\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u68F2\",\r\n \"itaiji\": [\r\n \"\u6816\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6901\",\r\n \"itaiji\": [\r\n \"\u69E8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u690D\",\r\n \"itaiji\": [\r\n \"\u3BF0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u691C\",\r\n \"itaiji\": [\r\n \"\u6AA2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6930\",\r\n \"itaiji\": [\r\n \"\u3B68\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6936\",\r\n \"itaiji\": [\r\n \"\u68D5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6955\",\r\n \"itaiji\": [\r\n \"\u6A62\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6960\",\r\n \"itaiji\": [\r\n \"\u678F\",\r\n \"\u67DF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u696B\",\r\n \"itaiji\": [\r\n \"\u6A9D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u696E\",\r\n \"itaiji\": [\r\n \"\u67E0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u697C\",\r\n \"itaiji\": [\r\n \"\u6A13\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u697D\",\r\n \"itaiji\": [\r\n \"\u6A02\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u697E\",\r\n \"itaiji\": [\r\n \"\uD852\uDF6F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6982\",\r\n \"itaiji\": [\r\n \"\u69EA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6993\",\r\n \"itaiji\": [\r\n \"\u6A12\",\r\n \"\u6AC1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69B4\",\r\n \"itaiji\": [\r\n \"\u6A4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69BC\",\r\n \"itaiji\": [\r\n \"\uD84D\uDD81\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69C1\",\r\n \"itaiji\": [\r\n \"\u69C0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69C3\",\r\n \"itaiji\": [\r\n \"\u67C8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69D8\",\r\n \"itaiji\": [\r\n \"\u6A23\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69D9\",\r\n \"itaiji\": [\r\n \"\u69C7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69F3\",\r\n \"itaiji\": [\r\n \"\u3BCD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69F5\",\r\n \"itaiji\": [\r\n \"\u6899\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u69F6\",\r\n \"itaiji\": [\r\n \"\u6922\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A21\",\r\n \"itaiji\": [\r\n \"\u7CE2\",\r\n \"\u6A45\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A29\",\r\n \"itaiji\": [\r\n \"\u6B0A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A2A\",\r\n \"itaiji\": [\r\n \"\u6A6B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A38\",\r\n \"itaiji\": [\r\n \"\u6A8F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A39\",\r\n \"itaiji\": [\r\n \"\uD84D\uDDF3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A3D\",\r\n \"itaiji\": [\r\n \"\u58AB\",\r\n \"\u7F47\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A48\",\r\n \"itaiji\": [\r\n \"\uD84D\uDCE4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A4B\",\r\n \"itaiji\": [\r\n \"\u69D7\",\r\n \"\uD84D\uDE3A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A4C\",\r\n \"itaiji\": [\r\n \"\u6A7A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A50\",\r\n \"itaiji\": [\r\n \"\u69D6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A5B\",\r\n \"itaiji\": [\r\n \"\u6A5C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A83\",\r\n \"itaiji\": [\r\n \"\u6AFD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A94\",\r\n \"itaiji\": [\r\n \"\u6863\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A97\",\r\n \"itaiji\": [\r\n \"\u6A98\",\r\n \"\u8617\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6A9C\",\r\n \"itaiji\": [\r\n \"\u6867\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6AA3\",\r\n \"itaiji\": [\r\n \"\u6A2F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6AAE\",\r\n \"itaiji\": [\r\n \"\u68BC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6AB3\",\r\n \"itaiji\": [\r\n \"\u68B9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6ADB\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCED\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6ADF\",\r\n \"itaiji\": [\r\n \"\u6AAA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6AE8\",\r\n \"itaiji\": [\r\n \"\u67A6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6AF1\",\r\n \"itaiji\": [\r\n \"\u8616\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6AF3\",\r\n \"itaiji\": [\r\n \"\u69DE\",\r\n \"\u3C0D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6AFA\",\r\n \"itaiji\": [\r\n \"\u6B1E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B04\",\r\n \"itaiji\": [\r\n \"\uF91D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B05\",\r\n \"itaiji\": [\r\n \"\uFA14\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B12\",\r\n \"itaiji\": [\r\n \"\u683E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B16\",\r\n \"itaiji\": [\r\n \"\u3C16\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B1B\",\r\n \"itaiji\": [\r\n \"\uD84E\uDC3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B20\",\r\n \"itaiji\": [\r\n \"\u7F3A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B27\",\r\n \"itaiji\": [\r\n \"\u6B50\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B3B\",\r\n \"itaiji\": [\r\n \"\u6B58\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B3E\",\r\n \"itaiji\": [\r\n \"\u3C41\",\r\n \"\u6B35\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B4C\",\r\n \"itaiji\": [\r\n \"\u8B0C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B53\",\r\n \"itaiji\": [\r\n \"\u6B61\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B54\",\r\n \"itaiji\": [\r\n \"\uD87E\uDCF1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B69\",\r\n \"itaiji\": [\r\n \"\u6B65\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B6F\",\r\n \"itaiji\": [\r\n \"\u9F52\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B73\",\r\n \"itaiji\": [\r\n \"\u6B72\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B74\",\r\n \"itaiji\": [\r\n \"\u6B77\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B79\",\r\n \"itaiji\": [\r\n \"\u6B7A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B7F\",\r\n \"itaiji\": [\r\n \"\u6B81\",\r\n \"\u6B7E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B82\",\r\n \"itaiji\": [\r\n \"\uD84E\uDDEB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6B8B\",\r\n \"itaiji\": [\r\n \"\u6B98\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BB2\",\r\n \"itaiji\": [\r\n \"\u6BB1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BB4\",\r\n \"itaiji\": [\r\n \"\u6BC6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BBA\",\r\n \"itaiji\": [\r\n \"\uF970\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BBB\",\r\n \"itaiji\": [\r\n \"\u6BBC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BC0\",\r\n \"itaiji\": [\r\n \"\u6BC1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BCE\",\r\n \"itaiji\": [\r\n \"\u6BCF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BD8\",\r\n \"itaiji\": [\r\n \"\u6BD7\",\r\n \"\uD84E\uDF08\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6BDF\",\r\n \"itaiji\": [\r\n \"\u6BEE\",\r\n \"\u6318\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C05\",\r\n \"itaiji\": [\r\n \"\uD868\uDD76\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C08\",\r\n \"itaiji\": [\r\n \"\u6BE1\",\r\n \"\u6C0A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C10\",\r\n \"itaiji\": [\r\n \"\u5F16\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C17\",\r\n \"itaiji\": [\r\n \"\u6C23\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C1B\",\r\n \"itaiji\": [\r\n \"\uD84F\uDC66\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C37\",\r\n \"itaiji\": [\r\n \"\u51B0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C5A\",\r\n \"itaiji\": [\r\n \"\u6C59\",\r\n \"\u6D3F\",\r\n \"\u6C61\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C74\",\r\n \"itaiji\": [\r\n \"\u6C73\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C7A\",\r\n \"itaiji\": [\r\n \"\u51B3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C83\",\r\n \"itaiji\": [\r\n \"\uD84F\uDD7D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C88\",\r\n \"itaiji\": [\r\n \"\u6C89\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6C96\",\r\n \"itaiji\": [\r\n \"\u51B2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CA1\",\r\n \"itaiji\": [\r\n \"\u6C92\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CA2\",\r\n \"itaiji\": [\r\n \"\u6FA4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CB1\",\r\n \"itaiji\": [\r\n \"\u6CB2\",\r\n \"\uD84F\uDD7A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CBF\",\r\n \"itaiji\": [\r\n \"\u3CC2\",\r\n \"\uD87E\uDCFC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CC1\",\r\n \"itaiji\": [\r\n \"\u51B5\",\r\n \"\uFA71\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CC4\",\r\n \"itaiji\": [\r\n \"\uD84F\uDCD8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CC9\",\r\n \"itaiji\": [\r\n \"\u6D24\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CD5\",\r\n \"itaiji\": [\r\n \"\u704B\",\r\n \"\u3CD2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CDD\",\r\n \"itaiji\": [\r\n \"\u3D11\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CE5\",\r\n \"itaiji\": [\r\n \"\u57FF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6CF0\",\r\n \"itaiji\": [\r\n \"\uD84F\uDCFE\",\r\n \"\u51AD\",\r\n \"\u3917\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D25\",\r\n \"itaiji\": [\r\n \"\uD84F\uDE01\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D3B\",\r\n \"itaiji\": [\r\n \"\uD84F\uDD20\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D41\",\r\n \"itaiji\": [\r\n \"\uFA97\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D44\",\r\n \"itaiji\": [\r\n \"\u6DE8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D45\",\r\n \"itaiji\": [\r\n \"\u6DFA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D59\",\r\n \"itaiji\": [\r\n \"\u6DDB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D5C\",\r\n \"itaiji\": [\r\n \"\u6FF1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D63\",\r\n \"itaiji\": [\r\n \"\u6FA3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D69\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD03\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D77\",\r\n \"itaiji\": [\r\n \"\uFA45\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D79\",\r\n \"itaiji\": [\r\n \"\u6D43\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D82\",\r\n \"itaiji\": [\r\n \"\u51C3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D85\",\r\n \"itaiji\": [\r\n \"\uD84F\uDD40\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D93\",\r\n \"itaiji\": [\r\n \"\u3CD9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6D99\",\r\n \"itaiji\": [\r\n \"\u6DDA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6DB5\",\r\n \"itaiji\": [\r\n \"\uD84F\uDE62\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6DBC\",\r\n \"itaiji\": [\r\n \"\u51C9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6DEC\",\r\n \"itaiji\": [\r\n \"\u3CC3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6DF1\",\r\n \"itaiji\": [\r\n \"\u3D31\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6DF3\",\r\n \"itaiji\": [\r\n \"\u6E7B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6DF5\",\r\n \"itaiji\": [\r\n \"\u6E15\",\r\n \"\u6E0A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E05\",\r\n \"itaiji\": [\r\n \"\u6DF8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E07\",\r\n \"itaiji\": [\r\n \"\u6E34\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E08\",\r\n \"itaiji\": [\r\n \"\u6FDF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E09\",\r\n \"itaiji\": [\r\n \"\u6D89\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E0B\",\r\n \"itaiji\": [\r\n \"\u6F81\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E13\",\r\n \"itaiji\": [\r\n \"\u6EAA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E1A\",\r\n \"itaiji\": [\r\n \"\uFA46\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E1B\",\r\n \"itaiji\": [\r\n \"\u51CF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E29\",\r\n \"itaiji\": [\r\n \"\u6EAB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E38\",\r\n \"itaiji\": [\r\n \"\u3CFA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E7E\",\r\n \"itaiji\": [\r\n \"\u7063\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E7F\",\r\n \"itaiji\": [\r\n \"\u6FD5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E80\",\r\n \"itaiji\": [\r\n \"\u6EFF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E96\",\r\n \"itaiji\": [\r\n \"\u51D6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6E9C\",\r\n \"itaiji\": [\r\n \"\u6F91\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6EB2\",\r\n \"itaiji\": [\r\n \"\uD84F\uDE08\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6EC2\",\r\n \"itaiji\": [\r\n \"\u9736\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6ECB\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD0B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6ECE\",\r\n \"itaiji\": [\r\n \"\u6FDA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6ED4\",\r\n \"itaiji\": [\r\n \"\u3D1E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6EDD\",\r\n \"itaiji\": [\r\n \"\u7027\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6EDE\",\r\n \"itaiji\": [\r\n \"\u6EEF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6EF2\",\r\n \"itaiji\": [\r\n \"\u6D81\",\r\n \"\u6E17\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6EFE\",\r\n \"itaiji\": [\r\n \"\u6EDA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F06\",\r\n \"itaiji\": [\r\n \"\u67D2\",\r\n \"\u3BC3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F0F\",\r\n \"itaiji\": [\r\n \"\u5C5A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F15\",\r\n \"itaiji\": [\r\n \"\uD850\uDD4D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F22\",\r\n \"itaiji\": [\r\n \"\uFA47\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F51\",\r\n \"itaiji\": [\r\n \"\u6E8C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F5C\",\r\n \"itaiji\": [\r\n \"\u6F5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F68\",\r\n \"itaiji\": [\r\n \"\u6F40\",\r\n \"\u7047\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F6E\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD0F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F78\",\r\n \"itaiji\": [\r\n \"\u6F98\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F84\",\r\n \"itaiji\": [\r\n \"\u6F82\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6F97\",\r\n \"itaiji\": [\r\n \"\u3D4E\",\r\n \"\u7900\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6FC1\",\r\n \"itaiji\": [\r\n \"\u6D4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6FE4\",\r\n \"itaiji\": [\r\n \"\u6D9B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6FEC\",\r\n \"itaiji\": [\r\n \"\uD84F\uDF4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u6FFE\",\r\n \"itaiji\": [\r\n \"\u6CAA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7006\",\r\n \"itaiji\": [\r\n \"\u6D9C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7009\",\r\n \"itaiji\": [\r\n \"\u6CFB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u700F\",\r\n \"itaiji\": [\r\n \"\u56A0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u701E\",\r\n \"itaiji\": [\r\n \"\uFA9B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7026\",\r\n \"itaiji\": [\r\n \"\u6F74\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u702C\",\r\n \"itaiji\": [\r\n \"\u7028\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7030\",\r\n \"itaiji\": [\r\n \"\u3CFD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u704C\",\r\n \"itaiji\": [\r\n \"\u6F45\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7051\",\r\n \"itaiji\": [\r\n \"\uD850\uDCA2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u705D\",\r\n \"itaiji\": [\r\n \"\uD850\uDC96\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u705E\",\r\n \"itaiji\": [\r\n \"\u3D9A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7069\",\r\n \"itaiji\": [\r\n \"\u704E\",\r\n \"\u7054\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u706F\",\r\n \"itaiji\": [\r\n \"\u71C8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u707D\",\r\n \"itaiji\": [\r\n \"\u70D6\",\r\n \"\u707E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7089\",\r\n \"itaiji\": [\r\n \"\u7210\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u70AF\",\r\n \"itaiji\": [\r\n \"\u70F1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u70B1\",\r\n \"itaiji\": [\r\n \"\u70B2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u70B9\",\r\n \"itaiji\": [\r\n \"\u9EDE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u70BA\",\r\n \"itaiji\": [\r\n \"\u7232\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u70FD\",\r\n \"itaiji\": [\r\n \"\u3DED\",\r\n \"\u71A2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u711A\",\r\n \"itaiji\": [\r\n \"\u71D3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7130\",\r\n \"itaiji\": [\r\n \"\u7114\",\r\n \"\u71C4\",\r\n \"\u3DD4\",\r\n \"\u7196\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u713C\",\r\n \"itaiji\": [\r\n \"\u71D2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u716E\",\r\n \"itaiji\": [\r\n \"\uFA48\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u718F\",\r\n \"itaiji\": [\r\n \"\u71FB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7199\",\r\n \"itaiji\": [\r\n \"\u7155\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u719F\",\r\n \"itaiji\": [\r\n \"\uD850\uDFBC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u71B1\",\r\n \"itaiji\": [\r\n \"\u70ED\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u71EE\",\r\n \"itaiji\": [\r\n \"\u7215\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u71FC\",\r\n \"itaiji\": [\r\n \"\u70EC\",\r\n \"\u3DB3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u721B\",\r\n \"itaiji\": [\r\n \"\u71D7\",\r\n \"\u7224\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u723A\",\r\n \"itaiji\": [\r\n \"\uD851\uDD53\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u723E\",\r\n \"itaiji\": [\r\n \"\u5C13\",\r\n \"\u5C12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7246\",\r\n \"itaiji\": [\r\n \"\u58BB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7256\",\r\n \"itaiji\": [\r\n \"\u7257\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7259\",\r\n \"itaiji\": [\r\n \"\u2F5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7262\",\r\n \"itaiji\": [\r\n \"\u7A82\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7282\",\r\n \"itaiji\": [\r\n \"\u7281\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72A0\",\r\n \"itaiji\": [\r\n \"\u72A7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72A2\",\r\n \"itaiji\": [\r\n \"\u3E3F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72B6\",\r\n \"itaiji\": [\r\n \"\u72C0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72C9\",\r\n \"itaiji\": [\r\n \"\u8C7E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72D7\",\r\n \"itaiji\": [\r\n \"\u3E83\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72EC\",\r\n \"itaiji\": [\r\n \"\u7368\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72ED\",\r\n \"itaiji\": [\r\n \"\u72F9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72F8\",\r\n \"itaiji\": [\r\n \"\u8C8D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u72FB\",\r\n \"itaiji\": [\r\n \"\u475C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u730A\",\r\n \"itaiji\": [\r\n \"\u8C8E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7317\",\r\n \"itaiji\": [\r\n \"\u475D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u731F\",\r\n \"itaiji\": [\r\n \"\u7375\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u732A\",\r\n \"itaiji\": [\r\n \"\uFA16\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u732B\",\r\n \"itaiji\": [\r\n \"\u8C93\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u732E\",\r\n \"itaiji\": [\r\n \"\u737B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7334\",\r\n \"itaiji\": [\r\n \"\u3E85\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u733F\",\r\n \"itaiji\": [\r\n \"\u7328\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7344\",\r\n \"itaiji\": [\r\n \"\uD844\uDE2D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u734F\",\r\n \"itaiji\": [\r\n \"\u8C98\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7360\",\r\n \"itaiji\": [\r\n \"\u4764\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7363\",\r\n \"itaiji\": [\r\n \"\u7378\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u736E\",\r\n \"itaiji\": [\r\n \"\uD852\uDCD0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u737A\",\r\n \"itaiji\": [\r\n \"\u3E9A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u739E\",\r\n \"itaiji\": [\r\n \"\u7806\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u73A8\",\r\n \"itaiji\": [\r\n \"\u73CF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u73C9\",\r\n \"itaiji\": [\r\n \"\u739F\",\r\n \"\u7449\",\r\n \"\u40C9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u73CD\",\r\n \"itaiji\": [\r\n \"\u73CE\",\r\n \"\u73CE\",\r\n \"\uD852\uDD3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u73ED\",\r\n \"itaiji\": [\r\n \"\uD852\uDD3B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7405\",\r\n \"itaiji\": [\r\n \"\u746F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7422\",\r\n \"itaiji\": [\r\n \"\uFA4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7434\",\r\n \"itaiji\": [\r\n \"\u73E1\",\r\n \"\u7439\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u743A\",\r\n \"itaiji\": [\r\n \"\u73D0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7441\",\r\n \"itaiji\": [\r\n \"\u8750\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7447\",\r\n \"itaiji\": [\r\n \"\u73B3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7460\",\r\n \"itaiji\": [\r\n \"\u74A2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7463\",\r\n \"itaiji\": [\r\n \"\uD852\uDE0F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7470\",\r\n \"itaiji\": [\r\n \"\u74CC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7476\",\r\n \"itaiji\": [\r\n \"\u7464\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7483\",\r\n \"itaiji\": [\r\n \"\u74C8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7487\",\r\n \"itaiji\": [\r\n \"\u74BF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u74D4\",\r\n \"itaiji\": [\r\n \"\u73F1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u74DA\",\r\n \"itaiji\": [\r\n \"\u74C9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u74E6\",\r\n \"itaiji\": [\r\n \"\uD852\uDF26\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u74F6\",\r\n \"itaiji\": [\r\n \"\u7501\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u74F7\",\r\n \"itaiji\": [\r\n \"\u7506\",\r\n \"\uD858\uDE31\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u74FA\",\r\n \"itaiji\": [\r\n \"\uD852\uDF56\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u750C\",\r\n \"itaiji\": [\r\n \"\u74EF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7511\",\r\n \"itaiji\": [\r\n \"\u4C1D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7515\",\r\n \"itaiji\": [\r\n \"\u7F4B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u751C\",\r\n \"itaiji\": [\r\n \"\u751B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7523\",\r\n \"itaiji\": [\r\n \"\u7522\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7526\",\r\n \"itaiji\": [\r\n \"\uD852\uDFF3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u753A\",\r\n \"itaiji\": [\r\n \"\u753C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u753B\",\r\n \"itaiji\": [\r\n \"\u756B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7540\",\r\n \"itaiji\": [\r\n \"\u7541\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u754C\",\r\n \"itaiji\": [\r\n \"\u583A\",\r\n \"\u754D\",\r\n \"\uD863\uDEAC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u754E\",\r\n \"itaiji\": [\r\n \"\u753D\",\r\n \"\uD853\uDC1D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7559\",\r\n \"itaiji\": [\r\n \"\u7571\",\r\n \"\u7544\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u755A\",\r\n \"itaiji\": [\r\n \"\uD842\uDEFB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u755D\",\r\n \"itaiji\": [\r\n \"\u3F57\",\r\n \"\uD853\uDC16\",\r\n \"\u7546\",\r\n \"\u7552\",\r\n \"\u755E\",\r\n \"\u756E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7565\",\r\n \"itaiji\": [\r\n \"\u7567\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u756C\",\r\n \"itaiji\": [\r\n \"\u756D\",\r\n \"\u7572\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7570\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD38\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7573\",\r\n \"itaiji\": [\r\n \"\u758A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7586\",\r\n \"itaiji\": [\r\n \"\u757A\",\r\n \"\u58C3\",\r\n \"\u7585\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7587\",\r\n \"itaiji\": [\r\n \"\u7574\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u758E\",\r\n \"itaiji\": [\r\n \"\u8E08\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u758F\",\r\n \"itaiji\": [\r\n \"\u47FD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7590\",\r\n \"itaiji\": [\r\n \"\uD853\uDD21\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u75B9\",\r\n \"itaiji\": [\r\n \"\uD853\uDE8B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u75C0\",\r\n \"itaiji\": [\r\n \"\uD853\uDE6A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u75E9\",\r\n \"itaiji\": [\r\n \"\u7626\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u75F4\",\r\n \"itaiji\": [\r\n \"\u7661\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u75FE\",\r\n \"itaiji\": [\r\n \"\u75B4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7601\",\r\n \"itaiji\": [\r\n \"\u75A9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u761E\",\r\n \"itaiji\": [\r\n \"\uD863\uDECA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7624\",\r\n \"itaiji\": [\r\n \"\u7645\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u763B\",\r\n \"itaiji\": [\r\n \"\u7618\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7670\",\r\n \"itaiji\": [\r\n \"\u81C3\",\r\n \"\u7655\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u767A\",\r\n \"itaiji\": [\r\n \"\u767C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7681\",\r\n \"itaiji\": [\r\n \"\u688D\",\r\n \"\u7682\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u768E\",\r\n \"itaiji\": [\r\n \"\u6648\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7690\",\r\n \"itaiji\": [\r\n \"\u768B\",\r\n \"\u81EF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7696\",\r\n \"itaiji\": [\r\n \"\u6665\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u769A\",\r\n \"itaiji\": [\r\n \"\u6EB0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u769E\",\r\n \"itaiji\": [\r\n \"\u76A1\",\r\n \"\u76A5\",\r\n \"\u66A4\",\r\n \"\u66AD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76B0\",\r\n \"itaiji\": [\r\n \"\u9764\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76B8\",\r\n \"itaiji\": [\r\n \"\u76B9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76C2\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD3D\",\r\n \"\uD854\uDC44\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76CA\",\r\n \"itaiji\": [\r\n \"\uFA17\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76CD\",\r\n \"itaiji\": [\r\n \"\u76C7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76CE\",\r\n \"itaiji\": [\r\n \"\u3F1C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76D7\",\r\n \"itaiji\": [\r\n \"\u76DC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76DE\",\r\n \"itaiji\": [\r\n \"\u9186\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76F1\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD41\",\r\n \"\uD854\uDD5A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u76F8\",\r\n \"itaiji\": [\r\n \"\uD854\uDD22\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u770C\",\r\n \"itaiji\": [\r\n \"\u7E23\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u771F\",\r\n \"itaiji\": [\r\n \"\u771E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7725\",\r\n \"itaiji\": [\r\n \"\u7726\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u773C\",\r\n \"itaiji\": [\r\n \"\uD854\uDDA2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7765\",\r\n \"itaiji\": [\r\n \"\u7764\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7768\",\r\n \"itaiji\": [\r\n \"\uD854\uDDA9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7779\",\r\n \"itaiji\": [\r\n \"\u89A9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u778D\",\r\n \"itaiji\": [\r\n \"\uD854\uDE1F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u778F\",\r\n \"itaiji\": [\r\n \"\u7758\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u779E\",\r\n \"itaiji\": [\r\n \"\uD854\uDE1E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77A0\",\r\n \"itaiji\": [\r\n \"\u77AA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77AF\",\r\n \"itaiji\": [\r\n \"\uD854\uDEBA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77B0\",\r\n \"itaiji\": [\r\n \"\u77D9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77BC\",\r\n \"itaiji\": [\r\n \"\uD854\uDDE5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77DA\",\r\n \"itaiji\": [\r\n \"\u77A9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77DB\",\r\n \"itaiji\": [\r\n \"\uD84A\uDDA7\",\r\n \"\uD862\uDD68\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77E2\",\r\n \"itaiji\": [\r\n \"\u7B36\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77E7\",\r\n \"itaiji\": [\r\n \"\u77E4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u77F0\",\r\n \"itaiji\": [\r\n \"\uD848\uDF92\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7812\",\r\n \"itaiji\": [\r\n \"\u78C7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7814\",\r\n \"itaiji\": [\r\n \"\u784F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7815\",\r\n \"itaiji\": [\r\n \"\u788E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7827\",\r\n \"itaiji\": [\r\n \"\u78AA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7830\",\r\n \"itaiji\": [\r\n \"\u7851\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u786E\",\r\n \"itaiji\": [\r\n \"\u57C6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7887\",\r\n \"itaiji\": [\r\n \"\u77F4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u788A\",\r\n \"itaiji\": [\r\n \"\uD855\uDC8E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7891\",\r\n \"itaiji\": [\r\n \"\uFA4B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7895\",\r\n \"itaiji\": [\r\n \"\uD855\uDD0E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7897\",\r\n \"itaiji\": [\r\n \"\u76CC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u78A9\",\r\n \"itaiji\": [\r\n \"\u78B5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u78AF\",\r\n \"itaiji\": [\r\n \"\u7459\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u78BA\",\r\n \"itaiji\": [\r\n \"\u78BB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u78BE\",\r\n \"itaiji\": [\r\n \"\uD855\uDC4A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u78C1\",\r\n \"itaiji\": [\r\n \"\uD855\uDD35\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u78FD\",\r\n \"itaiji\": [\r\n \"\u589D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7926\",\r\n \"itaiji\": [\r\n \"\u783F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u792A\",\r\n \"itaiji\": [\r\n \"\u783A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u793C\",\r\n \"itaiji\": [\r\n \"\u79AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u793E\",\r\n \"itaiji\": [\r\n \"\uFA4C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7940\",\r\n \"itaiji\": [\r\n \"\u79A9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7948\",\r\n \"itaiji\": [\r\n \"\uFA4E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7949\",\r\n \"itaiji\": [\r\n \"\uFA4D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7950\",\r\n \"itaiji\": [\r\n \"\uFA4F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7953\",\r\n \"itaiji\": [\r\n \"\uD855\uDE2C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7956\",\r\n \"itaiji\": [\r\n \"\uFA50\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u795D\",\r\n \"itaiji\": [\r\n \"\uFA51\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u795E\",\r\n \"itaiji\": [\r\n \"\uFA19\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7965\",\r\n \"itaiji\": [\r\n \"\uFA1A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7968\",\r\n \"itaiji\": [\r\n \"\uD851\uDC2B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7984\",\r\n \"itaiji\": [\r\n \"\u797F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7985\",\r\n \"itaiji\": [\r\n \"\u79AA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u798D\",\r\n \"itaiji\": [\r\n \"\uFA52\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u798E\",\r\n \"itaiji\": [\r\n \"\uFA53\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u798F\",\r\n \"itaiji\": [\r\n \"\uFA1B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79B0\",\r\n \"itaiji\": [\r\n \"\u7962\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79B1\",\r\n \"itaiji\": [\r\n \"\u7977\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79CB\",\r\n \"itaiji\": [\r\n \"\u79CC\",\r\n \"\u7A50\",\r\n \"\u9F9D\",\r\n \"\uD869\uDEC1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79D2\",\r\n \"itaiji\": [\r\n \"\u417A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79D5\",\r\n \"itaiji\": [\r\n \"\u7C83\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79D8\",\r\n \"itaiji\": [\r\n \"\u7955\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79E3\",\r\n \"itaiji\": [\r\n \"\u4B34\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79ED\",\r\n \"itaiji\": [\r\n \"\uD855\uDF71\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u79F0\",\r\n \"itaiji\": [\r\n \"\u7A31\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A08\",\r\n \"itaiji\": [\r\n \"\u79C6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A0E\",\r\n \"itaiji\": [\r\n \"\u7A05\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A1A\",\r\n \"itaiji\": [\r\n \"\u7A3A\",\r\n \"\u7A49\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A1F\",\r\n \"itaiji\": [\r\n \"\u7980\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A32\",\r\n \"itaiji\": [\r\n \"\u7A3B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A37\",\r\n \"itaiji\": [\r\n \"\u799D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A3D\",\r\n \"itaiji\": [\r\n \"\uD856\uDC74\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A3F\",\r\n \"itaiji\": [\r\n \"\u85C1\",\r\n \"\u7A3E\",\r\n \"\u85F3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A40\",\r\n \"itaiji\": [\r\n \"\uFA54\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A42\",\r\n \"itaiji\": [\r\n \"\u7A57\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A4E\",\r\n \"itaiji\": [\r\n \"\u9834\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A4F\",\r\n \"itaiji\": [\r\n \"\u7A69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A63\",\r\n \"itaiji\": [\r\n \"\u7A70\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A7D\",\r\n \"itaiji\": [\r\n \"\u9631\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A81\",\r\n \"itaiji\": [\r\n \"\uFA55\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A83\",\r\n \"itaiji\": [\r\n \"\u7ACA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7A93\",\r\n \"itaiji\": [\r\n \"\u7A97\",\r\n \"\u7ABB\",\r\n \"\u41AB\",\r\n \"\u7255\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AAA\",\r\n \"itaiji\": [\r\n \"\u6F25\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AAE\",\r\n \"itaiji\": [\r\n \"\u7AC6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AAF\",\r\n \"itaiji\": [\r\n \"\u7AB0\",\r\n \"\u7A91\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7ABA\",\r\n \"itaiji\": [\r\n \"\u95DA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7ABF\",\r\n \"itaiji\": [\r\n \"\u376B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AC8\",\r\n \"itaiji\": [\r\n \"\u7AC3\",\r\n \"\uD856\uDDC4\",\r\n \"\u41B4\",\r\n \"\u7076\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7ADC\",\r\n \"itaiji\": [\r\n \"\u9F8D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AEA\",\r\n \"itaiji\": [\r\n \"\u8C4E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AEF\",\r\n \"itaiji\": [\r\n \"\u8011\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AF6\",\r\n \"itaiji\": [\r\n \"\u7AF8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7AFD\",\r\n \"itaiji\": [\r\n \"\uD856\uDEE1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B31\",\r\n \"itaiji\": [\r\n \"\uD858\uDE92\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B46\",\r\n \"itaiji\": [\r\n \"\u7B14\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B47\",\r\n \"itaiji\": [\r\n \"\u7B3B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B4B\",\r\n \"itaiji\": [\r\n \"\u8355\",\r\n \"\u89D4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B4D\",\r\n \"itaiji\": [\r\n \"\u7B0B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B4F\",\r\n \"itaiji\": [\r\n \"\u6830\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B50\",\r\n \"itaiji\": [\r\n \"\u7B7A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B52\",\r\n \"itaiji\": [\r\n \"\u7B69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B53\",\r\n \"itaiji\": [\r\n \"\u7B04\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B56\",\r\n \"itaiji\": [\r\n \"\u8417\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B8B\",\r\n \"itaiji\": [\r\n \"\u724B\",\r\n \"\u3B8D\",\r\n \"\u41F3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B8F\",\r\n \"itaiji\": [\r\n \"\u7B5D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B97\",\r\n \"itaiji\": [\r\n \"\u7958\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B98\",\r\n \"itaiji\": [\r\n \"\u7B9F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7B9A\",\r\n \"itaiji\": [\r\n \"\u5284\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BC0\",\r\n \"itaiji\": [\r\n \"\uFA56\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BD9\",\r\n \"itaiji\": [\r\n \"\u3C0F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BDD\",\r\n \"itaiji\": [\r\n \"\uD857\uDD61\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BE0\",\r\n \"itaiji\": [\r\n \"\u7B71\",\r\n \"\u7B7F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BE1\",\r\n \"itaiji\": [\r\n \"\u7C12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BE4\",\r\n \"itaiji\": [\r\n \"\u450D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BE6\",\r\n \"itaiji\": [\r\n \"\u7B86\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BE9\",\r\n \"itaiji\": [\r\n \"\u7C6D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7BEA\",\r\n \"itaiji\": [\r\n \"\u7B8E\",\r\n \"\u4DB5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C0B\",\r\n \"itaiji\": [\r\n \"\uD84E\uDE98\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C0F\",\r\n \"itaiji\": [\r\n \"\u7B93\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C1E\",\r\n \"itaiji\": [\r\n \"\u7BAA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C20\",\r\n \"itaiji\": [\r\n \"\u376C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C21\",\r\n \"itaiji\": [\r\n \"\uD857\uDCD1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C45\",\r\n \"itaiji\": [\r\n \"\uD856\uDEE3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C4C\",\r\n \"itaiji\": [\r\n \"\u7B79\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C52\",\r\n \"itaiji\": [\r\n \"\u7C40\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C54\",\r\n \"itaiji\": [\r\n \"\u4264\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C60\",\r\n \"itaiji\": [\r\n \"\u7BED\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C64\",\r\n \"itaiji\": [\r\n \"\u7C56\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C70\",\r\n \"itaiji\": [\r\n \"\u7BD7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C8B\",\r\n \"itaiji\": [\r\n \"\u7CB9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C98\",\r\n \"itaiji\": [\r\n \"\u9ECF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7C9B\",\r\n \"itaiji\": [\r\n \"\u8085\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CB3\",\r\n \"itaiji\": [\r\n \"\u7A09\",\r\n \"\u79D4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CBD\",\r\n \"itaiji\": [\r\n \"\u7CC9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CBE\",\r\n \"itaiji\": [\r\n \"\uFA1D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CC2\",\r\n \"itaiji\": [\r\n \"\u7CDD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CCD\",\r\n \"itaiji\": [\r\n \"\uD865\uDF50\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CD5\",\r\n \"itaiji\": [\r\n \"\u993B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CD6\",\r\n \"itaiji\": [\r\n \"\uFA03\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CE0\",\r\n \"itaiji\": [\r\n \"\u7A45\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CE7\",\r\n \"itaiji\": [\r\n \"\u7CAE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CEF\",\r\n \"itaiji\": [\r\n \"\u7A2C\",\r\n \"\u7A64\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CF1\",\r\n \"itaiji\": [\r\n \"\u7CF5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CF2\",\r\n \"itaiji\": [\r\n \"\u42AA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CF4\",\r\n \"itaiji\": [\r\n \"\u7C74\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CF6\",\r\n \"itaiji\": [\r\n \"\u7C9C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7CF8\",\r\n \"itaiji\": [\r\n \"\u7D72\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D18\",\r\n \"itaiji\": [\r\n \"\u7D8B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D19\",\r\n \"itaiji\": [\r\n \"\u5E0B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D1D\",\r\n \"itaiji\": [\r\n \"\u7D4D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D2E\",\r\n \"itaiji\": [\r\n \"\u7D25\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D2F\",\r\n \"itaiji\": [\r\n \"\u7E8D\",\r\n \"\u7D6B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D32\",\r\n \"itaiji\": [\r\n \"\u7D4F\",\r\n \"\u7DE4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D4C\",\r\n \"itaiji\": [\r\n \"\u7D93\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D5B\",\r\n \"itaiji\": [\r\n \"\u7E27\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D63\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD6C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D75\",\r\n \"itaiji\": [\r\n \"\u7E6A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D76\",\r\n \"itaiji\": [\r\n \"\u7D55\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D99\",\r\n \"itaiji\": [\r\n \"\u7E7C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7D9A\",\r\n \"itaiji\": [\r\n \"\u7E8C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DB7\",\r\n \"itaiji\": [\r\n \"\u7D23\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DBF\",\r\n \"itaiji\": [\r\n \"\u7DDC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DC7\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD6E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DCF\",\r\n \"itaiji\": [\r\n \"\u7E3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DD1\",\r\n \"itaiji\": [\r\n \"\u7DA0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DD2\",\r\n \"itaiji\": [\r\n \"\u7DD6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DDA\",\r\n \"itaiji\": [\r\n \"\u7DAB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DE1\",\r\n \"itaiji\": [\r\n \"\u7DCD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DEA\",\r\n \"itaiji\": [\r\n \"\u7D5A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7DF4\",\r\n \"itaiji\": [\r\n \"\uFA57\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E01\",\r\n \"itaiji\": [\r\n \"\u7DE3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E04\",\r\n \"itaiji\": [\r\n \"\u7E69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E09\",\r\n \"itaiji\": [\r\n \"\uFA58\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E15\",\r\n \"itaiji\": [\r\n \"\u7DFC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E26\",\r\n \"itaiji\": [\r\n \"\u7E31\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E36\",\r\n \"itaiji\": [\r\n \"\u99BD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E41\",\r\n \"itaiji\": [\r\n \"\uFA59\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E48\",\r\n \"itaiji\": [\r\n \"\u7E66\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E4A\",\r\n \"itaiji\": [\r\n \"\u7E96\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E54\",\r\n \"itaiji\": [\r\n \"\uD858\uDC17\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E61\",\r\n \"itaiji\": [\r\n \"\u7E4D\",\r\n \"\u7D89\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E6B\",\r\n \"itaiji\": [\r\n \"\u7E4B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E83\",\r\n \"itaiji\": [\r\n \"\u7DD5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E8A\",\r\n \"itaiji\": [\r\n \"\u7D4B\",\r\n \"\u7D56\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E8F\",\r\n \"itaiji\": [\r\n \"\u7E92\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E91\",\r\n \"itaiji\": [\r\n \"\u42C6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E93\",\r\n \"itaiji\": [\r\n \"\u42DD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E98\",\r\n \"itaiji\": [\r\n \"\u7E89\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E9B\",\r\n \"itaiji\": [\r\n \"\uD848\uDCF6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7E9C\",\r\n \"itaiji\": [\r\n \"\u432B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F36\",\r\n \"itaiji\": [\r\n \"\u7F50\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F4C\",\r\n \"itaiji\": [\r\n \"\u7516\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F61\",\r\n \"itaiji\": [\r\n \"\uD858\uDE86\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F69\",\r\n \"itaiji\": [\r\n \"\u4207\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F6A\",\r\n \"itaiji\": [\r\n \"\u8FA0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F70\",\r\n \"itaiji\": [\r\n \"\u7F78\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F72\",\r\n \"itaiji\": [\r\n \"\uFA5A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F87\",\r\n \"itaiji\": [\r\n \"\u8989\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F88\",\r\n \"itaiji\": [\r\n \"\u898A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F8A\",\r\n \"itaiji\": [\r\n \"\uD858\uDF4C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F8C\",\r\n \"itaiji\": [\r\n \"\u7F97\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F91\",\r\n \"itaiji\": [\r\n \"\u7F90\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7F95\",\r\n \"itaiji\": [\r\n \"\uD84F\uDD0E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7FA4\",\r\n \"itaiji\": [\r\n \"\u7FA3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7FB9\",\r\n \"itaiji\": [\r\n \"\u7FAE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7FBD\",\r\n \"itaiji\": [\r\n \"\uFA1E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7FEC\",\r\n \"itaiji\": [\r\n \"\uD859\uDC69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u7FFA\",\r\n \"itaiji\": [\r\n \"\u7FF1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8005\",\r\n \"itaiji\": [\r\n \"\uFA5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8007\",\r\n \"itaiji\": [\r\n \"\u8008\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u800B\",\r\n \"itaiji\": [\r\n \"\u800A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8019\",\r\n \"itaiji\": [\r\n \"\u43B1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u801C\",\r\n \"itaiji\": [\r\n \"\u3B52\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8028\",\r\n \"itaiji\": [\r\n \"\u69C8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u803C\",\r\n \"itaiji\": [\r\n \"\u8043\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u803D\",\r\n \"itaiji\": [\r\n \"\u8EAD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8052\",\r\n \"itaiji\": [\r\n \"\uD859\uDD7E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u805E\",\r\n \"itaiji\": [\r\n \"\uD857\uDE62\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8061\",\r\n \"itaiji\": [\r\n \"\u8070\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u806F\",\r\n \"itaiji\": [\r\n \"\u8068\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8074\",\r\n \"itaiji\": [\r\n \"\u807D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8077\",\r\n \"itaiji\": [\r\n \"\u8EC4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8089\",\r\n \"itaiji\": [\r\n \"\u5B8D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80AF\",\r\n \"itaiji\": [\r\n \"\u808E\",\r\n \"\uD84C\uDF5F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80B1\",\r\n \"itaiji\": [\r\n \"\u53B7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80B2\",\r\n \"itaiji\": [\r\n \"\u6BD3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80B4\",\r\n \"itaiji\": [\r\n \"\u991A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80C4\",\r\n \"itaiji\": [\r\n \"\u4F37\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80C6\",\r\n \"itaiji\": [\r\n \"\u81BD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80DA\",\r\n \"itaiji\": [\r\n \"\u80A7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80ED\",\r\n \"itaiji\": [\r\n \"\u81D9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u80F8\",\r\n \"itaiji\": [\r\n \"\u80F7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8106\",\r\n \"itaiji\": [\r\n \"\u8103\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8107\",\r\n \"itaiji\": [\r\n \"\uD859\uDEB0\",\r\n \"\u43EE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u811A\",\r\n \"itaiji\": [\r\n \"\u8173\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u811B\",\r\n \"itaiji\": [\r\n \"\uD859\uDE7E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8131\",\r\n \"itaiji\": [\r\n \"\u812B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8133\",\r\n \"itaiji\": [\r\n \"\u8166\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8141\",\r\n \"itaiji\": [\r\n \"\u80FC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8155\",\r\n \"itaiji\": [\r\n \"\uD84A\uDFF2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8165\",\r\n \"itaiji\": [\r\n \"\u80DC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8178\",\r\n \"itaiji\": [\r\n \"\u8193\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8180\",\r\n \"itaiji\": [\r\n \"\u9AC8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u819A\",\r\n \"itaiji\": [\r\n \"\u80A4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u819D\",\r\n \"itaiji\": [\r\n \"\u5380\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81A9\",\r\n \"itaiji\": [\r\n \"\uD85F\uDE10\",\r\n \"\uD85A\uDC78\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81B3\",\r\n \"itaiji\": [\r\n \"\u994D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81BE\",\r\n \"itaiji\": [\r\n \"\u810D\",\r\n \"\u9C60\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81C6\",\r\n \"itaiji\": [\r\n \"\u808A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81CD\",\r\n \"itaiji\": [\r\n \"\uD859\uDF1D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81CF\",\r\n \"itaiji\": [\r\n \"\u9AD5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81D3\",\r\n \"itaiji\": [\r\n \"\u81DF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81D8\",\r\n \"itaiji\": [\r\n \"\uFA1F\",\r\n \"\u81C8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81E5\",\r\n \"itaiji\": [\r\n \"\u5367\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81ED\",\r\n \"itaiji\": [\r\n \"\uFA5C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81F4\",\r\n \"itaiji\": [\r\n \"\uD85A\uDD36\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81FE\",\r\n \"itaiji\": [\r\n \"\u3B30\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u81FF\",\r\n \"itaiji\": [\r\n \"\uD85A\uDD5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8202\",\r\n \"itaiji\": [\r\n \"\u3AEA\",\r\n \"\uD84C\uDDC3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8203\",\r\n \"itaiji\": [\r\n \"\u8204\",\r\n \"\uD864\uDF46\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u820E\",\r\n \"itaiji\": [\r\n \"\u820D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8210\",\r\n \"itaiji\": [\r\n \"\u445B\",\r\n \"\u8213\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8217\",\r\n \"itaiji\": [\r\n \"\u8216\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8235\",\r\n \"itaiji\": [\r\n \"\u4468\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8239\",\r\n \"itaiji\": [\r\n \"\u8229\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u826A\",\r\n \"itaiji\": [\r\n \"\u8263\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u826B\",\r\n \"itaiji\": [\r\n \"\u822E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u826E\",\r\n \"itaiji\": [\r\n \"\uD854\uDCE9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8271\",\r\n \"itaiji\": [\r\n \"\u56CF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8276\",\r\n \"itaiji\": [\r\n \"\u8277\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u827E\",\r\n \"itaiji\": [\r\n \"\uD85A\uDEFF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8292\",\r\n \"itaiji\": [\r\n \"\uD855\uDF55\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82A6\",\r\n \"itaiji\": [\r\n \"\u8606\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82B8\",\r\n \"itaiji\": [\r\n \"\u85DD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82BB\",\r\n \"itaiji\": [\r\n \"\u84AD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82BD\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD95\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82D4\",\r\n \"itaiji\": [\r\n \"\u83ED\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82E1\",\r\n \"itaiji\": [\r\n \"\u82E2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82F1\",\r\n \"itaiji\": [\r\n \"\u5040\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u82FA\",\r\n \"itaiji\": [\r\n \"\u8393\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u830E\",\r\n \"itaiji\": [\r\n \"\u8396\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8318\",\r\n \"itaiji\": [\r\n \"\u8354\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u831D\",\r\n \"itaiji\": [\r\n \"\uD87E\uDD99\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8347\",\r\n \"itaiji\": [\r\n \"\u8395\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u834A\",\r\n \"itaiji\": [\r\n \"\u8346\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8358\",\r\n \"itaiji\": [\r\n \"\u838A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u837B\",\r\n \"itaiji\": [\r\n \"\u85E1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8385\",\r\n \"itaiji\": [\r\n \"\u849E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u83CA\",\r\n \"itaiji\": [\r\n \"\u861C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u83D1\",\r\n \"itaiji\": [\r\n \"\u8458\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u83EB\",\r\n \"itaiji\": [\r\n \"\u84F3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u83EF\",\r\n \"itaiji\": [\r\n \"\uFAB4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u83F0\",\r\n \"itaiji\": [\r\n \"\u82FD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u83F4\",\r\n \"itaiji\": [\r\n \"\u844A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u83F9\",\r\n \"itaiji\": [\r\n \"\u8445\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u840A\",\r\n \"itaiji\": [\r\n \"\u83B1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u840D\",\r\n \"itaiji\": [\r\n \"\u84F1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8431\",\r\n \"itaiji\": [\r\n \"\u8610\",\r\n \"\u857F\",\r\n \"\u85FC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8438\",\r\n \"itaiji\": [\r\n \"\u8330\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u843C\",\r\n \"itaiji\": [\r\n \"\u855A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8457\",\r\n \"itaiji\": [\r\n \"\uFA5F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u846C\",\r\n \"itaiji\": [\r\n \"\u585F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8471\",\r\n \"itaiji\": [\r\n \"\u8525\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u84C4\",\r\n \"itaiji\": [\r\n \"\u7A38\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u84CB\",\r\n \"itaiji\": [\r\n \"\u8462\",\r\n \"\u76D6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u84D1\",\r\n \"itaiji\": [\r\n \"\u7C11\",\r\n \"\u7C14\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u84E8\",\r\n \"itaiji\": [\r\n \"\u84DA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u84EE\",\r\n \"itaiji\": [\r\n \"\uF999\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8515\",\r\n \"itaiji\": [\r\n \"\u8482\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8518\",\r\n \"itaiji\": [\r\n \"\u8593\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8523\",\r\n \"itaiji\": [\r\n \"\u848B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u852D\",\r\n \"itaiji\": [\r\n \"\uD85B\uDE65\",\r\n \"\u4543\",\r\n \"\uD863\uDF32\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8535\",\r\n \"itaiji\": [\r\n \"\u85CF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u854A\",\r\n \"itaiji\": [\r\n \"\u854B\",\r\n \"\u8602\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8569\",\r\n \"itaiji\": [\r\n \"\u862F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u856D\",\r\n \"itaiji\": [\r\n \"\u4525\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u859B\",\r\n \"itaiji\": [\r\n \"\uD85C\uDCCE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u85A9\",\r\n \"itaiji\": [\r\n \"\u856F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u85AB\",\r\n \"itaiji\": [\r\n \"\u85B0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u85AC\",\r\n \"itaiji\": [\r\n \"\u85E5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u85BA\",\r\n \"itaiji\": [\r\n \"\u8415\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u85D0\",\r\n \"itaiji\": [\r\n \"\uD85C\uDC80\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u85EA\",\r\n \"itaiji\": [\r\n \"\u85AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8607\",\r\n \"itaiji\": [\r\n \"\u8613\",\r\n \"\u7A4C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u860B\",\r\n \"itaiji\": [\r\n \"\u85B2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u862D\",\r\n \"itaiji\": [\r\n \"\uF91F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u864E\",\r\n \"itaiji\": [\r\n \"\u4E55\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u865A\",\r\n \"itaiji\": [\r\n \"\u865B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u865C\",\r\n \"itaiji\": [\r\n \"\uF936\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u866B\",\r\n \"itaiji\": [\r\n \"\u87F2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u866F\",\r\n \"itaiji\": [\r\n \"\u866C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u867B\",\r\n \"itaiji\": [\r\n \"\u8771\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u868A\",\r\n \"itaiji\": [\r\n \"\u8689\",\r\n \"\u87C1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u868B\",\r\n \"itaiji\": [\r\n \"\u8739\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u868C\",\r\n \"itaiji\": [\r\n \"\u872F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8693\",\r\n \"itaiji\": [\r\n \"\u87BE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8695\",\r\n \"itaiji\": [\r\n \"\u8836\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86A3\",\r\n \"itaiji\": [\r\n \"\u8719\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86C7\",\r\n \"itaiji\": [\r\n \"\u8675\",\r\n \"\uD85C\uDE6E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86CD\",\r\n \"itaiji\": [\r\n \"\u87A2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86D4\",\r\n \"itaiji\": [\r\n \"\u8698\",\r\n \"\u86D5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86D7\",\r\n \"itaiji\": [\r\n \"\uD85D\uDC49\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86D9\",\r\n \"itaiji\": [\r\n \"\u4D77\",\r\n \"\u9F03\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86EE\",\r\n \"itaiji\": [\r\n \"\u883B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u86FE\",\r\n \"itaiji\": [\r\n \"\u45B8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8702\",\r\n \"itaiji\": [\r\n \"\u882D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8703\",\r\n \"itaiji\": [\r\n \"\u8704\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8708\",\r\n \"itaiji\": [\r\n \"\uD85C\uDECB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u870B\",\r\n \"itaiji\": [\r\n \"\u8782\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u872E\",\r\n \"itaiji\": [\r\n \"\uD85C\uDF12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u873F\",\r\n \"itaiji\": [\r\n \"\u45A4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u875F\",\r\n \"itaiji\": [\r\n \"\u732C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8765\",\r\n \"itaiji\": [\r\n \"\u87CA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8768\",\r\n \"itaiji\": [\r\n \"\u8671\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u87AD\",\r\n \"itaiji\": [\r\n \"\u5F72\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u87BB\",\r\n \"itaiji\": [\r\n \"\u877C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u87C7\",\r\n \"itaiji\": [\r\n \"\u87C6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u87EC\",\r\n \"itaiji\": [\r\n \"\u8749\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u87F9\",\r\n \"itaiji\": [\r\n \"\u880F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u87FB\",\r\n \"itaiji\": [\r\n \"\u8798\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8805\",\r\n \"itaiji\": [\r\n \"\u877F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8815\",\r\n \"itaiji\": [\r\n \"\u8761\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u881F\",\r\n \"itaiji\": [\r\n \"\u874B\",\r\n \"\u45F6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8823\",\r\n \"itaiji\": [\r\n \"\u86CE\",\r\n \"\u8807\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8839\",\r\n \"itaiji\": [\r\n \"\u8827\",\r\n \"\u8799\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8844\",\r\n \"itaiji\": [\r\n \"\u8842\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8846\",\r\n \"itaiji\": [\r\n \"\u773E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u885B\",\r\n \"itaiji\": [\r\n \"\u885E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u886E\",\r\n \"itaiji\": [\r\n \"\u889E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u887D\",\r\n \"itaiji\": [\r\n \"\u88B5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u888B\",\r\n \"itaiji\": [\r\n \"\u5E12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8897\",\r\n \"itaiji\": [\r\n \"\u88AE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88A0\",\r\n \"itaiji\": [\r\n \"\u889F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88B4\",\r\n \"itaiji\": [\r\n \"\u7D5D\",\r\n \"\u8932\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88B7\",\r\n \"itaiji\": [\r\n \"\u88CC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88BD\",\r\n \"itaiji\": [\r\n \"\uD858\uDC0C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88C5\",\r\n \"itaiji\": [\r\n \"\u88DD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88CA\",\r\n \"itaiji\": [\r\n \"\u892D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88CF\",\r\n \"itaiji\": [\r\n \"\u88E1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88D9\",\r\n \"itaiji\": [\r\n \"\u88E0\",\r\n \"\u5E2C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88F4\",\r\n \"itaiji\": [\r\n \"\u88F5\",\r\n \"\u88F6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u88F8\",\r\n \"itaiji\": [\r\n \"\u8EB6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u890C\",\r\n \"itaiji\": [\r\n \"\u88E9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u890E\",\r\n \"itaiji\": [\r\n \"\u890F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8910\",\r\n \"itaiji\": [\r\n \"\uFA60\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8912\",\r\n \"itaiji\": [\r\n \"\u8943\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8913\",\r\n \"itaiji\": [\r\n \"\u7DE5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8944\",\r\n \"itaiji\": [\r\n \"\u342E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u894C\",\r\n \"itaiji\": [\r\n \"\u891D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8952\",\r\n \"itaiji\": [\r\n \"\uD85D\uDF6C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u895F\",\r\n \"itaiji\": [\r\n \"\u4633\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8964\",\r\n \"itaiji\": [\r\n \"\u7E7F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u896A\",\r\n \"itaiji\": [\r\n \"\u97C8\",\r\n \"\u97E4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8977\",\r\n \"itaiji\": [\r\n \"\uD85D\uDF0E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u898F\",\r\n \"itaiji\": [\r\n \"\u4093\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8993\",\r\n \"itaiji\": [\r\n \"\u8994\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8996\",\r\n \"itaiji\": [\r\n \"\uFA61\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u899A\",\r\n \"itaiji\": [\r\n \"\u89BA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89A7\",\r\n \"itaiji\": [\r\n \"\u89BD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89B0\",\r\n \"itaiji\": [\r\n \"\u89B7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89B3\",\r\n \"itaiji\": [\r\n \"\u89C0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89E3\",\r\n \"itaiji\": [\r\n \"\u89E7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89E5\",\r\n \"itaiji\": [\r\n \"\u89F5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89E6\",\r\n \"itaiji\": [\r\n \"\u89F8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89E9\",\r\n \"itaiji\": [\r\n \"\u89D3\",\r\n \"\uD851\uDE60\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89F6\",\r\n \"itaiji\": [\r\n \"\u89D7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u89FF\",\r\n \"itaiji\": [\r\n \"\u89FD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A18\",\r\n \"itaiji\": [\r\n \"\uD85E\uDE84\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A1B\",\r\n \"itaiji\": [\r\n \"\u8B4C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A33\",\r\n \"itaiji\": [\r\n \"\u8B6F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A3A\",\r\n \"itaiji\": [\r\n \"\uD85E\uDD9C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A3C\",\r\n \"itaiji\": [\r\n \"\u8B49\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A3E\",\r\n \"itaiji\": [\r\n \"\u8A3F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A46\",\r\n \"itaiji\": [\r\n \"\u5467\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A60\",\r\n \"itaiji\": [\r\n \"\u548F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A6C\",\r\n \"itaiji\": [\r\n \"\u8A3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A71\",\r\n \"itaiji\": [\r\n \"\u46E1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8A89\",\r\n \"itaiji\": [\r\n \"\u8B7D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8AAC\",\r\n \"itaiji\": [\r\n \"\u8AAA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8AAD\",\r\n \"itaiji\": [\r\n \"\u8B80\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8ABC\",\r\n \"itaiji\": [\r\n \"\uD85E\uDDFC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8AC2\",\r\n \"itaiji\": [\r\n \"\u8B87\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8AE4\",\r\n \"itaiji\": [\r\n \"\u8B8D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8AED\",\r\n \"itaiji\": [\r\n \"\uD87E\uDDD0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8AF8\",\r\n \"itaiji\": [\r\n \"\uFA22\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B01\",\r\n \"itaiji\": [\r\n \"\uFA62\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B21\",\r\n \"itaiji\": [\r\n \"\u8B20\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B28\",\r\n \"itaiji\": [\r\n \"\uD849\uDF2F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B2B\",\r\n \"itaiji\": [\r\n \"\u8B81\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B33\",\r\n \"itaiji\": [\r\n \"\uD85E\uDD85\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B37\",\r\n \"itaiji\": [\r\n \"\u8B38\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B39\",\r\n \"itaiji\": [\r\n \"\uFA63\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B56\",\r\n \"itaiji\": [\r\n \"\u8B5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B72\",\r\n \"itaiji\": [\r\n \"\u8B93\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B7E\",\r\n \"itaiji\": [\r\n \"\u8B2D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B83\",\r\n \"itaiji\": [\r\n \"\u8B9A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B8C\",\r\n \"itaiji\": [\r\n \"\u91BC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B90\",\r\n \"itaiji\": [\r\n \"\u8B8E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B92\",\r\n \"itaiji\": [\r\n \"\u471B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B95\",\r\n \"itaiji\": [\r\n \"\u8B4B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8B96\",\r\n \"itaiji\": [\r\n \"\u471F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C39\",\r\n \"itaiji\": [\r\n \"\uD85E\uDFAF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C3F\",\r\n \"itaiji\": [\r\n \"\uD85E\uDFBE\",\r\n \"\u78CE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C45\",\r\n \"itaiji\": [\r\n \"\uD85E\uDFC7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C4A\",\r\n \"itaiji\": [\r\n \"\u8C50\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C4C\",\r\n \"itaiji\": [\r\n \"\uD85E\uDFE1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C5A\",\r\n \"itaiji\": [\r\n \"\u8C58\",\r\n \"\u3E60\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C61\",\r\n \"itaiji\": [\r\n \"\uD85F\uDC3C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C63\",\r\n \"itaiji\": [\r\n \"\uD85F\uDC5A\",\r\n \"\u730F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C6D\",\r\n \"itaiji\": [\r\n \"\u7333\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C7A\",\r\n \"itaiji\": [\r\n \"\u72B2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C7B\",\r\n \"itaiji\": [\r\n \"\u72B4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C82\",\r\n \"itaiji\": [\r\n \"\u9F26\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C89\",\r\n \"itaiji\": [\r\n \"\u72E2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C8A\",\r\n \"itaiji\": [\r\n \"\u8C83\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C8C\",\r\n \"itaiji\": [\r\n \"\u4AC9\",\r\n \"\u7683\",\r\n \"\u34B5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C94\",\r\n \"itaiji\": [\r\n \"\u8C7C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8C9D\",\r\n \"itaiji\": [\r\n \"\u86FD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CA1\",\r\n \"itaiji\": [\r\n \"\u621D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CB4\",\r\n \"itaiji\": [\r\n \"\u477F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CD3\",\r\n \"itaiji\": [\r\n \"\uFA64\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CD6\",\r\n \"itaiji\": [\r\n \"\u8CD2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CDA\",\r\n \"itaiji\": [\r\n \"\uD85F\uDD9B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CDB\",\r\n \"itaiji\": [\r\n \"\u8D0A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CE2\",\r\n \"itaiji\": [\r\n \"\u8D12\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CE4\",\r\n \"itaiji\": [\r\n \"\u8CCE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CEA\",\r\n \"itaiji\": [\r\n \"\u8CAD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CFA\",\r\n \"itaiji\": [\r\n \"\uD85F\uDE16\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8CFE\",\r\n \"itaiji\": [\r\n \"\uD85F\uDDE4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D08\",\r\n \"itaiji\": [\r\n \"\uFA65\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D0B\",\r\n \"itaiji\": [\r\n \"\u8D17\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D0D\",\r\n \"itaiji\": [\r\n \"\uD865\uDFCB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D10\",\r\n \"itaiji\": [\r\n \"\u8CEE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D13\",\r\n \"itaiji\": [\r\n \"\u8CCD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D6B\",\r\n \"itaiji\": [\r\n \"\u7200\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D6C\",\r\n \"itaiji\": [\r\n \"\u4793\",\r\n \"\u9833\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D70\",\r\n \"itaiji\": [\r\n \"\u8D71\",\r\n \"\uD85F\uDE86\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D81\",\r\n \"itaiji\": [\r\n \"\u8D82\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8D91\",\r\n \"itaiji\": [\r\n \"\u8DA6\",\r\n \"\u4816\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8DCB\",\r\n \"itaiji\": [\r\n \"\u47E6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8DD6\",\r\n \"itaiji\": [\r\n \"\u8E60\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8DEC\",\r\n \"itaiji\": [\r\n \"\u47A8\",\r\n \"\u8E5E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8DF5\",\r\n \"itaiji\": [\r\n \"\u8E10\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E0A\",\r\n \"itaiji\": [\r\n \"\u8E34\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E27\",\r\n \"itaiji\": [\r\n \"\uD860\uDC1A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E2A\",\r\n \"itaiji\": [\r\n \"\uD860\uDF30\",\r\n \"\u8E64\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E44\",\r\n \"itaiji\": [\r\n \"\u8E4F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E48\",\r\n \"itaiji\": [\r\n \"\uD860\uDCBB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E55\",\r\n \"itaiji\": [\r\n \"\uD840\uDF2B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E6F\",\r\n \"itaiji\": [\r\n \"\u7C75\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E74\",\r\n \"itaiji\": [\r\n \"\u8E75\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E76\",\r\n \"itaiji\": [\r\n \"\u8E77\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E4B\",\r\n \"itaiji\": [\r\n \"\u8E79\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E81\",\r\n \"itaiji\": [\r\n \"\u8DAE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E84\",\r\n \"itaiji\": [\r\n \"\u8E83\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E87\",\r\n \"itaiji\": [\r\n \"\u4827\",\r\n \"\u58B8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E8A\",\r\n \"itaiji\": [\r\n \"\u8E0C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E94\",\r\n \"itaiji\": [\r\n \"\uD860\uDDE0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E99\",\r\n \"itaiji\": [\r\n \"\u8EAA\",\r\n \"\u8E78\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8E9A\",\r\n \"itaiji\": [\r\n \"\u8E6E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8EAC\",\r\n \"itaiji\": [\r\n \"\u8EB3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8EC0\",\r\n \"itaiji\": [\r\n \"\u8EAF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8ECC\",\r\n \"itaiji\": [\r\n \"\u4844\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8ECD\",\r\n \"itaiji\": [\r\n \"\uD842\uDCDE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8EDB\",\r\n \"itaiji\": [\r\n \"\u8EF6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8EDF\",\r\n \"itaiji\": [\r\n \"\u8F2D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8EE2\",\r\n \"itaiji\": [\r\n \"\u8F49\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8EEB\",\r\n \"itaiji\": [\r\n \"\uD860\uDECF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8EFD\",\r\n \"itaiji\": [\r\n \"\u8F15\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F12\",\r\n \"itaiji\": [\r\n \"\u8F19\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F1B\",\r\n \"itaiji\": [\r\n \"\u8F0C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F1C\",\r\n \"itaiji\": [\r\n \"\u8F3A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F29\",\r\n \"itaiji\": [\r\n \"\u8EF0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F38\",\r\n \"itaiji\": [\r\n \"\uD87E\uDDDF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F3F\",\r\n \"itaiji\": [\r\n \"\u8F5D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F5C\",\r\n \"itaiji\": [\r\n \"\u8F00\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F5F\",\r\n \"itaiji\": [\r\n \"\u8EE3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F64\",\r\n \"itaiji\": [\r\n \"\u484E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F9B\",\r\n \"itaiji\": [\r\n \"\uD861\uDC0C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8F9E\",\r\n \"itaiji\": [\r\n \"\u8FAD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8FBA\",\r\n \"itaiji\": [\r\n \"\u908A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8FE4\",\r\n \"itaiji\": [\r\n \"\u8FC6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8FE5\",\r\n \"itaiji\": [\r\n \"\u9008\",\r\n \"\u489B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u8FFA\",\r\n \"itaiji\": [\r\n \"\u5EFC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9013\",\r\n \"itaiji\": [\r\n \"\u905E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9016\",\r\n \"itaiji\": [\r\n \"\u9037\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9019\",\r\n \"itaiji\": [\r\n \"\u8FD9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9023\",\r\n \"itaiji\": [\r\n \"\uF99A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u902C\",\r\n \"itaiji\": [\r\n \"\u8FF8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9038\",\r\n \"itaiji\": [\r\n \"\uFA67\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9045\",\r\n \"itaiji\": [\r\n \"\u9072\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9052\",\r\n \"itaiji\": [\r\n \"\u900E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9065\",\r\n \"itaiji\": [\r\n \"\u9059\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u907C\",\r\n \"itaiji\": [\r\n \"\uF9C3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9085\",\r\n \"itaiji\": [\r\n \"\uD85F\uDF8D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9087\",\r\n \"itaiji\": [\r\n \"\u8FE9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9088\",\r\n \"itaiji\": [\r\n \"\uD861\uDE37\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u909B\",\r\n \"itaiji\": [\r\n \"\u536D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u90A2\",\r\n \"itaiji\": [\r\n \"\u90C9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u90CE\",\r\n \"itaiji\": [\r\n \"\u90DE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u90E4\",\r\n \"itaiji\": [\r\n \"\u90C4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u90E8\",\r\n \"itaiji\": [\r\n \"\u90F6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u90F0\",\r\n \"itaiji\": [\r\n \"\u9139\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u90F7\",\r\n \"itaiji\": [\r\n \"\u9115\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u90FD\",\r\n \"itaiji\": [\r\n \"\uFA26\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9116\",\r\n \"itaiji\": [\r\n \"\u48B5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9146\",\r\n \"itaiji\": [\r\n \"\u9137\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9154\",\r\n \"itaiji\": [\r\n \"\u9189\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9157\",\r\n \"itaiji\": [\r\n \"\u48F1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9162\",\r\n \"itaiji\": [\r\n \"\u918B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u916C\",\r\n \"itaiji\": [\r\n \"\u9167\",\r\n \"\u91BB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9187\",\r\n \"itaiji\": [\r\n \"\u48E9\",\r\n \"\u9195\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u919C\",\r\n \"itaiji\": [\r\n \"\u9B57\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91AC\",\r\n \"itaiji\": [\r\n \"\u91A4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91B1\",\r\n \"itaiji\": [\r\n \"\u9197\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91B8\",\r\n \"itaiji\": [\r\n \"\u91C0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91BE\",\r\n \"itaiji\": [\r\n \"\u91C4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91C8\",\r\n \"itaiji\": [\r\n \"\u91CB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91CE\",\r\n \"itaiji\": [\r\n \"\u57DC\",\r\n \"\u58C4\",\r\n \"\u3652\",\r\n \"\uD844\uDF1B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91DC\",\r\n \"itaiji\": [\r\n \"\u91E1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91E4\",\r\n \"itaiji\": [\r\n \"\uD862\uDD46\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u91EC\",\r\n \"itaiji\": [\r\n \"\u92B2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9244\",\r\n \"itaiji\": [\r\n \"\u9435\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9248\",\r\n \"itaiji\": [\r\n \"\u9247\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u925A\",\r\n \"itaiji\": [\r\n \"\uD862\uDD6B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u925B\",\r\n \"itaiji\": [\r\n \"\u9206\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9262\",\r\n \"itaiji\": [\r\n \"\uD854\uDC4A\",\r\n \"\u76CB\",\r\n \"\u7F3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9264\",\r\n \"itaiji\": [\r\n \"\u920E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9271\",\r\n \"itaiji\": [\r\n \"\u945B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u927C\",\r\n \"itaiji\": [\r\n \"\uD87E\uDDEA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u929C\",\r\n \"itaiji\": [\r\n \"\u5563\",\r\n \"\u3605\",\r\n \"\u8858\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u92AD\",\r\n \"itaiji\": [\r\n \"\u9322\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u92B9\",\r\n \"itaiji\": [\r\n \"\u93E5\",\r\n \"\u93FD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u92CF\",\r\n \"itaiji\": [\r\n \"\uD862\uDD87\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u92D2\",\r\n \"itaiji\": [\r\n \"\u93E0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u92ED\",\r\n \"itaiji\": [\r\n \"\u92B3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u92F3\",\r\n \"itaiji\": [\r\n \"\u9444\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u932C\",\r\n \"itaiji\": [\r\n \"\u934A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9332\",\r\n \"itaiji\": [\r\n \"\u9304\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9350\",\r\n \"itaiji\": [\r\n \"\u9441\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u936C\",\r\n \"itaiji\": [\r\n \"\u936B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93AE\",\r\n \"itaiji\": [\r\n \"\u93AD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93D6\",\r\n \"itaiji\": [\r\n \"\u495D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93D8\",\r\n \"itaiji\": [\r\n \"\uD862\uDE99\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93DE\",\r\n \"itaiji\": [\r\n \"\u92BF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93DF\",\r\n \"itaiji\": [\r\n \"\uD862\uDE71\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93E4\",\r\n \"itaiji\": [\r\n \"\uD862\uDE50\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93E8\",\r\n \"itaiji\": [\r\n \"\u93E9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u93F8\",\r\n \"itaiji\": [\r\n \"\uD862\uDECD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u942B\",\r\n \"itaiji\": [\r\n \"\u93B8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9438\",\r\n \"itaiji\": [\r\n \"\u922C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9451\",\r\n \"itaiji\": [\r\n \"\u9373\",\r\n \"\u9452\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9453\",\r\n \"itaiji\": [\r\n \"\uD862\uDFEF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9463\",\r\n \"itaiji\": [\r\n \"\u4BBD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u946A\",\r\n \"itaiji\": [\r\n \"\u9229\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9475\",\r\n \"itaiji\": [\r\n \"\uD862\uDEDD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u947D\",\r\n \"itaiji\": [\r\n \"\u945A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9577\",\r\n \"itaiji\": [\r\n \"\u9578\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9589\",\r\n \"itaiji\": [\r\n \"\u9587\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u958F\",\r\n \"itaiji\": [\r\n \"\u95A0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9593\",\r\n \"itaiji\": [\r\n \"\u9592\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u95A2\",\r\n \"itaiji\": [\r\n \"\u95DC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u95B2\",\r\n \"itaiji\": [\r\n \"\u95B1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u95BB\",\r\n \"itaiji\": [\r\n \"\u9586\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u95C3\",\r\n \"itaiji\": [\r\n \"\u95B4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u95CA\",\r\n \"itaiji\": [\r\n \"\u6FF6\",\r\n \"\uD850\uDD03\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u95D8\",\r\n \"itaiji\": [\r\n \"\u9B2A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9624\",\r\n \"itaiji\": [\r\n \"\u9641\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9628\",\r\n \"itaiji\": [\r\n \"\u9638\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u964B\",\r\n \"itaiji\": [\r\n \"\uD863\uDE5F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u965B\",\r\n \"itaiji\": [\r\n \"\u3644\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u965F\",\r\n \"itaiji\": [\r\n \"\u5F8F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9665\",\r\n \"itaiji\": [\r\n \"\u9677\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9670\",\r\n \"itaiji\": [\r\n \"\u9634\",\r\n \"\u9682\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u967A\",\r\n \"itaiji\": [\r\n \"\u96AA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u967D\",\r\n \"itaiji\": [\r\n \"\u9633\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9686\",\r\n \"itaiji\": [\r\n \"\uF9DC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u968E\",\r\n \"itaiji\": [\r\n \"\u5826\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u968F\",\r\n \"itaiji\": [\r\n \"\u96A8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9699\",\r\n \"itaiji\": [\r\n \"\uD863\uDEF6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96A0\",\r\n \"itaiji\": [\r\n \"\u96B1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96B4\",\r\n \"itaiji\": [\r\n \"\uD863\uDEEB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96B7\",\r\n \"itaiji\": [\r\n \"\u96B8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96BA\",\r\n \"itaiji\": [\r\n \"\u5BC9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96C1\",\r\n \"itaiji\": [\r\n \"\u9CEB\",\r\n \"\u9D08\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96C4\",\r\n \"itaiji\": [\r\n \"\u49FA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96C6\",\r\n \"itaiji\": [\r\n \"\u96E7\",\r\n \"\u4EBC\",\r\n \"\uD840\uDF71\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96CB\",\r\n \"itaiji\": [\r\n \"\u96BD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96CC\",\r\n \"itaiji\": [\r\n \"\u4CC4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96CD\",\r\n \"itaiji\": [\r\n \"\u96DD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96D1\",\r\n \"itaiji\": [\r\n \"\u96DC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96D5\",\r\n \"itaiji\": [\r\n \"\u9D70\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96D6\",\r\n \"itaiji\": [\r\n \"\uD863\uDFFD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96DB\",\r\n \"itaiji\": [\r\n \"\u9DB5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96E3\",\r\n \"itaiji\": [\r\n \"\uFA68\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u96F7\",\r\n \"itaiji\": [\r\n \"\u9741\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u970A\",\r\n \"itaiji\": [\r\n \"\u9748\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9722\",\r\n \"itaiji\": [\r\n \"\u9721\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u974A\",\r\n \"itaiji\": [\r\n \"\u973B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9752\",\r\n \"itaiji\": [\r\n \"\u9751\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9756\",\r\n \"itaiji\": [\r\n \"\uFA1C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9759\",\r\n \"itaiji\": [\r\n \"\u975C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9762\",\r\n \"itaiji\": [\r\n \"\u9763\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9771\",\r\n \"itaiji\": [\r\n \"\u976D\",\r\n \"\u97CC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9774\",\r\n \"itaiji\": [\r\n \"\u97BE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u978B\",\r\n \"itaiji\": [\r\n \"\u97B5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u978D\",\r\n \"itaiji\": [\r\n \"\u978C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9798\",\r\n \"itaiji\": [\r\n \"\u97D2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97A0\",\r\n \"itaiji\": [\r\n \"\u6BF1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97AB\",\r\n \"itaiji\": [\r\n \"\uD857\uDDDA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97B9\",\r\n \"itaiji\": [\r\n \"\u979F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97CA\",\r\n \"itaiji\": [\r\n \"\u4A8D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97DD\",\r\n \"itaiji\": [\r\n \"\u97B2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97E0\",\r\n \"itaiji\": [\r\n \"\u97B8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97ED\",\r\n \"itaiji\": [\r\n \"\u97EE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97F3\",\r\n \"itaiji\": [\r\n \"\u2FB3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97FB\",\r\n \"itaiji\": [\r\n \"\u97F5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u97FF\",\r\n \"itaiji\": [\r\n \"\uFA69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9824\",\r\n \"itaiji\": [\r\n \"\uD85A\uDCDD\",\r\n \"\u9825\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9830\",\r\n \"itaiji\": [\r\n \"\u982C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9838\",\r\n \"itaiji\": [\r\n \"\u981A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u983B\",\r\n \"itaiji\": [\r\n \"\uFA6A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u983C\",\r\n \"itaiji\": [\r\n \"\u8CF4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u983D\",\r\n \"itaiji\": [\r\n \"\u9839\",\r\n \"\u983A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u984B\",\r\n \"itaiji\": [\r\n \"\u816E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9854\",\r\n \"itaiji\": [\r\n \"\u984F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9855\",\r\n \"itaiji\": [\r\n \"\u986F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u985A\",\r\n \"itaiji\": [\r\n \"\u985B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u985E\",\r\n \"itaiji\": [\r\n \"\uF9D0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98A8\",\r\n \"itaiji\": [\r\n \"\u51EE\",\r\n \"\u51EC\",\r\n \"\u98CC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98C4\",\r\n \"itaiji\": [\r\n \"\u98C3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98C6\",\r\n \"itaiji\": [\r\n \"\u98C7\",\r\n \"\u98C8\",\r\n \"\u98B7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98DF\",\r\n \"itaiji\": [\r\n \"\u2FB7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98E7\",\r\n \"itaiji\": [\r\n \"\u98F1\",\r\n \"\u98E1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98EF\",\r\n \"itaiji\": [\r\n \"\uFA2A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98F2\",\r\n \"itaiji\": [\r\n \"\u98EE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u98FC\",\r\n \"itaiji\": [\r\n \"\uFA2B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9905\",\r\n \"itaiji\": [\r\n \"\u9920\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9909\",\r\n \"itaiji\": [\r\n \"\uD865\uDF0B\",\r\n \"\u995F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9910\",\r\n \"itaiji\": [\r\n \"\u6E4C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u991E\",\r\n \"itaiji\": [\r\n \"\u4B3B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9928\",\r\n \"itaiji\": [\r\n \"\uFA2C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u992C\",\r\n \"itaiji\": [\r\n \"\uD865\uDEA9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9931\",\r\n \"itaiji\": [\r\n \"\u7CC7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9934\",\r\n \"itaiji\": [\r\n \"\u9959\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9945\",\r\n \"itaiji\": [\r\n \"\uD868\uDF69\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u994C\",\r\n \"itaiji\": [\r\n \"\u4275\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u994E\",\r\n \"itaiji\": [\r\n \"\u7CE6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9952\",\r\n \"itaiji\": [\r\n \"\uD865\uDF19\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9958\",\r\n \"itaiji\": [\r\n \"\u98E6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9998\",\r\n \"itaiji\": [\r\n \"\u805D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u99C4\",\r\n \"itaiji\": [\r\n \"\u99B1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u99C5\",\r\n \"itaiji\": [\r\n \"\u9A5B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u99C6\",\r\n \"itaiji\": [\r\n \"\u9A45\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u99DD\",\r\n \"itaiji\": [\r\n \"\u99DE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u99FB\",\r\n \"itaiji\": [\r\n \"\u99AF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A08\",\r\n \"itaiji\": [\r\n \"\u99E2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A12\",\r\n \"itaiji\": [\r\n \"\u9A37\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A13\",\r\n \"itaiji\": [\r\n \"\u9A57\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A2D\",\r\n \"itaiji\": [\r\n \"\u96B2\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A3E\",\r\n \"itaiji\": [\r\n \"\u9A58\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A41\",\r\n \"itaiji\": [\r\n \"\u4BAF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A51\",\r\n \"itaiji\": [\r\n \"\u9A2E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A52\",\r\n \"itaiji\": [\r\n \"\u9A28\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9A62\",\r\n \"itaiji\": [\r\n \"\u99BF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9AC4\",\r\n \"itaiji\": [\r\n \"\u9AD3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9AD8\",\r\n \"itaiji\": [\r\n \"\u9AD9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9AE1\",\r\n \"itaiji\": [\r\n \"\u9AE0\",\r\n \"\u9AE8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9AE5\",\r\n \"itaiji\": [\r\n \"\u9AEF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9AEA\",\r\n \"itaiji\": [\r\n \"\u9AEE\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9AED\",\r\n \"itaiji\": [\r\n \"\u983E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B22\",\r\n \"itaiji\": [\r\n \"\u9B02\",\r\n \"\u9AE9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B23\",\r\n \"itaiji\": [\r\n \"\u3CB1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B27\",\r\n \"itaiji\": [\r\n \"\u9599\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B2E\",\r\n \"itaiji\": [\r\n \"\u4C17\",\r\n \"\u49B0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B31\",\r\n \"itaiji\": [\r\n \"\u6B1D\",\r\n \"\uD84E\uDC78\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B32\",\r\n \"itaiji\": [\r\n \"\u4C1B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B42\",\r\n \"itaiji\": [\r\n \"\u4C1F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B45\",\r\n \"itaiji\": [\r\n \"\u9B3D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B5A\",\r\n \"itaiji\": [\r\n \"\uD867\uDD4B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B91\",\r\n \"itaiji\": [\r\n \"\u86AB\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9B92\",\r\n \"itaiji\": [\r\n \"\uD867\uDDFA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9BA8\",\r\n \"itaiji\": [\r\n \"\u4C48\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9BBE\",\r\n \"itaiji\": [\r\n \"\u9BD8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9BCA\",\r\n \"itaiji\": [\r\n \"\u9BCB\",\r\n \"\u9B66\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C0C\",\r\n \"itaiji\": [\r\n \"\u9C0D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C10\",\r\n \"itaiji\": [\r\n \"\u9C77\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C25\",\r\n \"itaiji\": [\r\n \"\uD867\uDEC4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C2E\",\r\n \"itaiji\": [\r\n \"\u9C1B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C3A\",\r\n \"itaiji\": [\r\n \"\u9BF5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C6A\",\r\n \"itaiji\": [\r\n \"\u9C70\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C6D\",\r\n \"itaiji\": [\r\n \"\u9B86\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C76\",\r\n \"itaiji\": [\r\n \"\u9BD7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9C78\",\r\n \"itaiji\": [\r\n \"\u9B72\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9CE7\",\r\n \"itaiji\": [\r\n \"\u9CEC\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D03\",\r\n \"itaiji\": [\r\n \"\u9D02\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D09\",\r\n \"itaiji\": [\r\n \"\uD867\uDFCE\",\r\n \"\u9D76\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D1D\",\r\n \"itaiji\": [\r\n \"\u9E1C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D1F\",\r\n \"itaiji\": [\r\n \"\u9D44\",\r\n \"\uD863\uDFA6\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D25\",\r\n \"itaiji\": [\r\n \"\u9D2A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D59\",\r\n \"itaiji\": [\r\n \"\u9DAA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D5D\",\r\n \"itaiji\": [\r\n \"\u9D5E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D61\",\r\n \"itaiji\": [\r\n \"\u4CC7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D6A\",\r\n \"itaiji\": [\r\n \"\u4A04\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D72\",\r\n \"itaiji\": [\r\n \"\u49FF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D89\",\r\n \"itaiji\": [\r\n \"\uD863\uDFE1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9D8F\",\r\n \"itaiji\": [\r\n \"\u9DC4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9DA4\",\r\n \"itaiji\": [\r\n \"\u9D7E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9DAF\",\r\n \"itaiji\": [\r\n \"\u9D2C\",\r\n \"\u9E0E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9DB4\",\r\n \"itaiji\": [\r\n \"\u974D\",\r\n \"\u974E\",\r\n \"\u974F\",\r\n \"\uFA2D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9DBA\",\r\n \"itaiji\": [\r\n \"\uD868\uDCF9\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9DC0\",\r\n \"itaiji\": [\r\n \"\u9DBF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9DC6\",\r\n \"itaiji\": [\r\n \"\u9DCF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9DD7\",\r\n \"itaiji\": [\r\n \"\u9D0E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9E1B\",\r\n \"itaiji\": [\r\n \"\u96DA\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9E79\",\r\n \"itaiji\": [\r\n \"\u918E\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9E7C\",\r\n \"itaiji\": [\r\n \"\u9E78\",\r\n \"\u9E7B\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9E7F\",\r\n \"itaiji\": [\r\n \"\uD848\uDE18\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9E87\",\r\n \"itaiji\": [\r\n \"\u9E95\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9E97\",\r\n \"itaiji\": [\r\n \"\u4D21\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9E9E\",\r\n \"itaiji\": [\r\n \"\u7350\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EA4\",\r\n \"itaiji\": [\r\n \"\u9E81\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EA6\",\r\n \"itaiji\": [\r\n \"\u9EA5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EB3\",\r\n \"itaiji\": [\r\n \"\uD868\uDF8C\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EB4\",\r\n \"itaiji\": [\r\n \"\u9EB9\",\r\n \"\u9EAF\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EBA\",\r\n \"itaiji\": [\r\n \"\u9EB5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EBB\",\r\n \"itaiji\": [\r\n \"\u2FC7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EBC\",\r\n \"itaiji\": [\r\n \"\u9EBD\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9EC4\",\r\n \"itaiji\": [\r\n \"\u9EC3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9ED2\",\r\n \"itaiji\": [\r\n \"\u9ED1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9ED9\",\r\n \"itaiji\": [\r\n \"\u9ED8\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F07\",\r\n \"itaiji\": [\r\n \"\u9C32\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F08\",\r\n \"itaiji\": [\r\n \"\u9C49\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F0E\",\r\n \"itaiji\": [\r\n \"\uD869\uDD02\",\r\n \"\uD84C\uDDC4\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F13\",\r\n \"itaiji\": [\r\n \"\u76B7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F16\",\r\n \"itaiji\": [\r\n \"\uD869\uDD35\",\r\n \"\u4A7F\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F20\",\r\n \"itaiji\": [\r\n \"\u9F21\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F34\",\r\n \"itaiji\": [\r\n \"\u9F39\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F3B\",\r\n \"itaiji\": [\r\n \"\u2FD0\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F4F\",\r\n \"itaiji\": [\r\n \"\u97F2\",\r\n \"\u8640\",\r\n \"\u4AA1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F54\",\r\n \"itaiji\": [\r\n \"\u9F53\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F5F\",\r\n \"itaiji\": [\r\n \"\uD869\uDDF1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F62\",\r\n \"itaiji\": [\r\n \"\u9F61\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F67\",\r\n \"itaiji\": [\r\n \"\uD869\uDE02\",\r\n \"\u56D3\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F6C\",\r\n \"itaiji\": [\r\n \"\uD869\uDE1A\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\u9F76\",\r\n \"itaiji\": [\r\n \"\u816D\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uFA20\",\r\n \"itaiji\": [\r\n \"\u8612\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD840\uDCA3\",\r\n \"itaiji\": [\r\n \"\u3406\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD842\uDF9F\",\r\n \"itaiji\": [\r\n \"\u53F1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD845\uDC6D\",\r\n \"itaiji\": [\r\n \"\uD844\uDED7\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD845\uDD82\",\r\n \"itaiji\": [\r\n \"\u8641\",\r\n \"\u5914\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD846\uDCCD\",\r\n \"itaiji\": [\r\n \"\u5B34\",\r\n \"\uD846\uDC94\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD857\uDE24\",\r\n \"itaiji\": [\r\n \"\u9FA5\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD862\uDEE4\",\r\n \"itaiji\": [\r\n \"\uD862\uDFC1\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD864\uDD78\",\r\n \"itaiji\": [\r\n \"\u9724\"\r\n ]\r\n },\r\n {\r\n \"oyaji\": \"\uD865\uDFB7\",\r\n \"itaiji\": [\r\n \"\u993E\"\r\n ]\r\n }\r\n]\r\n", "[\r\n \"\u3FD7\",\r\n \"\uD85C\uDFFE\",\r\n \"\uD863\uDE1F\",\r\n \"\u5F0C\",\r\n \"\u842C\",\r\n \"\uD840\uDC0B\",\r\n \"\u5F0E\",\r\n \"\u8207\",\r\n \"\u4E12\",\r\n \"\u4E17\",\r\n \"\u534B\",\r\n \"\u90B1\",\r\n \"\u3400\",\r\n \"\u5775\",\r\n \"\u5169\",\r\n \"\u7ADD\",\r\n \"\u535D\",\r\n \"\u4E46\",\r\n \"\u9579\",\r\n \"\u4E58\",\r\n \"\u4E82\",\r\n \"\u4E79\",\r\n \"\u9F9C\",\r\n \"\u8C6B\",\r\n \"\u722D\",\r\n \"\u4E8A\",\r\n \"\u53D3\",\r\n \"\u355D\",\r\n \"\u5F0D\",\r\n \"\u4E8F\",\r\n \"\u4E90\",\r\n \"\u4E9E\",\r\n \"\u710F\",\r\n \"\u4EAF\",\r\n \"\u4EB0\",\r\n \"\uD840\uDD58\",\r\n \"\uD840\uDD59\",\r\n \"\u4EBB\",\r\n \"\uD840\uDDA2\",\r\n \"\u4ED0\",\r\n \"\uD86D\uDF46\",\r\n \"\u4F5B\",\r\n \"\u4EED\",\r\n \"\u382F\",\r\n \"\u5047\",\r\n \"\u6703\",\r\n \"\u50B3\",\r\n \"\u4F40\",\r\n \"\u7ADA\",\r\n \"\u9AD4\",\r\n \"\u9918\",\r\n \"\u505A\",\r\n \"\u4FAB\",\r\n \"\u73EE\",\r\n \"\u5002\",\r\n \"\uD840\uDE32\",\r\n \"\uD840\uDE55\",\r\n \"\uD840\uDE09\",\r\n \"\u5058\",\r\n \"\u50F9\",\r\n \"\uFA30\",\r\n \"\u77E6\",\r\n \"\uD854\uDFA6\",\r\n \"\uD840\uDEB3\",\r\n \"\u723C\",\r\n \"\u60A7\",\r\n \"\u7AE2\",\r\n \"\u4FA0\",\r\n \"\u3468\",\r\n \"\u5036\",\r\n \"\u4F1C\",\r\n \"\uD840\uDE13\",\r\n \"\u4FD6\",\r\n \"\u5010\",\r\n \"\u7102\",\r\n \"\uD840\uDEB1\",\r\n \"\uD840\uDEE3\",\r\n \"\u52CC\",\r\n \"\u5109\",\r\n \"\u5FA4\",\r\n \"\u500A\",\r\n \"\u50AF\",\r\n \"\u5077\",\r\n \"\u50DE\",\r\n \"\uD840\uDF58\",\r\n \"\u50C3\",\r\n \"\u5079\",\r\n \"\u4FF2\",\r\n \"\u6160\",\r\n \"\u507B\",\r\n \"\u3452\",\r\n \"\uD87E\uDC0B\",\r\n \"\u3492\",\r\n \"\u4451\",\r\n \"\uFA31\",\r\n \"\u50E3\",\r\n \"\u349E\",\r\n \"\u4FE6\",\r\n \"\uD840\uDF7B\",\r\n \"\u346A\",\r\n \"\u4FAD\",\r\n \"\uD841\uDC27\",\r\n \"\u4F60\",\r\n \"\u50A5\",\r\n \"\uD841\uDC4A\",\r\n \"\uFA74\",\r\n \"\uD842\uDDDE\",\r\n \"\u706E\",\r\n \"\u7097\",\r\n \"\u514A\",\r\n \"\u5151\",\r\n \"\uFA32\",\r\n \"\uD87E\uDC0F\",\r\n \"\u5154\",\r\n \"\u5152\",\r\n \"\uD85F\uDC3D\",\r\n \"\uD850\uDE61\",\r\n \"\u5156\",\r\n \"\u9EE8\",\r\n \"\u5160\",\r\n \"\u4FDE\",\r\n \"\uFA75\",\r\n \"\u517E\",\r\n \"\u518B\",\r\n \"\u5167\",\r\n \"\u5713\",\r\n \"\u5184\",\r\n \"\u518C\",\r\n \"\u56E7\",\r\n \"\uD87E\uDC17\",\r\n \"\u5B82\",\r\n \"\u5BEB\",\r\n \"\uD842\uDCE5\",\r\n \"\u5BC3\",\r\n \"\u3760\",\r\n \"\u7F83\",\r\n \"\u5E42\",\r\n \"\uD87E\uDC1A\",\r\n \"\uD841\uDDB1\",\r\n \"\u6DD2\",\r\n \"\u51DB\",\r\n \"\uD841\uDE21\",\r\n \"\u6F9F\",\r\n \"\u8655\",\r\n \"\u51F4\",\r\n \"\uD84E\uDDD1\",\r\n \"\u51FE\",\r\n \"\u5705\",\r\n \"\u91D6\",\r\n \"\u82C5\",\r\n \"\uD841\uDEC4\",\r\n \"\u520B\",\r\n \"\uD841\uDEEC\",\r\n \"\u34DD\",\r\n \"\u3774\",\r\n \"\u522A\",\r\n \"\uD841\uDF02\",\r\n \"\uD841\uDEF0\",\r\n \"\uD855\uDF64\",\r\n \"\uD841\uDF1C\",\r\n \"\u524F\",\r\n \"\u5259\",\r\n \"\uD841\uDF65\",\r\n \"\uD841\uDF3D\",\r\n \"\u9B00\",\r\n \"\uD841\uDFED\",\r\n \"\u52CA\",\r\n \"\u5C05\",\r\n \"\uD841\uDF13\",\r\n \"\u34FB\",\r\n \"\uD841\uDEE0\",\r\n \"\u5265\",\r\n \"\u528D\",\r\n \"\u5291\",\r\n \"\u7FE6\",\r\n \"\u5269\",\r\n \"\uD87E\uDC22\",\r\n \"\u5205\",\r\n \"\u6227\",\r\n \"\uD841\uDFD0\",\r\n \"\uD841\uDFB0\",\r\n \"\u528B\",\r\n \"\u34DB\",\r\n \"\u5227\",\r\n \"\u5226\",\r\n \"\u52F5\",\r\n \"\u52DE\",\r\n \"\u6548\",\r\n \"\u52A4\",\r\n \"\u6555\",\r\n \"\uFA33\",\r\n \"\u52D7\",\r\n \"\u351F\",\r\n \"\uFA34\",\r\n \"\u52F8\",\r\n \"\u52F3\",\r\n \"\uD87E\uDC28\",\r\n \"\u5300\",\r\n \"\u5304\",\r\n \"\u56F1\",\r\n \"\uD87E\uDC2A\",\r\n \"\u5307\",\r\n \"\u5E00\",\r\n \"\u8FCA\",\r\n \"\u6ED9\",\r\n \"\u5332\",\r\n \"\u5969\",\r\n \"\u7C62\",\r\n \"\u91AB\",\r\n \"\uD842\uDD83\",\r\n \"\uD87E\uDC2C\",\r\n \"\u8294\",\r\n \"\uFA35\",\r\n \"\u5346\",\r\n \"\u461A\",\r\n \"\u684C\",\r\n \"\u604A\",\r\n \"\u65EA\",\r\n \"\u55AE\",\r\n \"\uD842\uDDEA\",\r\n \"\u5DF5\",\r\n \"\u5918\",\r\n \"\u623C\",\r\n \"\u537D\",\r\n \"\u537B\",\r\n \"\u3541\",\r\n \"\u5DF9\",\r\n \"\uD85E\uDFE2\",\r\n \"\uD848\uDC3E\",\r\n \"\uD87E\uDC33\",\r\n \"\uD848\uDC34\",\r\n \"\u3AD7\",\r\n \"\u53A1\",\r\n \"\u5EDA\",\r\n \"\u3551\",\r\n \"\u5ECF\",\r\n \"\u5ED0\",\r\n \"\u7312\",\r\n \"\u5389\",\r\n \"\u56B4\",\r\n \"\u53BA\",\r\n \"\u53C3\",\r\n \"\u96D9\",\r\n \"\u6536\",\r\n \"\uD842\uDD91\",\r\n \"\u654D\",\r\n \"\u53DC\",\r\n \"\u777F\",\r\n \"\u6A37\",\r\n \"\u85C2\",\r\n \"\uD87E\uDC39\",\r\n \"\u81FA\",\r\n \"\u355C\",\r\n \"\u865F\",\r\n \"\uD842\uDFCF\",\r\n \"\uD842\uDFB7\",\r\n \"\u4EDD\",\r\n \"\u3581\",\r\n \"\u5451\",\r\n \"\u8A21\",\r\n \"\u9FA1\",\r\n \"\u8117\",\r\n \"\u4407\",\r\n \"\u544D\",\r\n \"\u5433\",\r\n \"\u543F\",\r\n \"\uD87E\uDC3F\",\r\n \"\u5492\",\r\n \"\u548A\",\r\n \"\u9FA2\",\r\n \"\u35BE\",\r\n \"\u5412\",\r\n \"\u549C\",\r\n \"\u8C9F\",\r\n \"\u608A\",\r\n \"\u569E\",\r\n \"\u5586\",\r\n \"\u5560\",\r\n \"\u8123\",\r\n \"\u560A\",\r\n \"\u5557\",\r\n \"\u5649\",\r\n \"\u5516\",\r\n \"\u8B71\",\r\n \"\u35CB\",\r\n \"\u3402\",\r\n \"\u6B56\",\r\n \"\uFA36\",\r\n \"\u55BB\",\r\n \"\u462E\",\r\n \"\uD843\uDDD4\",\r\n \"\u71DF\",\r\n \"\u9F45\",\r\n \"\u55F8\",\r\n \"\uFA37\",\r\n \"\u8B3C\",\r\n \"\u5455\",\r\n \"\u751E\",\r\n \"\uD843\uDE49\",\r\n \"\uD843\uDD45\",\r\n \"\u5628\",\r\n \"\u56D1\",\r\n \"\u55E5\",\r\n \"\u5618\",\r\n \"\uFA38\",\r\n \"\uD87E\uDC4F\",\r\n \"\u568F\",\r\n \"\u565B\",\r\n \"\u56BB\",\r\n \"\u56A2\",\r\n \"\u56D8\",\r\n \"\u56EC\",\r\n \"\u9856\",\r\n \"\u56D9\",\r\n \"\u5718\",\r\n \"\u570D\",\r\n \"\u5716\",\r\n \"\u570B\",\r\n \"\u5708\",\r\n \"\u8597\",\r\n \"\uD844\uDE3D\",\r\n \"\u5721\",\r\n \"\u58D3\",\r\n \"\u73EA\",\r\n \"\u962F\",\r\n \"\u574B\",\r\n \"\u57F3\",\r\n \"\u962B\",\r\n \"\u576F\",\r\n \"\u3634\",\r\n \"\u962C\",\r\n \"\uD844\uDF69\",\r\n \"\u57C0\",\r\n \"\u7561\",\r\n \"\u579C\",\r\n \"\uD844\uDEF3\",\r\n \"\u85B6\",\r\n \"\uD87E\uDC52\",\r\n \"\u57D3\",\r\n \"\u57D7\",\r\n \"\uD844\uDE7B\",\r\n \"\u79C7\",\r\n \"\uD840\uDCA4\",\r\n \"\u58AE\",\r\n \"\u5822\",\r\n \"\u57DE\",\r\n \"\u9681\",\r\n \"\u5872\",\r\n \"\uFA39\",\r\n \"\u58D8\",\r\n \"\u5818\",\r\n \"\uD84C\uDF92\",\r\n \"\u757B\",\r\n \"\uFA10\",\r\n \"\u586B\",\r\n \"\u9E7D\",\r\n \"\uD845\uDC1B\",\r\n \"\u58CD\",\r\n \"\u3662\",\r\n \"\uD844\uDFF2\",\r\n \"\u589E\",\r\n \"\uFA3A\",\r\n \"\u58AA\",\r\n \"\uFA7D\",\r\n \"\u3672\",\r\n \"\u58DE\",\r\n \"\u58E4\",\r\n \"\u5864\",\r\n \"\uD844\uDEE4\",\r\n \"\uD844\uDE74\",\r\n \"\u7F4E\",\r\n \"\u58E0\",\r\n \"\u58EF\",\r\n \"\u8072\",\r\n \"\u58F9\",\r\n \"\u8CE3\",\r\n \"\u58F7\",\r\n \"\u8B8A\",\r\n \"\u591B\",\r\n \"\u7AD2\",\r\n \"\uF909\",\r\n \"\uFA7F\",\r\n \"\u5F09\",\r\n \"\u5967\",\r\n \"\u596C\",\r\n \"\u59D9\",\r\n \"\uD845\uDF69\",\r\n \"\u7385\",\r\n \"\uD845\uDF42\",\r\n \"\u5A24\",\r\n \"\u5992\",\r\n \"\u59CA\",\r\n \"\u59E7\",\r\n \"\u4F84\",\r\n \"\uD87E\uDC62\",\r\n \"\u5AE6\",\r\n \"\u598D\",\r\n \"\u5A63\",\r\n \"\u59E2\",\r\n \"\u5A1B\",\r\n \"\u5A40\",\r\n \"\u59B8\",\r\n \"\u36F0\",\r\n \"\u58FB\",\r\n \"\u805F\",\r\n \"\u5AAA\",\r\n \"\u3475\",\r\n \"\u5AF0\",\r\n \"\u5A86\",\r\n \"\uD846\uDC1C\",\r\n \"\u5A2C\",\r\n \"\u5AFB\",\r\n \"\uD846\uDC83\",\r\n \"\u5B43\",\r\n \"\u5AD0\",\r\n \"\u5A1A\",\r\n \"\uD87E\uDC6B\",\r\n \"\u373D\",\r\n \"\u5B78\",\r\n \"\u5B73\",\r\n \"\uD846\uDD98\",\r\n \"\u5B7D\",\r\n \"\u386F\",\r\n \"\uD846\uDDC3\",\r\n \"\u3762\",\r\n \"\u57A8\",\r\n \"\uD845\uDEB4\",\r\n \"\u5B90\",\r\n \"\u519D\",\r\n \"\u5BF6\",\r\n \"\u5BE6\",\r\n \"\u375B\",\r\n \"\u51A6\",\r\n \"\uD846\uDE25\",\r\n \"\u51A8\",\r\n \"\u5EBD\",\r\n \"\u5BEC\",\r\n \"\u5BE2\",\r\n \"\uF95F\",\r\n \"\u41BF\",\r\n \"\u5C0D\",\r\n \"\u58FD\",\r\n \"\u5C08\",\r\n \"\u5C07\",\r\n \"\u5C19\",\r\n \"\u5C1F\",\r\n \"\u5C23\",\r\n \"\u5C2B\",\r\n \"\u5C2A\",\r\n \"\uD846\uDFEA\",\r\n \"\u582F\",\r\n \"\u378D\",\r\n \"\u76E1\",\r\n \"\uD856\uDDD4\",\r\n \"\u5C46\",\r\n \"\uD847\uDC41\",\r\n \"\u5C4F\",\r\n \"\u5C6C\",\r\n \"\u5C61\",\r\n \"\uFA3B\",\r\n \"\u5C53\",\r\n \"\u5D17\",\r\n \"\u583D\",\r\n \"\uD847\uDD92\",\r\n \"\u5CBA\",\r\n \"\u5DBD\",\r\n \"\u37C1\",\r\n \"\uD847\uDD9C\",\r\n \"\u5CFD\",\r\n \"\u5CE9\",\r\n \"\u5CEF\",\r\n \"\u5D8B\",\r\n \"\u5D8C\",\r\n \"\u3800\",\r\n \"\u5DB9\",\r\n \"\u9666\",\r\n \"\u969D\",\r\n \"\u96AF\",\r\n \"\uFA11\",\r\n \"\u5D5C\",\r\n \"\u37E2\",\r\n \"\u966D\",\r\n \"\u5D10\",\r\n \"\u5D2A\",\r\n \"\u5D15\",\r\n \"\u5D18\",\r\n \"\u5D2B\",\r\n \"\u5D47\",\r\n \"\u7BCF\",\r\n \"\u5D53\",\r\n \"\u5D27\",\r\n \"\u37F4\",\r\n \"\u5D73\",\r\n \"\u5D84\",\r\n \"\uD847\uDE33\",\r\n \"\u5DA4\",\r\n \"\uD847\uDD78\",\r\n \"\u5DD6\",\r\n \"\u5DDB\",\r\n \"\u5DE2\",\r\n \"\u352B\",\r\n \"\u8856\",\r\n \"\u5377\",\r\n \"\uD87E\uDC84\",\r\n \"\uD848\uDC6B\",\r\n \"\u4F16\",\r\n \"\u83F7\",\r\n \"\u5E08\",\r\n \"\u5E36\",\r\n \"\u6B78\",\r\n \"\u5E59\",\r\n \"\u5E47\",\r\n \"\u5E2E\",\r\n \"\uD848\uDCD6\",\r\n \"\u3861\",\r\n \"\u79CA\",\r\n \"\u5F00\",\r\n \"\u5E76\",\r\n \"\uD840\uDCB7\",\r\n \"\u69A6\",\r\n \"\u4E48\",\r\n \"\uD848\uDDB2\",\r\n \"\u5EF3\",\r\n \"\u5EE3\",\r\n \"\uD86D\uDF77\",\r\n \"\u5EBB\",\r\n \"\u53A0\",\r\n \"\u53A2\",\r\n \"\u5EE2\",\r\n \"\u53A6\",\r\n \"\uF9A2\",\r\n \"\uF928\",\r\n \"\u58E5\",\r\n \"\u913D\",\r\n \"\u367B\",\r\n \"\u53AE\",\r\n \"\u5EBF\",\r\n \"\u5E99\",\r\n \"\uD86A\uDC18\",\r\n \"\u342D\",\r\n \"\u5EEA\",\r\n \"\u5EFD\",\r\n \"\uD848\uDF1E\",\r\n \"\u8FF4\",\r\n \"\u5344\",\r\n \"\u8FA8\",\r\n \"\u8FAF\",\r\n \"\u74E3\",\r\n \"\u630A\",\r\n \"\u6335\",\r\n \"\u8CB3\",\r\n \"\u5F12\",\r\n \"\u38AE\",\r\n \"\u5F4C\",\r\n \"\u5F3A\",\r\n \"\u5F3B\",\r\n \"\uD849\uDC00\",\r\n \"\u5F48\",\r\n \"\uD85B\uDFF6\",\r\n \"\u5F2F\",\r\n \"\u5F51\",\r\n \"\u7576\",\r\n \"\u5F5A\",\r\n \"\u5F5C\",\r\n \"\uD87E\uDC99\",\r\n \"\uD849\uDC88\",\r\n \"\u5F65\",\r\n \"\uD87E\uDC9A\",\r\n \"\u658C\",\r\n \"\uD861\uDC8C\",\r\n \"\u4890\",\r\n \"\u5F91\",\r\n \"\uD849\uDCC8\",\r\n \"\uD861\uDC52\",\r\n \"\u5F9E\",\r\n \"\u3775\",\r\n \"\uD849\uDD36\",\r\n \"\uD861\uDC6D\",\r\n \"\u509C\",\r\n \"\u5FB7\",\r\n \"\u5FB5\",\r\n \"\u61C9\",\r\n \"\uD849\uDDD8\",\r\n \"\uD849\uDDCC\",\r\n \"\u6091\",\r\n \"\uD849\uDEC5\",\r\n \"\u6056\",\r\n \"\u6060\",\r\n \"\u5FE9\",\r\n \"\u60A4\",\r\n \"\u6200\",\r\n \"\u6046\",\r\n \"\u392C\",\r\n \"\u3707\",\r\n \"\u5FF7\",\r\n \"\uD849\uDE4A\",\r\n \"\u5379\",\r\n \"\u460F\",\r\n \"\u803B\",\r\n \"\uD849\uDE43\",\r\n \"\u3929\",\r\n \"\u6119\",\r\n \"\uD849\uDE44\",\r\n \"\u60E0\",\r\n \"\uD849\uDDB9\",\r\n \"\u6061\",\r\n \"\uFA3D\",\r\n \"\u5FE2\",\r\n \"\u6085\",\r\n \"\u60F1\",\r\n \"\u60E1\",\r\n \"\u3971\",\r\n \"\u5FF0\",\r\n \"\u3943\",\r\n \"\u6053\",\r\n \"\uD87E\uDCA5\",\r\n \"\u6090\",\r\n \"\u60FD\",\r\n \"\uD84A\uDC35\",\r\n \"\u6158\",\r\n \"\u619C\",\r\n \"\uD849\uDF9B\",\r\n \"\u8AD0\",\r\n \"\uD84A\uDC9A\",\r\n \"\u3905\",\r\n \"\u3966\",\r\n \"\u5ABF\",\r\n \"\u6164\",\r\n \"\uD87E\uDCA6\",\r\n \"\u393A\",\r\n \"\u6120\",\r\n \"\u613C\",\r\n \"\u615A\",\r\n \"\uD84A\uDC94\",\r\n \"\u5FFC\",\r\n \"\u617D\",\r\n \"\u6121\",\r\n \"\uD849\uDF4A\",\r\n \"\uD849\uDFE1\",\r\n \"\uFA3F\",\r\n \"\u617F\",\r\n \"\u6197\",\r\n \"\u6198\",\r\n \"\u60EE\",\r\n \"\u619E\",\r\n \"\uD87E\uDCAD\",\r\n \"\u6187\",\r\n \"\uD84A\uDC7B\",\r\n \"\uD87E\uDCAC\",\r\n \"\uD84A\uDC46\",\r\n \"\uD84A\uDCA3\",\r\n \"\u3907\",\r\n \"\u61D4\",\r\n \"\u61F7\",\r\n \"\u3994\",\r\n \"\uD84A\uDC5B\",\r\n \"\u611E\",\r\n \"\uFA40\",\r\n \"\uD87E\uDCB1\",\r\n \"\u61F4\",\r\n \"\u6133\",\r\n \"\u39A4\",\r\n \"\uD87E\uDCB2\",\r\n \"\u39AF\",\r\n \"\u621E\",\r\n \"\uD84A\uDDE2\",\r\n \"\u6230\",\r\n \"\uD84A\uDDF5\",\r\n \"\u6232\",\r\n \"\uFA8C\",\r\n \"\u6236\",\r\n \"\u623E\",\r\n \"\u62C2\",\r\n \"\uD84B\uDC67\",\r\n \"\u6439\",\r\n \"\u39D6\",\r\n \"\u3ABF\",\r\n \"\u62D4\",\r\n \"\u64C7\",\r\n \"\uD84A\uDF46\",\r\n \"\u64D4\",\r\n \"\u80DF\",\r\n \"\u629B\",\r\n \"\uD84A\uDEE6\",\r\n \"\u6261\",\r\n \"\u62D6\",\r\n \"\u6285\",\r\n \"\u62DC\",\r\n \"\u64DA\",\r\n \"\u64F4\",\r\n \"\u628D\",\r\n \"\u6359\",\r\n \"\u62CF\",\r\n \"\uD84A\uDEFE\",\r\n \"\u64E7\",\r\n \"\u633E\",\r\n \"\u63D2\",\r\n \"\uD87E\uDCB7\",\r\n \"\uD84A\uDEB8\",\r\n \"\uD84B\uDC24\",\r\n \"\u5B6F\",\r\n \"\u530A\",\r\n \"\u63ED\",\r\n \"\uD84B\uDD96\",\r\n \"\u6353\",\r\n \"\u6416\",\r\n \"\uD84A\uDF94\",\r\n \"\u63BB\",\r\n \"\uD87E\uDCBF\",\r\n \"\u6498\",\r\n \"\u651C\",\r\n \"\u64D5\",\r\n \"\u3A57\",\r\n \"\uD84B\uDE42\",\r\n \"\u651D\",\r\n \"\u63B4\",\r\n \"\u64A1\",\r\n \"\u64CA\",\r\n \"\uD84A\uDF50\",\r\n \"\u6491\",\r\n \"\uD84B\uDFE5\",\r\n \"\u3A14\",\r\n \"\uD84A\uDFA6\",\r\n \"\uD84B\uDE6C\",\r\n \"\u6502\",\r\n \"\u38A3\",\r\n \"\u64CF\",\r\n \"\u62AC\",\r\n \"\uD84A\uDF4F\",\r\n \"\u6417\",\r\n \"\u6505\",\r\n \"\u64B9\",\r\n \"\u7234\",\r\n \"\u64E5\",\r\n \"\u3A5C\",\r\n \"\u6535\",\r\n \"\uFA41\",\r\n \"\u654E\",\r\n \"\uD842\uDF56\",\r\n \"\u3A9F\",\r\n \"\u6578\",\r\n \"\u3AA3\",\r\n \"\u641E\",\r\n \"\uD84B\uDFEB\",\r\n \"\uD84B\uDFEA\",\r\n \"\u9F4A\",\r\n \"\u9F4B\",\r\n \"\u8FAC\",\r\n \"\u9159\",\r\n \"\u387F\",\r\n \"\uD862\uDE1E\",\r\n \"\u65B7\",\r\n \"\u65B5\",\r\n \"\uD842\uDC07\",\r\n \"\u6275\",\r\n \"\u3AC4\",\r\n \"\u65DC\",\r\n \"\uD84C\uDCFC\",\r\n \"\uF983\",\r\n \"\u65BE\",\r\n \"\u342C\",\r\n \"\u7C4F\",\r\n \"\u7C31\",\r\n \"\u65D9\",\r\n \"\u65E3\",\r\n \"\u820A\",\r\n \"\u3AD6\",\r\n \"\uD842\uDD14\",\r\n \"\u663B\",\r\n \"\uD84C\uDD66\",\r\n \"\u66FB\",\r\n \"\u662C\",\r\n \"\u66D0\",\r\n \"\u76A8\",\r\n \"\u668E\",\r\n \"\u65FE\",\r\n \"\u8405\",\r\n \"\u6630\",\r\n \"\uD84C\uDDBB\",\r\n \"\u66B1\",\r\n \"\u661E\",\r\n \"\u665D\",\r\n \"\u65F9\",\r\n \"\u65F6\",\r\n \"\u6644\",\r\n \"\u6649\",\r\n \"\u66EC\",\r\n \"\u6663\",\r\n \"\u665A\",\r\n \"\u669C\",\r\n \"\u6673\",\r\n \"\uFA12\",\r\n \"\uD84C\uDDF5\",\r\n \"\u66C9\",\r\n \"\u714A\",\r\n \"\uFA43\",\r\n \"\u66C6\",\r\n \"\u3B25\",\r\n \"\u663F\",\r\n \"\u3B22\",\r\n \"\u66F5\",\r\n \"\u3A85\",\r\n \"\u66FA\",\r\n \"\uD84C\uDF58\",\r\n \"\u3B05\",\r\n \"\u66FE\",\r\n \"\u3B31\",\r\n \"\u51A3\",\r\n \"\u3761\",\r\n \"\u2F49\",\r\n \"\uF929\",\r\n \"\u6735\",\r\n \"\u44B3\",\r\n \"\uD84C\uDFD3\",\r\n \"\u687F\",\r\n \"\u6766\",\r\n \"\u90A8\",\r\n \"\uD84C\uDFD0\",\r\n \"\u689D\",\r\n \"\u4F86\",\r\n \"\uD84C\uDFD5\",\r\n \"\u76C3\",\r\n \"\u686E\",\r\n \"\u3B8E\",\r\n \"\u67A9\",\r\n \"\u6780\",\r\n \"\u67D7\",\r\n \"\u68A5\",\r\n \"\u3BA4\",\r\n \"\uD84C\uDFDD\",\r\n \"\u685D\",\r\n \"\u6A1E\",\r\n \"\u6827\",\r\n \"\u6822\",\r\n \"\u531B\",\r\n \"\u3B88\",\r\n \"\u687A\",\r\n \"\u6801\",\r\n \"\u6805\",\r\n \"\u67B4\",\r\n \"\u67E5\",\r\n \"\u67F9\",\r\n \"\u6764\",\r\n \"\uD84D\uDF1C\",\r\n \"\u69AE\",\r\n \"\u3B9A\",\r\n \"\uD87E\uDCE5\",\r\n \"\u630D\",\r\n \"\uD84D\uDC65\",\r\n \"\u3BB5\",\r\n \"\u6849\",\r\n \"\u6852\",\r\n \"\uD87E\uDCE1\",\r\n \"\u3BAE\",\r\n \"\u6AFB\",\r\n \"\u68E7\",\r\n \"\uFA44\",\r\n \"\u674D\",\r\n \"\u699F\",\r\n \"\u6800\",\r\n \"\u68C3\",\r\n \"\u68DE\",\r\n \"\u68CA\",\r\n \"\u6926\",\r\n \"\u6816\",\r\n \"\u69E8\",\r\n \"\u3BF0\",\r\n \"\u6AA2\",\r\n \"\u3B68\",\r\n \"\u68D5\",\r\n \"\u6A62\",\r\n \"\u678F\",\r\n \"\u67DF\",\r\n \"\u6A9D\",\r\n \"\u67E0\",\r\n \"\u6A13\",\r\n \"\u6A02\",\r\n \"\uD852\uDF6F\",\r\n \"\u69EA\",\r\n \"\u6A12\",\r\n \"\u6AC1\",\r\n \"\u6A4A\",\r\n \"\uD84D\uDD81\",\r\n \"\u69C0\",\r\n \"\u67C8\",\r\n \"\u6A23\",\r\n \"\u69C7\",\r\n \"\u3BCD\",\r\n \"\u6899\",\r\n \"\u6922\",\r\n \"\u7CE2\",\r\n \"\u6A45\",\r\n \"\u6B0A\",\r\n \"\u6A6B\",\r\n \"\u6A8F\",\r\n \"\uD84D\uDDF3\",\r\n \"\u58AB\",\r\n \"\u7F47\",\r\n \"\uD84D\uDCE4\",\r\n \"\u69D7\",\r\n \"\uD84D\uDE3A\",\r\n \"\u6A7A\",\r\n \"\u69D6\",\r\n \"\u6A5C\",\r\n \"\u6AFD\",\r\n \"\u6863\",\r\n \"\u6A98\",\r\n \"\u8617\",\r\n \"\u6867\",\r\n \"\u6A2F\",\r\n \"\u68BC\",\r\n \"\u68B9\",\r\n \"\uD87E\uDCED\",\r\n \"\u6AAA\",\r\n \"\u67A6\",\r\n \"\u8616\",\r\n \"\u69DE\",\r\n \"\u3C0D\",\r\n \"\u6B1E\",\r\n \"\uF91D\",\r\n \"\uFA14\",\r\n \"\u683E\",\r\n \"\u3C16\",\r\n \"\uD84E\uDC3D\",\r\n \"\u7F3A\",\r\n \"\u6B50\",\r\n \"\u6B58\",\r\n \"\u3C41\",\r\n \"\u6B35\",\r\n \"\u8B0C\",\r\n \"\u6B61\",\r\n \"\uD87E\uDCF1\",\r\n \"\u6B65\",\r\n \"\u9F52\",\r\n \"\u6B72\",\r\n \"\u6B77\",\r\n \"\u6B7A\",\r\n \"\u6B81\",\r\n \"\u6B7E\",\r\n \"\uD84E\uDDEB\",\r\n \"\u6B98\",\r\n \"\u6BB1\",\r\n \"\u6BC6\",\r\n \"\uF970\",\r\n \"\u6BBC\",\r\n \"\u6BC1\",\r\n \"\u6BCF\",\r\n \"\u6BD7\",\r\n \"\uD84E\uDF08\",\r\n \"\u6BEE\",\r\n \"\u6318\",\r\n \"\uD868\uDD76\",\r\n \"\u6BE1\",\r\n \"\u6C0A\",\r\n \"\u5F16\",\r\n \"\u6C23\",\r\n \"\uD84F\uDC66\",\r\n \"\u51B0\",\r\n \"\u6C59\",\r\n \"\u6D3F\",\r\n \"\u6C61\",\r\n \"\u6C73\",\r\n \"\u51B3\",\r\n \"\uD84F\uDD7D\",\r\n \"\u6C89\",\r\n \"\u51B2\",\r\n \"\u6C92\",\r\n \"\u6FA4\",\r\n \"\u6CB2\",\r\n \"\uD84F\uDD7A\",\r\n \"\u3CC2\",\r\n \"\uD87E\uDCFC\",\r\n \"\u51B5\",\r\n \"\uFA71\",\r\n \"\uD84F\uDCD8\",\r\n \"\u6D24\",\r\n \"\u704B\",\r\n \"\u3CD2\",\r\n \"\u3D11\",\r\n \"\u57FF\",\r\n \"\uD84F\uDCFE\",\r\n \"\u51AD\",\r\n \"\u3917\",\r\n \"\uD84F\uDE01\",\r\n \"\uD84F\uDD20\",\r\n \"\uFA97\",\r\n \"\u6DE8\",\r\n \"\u6DFA\",\r\n \"\u6DDB\",\r\n \"\u6FF1\",\r\n \"\u6FA3\",\r\n \"\uD87E\uDD03\",\r\n \"\uFA45\",\r\n \"\u6D43\",\r\n \"\u51C3\",\r\n \"\uD84F\uDD40\",\r\n \"\u3CD9\",\r\n \"\u6DDA\",\r\n \"\uD84F\uDE62\",\r\n \"\u51C9\",\r\n \"\u3CC3\",\r\n \"\u3D31\",\r\n \"\u6E7B\",\r\n \"\u6E15\",\r\n \"\u6E0A\",\r\n \"\u6DF8\",\r\n \"\u6E34\",\r\n \"\u6FDF\",\r\n \"\u6D89\",\r\n \"\u6F81\",\r\n \"\u6EAA\",\r\n \"\uFA46\",\r\n \"\u51CF\",\r\n \"\u6EAB\",\r\n \"\u3CFA\",\r\n \"\u7063\",\r\n \"\u6FD5\",\r\n \"\u6EFF\",\r\n \"\u51D6\",\r\n \"\u6F91\",\r\n \"\uD84F\uDE08\",\r\n \"\u9736\",\r\n \"\uD87E\uDD0B\",\r\n \"\u6FDA\",\r\n \"\u3D1E\",\r\n \"\u7027\",\r\n \"\u6EEF\",\r\n \"\u6D81\",\r\n \"\u6E17\",\r\n \"\u6EDA\",\r\n \"\u67D2\",\r\n \"\u3BC3\",\r\n \"\u5C5A\",\r\n \"\uD850\uDD4D\",\r\n \"\uFA47\",\r\n \"\u6E8C\",\r\n \"\u6F5B\",\r\n \"\u6F40\",\r\n \"\u7047\",\r\n \"\uD87E\uDD0F\",\r\n \"\u6F98\",\r\n \"\u6F82\",\r\n \"\u3D4E\",\r\n \"\u7900\",\r\n \"\u6D4A\",\r\n \"\u6D9B\",\r\n \"\uD84F\uDF4A\",\r\n \"\u6CAA\",\r\n \"\u6D9C\",\r\n \"\u6CFB\",\r\n \"\u56A0\",\r\n \"\uFA9B\",\r\n \"\u6F74\",\r\n \"\u7028\",\r\n \"\u3CFD\",\r\n \"\u6F45\",\r\n \"\uD850\uDCA2\",\r\n \"\uD850\uDC96\",\r\n \"\u3D9A\",\r\n \"\u704E\",\r\n \"\u7054\",\r\n \"\u71C8\",\r\n \"\u70D6\",\r\n \"\u707E\",\r\n \"\u7210\",\r\n \"\u70F1\",\r\n \"\u70B2\",\r\n \"\u9EDE\",\r\n \"\u7232\",\r\n \"\u3DED\",\r\n \"\u71A2\",\r\n \"\u71D3\",\r\n \"\u7114\",\r\n \"\u71C4\",\r\n \"\u3DD4\",\r\n \"\u7196\",\r\n \"\u71D2\",\r\n \"\uFA48\",\r\n \"\u71FB\",\r\n \"\u7155\",\r\n \"\uD850\uDFBC\",\r\n \"\u70ED\",\r\n \"\u7215\",\r\n \"\u70EC\",\r\n \"\u3DB3\",\r\n \"\u71D7\",\r\n \"\u7224\",\r\n \"\uD851\uDD53\",\r\n \"\u5C13\",\r\n \"\u5C12\",\r\n \"\u58BB\",\r\n \"\u7257\",\r\n \"\u2F5B\",\r\n \"\u7A82\",\r\n \"\u7281\",\r\n \"\u72A7\",\r\n \"\u3E3F\",\r\n \"\u72C0\",\r\n \"\u8C7E\",\r\n \"\u3E83\",\r\n \"\u7368\",\r\n \"\u72F9\",\r\n \"\u8C8D\",\r\n \"\u475C\",\r\n \"\u8C8E\",\r\n \"\u475D\",\r\n \"\u7375\",\r\n \"\uFA16\",\r\n \"\u8C93\",\r\n \"\u737B\",\r\n \"\u3E85\",\r\n \"\u7328\",\r\n \"\uD844\uDE2D\",\r\n \"\u8C98\",\r\n \"\u4764\",\r\n \"\u7378\",\r\n \"\uD852\uDCD0\",\r\n \"\u3E9A\",\r\n \"\u7806\",\r\n \"\u73CF\",\r\n \"\u739F\",\r\n \"\u7449\",\r\n \"\u40C9\",\r\n \"\u73CE\",\r\n \"\u73CE\",\r\n \"\uD852\uDD3D\",\r\n \"\uD852\uDD3B\",\r\n \"\u746F\",\r\n \"\uFA4A\",\r\n \"\u73E1\",\r\n \"\u7439\",\r\n \"\u73D0\",\r\n \"\u8750\",\r\n \"\u73B3\",\r\n \"\u74A2\",\r\n \"\uD852\uDE0F\",\r\n \"\u74CC\",\r\n \"\u7464\",\r\n \"\u74C8\",\r\n \"\u74BF\",\r\n \"\u73F1\",\r\n \"\u74C9\",\r\n \"\uD852\uDF26\",\r\n \"\u7501\",\r\n \"\u7506\",\r\n \"\uD858\uDE31\",\r\n \"\uD852\uDF56\",\r\n \"\u74EF\",\r\n \"\u4C1D\",\r\n \"\u7F4B\",\r\n \"\u751B\",\r\n \"\u7522\",\r\n \"\uD852\uDFF3\",\r\n \"\u753C\",\r\n \"\u756B\",\r\n \"\u7541\",\r\n \"\u583A\",\r\n \"\u754D\",\r\n \"\uD863\uDEAC\",\r\n \"\u753D\",\r\n \"\uD853\uDC1D\",\r\n \"\u7571\",\r\n \"\u7544\",\r\n \"\uD842\uDEFB\",\r\n \"\u3F57\",\r\n \"\uD853\uDC16\",\r\n \"\u7546\",\r\n \"\u7552\",\r\n \"\u755E\",\r\n \"\u756E\",\r\n \"\u7567\",\r\n \"\u756D\",\r\n \"\u7572\",\r\n \"\uD87E\uDD38\",\r\n \"\u758A\",\r\n \"\u757A\",\r\n \"\u58C3\",\r\n \"\u7585\",\r\n \"\u7574\",\r\n \"\u8E08\",\r\n \"\u47FD\",\r\n \"\uD853\uDD21\",\r\n \"\uD853\uDE8B\",\r\n \"\uD853\uDE6A\",\r\n \"\u7626\",\r\n \"\u7661\",\r\n \"\u75B4\",\r\n \"\u75A9\",\r\n \"\uD863\uDECA\",\r\n \"\u7645\",\r\n \"\u7618\",\r\n \"\u81C3\",\r\n \"\u7655\",\r\n \"\u767C\",\r\n \"\u688D\",\r\n \"\u7682\",\r\n \"\u6648\",\r\n \"\u768B\",\r\n \"\u81EF\",\r\n \"\u6665\",\r\n \"\u6EB0\",\r\n \"\u76A1\",\r\n \"\u76A5\",\r\n \"\u66A4\",\r\n \"\u66AD\",\r\n \"\u9764\",\r\n \"\u76B9\",\r\n \"\uD87E\uDD3D\",\r\n \"\uD854\uDC44\",\r\n \"\uFA17\",\r\n \"\u76C7\",\r\n \"\u3F1C\",\r\n \"\u76DC\",\r\n \"\u9186\",\r\n \"\uD87E\uDD41\",\r\n \"\uD854\uDD5A\",\r\n \"\uD854\uDD22\",\r\n \"\u7E23\",\r\n \"\u771E\",\r\n \"\u7726\",\r\n \"\uD854\uDDA2\",\r\n \"\u7764\",\r\n \"\uD854\uDDA9\",\r\n \"\u89A9\",\r\n \"\uD854\uDE1F\",\r\n \"\u7758\",\r\n \"\uD854\uDE1E\",\r\n \"\u77AA\",\r\n \"\uD854\uDEBA\",\r\n \"\u77D9\",\r\n \"\uD854\uDDE5\",\r\n \"\u77A9\",\r\n \"\uD84A\uDDA7\",\r\n \"\uD862\uDD68\",\r\n \"\u7B36\",\r\n \"\u77E4\",\r\n \"\uD848\uDF92\",\r\n \"\u78C7\",\r\n \"\u784F\",\r\n \"\u788E\",\r\n \"\u78AA\",\r\n \"\u7851\",\r\n \"\u57C6\",\r\n \"\u77F4\",\r\n \"\uD855\uDC8E\",\r\n \"\uFA4B\",\r\n \"\uD855\uDD0E\",\r\n \"\u76CC\",\r\n \"\u78B5\",\r\n \"\u7459\",\r\n \"\u78BB\",\r\n \"\uD855\uDC4A\",\r\n \"\uD855\uDD35\",\r\n \"\u589D\",\r\n \"\u783F\",\r\n \"\u783A\",\r\n \"\u79AE\",\r\n \"\uFA4C\",\r\n \"\u79A9\",\r\n \"\uFA4E\",\r\n \"\uFA4D\",\r\n \"\uFA4F\",\r\n \"\uD855\uDE2C\",\r\n \"\uFA50\",\r\n \"\uFA51\",\r\n \"\uFA19\",\r\n \"\uFA1A\",\r\n \"\uD851\uDC2B\",\r\n \"\u797F\",\r\n \"\u79AA\",\r\n \"\uFA52\",\r\n \"\uFA53\",\r\n \"\uFA1B\",\r\n \"\u7962\",\r\n \"\u7977\",\r\n \"\u79CC\",\r\n \"\u7A50\",\r\n \"\u9F9D\",\r\n \"\uD869\uDEC1\",\r\n \"\u417A\",\r\n \"\u7C83\",\r\n \"\u7955\",\r\n \"\u4B34\",\r\n \"\uD855\uDF71\",\r\n \"\u7A31\",\r\n \"\u79C6\",\r\n \"\u7A05\",\r\n \"\u7A3A\",\r\n \"\u7A49\",\r\n \"\u7980\",\r\n \"\u7A3B\",\r\n \"\u799D\",\r\n \"\uD856\uDC74\",\r\n \"\u85C1\",\r\n \"\u7A3E\",\r\n \"\u85F3\",\r\n \"\uFA54\",\r\n \"\u7A57\",\r\n \"\u9834\",\r\n \"\u7A69\",\r\n \"\u7A70\",\r\n \"\u9631\",\r\n \"\uFA55\",\r\n \"\u7ACA\",\r\n \"\u7A97\",\r\n \"\u7ABB\",\r\n \"\u41AB\",\r\n \"\u7255\",\r\n \"\u6F25\",\r\n \"\u7AC6\",\r\n \"\u7AB0\",\r\n \"\u7A91\",\r\n \"\u95DA\",\r\n \"\u376B\",\r\n \"\u7AC3\",\r\n \"\uD856\uDDC4\",\r\n \"\u41B4\",\r\n \"\u7076\",\r\n \"\u9F8D\",\r\n \"\u8C4E\",\r\n \"\u8011\",\r\n \"\u7AF8\",\r\n \"\uD856\uDEE1\",\r\n \"\uD858\uDE92\",\r\n \"\u7B14\",\r\n \"\u7B3B\",\r\n \"\u8355\",\r\n \"\u89D4\",\r\n \"\u7B0B\",\r\n \"\u6830\",\r\n \"\u7B7A\",\r\n \"\u7B69\",\r\n \"\u7B04\",\r\n \"\u8417\",\r\n \"\u724B\",\r\n \"\u3B8D\",\r\n \"\u41F3\",\r\n \"\u7B5D\",\r\n \"\u7958\",\r\n \"\u7B9F\",\r\n \"\u5284\",\r\n \"\uFA56\",\r\n \"\u3C0F\",\r\n \"\uD857\uDD61\",\r\n \"\u7B71\",\r\n \"\u7B7F\",\r\n \"\u7C12\",\r\n \"\u450D\",\r\n \"\u7B86\",\r\n \"\u7C6D\",\r\n \"\u7B8E\",\r\n \"\u4DB5\",\r\n \"\uD84E\uDE98\",\r\n \"\u7B93\",\r\n \"\u7BAA\",\r\n \"\u376C\",\r\n \"\uD857\uDCD1\",\r\n \"\uD856\uDEE3\",\r\n \"\u7B79\",\r\n \"\u7C40\",\r\n \"\u4264\",\r\n \"\u7BED\",\r\n \"\u7C56\",\r\n \"\u7BD7\",\r\n \"\u7CB9\",\r\n \"\u9ECF\",\r\n \"\u8085\",\r\n \"\u7A09\",\r\n \"\u79D4\",\r\n \"\u7CC9\",\r\n \"\uFA1D\",\r\n \"\u7CDD\",\r\n \"\uD865\uDF50\",\r\n \"\u993B\",\r\n \"\uFA03\",\r\n \"\u7A45\",\r\n \"\u7CAE\",\r\n \"\u7A2C\",\r\n \"\u7A64\",\r\n \"\u7CF5\",\r\n \"\u42AA\",\r\n \"\u7C74\",\r\n \"\u7C9C\",\r\n \"\u7D72\",\r\n \"\u7D8B\",\r\n \"\u5E0B\",\r\n \"\u7D4D\",\r\n \"\u7D25\",\r\n \"\u7E8D\",\r\n \"\u7D6B\",\r\n \"\u7D4F\",\r\n \"\u7DE4\",\r\n \"\u7D93\",\r\n \"\u7E27\",\r\n \"\uD87E\uDD6C\",\r\n \"\u7E6A\",\r\n \"\u7D55\",\r\n \"\u7E7C\",\r\n \"\u7E8C\",\r\n \"\u7D23\",\r\n \"\u7DDC\",\r\n \"\uD87E\uDD6E\",\r\n \"\u7E3D\",\r\n \"\u7DA0\",\r\n \"\u7DD6\",\r\n \"\u7DAB\",\r\n \"\u7DCD\",\r\n \"\u7D5A\",\r\n \"\uFA57\",\r\n \"\u7DE3\",\r\n \"\u7E69\",\r\n \"\uFA58\",\r\n \"\u7DFC\",\r\n \"\u7E31\",\r\n \"\u99BD\",\r\n \"\uFA59\",\r\n \"\u7E66\",\r\n \"\u7E96\",\r\n \"\uD858\uDC17\",\r\n \"\u7E4D\",\r\n \"\u7D89\",\r\n \"\u7E4B\",\r\n \"\u7DD5\",\r\n \"\u7D4B\",\r\n \"\u7D56\",\r\n \"\u7E92\",\r\n \"\u42C6\",\r\n \"\u42DD\",\r\n \"\u7E89\",\r\n \"\uD848\uDCF6\",\r\n \"\u432B\",\r\n \"\u7F50\",\r\n \"\u7516\",\r\n \"\uD858\uDE86\",\r\n \"\u4207\",\r\n \"\u8FA0\",\r\n \"\u7F78\",\r\n \"\uFA5A\",\r\n \"\u8989\",\r\n \"\u898A\",\r\n \"\uD858\uDF4C\",\r\n \"\u7F97\",\r\n \"\u7F90\",\r\n \"\uD84F\uDD0E\",\r\n \"\u7FA3\",\r\n \"\u7FAE\",\r\n \"\uFA1E\",\r\n \"\uD859\uDC69\",\r\n \"\u7FF1\",\r\n \"\uFA5B\",\r\n \"\u8008\",\r\n \"\u800A\",\r\n \"\u43B1\",\r\n \"\u3B52\",\r\n \"\u69C8\",\r\n \"\u8043\",\r\n \"\u8EAD\",\r\n \"\uD859\uDD7E\",\r\n \"\uD857\uDE62\",\r\n \"\u8070\",\r\n \"\u8068\",\r\n \"\u807D\",\r\n \"\u8EC4\",\r\n \"\u5B8D\",\r\n \"\u808E\",\r\n \"\uD84C\uDF5F\",\r\n \"\u53B7\",\r\n \"\u6BD3\",\r\n \"\u991A\",\r\n \"\u4F37\",\r\n \"\u81BD\",\r\n \"\u80A7\",\r\n \"\u81D9\",\r\n \"\u80F7\",\r\n \"\u8103\",\r\n \"\uD859\uDEB0\",\r\n \"\u43EE\",\r\n \"\u8173\",\r\n \"\uD859\uDE7E\",\r\n \"\u812B\",\r\n \"\u8166\",\r\n \"\u80FC\",\r\n \"\uD84A\uDFF2\",\r\n \"\u80DC\",\r\n \"\u8193\",\r\n \"\u9AC8\",\r\n \"\u80A4\",\r\n \"\u5380\",\r\n \"\uD85F\uDE10\",\r\n \"\uD85A\uDC78\",\r\n \"\u994D\",\r\n \"\u810D\",\r\n \"\u9C60\",\r\n \"\u808A\",\r\n \"\uD859\uDF1D\",\r\n \"\u9AD5\",\r\n \"\u81DF\",\r\n \"\uFA1F\",\r\n \"\u81C8\",\r\n \"\u5367\",\r\n \"\uFA5C\",\r\n \"\uD85A\uDD36\",\r\n \"\u3B30\",\r\n \"\uD85A\uDD5B\",\r\n \"\u3AEA\",\r\n \"\uD84C\uDDC3\",\r\n \"\u8204\",\r\n \"\uD864\uDF46\",\r\n \"\u820D\",\r\n \"\u445B\",\r\n \"\u8213\",\r\n \"\u8216\",\r\n \"\u4468\",\r\n \"\u8229\",\r\n \"\u8263\",\r\n \"\u822E\",\r\n \"\uD854\uDCE9\",\r\n \"\u56CF\",\r\n \"\u8277\",\r\n \"\uD85A\uDEFF\",\r\n \"\uD855\uDF55\",\r\n \"\u8606\",\r\n \"\u85DD\",\r\n \"\u84AD\",\r\n \"\uD87E\uDD95\",\r\n \"\u83ED\",\r\n \"\u82E2\",\r\n \"\u5040\",\r\n \"\u8393\",\r\n \"\u8396\",\r\n \"\u8354\",\r\n \"\uD87E\uDD99\",\r\n \"\u8395\",\r\n \"\u8346\",\r\n \"\u838A\",\r\n \"\u85E1\",\r\n \"\u849E\",\r\n \"\u861C\",\r\n \"\u8458\",\r\n \"\u84F3\",\r\n \"\uFAB4\",\r\n \"\u82FD\",\r\n \"\u844A\",\r\n \"\u8445\",\r\n \"\u83B1\",\r\n \"\u84F1\",\r\n \"\u8610\",\r\n \"\u857F\",\r\n \"\u85FC\",\r\n \"\u8330\",\r\n \"\u855A\",\r\n \"\uFA5F\",\r\n \"\u585F\",\r\n \"\u8525\",\r\n \"\u7A38\",\r\n \"\u8462\",\r\n \"\u76D6\",\r\n \"\u7C11\",\r\n \"\u7C14\",\r\n \"\u84DA\",\r\n \"\uF999\",\r\n \"\u8482\",\r\n \"\u8593\",\r\n \"\u848B\",\r\n \"\uD85B\uDE65\",\r\n \"\u4543\",\r\n \"\uD863\uDF32\",\r\n \"\u85CF\",\r\n \"\u854B\",\r\n \"\u8602\",\r\n \"\u862F\",\r\n \"\u4525\",\r\n \"\uD85C\uDCCE\",\r\n \"\u856F\",\r\n \"\u85B0\",\r\n \"\u85E5\",\r\n \"\u8415\",\r\n \"\uD85C\uDC80\",\r\n \"\u85AE\",\r\n \"\u8613\",\r\n \"\u7A4C\",\r\n \"\u85B2\",\r\n \"\uF91F\",\r\n \"\u4E55\",\r\n \"\u865B\",\r\n \"\uF936\",\r\n \"\u87F2\",\r\n \"\u866C\",\r\n \"\u8771\",\r\n \"\u8689\",\r\n \"\u87C1\",\r\n \"\u8739\",\r\n \"\u872F\",\r\n \"\u87BE\",\r\n \"\u8836\",\r\n \"\u8719\",\r\n \"\u8675\",\r\n \"\uD85C\uDE6E\",\r\n \"\u87A2\",\r\n \"\u8698\",\r\n \"\u86D5\",\r\n \"\uD85D\uDC49\",\r\n \"\u4D77\",\r\n \"\u9F03\",\r\n \"\u883B\",\r\n \"\u45B8\",\r\n \"\u882D\",\r\n \"\u8704\",\r\n \"\uD85C\uDECB\",\r\n \"\u8782\",\r\n \"\uD85C\uDF12\",\r\n \"\u45A4\",\r\n \"\u732C\",\r\n \"\u87CA\",\r\n \"\u8671\",\r\n \"\u5F72\",\r\n \"\u877C\",\r\n \"\u87C6\",\r\n \"\u8749\",\r\n \"\u880F\",\r\n \"\u8798\",\r\n \"\u877F\",\r\n \"\u8761\",\r\n \"\u874B\",\r\n \"\u45F6\",\r\n \"\u86CE\",\r\n \"\u8807\",\r\n \"\u8827\",\r\n \"\u8799\",\r\n \"\u8842\",\r\n \"\u773E\",\r\n \"\u885E\",\r\n \"\u889E\",\r\n \"\u88B5\",\r\n \"\u5E12\",\r\n \"\u88AE\",\r\n \"\u889F\",\r\n \"\u7D5D\",\r\n \"\u8932\",\r\n \"\u88CC\",\r\n \"\uD858\uDC0C\",\r\n \"\u88DD\",\r\n \"\u892D\",\r\n \"\u88E1\",\r\n \"\u88E0\",\r\n \"\u5E2C\",\r\n \"\u88F5\",\r\n \"\u88F6\",\r\n \"\u8EB6\",\r\n \"\u88E9\",\r\n \"\u890F\",\r\n \"\uFA60\",\r\n \"\u8943\",\r\n \"\u7DE5\",\r\n \"\u342E\",\r\n \"\u891D\",\r\n \"\uD85D\uDF6C\",\r\n \"\u4633\",\r\n \"\u7E7F\",\r\n \"\u97C8\",\r\n \"\u97E4\",\r\n \"\uD85D\uDF0E\",\r\n \"\u4093\",\r\n \"\u8994\",\r\n \"\uFA61\",\r\n \"\u89BA\",\r\n \"\u89BD\",\r\n \"\u89B7\",\r\n \"\u89C0\",\r\n \"\u89E7\",\r\n \"\u89F5\",\r\n \"\u89F8\",\r\n \"\u89D3\",\r\n \"\uD851\uDE60\",\r\n \"\u89D7\",\r\n \"\u89FD\",\r\n \"\uD85E\uDE84\",\r\n \"\u8B4C\",\r\n \"\u8B6F\",\r\n \"\uD85E\uDD9C\",\r\n \"\u8B49\",\r\n \"\u8A3F\",\r\n \"\u5467\",\r\n \"\u548F\",\r\n \"\u8A3D\",\r\n \"\u46E1\",\r\n \"\u8B7D\",\r\n \"\u8AAA\",\r\n \"\u8B80\",\r\n \"\uD85E\uDDFC\",\r\n \"\u8B87\",\r\n \"\u8B8D\",\r\n \"\uD87E\uDDD0\",\r\n \"\uFA22\",\r\n \"\uFA62\",\r\n \"\u8B20\",\r\n \"\uD849\uDF2F\",\r\n \"\u8B81\",\r\n \"\uD85E\uDD85\",\r\n \"\u8B38\",\r\n \"\uFA63\",\r\n \"\u8B5B\",\r\n \"\u8B93\",\r\n \"\u8B2D\",\r\n \"\u8B9A\",\r\n \"\u91BC\",\r\n \"\u8B8E\",\r\n \"\u471B\",\r\n \"\u8B4B\",\r\n \"\u471F\",\r\n \"\uD85E\uDFAF\",\r\n \"\uD85E\uDFBE\",\r\n \"\u78CE\",\r\n \"\uD85E\uDFC7\",\r\n \"\u8C50\",\r\n \"\uD85E\uDFE1\",\r\n \"\u8C58\",\r\n \"\u3E60\",\r\n \"\uD85F\uDC3C\",\r\n \"\uD85F\uDC5A\",\r\n \"\u730F\",\r\n \"\u7333\",\r\n \"\u72B2\",\r\n \"\u72B4\",\r\n \"\u9F26\",\r\n \"\u72E2\",\r\n \"\u8C83\",\r\n \"\u4AC9\",\r\n \"\u7683\",\r\n \"\u34B5\",\r\n \"\u8C7C\",\r\n \"\u86FD\",\r\n \"\u621D\",\r\n \"\u477F\",\r\n \"\uFA64\",\r\n \"\u8CD2\",\r\n \"\uD85F\uDD9B\",\r\n \"\u8D0A\",\r\n \"\u8D12\",\r\n \"\u8CCE\",\r\n \"\u8CAD\",\r\n \"\uD85F\uDE16\",\r\n \"\uD85F\uDDE4\",\r\n \"\uFA65\",\r\n \"\u8D17\",\r\n \"\uD865\uDFCB\",\r\n \"\u8CEE\",\r\n \"\u8CCD\",\r\n \"\u7200\",\r\n \"\u4793\",\r\n \"\u9833\",\r\n \"\u8D71\",\r\n \"\uD85F\uDE86\",\r\n \"\u8D82\",\r\n \"\u8DA6\",\r\n \"\u4816\",\r\n \"\u47E6\",\r\n \"\u8E60\",\r\n \"\u47A8\",\r\n \"\u8E5E\",\r\n \"\u8E10\",\r\n \"\u8E34\",\r\n \"\uD860\uDC1A\",\r\n \"\uD860\uDF30\",\r\n \"\u8E64\",\r\n \"\u8E4F\",\r\n \"\uD860\uDCBB\",\r\n \"\uD840\uDF2B\",\r\n \"\u7C75\",\r\n \"\u8E75\",\r\n \"\u8E77\",\r\n \"\u8E79\",\r\n \"\u8DAE\",\r\n \"\u8E83\",\r\n \"\u4827\",\r\n \"\u58B8\",\r\n \"\u8E0C\",\r\n \"\uD860\uDDE0\",\r\n \"\u8EAA\",\r\n \"\u8E78\",\r\n \"\u8E6E\",\r\n \"\u8EB3\",\r\n \"\u8EAF\",\r\n \"\u4844\",\r\n \"\uD842\uDCDE\",\r\n \"\u8EF6\",\r\n \"\u8F2D\",\r\n \"\u8F49\",\r\n \"\uD860\uDECF\",\r\n \"\u8F15\",\r\n \"\u8F19\",\r\n \"\u8F0C\",\r\n \"\u8F3A\",\r\n \"\u8EF0\",\r\n \"\uD87E\uDDDF\",\r\n \"\u8F5D\",\r\n \"\u8F00\",\r\n \"\u8EE3\",\r\n \"\u484E\",\r\n \"\uD861\uDC0C\",\r\n \"\u8FAD\",\r\n \"\u908A\",\r\n \"\u8FC6\",\r\n \"\u9008\",\r\n \"\u489B\",\r\n \"\u5EFC\",\r\n \"\u905E\",\r\n \"\u9037\",\r\n \"\u8FD9\",\r\n \"\uF99A\",\r\n \"\u8FF8\",\r\n \"\uFA67\",\r\n \"\u9072\",\r\n \"\u900E\",\r\n \"\u9059\",\r\n \"\uF9C3\",\r\n \"\uD85F\uDF8D\",\r\n \"\u8FE9\",\r\n \"\uD861\uDE37\",\r\n \"\u536D\",\r\n \"\u90C9\",\r\n \"\u90DE\",\r\n \"\u90C4\",\r\n \"\u90F6\",\r\n \"\u9139\",\r\n \"\u9115\",\r\n \"\uFA26\",\r\n \"\u48B5\",\r\n \"\u9137\",\r\n \"\u9189\",\r\n \"\u48F1\",\r\n \"\u918B\",\r\n \"\u9167\",\r\n \"\u91BB\",\r\n \"\u48E9\",\r\n \"\u9195\",\r\n \"\u9B57\",\r\n \"\u91A4\",\r\n \"\u9197\",\r\n \"\u91C0\",\r\n \"\u91C4\",\r\n \"\u91CB\",\r\n \"\u57DC\",\r\n \"\u58C4\",\r\n \"\u3652\",\r\n \"\uD844\uDF1B\",\r\n \"\u91E1\",\r\n \"\uD862\uDD46\",\r\n \"\u92B2\",\r\n \"\u9435\",\r\n \"\u9247\",\r\n \"\uD862\uDD6B\",\r\n \"\u9206\",\r\n \"\uD854\uDC4A\",\r\n \"\u76CB\",\r\n \"\u7F3D\",\r\n \"\u920E\",\r\n \"\u945B\",\r\n \"\uD87E\uDDEA\",\r\n \"\u5563\",\r\n \"\u3605\",\r\n \"\u8858\",\r\n \"\u9322\",\r\n \"\u93E5\",\r\n \"\u93FD\",\r\n \"\uD862\uDD87\",\r\n \"\u93E0\",\r\n \"\u92B3\",\r\n \"\u9444\",\r\n \"\u934A\",\r\n \"\u9304\",\r\n \"\u9441\",\r\n \"\u936B\",\r\n \"\u93AD\",\r\n \"\u495D\",\r\n \"\uD862\uDE99\",\r\n \"\u92BF\",\r\n \"\uD862\uDE71\",\r\n \"\uD862\uDE50\",\r\n \"\u93E9\",\r\n \"\uD862\uDECD\",\r\n \"\u93B8\",\r\n \"\u922C\",\r\n \"\u9373\",\r\n \"\u9452\",\r\n \"\uD862\uDFEF\",\r\n \"\u4BBD\",\r\n \"\u9229\",\r\n \"\uD862\uDEDD\",\r\n \"\u945A\",\r\n \"\u9578\",\r\n \"\u9587\",\r\n \"\u95A0\",\r\n \"\u9592\",\r\n \"\u95DC\",\r\n \"\u95B1\",\r\n \"\u9586\",\r\n \"\u95B4\",\r\n \"\u6FF6\",\r\n \"\uD850\uDD03\",\r\n \"\u9B2A\",\r\n \"\u9641\",\r\n \"\u9638\",\r\n \"\uD863\uDE5F\",\r\n \"\u3644\",\r\n \"\u5F8F\",\r\n \"\u9677\",\r\n \"\u9634\",\r\n \"\u9682\",\r\n \"\u96AA\",\r\n \"\u9633\",\r\n \"\uF9DC\",\r\n \"\u5826\",\r\n \"\u96A8\",\r\n \"\uD863\uDEF6\",\r\n \"\u96B1\",\r\n \"\uD863\uDEEB\",\r\n \"\u96B8\",\r\n \"\u5BC9\",\r\n \"\u9CEB\",\r\n \"\u9D08\",\r\n \"\u49FA\",\r\n \"\u96E7\",\r\n \"\u4EBC\",\r\n \"\uD840\uDF71\",\r\n \"\u96BD\",\r\n \"\u4CC4\",\r\n \"\u96DD\",\r\n \"\u96DC\",\r\n \"\u9D70\",\r\n \"\uD863\uDFFD\",\r\n \"\u9DB5\",\r\n \"\uFA68\",\r\n \"\u9741\",\r\n \"\u9748\",\r\n \"\u9721\",\r\n \"\u973B\",\r\n \"\u9751\",\r\n \"\uFA1C\",\r\n \"\u975C\",\r\n \"\u9763\",\r\n \"\u976D\",\r\n \"\u97CC\",\r\n \"\u97BE\",\r\n \"\u97B5\",\r\n \"\u978C\",\r\n \"\u97D2\",\r\n \"\u6BF1\",\r\n \"\uD857\uDDDA\",\r\n \"\u979F\",\r\n \"\u4A8D\",\r\n \"\u97B2\",\r\n \"\u97B8\",\r\n \"\u97EE\",\r\n \"\u2FB3\",\r\n \"\u97F5\",\r\n \"\uFA69\",\r\n \"\uD85A\uDCDD\",\r\n \"\u9825\",\r\n \"\u982C\",\r\n \"\u981A\",\r\n \"\uFA6A\",\r\n \"\u8CF4\",\r\n \"\u9839\",\r\n \"\u983A\",\r\n \"\u816E\",\r\n \"\u984F\",\r\n \"\u986F\",\r\n \"\u985B\",\r\n \"\uF9D0\",\r\n \"\u51EE\",\r\n \"\u51EC\",\r\n \"\u98CC\",\r\n \"\u98C3\",\r\n \"\u98C7\",\r\n \"\u98C8\",\r\n \"\u98B7\",\r\n \"\u2FB7\",\r\n \"\u98F1\",\r\n \"\u98E1\",\r\n \"\uFA2A\",\r\n \"\u98EE\",\r\n \"\uFA2B\",\r\n \"\u9920\",\r\n \"\uD865\uDF0B\",\r\n \"\u995F\",\r\n \"\u6E4C\",\r\n \"\u4B3B\",\r\n \"\uFA2C\",\r\n \"\uD865\uDEA9\",\r\n \"\u7CC7\",\r\n \"\u9959\",\r\n \"\uD868\uDF69\",\r\n \"\u4275\",\r\n \"\u7CE6\",\r\n \"\uD865\uDF19\",\r\n \"\u98E6\",\r\n \"\u805D\",\r\n \"\u99B1\",\r\n \"\u9A5B\",\r\n \"\u9A45\",\r\n \"\u99DE\",\r\n \"\u99AF\",\r\n \"\u99E2\",\r\n \"\u9A37\",\r\n \"\u9A57\",\r\n \"\u96B2\",\r\n \"\u9A58\",\r\n \"\u4BAF\",\r\n \"\u9A2E\",\r\n \"\u9A28\",\r\n \"\u99BF\",\r\n \"\u9AD3\",\r\n \"\u9AD9\",\r\n \"\u9AE0\",\r\n \"\u9AE8\",\r\n \"\u9AEF\",\r\n \"\u9AEE\",\r\n \"\u983E\",\r\n \"\u9B02\",\r\n \"\u9AE9\",\r\n \"\u3CB1\",\r\n \"\u9599\",\r\n \"\u4C17\",\r\n \"\u49B0\",\r\n \"\u6B1D\",\r\n \"\uD84E\uDC78\",\r\n \"\u4C1B\",\r\n \"\u4C1F\",\r\n \"\u9B3D\",\r\n \"\uD867\uDD4B\",\r\n \"\u86AB\",\r\n \"\uD867\uDDFA\",\r\n \"\u4C48\",\r\n \"\u9BD8\",\r\n \"\u9BCB\",\r\n \"\u9B66\",\r\n \"\u9C0D\",\r\n \"\u9C77\",\r\n \"\uD867\uDEC4\",\r\n \"\u9C1B\",\r\n \"\u9BF5\",\r\n \"\u9C70\",\r\n \"\u9B86\",\r\n \"\u9BD7\",\r\n \"\u9B72\",\r\n \"\u9CEC\",\r\n \"\u9D02\",\r\n \"\uD867\uDFCE\",\r\n \"\u9D76\",\r\n \"\u9E1C\",\r\n \"\u9D44\",\r\n \"\uD863\uDFA6\",\r\n \"\u9D2A\",\r\n \"\u9DAA\",\r\n \"\u9D5E\",\r\n \"\u4CC7\",\r\n \"\u4A04\",\r\n \"\u49FF\",\r\n \"\uD863\uDFE1\",\r\n \"\u9DC4\",\r\n \"\u9D7E\",\r\n \"\u9D2C\",\r\n \"\u9E0E\",\r\n \"\u974D\",\r\n \"\u974E\",\r\n \"\u974F\",\r\n \"\uFA2D\",\r\n \"\uD868\uDCF9\",\r\n \"\u9DBF\",\r\n \"\u9DCF\",\r\n \"\u9D0E\",\r\n \"\u96DA\",\r\n \"\u918E\",\r\n \"\u9E78\",\r\n \"\u9E7B\",\r\n \"\uD848\uDE18\",\r\n \"\u9E95\",\r\n \"\u4D21\",\r\n \"\u7350\",\r\n \"\u9E81\",\r\n \"\u9EA5\",\r\n \"\uD868\uDF8C\",\r\n \"\u9EB9\",\r\n \"\u9EAF\",\r\n \"\u9EB5\",\r\n \"\u2FC7\",\r\n \"\u9EBD\",\r\n \"\u9EC3\",\r\n \"\u9ED1\",\r\n \"\u9ED8\",\r\n \"\u9C32\",\r\n \"\u9C49\",\r\n \"\uD869\uDD02\",\r\n \"\uD84C\uDDC4\",\r\n \"\u76B7\",\r\n \"\uD869\uDD35\",\r\n \"\u4A7F\",\r\n \"\u9F21\",\r\n \"\u9F39\",\r\n \"\u2FD0\",\r\n \"\u97F2\",\r\n \"\u8640\",\r\n \"\u4AA1\",\r\n \"\u9F53\",\r\n \"\uD869\uDDF1\",\r\n \"\u9F61\",\r\n \"\uD869\uDE02\",\r\n \"\u56D3\",\r\n \"\uD869\uDE1A\",\r\n \"\u816D\",\r\n \"\u8612\",\r\n \"\u3406\",\r\n \"\u53F1\",\r\n \"\uD844\uDED7\",\r\n \"\u8641\",\r\n \"\u5914\",\r\n \"\u5B34\",\r\n \"\uD846\uDC94\",\r\n \"\u9FA5\",\r\n \"\uD862\uDFC1\",\r\n \"\u9724\",\r\n \"\u993E\"\r\n]\r\n", "import mappingList from './full_list.json';\r\nimport itaijiList from './itaiji_list.json';\r\nclass KanjiProcessor {\r\n constructor() {\r\n this.mappings = mappingList;\r\n const regexString = itaijiList.join('');\r\n this.regex = new RegExp(`[${regexString}]`, 'g');\r\n this.conversionMap = {};\r\n for (const mapping of this.mappings) {\r\n for (const itaiji of mapping.itaiji) {\r\n this.conversionMap[itaiji] = mapping.oyaji;\r\n }\r\n }\r\n }\r\n convertToParent(text) {\r\n return text.replace(this.regex, match => this.conversionMap[match] || match);\r\n }\r\n}\r\nexport const defaultProcessor = new KanjiProcessor();\r\nexport function convertVariants(text) {\r\n return defaultProcessor.convertToParent(text);\r\n}\r\n"], - "mappings": ";;;AAAA;AAAA,EACI;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AA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AA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AA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AA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AA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AA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AA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AS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IA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AA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AA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AA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AA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AA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,OAAS;AAAA,IACT,QAAU;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACJ;;;ACz8VA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;;;AC1kEA,IAAM,iBAAN,MAAqB;AAAA,EACjB,cAAc;AACV,SAAK,WAAW;AAChB,UAAM,cAAc,oBAAW,KAAK,EAAE;AACtC,SAAK,QAAQ,IAAI,OAAO,IAAI,WAAW,KAAK,GAAG;AAC/C,SAAK,gBAAgB,CAAC;AACtB,eAAW,WAAW,KAAK,UAAU;AACjC,iBAAW,UAAU,QAAQ,QAAQ;AACjC,aAAK,cAAc,MAAM,IAAI,QAAQ;AAAA,MACzC;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,gBAAgB,MAAM;AAClB,WAAO,KAAK,QAAQ,KAAK,OAAO,WAAS,KAAK,cAAc,KAAK,KAAK,KAAK;AAAA,EAC/E;AACJ;AACO,IAAM,mBAAmB,IAAI,eAAe;AAC5C,SAAS,gBAAgB,MAAM;AAClC,SAAO,iBAAiB,gBAAgB,IAAI;AAChD;", - "names": [] -} diff --git a/vendor/yomitan/lib/linkedom.js b/vendor/yomitan/lib/linkedom.js deleted file mode 100644 index fbab28b1..00000000 --- a/vendor/yomitan/lib/linkedom.js +++ /dev/null @@ -1,11301 +0,0 @@ -// @ts-nocheck -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key2 of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key2) && key2 !== except) - __defProp(to, key2, { get: () => from[key2], enumerable: !(desc = __getOwnPropDesc(from, key2)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// node_modules/linkedom/commonjs/perf_hooks.cjs -var require_perf_hooks = __commonJS({ - "node_modules/linkedom/commonjs/perf_hooks.cjs"(exports) { - try { - const { performance: performance2 } = __require("perf_hooks"); - exports.performance = performance2; - } catch (fallback) { - exports.performance = { now() { - return +/* @__PURE__ */ new Date(); - } }; - } - } -}); - -// node_modules/boolbase/index.js -var require_boolbase = __commonJS({ - "node_modules/boolbase/index.js"(exports, module) { - module.exports = { - trueFunc: function trueFunc() { - return true; - }, - falseFunc: function falseFunc() { - return false; - } - }; - } -}); - -// node_modules/cssom/lib/StyleSheet.js -var require_StyleSheet = __commonJS({ - "node_modules/cssom/lib/StyleSheet.js"(exports) { - var CSSOM = {}; - CSSOM.StyleSheet = function StyleSheet() { - this.parentStyleSheet = null; - }; - exports.StyleSheet = CSSOM.StyleSheet; - } -}); - -// node_modules/cssom/lib/CSSRule.js -var require_CSSRule = __commonJS({ - "node_modules/cssom/lib/CSSRule.js"(exports) { - var CSSOM = {}; - CSSOM.CSSRule = function CSSRule() { - this.parentRule = null; - this.parentStyleSheet = null; - }; - CSSOM.CSSRule.UNKNOWN_RULE = 0; - CSSOM.CSSRule.STYLE_RULE = 1; - CSSOM.CSSRule.CHARSET_RULE = 2; - CSSOM.CSSRule.IMPORT_RULE = 3; - CSSOM.CSSRule.MEDIA_RULE = 4; - CSSOM.CSSRule.FONT_FACE_RULE = 5; - CSSOM.CSSRule.PAGE_RULE = 6; - CSSOM.CSSRule.KEYFRAMES_RULE = 7; - CSSOM.CSSRule.KEYFRAME_RULE = 8; - CSSOM.CSSRule.MARGIN_RULE = 9; - CSSOM.CSSRule.NAMESPACE_RULE = 10; - CSSOM.CSSRule.COUNTER_STYLE_RULE = 11; - CSSOM.CSSRule.SUPPORTS_RULE = 12; - CSSOM.CSSRule.DOCUMENT_RULE = 13; - CSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14; - CSSOM.CSSRule.VIEWPORT_RULE = 15; - CSSOM.CSSRule.REGION_STYLE_RULE = 16; - CSSOM.CSSRule.prototype = { - constructor: CSSOM.CSSRule - //FIXME - }; - exports.CSSRule = CSSOM.CSSRule; - } -}); - -// node_modules/cssom/lib/CSSStyleRule.js -var require_CSSStyleRule = __commonJS({ - "node_modules/cssom/lib/CSSStyleRule.js"(exports) { - var CSSOM = { - CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration, - CSSRule: require_CSSRule().CSSRule - }; - CSSOM.CSSStyleRule = function CSSStyleRule() { - CSSOM.CSSRule.call(this); - this.selectorText = ""; - this.style = new CSSOM.CSSStyleDeclaration(); - this.style.parentRule = this; - }; - CSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule; - CSSOM.CSSStyleRule.prototype.type = 1; - Object.defineProperty(CSSOM.CSSStyleRule.prototype, "cssText", { - get: function() { - var text; - if (this.selectorText) { - text = this.selectorText + " {" + this.style.cssText + "}"; - } else { - text = ""; - } - return text; - }, - set: function(cssText) { - var rule = CSSOM.CSSStyleRule.parse(cssText); - this.style = rule.style; - this.selectorText = rule.selectorText; - } - }); - CSSOM.CSSStyleRule.parse = function(ruleText) { - var i = 0; - var state = "selector"; - var index; - var j = i; - var buffer = ""; - var SIGNIFICANT_WHITESPACE = { - "selector": true, - "value": true - }; - var styleRule = new CSSOM.CSSStyleRule(); - var name, priority = ""; - for (var character; character = ruleText.charAt(i); i++) { - switch (character) { - case " ": - case " ": - case "\r": - case "\n": - case "\f": - if (SIGNIFICANT_WHITESPACE[state]) { - switch (ruleText.charAt(i - 1)) { - case " ": - case " ": - case "\r": - case "\n": - case "\f": - break; - default: - buffer += " "; - break; - } - } - break; - // String - case '"': - j = i + 1; - index = ruleText.indexOf('"', j) + 1; - if (!index) { - throw '" is missing'; - } - buffer += ruleText.slice(i, index); - i = index - 1; - break; - case "'": - j = i + 1; - index = ruleText.indexOf("'", j) + 1; - if (!index) { - throw "' is missing"; - } - buffer += ruleText.slice(i, index); - i = index - 1; - break; - // Comment - case "/": - if (ruleText.charAt(i + 1) === "*") { - i += 2; - index = ruleText.indexOf("*/", i); - if (index === -1) { - throw new SyntaxError("Missing */"); - } else { - i = index + 1; - } - } else { - buffer += character; - } - break; - case "{": - if (state === "selector") { - styleRule.selectorText = buffer.trim(); - buffer = ""; - state = "name"; - } - break; - case ":": - if (state === "name") { - name = buffer.trim(); - buffer = ""; - state = "value"; - } else { - buffer += character; - } - break; - case "!": - if (state === "value" && ruleText.indexOf("!important", i) === i) { - priority = "important"; - i += "important".length; - } else { - buffer += character; - } - break; - case ";": - if (state === "value") { - styleRule.style.setProperty(name, buffer.trim(), priority); - priority = ""; - buffer = ""; - state = "name"; - } else { - buffer += character; - } - break; - case "}": - if (state === "value") { - styleRule.style.setProperty(name, buffer.trim(), priority); - priority = ""; - buffer = ""; - } else if (state === "name") { - break; - } else { - buffer += character; - } - state = "selector"; - break; - default: - buffer += character; - break; - } - } - return styleRule; - }; - exports.CSSStyleRule = CSSOM.CSSStyleRule; - } -}); - -// node_modules/cssom/lib/CSSStyleSheet.js -var require_CSSStyleSheet = __commonJS({ - "node_modules/cssom/lib/CSSStyleSheet.js"(exports) { - var CSSOM = { - StyleSheet: require_StyleSheet().StyleSheet, - CSSStyleRule: require_CSSStyleRule().CSSStyleRule - }; - CSSOM.CSSStyleSheet = function CSSStyleSheet() { - CSSOM.StyleSheet.call(this); - this.cssRules = []; - }; - CSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet(); - CSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet; - CSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) { - if (index < 0 || index > this.cssRules.length) { - throw new RangeError("INDEX_SIZE_ERR"); - } - var cssRule = CSSOM.parse(rule).cssRules[0]; - cssRule.parentStyleSheet = this; - this.cssRules.splice(index, 0, cssRule); - return index; - }; - CSSOM.CSSStyleSheet.prototype.deleteRule = function(index) { - if (index < 0 || index >= this.cssRules.length) { - throw new RangeError("INDEX_SIZE_ERR"); - } - this.cssRules.splice(index, 1); - }; - CSSOM.CSSStyleSheet.prototype.toString = function() { - var result = ""; - var rules = this.cssRules; - for (var i = 0; i < rules.length; i++) { - result += rules[i].cssText + "\n"; - } - return result; - }; - exports.CSSStyleSheet = CSSOM.CSSStyleSheet; - CSSOM.parse = require_parse().parse; - } -}); - -// node_modules/cssom/lib/MediaList.js -var require_MediaList = __commonJS({ - "node_modules/cssom/lib/MediaList.js"(exports) { - var CSSOM = {}; - CSSOM.MediaList = function MediaList() { - this.length = 0; - }; - CSSOM.MediaList.prototype = { - constructor: CSSOM.MediaList, - /** - * @return {string} - */ - get mediaText() { - return Array.prototype.join.call(this, ", "); - }, - /** - * @param {string} value - */ - set mediaText(value) { - var values = value.split(","); - var length = this.length = values.length; - for (var i = 0; i < length; i++) { - this[i] = values[i].trim(); - } - }, - /** - * @param {string} medium - */ - appendMedium: function(medium) { - if (Array.prototype.indexOf.call(this, medium) === -1) { - this[this.length] = medium; - this.length++; - } - }, - /** - * @param {string} medium - */ - deleteMedium: function(medium) { - var index = Array.prototype.indexOf.call(this, medium); - if (index !== -1) { - Array.prototype.splice.call(this, index, 1); - } - } - }; - exports.MediaList = CSSOM.MediaList; - } -}); - -// node_modules/cssom/lib/CSSImportRule.js -var require_CSSImportRule = __commonJS({ - "node_modules/cssom/lib/CSSImportRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule, - CSSStyleSheet: require_CSSStyleSheet().CSSStyleSheet, - MediaList: require_MediaList().MediaList - }; - CSSOM.CSSImportRule = function CSSImportRule() { - CSSOM.CSSRule.call(this); - this.href = ""; - this.media = new CSSOM.MediaList(); - this.styleSheet = new CSSOM.CSSStyleSheet(); - }; - CSSOM.CSSImportRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule; - CSSOM.CSSImportRule.prototype.type = 3; - Object.defineProperty(CSSOM.CSSImportRule.prototype, "cssText", { - get: function() { - var mediaText = this.media.mediaText; - return "@import url(" + this.href + ")" + (mediaText ? " " + mediaText : "") + ";"; - }, - set: function(cssText) { - var i = 0; - var state = ""; - var buffer = ""; - var index; - for (var character; character = cssText.charAt(i); i++) { - switch (character) { - case " ": - case " ": - case "\r": - case "\n": - case "\f": - if (state === "after-import") { - state = "url"; - } else { - buffer += character; - } - break; - case "@": - if (!state && cssText.indexOf("@import", i) === i) { - state = "after-import"; - i += "import".length; - buffer = ""; - } - break; - case "u": - if (state === "url" && cssText.indexOf("url(", i) === i) { - index = cssText.indexOf(")", i + 1); - if (index === -1) { - throw i + ': ")" not found'; - } - i += "url(".length; - var url = cssText.slice(i, index); - if (url[0] === url[url.length - 1]) { - if (url[0] === '"' || url[0] === "'") { - url = url.slice(1, -1); - } - } - this.href = url; - i = index; - state = "media"; - } - break; - case '"': - if (state === "url") { - index = cssText.indexOf('"', i + 1); - if (!index) { - throw i + `: '"' not found`; - } - this.href = cssText.slice(i + 1, index); - i = index; - state = "media"; - } - break; - case "'": - if (state === "url") { - index = cssText.indexOf("'", i + 1); - if (!index) { - throw i + `: "'" not found`; - } - this.href = cssText.slice(i + 1, index); - i = index; - state = "media"; - } - break; - case ";": - if (state === "media") { - if (buffer) { - this.media.mediaText = buffer.trim(); - } - } - break; - default: - if (state === "media") { - buffer += character; - } - break; - } - } - } - }); - exports.CSSImportRule = CSSOM.CSSImportRule; - } -}); - -// node_modules/cssom/lib/CSSGroupingRule.js -var require_CSSGroupingRule = __commonJS({ - "node_modules/cssom/lib/CSSGroupingRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule - }; - CSSOM.CSSGroupingRule = function CSSGroupingRule() { - CSSOM.CSSRule.call(this); - this.cssRules = []; - }; - CSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule; - CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) { - if (index < 0 || index > this.cssRules.length) { - throw new RangeError("INDEX_SIZE_ERR"); - } - var cssRule = CSSOM.parse(rule).cssRules[0]; - cssRule.parentRule = this; - this.cssRules.splice(index, 0, cssRule); - return index; - }; - CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) { - if (index < 0 || index >= this.cssRules.length) { - throw new RangeError("INDEX_SIZE_ERR"); - } - this.cssRules.splice(index, 1)[0].parentRule = null; - }; - exports.CSSGroupingRule = CSSOM.CSSGroupingRule; - } -}); - -// node_modules/cssom/lib/CSSConditionRule.js -var require_CSSConditionRule = __commonJS({ - "node_modules/cssom/lib/CSSConditionRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule, - CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule - }; - CSSOM.CSSConditionRule = function CSSConditionRule() { - CSSOM.CSSGroupingRule.call(this); - this.cssRules = []; - }; - CSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule(); - CSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule; - CSSOM.CSSConditionRule.prototype.conditionText = ""; - CSSOM.CSSConditionRule.prototype.cssText = ""; - exports.CSSConditionRule = CSSOM.CSSConditionRule; - } -}); - -// node_modules/cssom/lib/CSSMediaRule.js -var require_CSSMediaRule = __commonJS({ - "node_modules/cssom/lib/CSSMediaRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule, - CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule, - CSSConditionRule: require_CSSConditionRule().CSSConditionRule, - MediaList: require_MediaList().MediaList - }; - CSSOM.CSSMediaRule = function CSSMediaRule() { - CSSOM.CSSConditionRule.call(this); - this.media = new CSSOM.MediaList(); - }; - CSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule(); - CSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule; - CSSOM.CSSMediaRule.prototype.type = 4; - Object.defineProperties(CSSOM.CSSMediaRule.prototype, { - "conditionText": { - get: function() { - return this.media.mediaText; - }, - set: function(value) { - this.media.mediaText = value; - }, - configurable: true, - enumerable: true - }, - "cssText": { - get: function() { - var cssTexts = []; - for (var i = 0, length = this.cssRules.length; i < length; i++) { - cssTexts.push(this.cssRules[i].cssText); - } - return "@media " + this.media.mediaText + " {" + cssTexts.join("") + "}"; - }, - configurable: true, - enumerable: true - } - }); - exports.CSSMediaRule = CSSOM.CSSMediaRule; - } -}); - -// node_modules/cssom/lib/CSSSupportsRule.js -var require_CSSSupportsRule = __commonJS({ - "node_modules/cssom/lib/CSSSupportsRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule, - CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule, - CSSConditionRule: require_CSSConditionRule().CSSConditionRule - }; - CSSOM.CSSSupportsRule = function CSSSupportsRule() { - CSSOM.CSSConditionRule.call(this); - }; - CSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule(); - CSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule; - CSSOM.CSSSupportsRule.prototype.type = 12; - Object.defineProperty(CSSOM.CSSSupportsRule.prototype, "cssText", { - get: function() { - var cssTexts = []; - for (var i = 0, length = this.cssRules.length; i < length; i++) { - cssTexts.push(this.cssRules[i].cssText); - } - return "@supports " + this.conditionText + " {" + cssTexts.join("") + "}"; - } - }); - exports.CSSSupportsRule = CSSOM.CSSSupportsRule; - } -}); - -// node_modules/cssom/lib/CSSFontFaceRule.js -var require_CSSFontFaceRule = __commonJS({ - "node_modules/cssom/lib/CSSFontFaceRule.js"(exports) { - var CSSOM = { - CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration, - CSSRule: require_CSSRule().CSSRule - }; - CSSOM.CSSFontFaceRule = function CSSFontFaceRule() { - CSSOM.CSSRule.call(this); - this.style = new CSSOM.CSSStyleDeclaration(); - this.style.parentRule = this; - }; - CSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule; - CSSOM.CSSFontFaceRule.prototype.type = 5; - Object.defineProperty(CSSOM.CSSFontFaceRule.prototype, "cssText", { - get: function() { - return "@font-face {" + this.style.cssText + "}"; - } - }); - exports.CSSFontFaceRule = CSSOM.CSSFontFaceRule; - } -}); - -// node_modules/cssom/lib/CSSHostRule.js -var require_CSSHostRule = __commonJS({ - "node_modules/cssom/lib/CSSHostRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule - }; - CSSOM.CSSHostRule = function CSSHostRule() { - CSSOM.CSSRule.call(this); - this.cssRules = []; - }; - CSSOM.CSSHostRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule; - CSSOM.CSSHostRule.prototype.type = 1001; - Object.defineProperty(CSSOM.CSSHostRule.prototype, "cssText", { - get: function() { - var cssTexts = []; - for (var i = 0, length = this.cssRules.length; i < length; i++) { - cssTexts.push(this.cssRules[i].cssText); - } - return "@host {" + cssTexts.join("") + "}"; - } - }); - exports.CSSHostRule = CSSOM.CSSHostRule; - } -}); - -// node_modules/cssom/lib/CSSKeyframeRule.js -var require_CSSKeyframeRule = __commonJS({ - "node_modules/cssom/lib/CSSKeyframeRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule, - CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration - }; - CSSOM.CSSKeyframeRule = function CSSKeyframeRule() { - CSSOM.CSSRule.call(this); - this.keyText = ""; - this.style = new CSSOM.CSSStyleDeclaration(); - this.style.parentRule = this; - }; - CSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule; - CSSOM.CSSKeyframeRule.prototype.type = 8; - Object.defineProperty(CSSOM.CSSKeyframeRule.prototype, "cssText", { - get: function() { - return this.keyText + " {" + this.style.cssText + "} "; - } - }); - exports.CSSKeyframeRule = CSSOM.CSSKeyframeRule; - } -}); - -// node_modules/cssom/lib/CSSKeyframesRule.js -var require_CSSKeyframesRule = __commonJS({ - "node_modules/cssom/lib/CSSKeyframesRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule - }; - CSSOM.CSSKeyframesRule = function CSSKeyframesRule() { - CSSOM.CSSRule.call(this); - this.name = ""; - this.cssRules = []; - }; - CSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule; - CSSOM.CSSKeyframesRule.prototype.type = 7; - Object.defineProperty(CSSOM.CSSKeyframesRule.prototype, "cssText", { - get: function() { - var cssTexts = []; - for (var i = 0, length = this.cssRules.length; i < length; i++) { - cssTexts.push(" " + this.cssRules[i].cssText); - } - return "@" + (this._vendorPrefix || "") + "keyframes " + this.name + " { \n" + cssTexts.join("\n") + "\n}"; - } - }); - exports.CSSKeyframesRule = CSSOM.CSSKeyframesRule; - } -}); - -// node_modules/cssom/lib/CSSValue.js -var require_CSSValue = __commonJS({ - "node_modules/cssom/lib/CSSValue.js"(exports) { - var CSSOM = {}; - CSSOM.CSSValue = function CSSValue() { - }; - CSSOM.CSSValue.prototype = { - constructor: CSSOM.CSSValue, - // @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue - set cssText(text) { - var name = this._getConstructorName(); - throw new Error('DOMException: property "cssText" of "' + name + '" is readonly and can not be replaced with "' + text + '"!'); - }, - get cssText() { - var name = this._getConstructorName(); - throw new Error('getter "cssText" of "' + name + '" is not implemented!'); - }, - _getConstructorName: function() { - var s = this.constructor.toString(), c = s.match(/function\s([^\(]+)/), name = c[1]; - return name; - } - }; - exports.CSSValue = CSSOM.CSSValue; - } -}); - -// node_modules/cssom/lib/CSSValueExpression.js -var require_CSSValueExpression = __commonJS({ - "node_modules/cssom/lib/CSSValueExpression.js"(exports) { - var CSSOM = { - CSSValue: require_CSSValue().CSSValue - }; - CSSOM.CSSValueExpression = function CSSValueExpression(token, idx) { - this._token = token; - this._idx = idx; - }; - CSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue(); - CSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression; - CSSOM.CSSValueExpression.prototype.parse = function() { - var token = this._token, idx = this._idx; - var character = "", expression = "", error = "", info, paren = []; - for (; ; ++idx) { - character = token.charAt(idx); - if (character === "") { - error = "css expression error: unfinished expression!"; - break; - } - switch (character) { - case "(": - paren.push(character); - expression += character; - break; - case ")": - paren.pop(character); - expression += character; - break; - case "/": - if (info = this._parseJSComment(token, idx)) { - if (info.error) { - error = "css expression error: unfinished comment in expression!"; - } else { - idx = info.idx; - } - } else if (info = this._parseJSRexExp(token, idx)) { - idx = info.idx; - expression += info.text; - } else { - expression += character; - } - break; - case "'": - case '"': - info = this._parseJSString(token, idx, character); - if (info) { - idx = info.idx; - expression += info.text; - } else { - expression += character; - } - break; - default: - expression += character; - break; - } - if (error) { - break; - } - if (paren.length === 0) { - break; - } - } - var ret; - if (error) { - ret = { - error - }; - } else { - ret = { - idx, - expression - }; - } - return ret; - }; - CSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) { - var nextChar = token.charAt(idx + 1), text; - if (nextChar === "/" || nextChar === "*") { - var startIdx = idx, endIdx, commentEndChar; - if (nextChar === "/") { - commentEndChar = "\n"; - } else if (nextChar === "*") { - commentEndChar = "*/"; - } - endIdx = token.indexOf(commentEndChar, startIdx + 1 + 1); - if (endIdx !== -1) { - endIdx = endIdx + commentEndChar.length - 1; - text = token.substring(idx, endIdx + 1); - return { - idx: endIdx, - text - }; - } else { - var error = "css expression error: unfinished comment in expression!"; - return { - error - }; - } - } else { - return false; - } - }; - CSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) { - var endIdx = this._findMatchedIdx(token, idx, sep), text; - if (endIdx === -1) { - return false; - } else { - text = token.substring(idx, endIdx + sep.length); - return { - idx: endIdx, - text - }; - } - }; - CSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) { - var before2 = token.substring(0, idx).replace(/\s+$/, ""), legalRegx = [ - /^$/, - /\($/, - /\[$/, - /\!$/, - /\+$/, - /\-$/, - /\*$/, - /\/\s+/, - /\%$/, - /\=$/, - /\>$/, - /<$/, - /\&$/, - /\|$/, - /\^$/, - /\~$/, - /\?$/, - /\,$/, - /delete$/, - /in$/, - /instanceof$/, - /new$/, - /typeof$/, - /void$/ - ]; - var isLegal = legalRegx.some(function(reg) { - return reg.test(before2); - }); - if (!isLegal) { - return false; - } else { - var sep = "/"; - return this._parseJSString(token, idx, sep); - } - }; - CSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) { - var startIdx = idx, endIdx; - var NOT_FOUND = -1; - while (true) { - endIdx = token.indexOf(sep, startIdx + 1); - if (endIdx === -1) { - endIdx = NOT_FOUND; - break; - } else { - var text = token.substring(idx + 1, endIdx), matched = text.match(/\\+$/); - if (!matched || matched[0] % 2 === 0) { - break; - } else { - startIdx = endIdx; - } - } - } - var nextNewLineIdx = token.indexOf("\n", idx + 1); - if (nextNewLineIdx < endIdx) { - endIdx = NOT_FOUND; - } - return endIdx; - }; - exports.CSSValueExpression = CSSOM.CSSValueExpression; - } -}); - -// node_modules/cssom/lib/MatcherList.js -var require_MatcherList = __commonJS({ - "node_modules/cssom/lib/MatcherList.js"(exports) { - var CSSOM = {}; - CSSOM.MatcherList = function MatcherList() { - this.length = 0; - }; - CSSOM.MatcherList.prototype = { - constructor: CSSOM.MatcherList, - /** - * @return {string} - */ - get matcherText() { - return Array.prototype.join.call(this, ", "); - }, - /** - * @param {string} value - */ - set matcherText(value) { - var values = value.split(","); - var length = this.length = values.length; - for (var i = 0; i < length; i++) { - this[i] = values[i].trim(); - } - }, - /** - * @param {string} matcher - */ - appendMatcher: function(matcher) { - if (Array.prototype.indexOf.call(this, matcher) === -1) { - this[this.length] = matcher; - this.length++; - } - }, - /** - * @param {string} matcher - */ - deleteMatcher: function(matcher) { - var index = Array.prototype.indexOf.call(this, matcher); - if (index !== -1) { - Array.prototype.splice.call(this, index, 1); - } - } - }; - exports.MatcherList = CSSOM.MatcherList; - } -}); - -// node_modules/cssom/lib/CSSDocumentRule.js -var require_CSSDocumentRule = __commonJS({ - "node_modules/cssom/lib/CSSDocumentRule.js"(exports) { - var CSSOM = { - CSSRule: require_CSSRule().CSSRule, - MatcherList: require_MatcherList().MatcherList - }; - CSSOM.CSSDocumentRule = function CSSDocumentRule() { - CSSOM.CSSRule.call(this); - this.matcher = new CSSOM.MatcherList(); - this.cssRules = []; - }; - CSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule(); - CSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule; - CSSOM.CSSDocumentRule.prototype.type = 10; - Object.defineProperty(CSSOM.CSSDocumentRule.prototype, "cssText", { - get: function() { - var cssTexts = []; - for (var i = 0, length = this.cssRules.length; i < length; i++) { - cssTexts.push(this.cssRules[i].cssText); - } - return "@-moz-document " + this.matcher.matcherText + " {" + cssTexts.join("") + "}"; - } - }); - exports.CSSDocumentRule = CSSOM.CSSDocumentRule; - } -}); - -// node_modules/cssom/lib/parse.js -var require_parse = __commonJS({ - "node_modules/cssom/lib/parse.js"(exports) { - var CSSOM = {}; - CSSOM.parse = function parse5(token) { - var i = 0; - var state = "before-selector"; - var index; - var buffer = ""; - var valueParenthesisDepth = 0; - var SIGNIFICANT_WHITESPACE = { - "selector": true, - "value": true, - "value-parenthesis": true, - "atRule": true, - "importRule-begin": true, - "importRule": true, - "atBlock": true, - "conditionBlock": true, - "documentRule-begin": true - }; - var styleSheet = new CSSOM.CSSStyleSheet(); - var currentScope = styleSheet; - var parentRule; - var ancestorRules = []; - var hasAncestors = false; - var prevScope; - var name, priority = "", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule; - var atKeyframesRegExp = /@(-(?:\w+-)+)?keyframes/g; - var parseError = function(message) { - var lines = token.substring(0, i).split("\n"); - var lineCount = lines.length; - var charCount = lines.pop().length + 1; - var error = new Error(message + " (line " + lineCount + ", char " + charCount + ")"); - error.line = lineCount; - error["char"] = charCount; - error.styleSheet = styleSheet; - throw error; - }; - for (var character; character = token.charAt(i); i++) { - switch (character) { - case " ": - case " ": - case "\r": - case "\n": - case "\f": - if (SIGNIFICANT_WHITESPACE[state]) { - buffer += character; - } - break; - // String - case '"': - index = i + 1; - do { - index = token.indexOf('"', index) + 1; - if (!index) { - parseError('Unmatched "'); - } - } while (token[index - 2] === "\\"); - buffer += token.slice(i, index); - i = index - 1; - switch (state) { - case "before-value": - state = "value"; - break; - case "importRule-begin": - state = "importRule"; - break; - } - break; - case "'": - index = i + 1; - do { - index = token.indexOf("'", index) + 1; - if (!index) { - parseError("Unmatched '"); - } - } while (token[index - 2] === "\\"); - buffer += token.slice(i, index); - i = index - 1; - switch (state) { - case "before-value": - state = "value"; - break; - case "importRule-begin": - state = "importRule"; - break; - } - break; - // Comment - case "/": - if (token.charAt(i + 1) === "*") { - i += 2; - index = token.indexOf("*/", i); - if (index === -1) { - parseError("Missing */"); - } else { - i = index + 1; - } - } else { - buffer += character; - } - if (state === "importRule-begin") { - buffer += " "; - state = "importRule"; - } - break; - // At-rule - case "@": - if (token.indexOf("@-moz-document", i) === i) { - state = "documentRule-begin"; - documentRule = new CSSOM.CSSDocumentRule(); - documentRule.__starts = i; - i += "-moz-document".length; - buffer = ""; - break; - } else if (token.indexOf("@media", i) === i) { - state = "atBlock"; - mediaRule = new CSSOM.CSSMediaRule(); - mediaRule.__starts = i; - i += "media".length; - buffer = ""; - break; - } else if (token.indexOf("@supports", i) === i) { - state = "conditionBlock"; - supportsRule = new CSSOM.CSSSupportsRule(); - supportsRule.__starts = i; - i += "supports".length; - buffer = ""; - break; - } else if (token.indexOf("@host", i) === i) { - state = "hostRule-begin"; - i += "host".length; - hostRule = new CSSOM.CSSHostRule(); - hostRule.__starts = i; - buffer = ""; - break; - } else if (token.indexOf("@import", i) === i) { - state = "importRule-begin"; - i += "import".length; - buffer += "@import"; - break; - } else if (token.indexOf("@font-face", i) === i) { - state = "fontFaceRule-begin"; - i += "font-face".length; - fontFaceRule = new CSSOM.CSSFontFaceRule(); - fontFaceRule.__starts = i; - buffer = ""; - break; - } else { - atKeyframesRegExp.lastIndex = i; - var matchKeyframes = atKeyframesRegExp.exec(token); - if (matchKeyframes && matchKeyframes.index === i) { - state = "keyframesRule-begin"; - keyframesRule = new CSSOM.CSSKeyframesRule(); - keyframesRule.__starts = i; - keyframesRule._vendorPrefix = matchKeyframes[1]; - i += matchKeyframes[0].length - 1; - buffer = ""; - break; - } else if (state === "selector") { - state = "atRule"; - } - } - buffer += character; - break; - case "{": - if (state === "selector" || state === "atRule") { - styleRule.selectorText = buffer.trim(); - styleRule.style.__starts = i; - buffer = ""; - state = "before-name"; - } else if (state === "atBlock") { - mediaRule.media.mediaText = buffer.trim(); - if (parentRule) { - ancestorRules.push(parentRule); - } - currentScope = parentRule = mediaRule; - mediaRule.parentStyleSheet = styleSheet; - buffer = ""; - state = "before-selector"; - } else if (state === "conditionBlock") { - supportsRule.conditionText = buffer.trim(); - if (parentRule) { - ancestorRules.push(parentRule); - } - currentScope = parentRule = supportsRule; - supportsRule.parentStyleSheet = styleSheet; - buffer = ""; - state = "before-selector"; - } else if (state === "hostRule-begin") { - if (parentRule) { - ancestorRules.push(parentRule); - } - currentScope = parentRule = hostRule; - hostRule.parentStyleSheet = styleSheet; - buffer = ""; - state = "before-selector"; - } else if (state === "fontFaceRule-begin") { - if (parentRule) { - fontFaceRule.parentRule = parentRule; - } - fontFaceRule.parentStyleSheet = styleSheet; - styleRule = fontFaceRule; - buffer = ""; - state = "before-name"; - } else if (state === "keyframesRule-begin") { - keyframesRule.name = buffer.trim(); - if (parentRule) { - ancestorRules.push(parentRule); - keyframesRule.parentRule = parentRule; - } - keyframesRule.parentStyleSheet = styleSheet; - currentScope = parentRule = keyframesRule; - buffer = ""; - state = "keyframeRule-begin"; - } else if (state === "keyframeRule-begin") { - styleRule = new CSSOM.CSSKeyframeRule(); - styleRule.keyText = buffer.trim(); - styleRule.__starts = i; - buffer = ""; - state = "before-name"; - } else if (state === "documentRule-begin") { - documentRule.matcher.matcherText = buffer.trim(); - if (parentRule) { - ancestorRules.push(parentRule); - documentRule.parentRule = parentRule; - } - currentScope = parentRule = documentRule; - documentRule.parentStyleSheet = styleSheet; - buffer = ""; - state = "before-selector"; - } - break; - case ":": - if (state === "name") { - name = buffer.trim(); - buffer = ""; - state = "before-value"; - } else { - buffer += character; - } - break; - case "(": - if (state === "value") { - if (buffer.trim() === "expression") { - var info = new CSSOM.CSSValueExpression(token, i).parse(); - if (info.error) { - parseError(info.error); - } else { - buffer += info.expression; - i = info.idx; - } - } else { - state = "value-parenthesis"; - valueParenthesisDepth = 1; - buffer += character; - } - } else if (state === "value-parenthesis") { - valueParenthesisDepth++; - buffer += character; - } else { - buffer += character; - } - break; - case ")": - if (state === "value-parenthesis") { - valueParenthesisDepth--; - if (valueParenthesisDepth === 0) state = "value"; - } - buffer += character; - break; - case "!": - if (state === "value" && token.indexOf("!important", i) === i) { - priority = "important"; - i += "important".length; - } else { - buffer += character; - } - break; - case ";": - switch (state) { - case "value": - styleRule.style.setProperty(name, buffer.trim(), priority); - priority = ""; - buffer = ""; - state = "before-name"; - break; - case "atRule": - buffer = ""; - state = "before-selector"; - break; - case "importRule": - importRule = new CSSOM.CSSImportRule(); - importRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet; - importRule.cssText = buffer + character; - styleSheet.cssRules.push(importRule); - buffer = ""; - state = "before-selector"; - break; - default: - buffer += character; - break; - } - break; - case "}": - switch (state) { - case "value": - styleRule.style.setProperty(name, buffer.trim(), priority); - priority = ""; - /* falls through */ - case "before-name": - case "name": - styleRule.__ends = i + 1; - if (parentRule) { - styleRule.parentRule = parentRule; - } - styleRule.parentStyleSheet = styleSheet; - currentScope.cssRules.push(styleRule); - buffer = ""; - if (currentScope.constructor === CSSOM.CSSKeyframesRule) { - state = "keyframeRule-begin"; - } else { - state = "before-selector"; - } - break; - case "keyframeRule-begin": - case "before-selector": - case "selector": - if (!parentRule) { - parseError("Unexpected }"); - } - hasAncestors = ancestorRules.length > 0; - while (ancestorRules.length > 0) { - parentRule = ancestorRules.pop(); - if (parentRule.constructor.name === "CSSMediaRule" || parentRule.constructor.name === "CSSSupportsRule") { - prevScope = currentScope; - currentScope = parentRule; - currentScope.cssRules.push(prevScope); - break; - } - if (ancestorRules.length === 0) { - hasAncestors = false; - } - } - if (!hasAncestors) { - currentScope.__ends = i + 1; - styleSheet.cssRules.push(currentScope); - currentScope = styleSheet; - parentRule = null; - } - buffer = ""; - state = "before-selector"; - break; - } - break; - default: - switch (state) { - case "before-selector": - state = "selector"; - styleRule = new CSSOM.CSSStyleRule(); - styleRule.__starts = i; - break; - case "before-name": - state = "name"; - break; - case "before-value": - state = "value"; - break; - case "importRule-begin": - state = "importRule"; - break; - } - buffer += character; - break; - } - } - return styleSheet; - }; - exports.parse = CSSOM.parse; - CSSOM.CSSStyleSheet = require_CSSStyleSheet().CSSStyleSheet; - CSSOM.CSSStyleRule = require_CSSStyleRule().CSSStyleRule; - CSSOM.CSSImportRule = require_CSSImportRule().CSSImportRule; - CSSOM.CSSGroupingRule = require_CSSGroupingRule().CSSGroupingRule; - CSSOM.CSSMediaRule = require_CSSMediaRule().CSSMediaRule; - CSSOM.CSSConditionRule = require_CSSConditionRule().CSSConditionRule; - CSSOM.CSSSupportsRule = require_CSSSupportsRule().CSSSupportsRule; - CSSOM.CSSFontFaceRule = require_CSSFontFaceRule().CSSFontFaceRule; - CSSOM.CSSHostRule = require_CSSHostRule().CSSHostRule; - CSSOM.CSSStyleDeclaration = require_CSSStyleDeclaration().CSSStyleDeclaration; - CSSOM.CSSKeyframeRule = require_CSSKeyframeRule().CSSKeyframeRule; - CSSOM.CSSKeyframesRule = require_CSSKeyframesRule().CSSKeyframesRule; - CSSOM.CSSValueExpression = require_CSSValueExpression().CSSValueExpression; - CSSOM.CSSDocumentRule = require_CSSDocumentRule().CSSDocumentRule; - } -}); - -// node_modules/cssom/lib/CSSStyleDeclaration.js -var require_CSSStyleDeclaration = __commonJS({ - "node_modules/cssom/lib/CSSStyleDeclaration.js"(exports) { - var CSSOM = {}; - CSSOM.CSSStyleDeclaration = function CSSStyleDeclaration2() { - this.length = 0; - this.parentRule = null; - this._importants = {}; - }; - CSSOM.CSSStyleDeclaration.prototype = { - constructor: CSSOM.CSSStyleDeclaration, - /** - * - * @param {string} name - * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue - * @return {string} the value of the property if it has been explicitly set for this declaration block. - * Returns the empty string if the property has not been set. - */ - getPropertyValue: function(name) { - return this[name] || ""; - }, - /** - * - * @param {string} name - * @param {string} value - * @param {string} [priority=null] "important" or null - * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty - */ - setProperty: function(name, value, priority) { - if (this[name]) { - var index = Array.prototype.indexOf.call(this, name); - if (index < 0) { - this[this.length] = name; - this.length++; - } - } else { - this[this.length] = name; - this.length++; - } - this[name] = value + ""; - this._importants[name] = priority; - }, - /** - * - * @param {string} name - * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty - * @return {string} the value of the property if it has been explicitly set for this declaration block. - * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property. - */ - removeProperty: function(name) { - if (!(name in this)) { - return ""; - } - var index = Array.prototype.indexOf.call(this, name); - if (index < 0) { - return ""; - } - var prevValue = this[name]; - this[name] = ""; - Array.prototype.splice.call(this, index, 1); - return prevValue; - }, - getPropertyCSSValue: function() { - }, - /** - * - * @param {String} name - */ - getPropertyPriority: function(name) { - return this._importants[name] || ""; - }, - /** - * element.style.overflow = "auto" - * element.style.getPropertyShorthand("overflow-x") - * -> "overflow" - */ - getPropertyShorthand: function() { - }, - isPropertyImplicit: function() { - }, - // Doesn't work in IE < 9 - get cssText() { - var properties = []; - for (var i = 0, length = this.length; i < length; ++i) { - var name = this[i]; - var value = this.getPropertyValue(name); - var priority = this.getPropertyPriority(name); - if (priority) { - priority = " !" + priority; - } - properties[i] = name + ": " + value + priority + ";"; - } - return properties.join(" "); - }, - set cssText(text) { - var i, name; - for (i = this.length; i--; ) { - name = this[i]; - this[name] = ""; - } - Array.prototype.splice.call(this, 0, this.length); - this._importants = {}; - var dummyRule = CSSOM.parse("#bogus{" + text + "}").cssRules[0].style; - var length = dummyRule.length; - for (i = 0; i < length; ++i) { - name = dummyRule[i]; - this.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name)); - } - } - }; - exports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration; - CSSOM.parse = require_parse().parse; - } -}); - -// node_modules/cssom/lib/clone.js -var require_clone = __commonJS({ - "node_modules/cssom/lib/clone.js"(exports) { - var CSSOM = { - CSSStyleSheet: require_CSSStyleSheet().CSSStyleSheet, - CSSRule: require_CSSRule().CSSRule, - CSSStyleRule: require_CSSStyleRule().CSSStyleRule, - CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule, - CSSConditionRule: require_CSSConditionRule().CSSConditionRule, - CSSMediaRule: require_CSSMediaRule().CSSMediaRule, - CSSSupportsRule: require_CSSSupportsRule().CSSSupportsRule, - CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration, - CSSKeyframeRule: require_CSSKeyframeRule().CSSKeyframeRule, - CSSKeyframesRule: require_CSSKeyframesRule().CSSKeyframesRule - }; - CSSOM.clone = function clone(stylesheet) { - var cloned = new CSSOM.CSSStyleSheet(); - var rules = stylesheet.cssRules; - if (!rules) { - return cloned; - } - for (var i = 0, rulesLength = rules.length; i < rulesLength; i++) { - var rule = rules[i]; - var ruleClone = cloned.cssRules[i] = new rule.constructor(); - var style = rule.style; - if (style) { - var styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration(); - for (var j = 0, styleLength = style.length; j < styleLength; j++) { - var name = styleClone[j] = style[j]; - styleClone[name] = style[name]; - styleClone._importants[name] = style.getPropertyPriority(name); - } - styleClone.length = style.length; - } - if (rule.hasOwnProperty("keyText")) { - ruleClone.keyText = rule.keyText; - } - if (rule.hasOwnProperty("selectorText")) { - ruleClone.selectorText = rule.selectorText; - } - if (rule.hasOwnProperty("mediaText")) { - ruleClone.mediaText = rule.mediaText; - } - if (rule.hasOwnProperty("conditionText")) { - ruleClone.conditionText = rule.conditionText; - } - if (rule.hasOwnProperty("cssRules")) { - ruleClone.cssRules = clone(rule).cssRules; - } - } - return cloned; - }; - exports.clone = CSSOM.clone; - } -}); - -// node_modules/cssom/lib/index.js -var require_lib = __commonJS({ - "node_modules/cssom/lib/index.js"(exports) { - "use strict"; - exports.CSSStyleDeclaration = require_CSSStyleDeclaration().CSSStyleDeclaration; - exports.CSSRule = require_CSSRule().CSSRule; - exports.CSSGroupingRule = require_CSSGroupingRule().CSSGroupingRule; - exports.CSSConditionRule = require_CSSConditionRule().CSSConditionRule; - exports.CSSStyleRule = require_CSSStyleRule().CSSStyleRule; - exports.MediaList = require_MediaList().MediaList; - exports.CSSMediaRule = require_CSSMediaRule().CSSMediaRule; - exports.CSSSupportsRule = require_CSSSupportsRule().CSSSupportsRule; - exports.CSSImportRule = require_CSSImportRule().CSSImportRule; - exports.CSSFontFaceRule = require_CSSFontFaceRule().CSSFontFaceRule; - exports.CSSHostRule = require_CSSHostRule().CSSHostRule; - exports.StyleSheet = require_StyleSheet().StyleSheet; - exports.CSSStyleSheet = require_CSSStyleSheet().CSSStyleSheet; - exports.CSSKeyframesRule = require_CSSKeyframesRule().CSSKeyframesRule; - exports.CSSKeyframeRule = require_CSSKeyframeRule().CSSKeyframeRule; - exports.MatcherList = require_MatcherList().MatcherList; - exports.CSSDocumentRule = require_CSSDocumentRule().CSSDocumentRule; - exports.CSSValue = require_CSSValue().CSSValue; - exports.CSSValueExpression = require_CSSValueExpression().CSSValueExpression; - exports.parse = require_parse().parse; - exports.clone = require_clone().clone; - } -}); - -// node_modules/linkedom/commonjs/canvas-shim.cjs -var require_canvas_shim = __commonJS({ - "node_modules/linkedom/commonjs/canvas-shim.cjs"(exports, module) { - var Canvas2 = class { - constructor(width, height) { - this.width = width; - this.height = height; - } - getContext() { - return null; - } - toDataURL() { - return ""; - } - }; - module.exports = { - createCanvas: (width, height) => new Canvas2(width, height) - }; - } -}); - -// node_modules/linkedom/commonjs/canvas.cjs -var require_canvas = __commonJS({ - "node_modules/linkedom/commonjs/canvas.cjs"(exports, module) { - try { - module.exports = __require("canvas"); - } catch (fallback) { - module.exports = require_canvas_shim(); - } - } -}); - -// node_modules/linkedom/esm/shared/symbols.js -var CHANGED = Symbol("changed"); -var CLASS_LIST = Symbol("classList"); -var CUSTOM_ELEMENTS = Symbol("CustomElements"); -var CONTENT = Symbol("content"); -var DATASET = Symbol("dataset"); -var DOCTYPE = Symbol("doctype"); -var DOM_PARSER = Symbol("DOMParser"); -var END = Symbol("end"); -var EVENT_TARGET = Symbol("EventTarget"); -var GLOBALS = Symbol("globals"); -var IMAGE = Symbol("image"); -var MIME = Symbol("mime"); -var MUTATION_OBSERVER = Symbol("MutationObserver"); -var NEXT = Symbol("next"); -var OWNER_ELEMENT = Symbol("ownerElement"); -var PREV = Symbol("prev"); -var PRIVATE = Symbol("private"); -var SHEET = Symbol("sheet"); -var START = Symbol("start"); -var STYLE = Symbol("style"); -var UPGRADE = Symbol("upgrade"); -var VALUE = Symbol("value"); - -// node_modules/htmlparser2/dist/esm/index.js -var esm_exports3 = {}; -__export(esm_exports3, { - DefaultHandler: () => DomHandler, - DomHandler: () => DomHandler, - DomUtils: () => esm_exports2, - ElementType: () => esm_exports, - Parser: () => Parser, - QuoteType: () => QuoteType, - Tokenizer: () => Tokenizer, - createDocumentStream: () => createDocumentStream, - createDomStream: () => createDomStream, - getFeed: () => getFeed, - parseDOM: () => parseDOM, - parseDocument: () => parseDocument, - parseFeed: () => parseFeed -}); - -// node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-html.js -var htmlDecodeTree = /* @__PURE__ */ new Uint16Array( - // prettier-ignore - /* @__PURE__ */ '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-xml.js -var xmlDecodeTree = /* @__PURE__ */ new Uint16Array( - // prettier-ignore - /* @__PURE__ */ "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/htmlparser2/node_modules/entities/dist/esm/decode-codepoint.js -var _a; -var decodeMap = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var fromCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins - (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } -); -function replaceCodePoint(codePoint) { - var _a3; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a3 = decodeMap.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint; -} - -// node_modules/htmlparser2/node_modules/entities/dist/esm/decode.js -var CharCodes; -(function(CharCodes4) { - CharCodes4[CharCodes4["NUM"] = 35] = "NUM"; - CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI"; - CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS"; - CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO"; - CharCodes4[CharCodes4["NINE"] = 57] = "NINE"; - CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A"; - CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F"; - CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X"; - CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A"; - CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F"; - CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z"; -})(CharCodes || (CharCodes = {})); -var TO_LOWER_BIT = 32; -var BinTrieFlags; -(function(BinTrieFlags3) { - BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE"; -})(BinTrieFlags || (BinTrieFlags = {})); -function isNumber(code) { - return code >= CharCodes.ZERO && code <= CharCodes.NINE; -} -function isHexadecimalCharacter(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; -} -function isAsciiAlphaNumeric(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); -} -function isEntityInAttributeInvalidEnd(code) { - return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); -} -var EntityDecoderState; -(function(EntityDecoderState3) { - EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity"; -})(EntityDecoderState || (EntityDecoderState = {})); -var DecodingMode; -(function(DecodingMode3) { - DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy"; - DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict"; - DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute"; -})(DecodingMode || (DecodingMode = {})); -var EntityDecoder = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(input, offset) { - switch (this.state) { - case EntityDecoderState.EntityStart: { - if (input.charCodeAt(offset) === CharCodes.NUM) { - this.state = EntityDecoderState.NumericStart; - this.consumed += 1; - return this.stateNumericStart(input, offset + 1); - } - this.state = EntityDecoderState.NamedEntity; - return this.stateNamedEntity(input, offset); - } - case EntityDecoderState.NumericStart: { - return this.stateNumericStart(input, offset); - } - case EntityDecoderState.NumericDecimal: { - return this.stateNumericDecimal(input, offset); - } - case EntityDecoderState.NumericHex: { - return this.stateNumericHex(input, offset); - } - case EntityDecoderState.NamedEntity: { - return this.stateNamedEntity(input, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(input, offset) { - if (offset >= input.length) { - return -1; - } - if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { - this.state = EntityDecoderState.NumericHex; - this.consumed += 1; - return this.stateNumericHex(input, offset + 1); - } - this.state = EntityDecoderState.NumericDecimal; - return this.stateNumericDecimal(input, offset); - } - addToNumericResult(input, start, end, base) { - if (start !== end) { - const digitCount = end - start; - this.result = this.result * Math.pow(base, digitCount) + Number.parseInt(input.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(input, offset) { - const startIndex = offset; - while (offset < input.length) { - const char = input.charCodeAt(offset); - if (isNumber(char) || isHexadecimalCharacter(char)) { - offset += 1; - } else { - this.addToNumericResult(input, startIndex, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(input, startIndex, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(input, offset) { - const startIndex = offset; - while (offset < input.length) { - const char = input.charCodeAt(offset); - if (isNumber(char)) { - offset += 1; - } else { - this.addToNumericResult(input, startIndex, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(input, startIndex, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a3; - if (this.consumed <= expectedLength) { - (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param input The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(input, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - for (; offset < input.length; offset++, this.excess++) { - const char = input.charCodeAt(offset); - this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a3; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a3; - switch (this.state) { - case EntityDecoderState.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - // Otherwise, emit a numeric entity if we have one. - case EntityDecoderState.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState.NumericStart: { - (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState.EntityStart: { - return 0; - } - } - } -}; -function determineBranch(decodeTree, current, nodeIndex, char) { - const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIndex + value] - 1; - } - let lo = nodeIndex; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midValue = decodeTree[mid]; - if (midValue < char) { - lo = mid + 1; - } else if (midValue > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} - -// node_modules/htmlparser2/dist/esm/Tokenizer.js -var CharCodes2; -(function(CharCodes4) { - CharCodes4[CharCodes4["Tab"] = 9] = "Tab"; - CharCodes4[CharCodes4["NewLine"] = 10] = "NewLine"; - CharCodes4[CharCodes4["FormFeed"] = 12] = "FormFeed"; - CharCodes4[CharCodes4["CarriageReturn"] = 13] = "CarriageReturn"; - CharCodes4[CharCodes4["Space"] = 32] = "Space"; - CharCodes4[CharCodes4["ExclamationMark"] = 33] = "ExclamationMark"; - CharCodes4[CharCodes4["Number"] = 35] = "Number"; - CharCodes4[CharCodes4["Amp"] = 38] = "Amp"; - CharCodes4[CharCodes4["SingleQuote"] = 39] = "SingleQuote"; - CharCodes4[CharCodes4["DoubleQuote"] = 34] = "DoubleQuote"; - CharCodes4[CharCodes4["Dash"] = 45] = "Dash"; - CharCodes4[CharCodes4["Slash"] = 47] = "Slash"; - CharCodes4[CharCodes4["Zero"] = 48] = "Zero"; - CharCodes4[CharCodes4["Nine"] = 57] = "Nine"; - CharCodes4[CharCodes4["Semi"] = 59] = "Semi"; - CharCodes4[CharCodes4["Lt"] = 60] = "Lt"; - CharCodes4[CharCodes4["Eq"] = 61] = "Eq"; - CharCodes4[CharCodes4["Gt"] = 62] = "Gt"; - CharCodes4[CharCodes4["Questionmark"] = 63] = "Questionmark"; - CharCodes4[CharCodes4["UpperA"] = 65] = "UpperA"; - CharCodes4[CharCodes4["LowerA"] = 97] = "LowerA"; - CharCodes4[CharCodes4["UpperF"] = 70] = "UpperF"; - CharCodes4[CharCodes4["LowerF"] = 102] = "LowerF"; - CharCodes4[CharCodes4["UpperZ"] = 90] = "UpperZ"; - CharCodes4[CharCodes4["LowerZ"] = 122] = "LowerZ"; - CharCodes4[CharCodes4["LowerX"] = 120] = "LowerX"; - CharCodes4[CharCodes4["OpeningSquareBracket"] = 91] = "OpeningSquareBracket"; -})(CharCodes2 || (CharCodes2 = {})); -var State; -(function(State2) { - State2[State2["Text"] = 1] = "Text"; - State2[State2["BeforeTagName"] = 2] = "BeforeTagName"; - State2[State2["InTagName"] = 3] = "InTagName"; - State2[State2["InSelfClosingTag"] = 4] = "InSelfClosingTag"; - State2[State2["BeforeClosingTagName"] = 5] = "BeforeClosingTagName"; - State2[State2["InClosingTagName"] = 6] = "InClosingTagName"; - State2[State2["AfterClosingTagName"] = 7] = "AfterClosingTagName"; - State2[State2["BeforeAttributeName"] = 8] = "BeforeAttributeName"; - State2[State2["InAttributeName"] = 9] = "InAttributeName"; - State2[State2["AfterAttributeName"] = 10] = "AfterAttributeName"; - State2[State2["BeforeAttributeValue"] = 11] = "BeforeAttributeValue"; - State2[State2["InAttributeValueDq"] = 12] = "InAttributeValueDq"; - State2[State2["InAttributeValueSq"] = 13] = "InAttributeValueSq"; - State2[State2["InAttributeValueNq"] = 14] = "InAttributeValueNq"; - State2[State2["BeforeDeclaration"] = 15] = "BeforeDeclaration"; - State2[State2["InDeclaration"] = 16] = "InDeclaration"; - State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction"; - State2[State2["BeforeComment"] = 18] = "BeforeComment"; - State2[State2["CDATASequence"] = 19] = "CDATASequence"; - State2[State2["InSpecialComment"] = 20] = "InSpecialComment"; - State2[State2["InCommentLike"] = 21] = "InCommentLike"; - State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS"; - State2[State2["BeforeSpecialT"] = 23] = "BeforeSpecialT"; - State2[State2["SpecialStartSequence"] = 24] = "SpecialStartSequence"; - State2[State2["InSpecialTag"] = 25] = "InSpecialTag"; - State2[State2["InEntity"] = 26] = "InEntity"; -})(State || (State = {})); -function isWhitespace(c) { - return c === CharCodes2.Space || c === CharCodes2.NewLine || c === CharCodes2.Tab || c === CharCodes2.FormFeed || c === CharCodes2.CarriageReturn; -} -function isEndOfTagSection(c) { - return c === CharCodes2.Slash || c === CharCodes2.Gt || isWhitespace(c); -} -function isASCIIAlpha(c) { - return c >= CharCodes2.LowerA && c <= CharCodes2.LowerZ || c >= CharCodes2.UpperA && c <= CharCodes2.UpperZ; -} -var QuoteType; -(function(QuoteType2) { - QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue"; - QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted"; - QuoteType2[QuoteType2["Single"] = 2] = "Single"; - QuoteType2[QuoteType2["Double"] = 3] = "Double"; -})(QuoteType || (QuoteType = {})); -var Sequences = { - Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), - // CDATA[ - CdataEnd: new Uint8Array([93, 93, 62]), - // ]]> - CommentEnd: new Uint8Array([45, 45, 62]), - // `-->` - ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), - // `<\/script` - StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), - // ` this.emitCodePoint(cp, consumed)); - } - reset() { - this.state = State.Text; - this.buffer = ""; - this.sectionStart = 0; - this.index = 0; - this.baseState = State.Text; - this.currentSequence = void 0; - this.running = true; - this.offset = 0; - } - write(chunk) { - this.offset += this.buffer.length; - this.buffer = chunk; - this.parse(); - } - end() { - if (this.running) - this.finish(); - } - pause() { - this.running = false; - } - resume() { - this.running = true; - if (this.index < this.buffer.length + this.offset) { - this.parse(); - } - } - stateText(c) { - if (c === CharCodes2.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes2.Lt)) { - if (this.index > this.sectionStart) { - this.cbs.ontext(this.sectionStart, this.index); - } - this.state = State.BeforeTagName; - this.sectionStart = this.index; - } else if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } - stateSpecialStartSequence(c) { - const isEnd = this.sequenceIndex === this.currentSequence.length; - const isMatch = isEnd ? ( - // If we are at the end of the sequence, make sure the tag name has ended - isEndOfTagSection(c) - ) : ( - // Otherwise, do a case-insensitive comparison - (c | 32) === this.currentSequence[this.sequenceIndex] - ); - if (!isMatch) { - this.isSpecial = false; - } else if (!isEnd) { - this.sequenceIndex++; - return; - } - this.sequenceIndex = 0; - this.state = State.InTagName; - this.stateInTagName(c); - } - /** Look for an end tag. For tags, also decode entities. */ - stateInSpecialTag(c) { - if (this.sequenceIndex === this.currentSequence.length) { - if (c === CharCodes2.Gt || isWhitespace(c)) { - const endOfText = this.index - this.currentSequence.length; - if (this.sectionStart < endOfText) { - const actualIndex = this.index; - this.index = endOfText; - this.cbs.ontext(this.sectionStart, endOfText); - this.index = actualIndex; - } - this.isSpecial = false; - this.sectionStart = endOfText + 2; - this.stateInClosingTagName(c); - return; - } - this.sequenceIndex = 0; - } - if ((c | 32) === this.currentSequence[this.sequenceIndex]) { - this.sequenceIndex += 1; - } else if (this.sequenceIndex === 0) { - if (this.currentSequence === Sequences.TitleEnd) { - if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } else if (this.fastForwardTo(CharCodes2.Lt)) { - this.sequenceIndex = 1; - } - } else { - this.sequenceIndex = Number(c === CharCodes2.Lt); - } - } - stateCDATASequence(c) { - if (c === Sequences.Cdata[this.sequenceIndex]) { - if (++this.sequenceIndex === Sequences.Cdata.length) { - this.state = State.InCommentLike; - this.currentSequence = Sequences.CdataEnd; - this.sequenceIndex = 0; - this.sectionStart = this.index + 1; - } - } else { - this.sequenceIndex = 0; - this.state = State.InDeclaration; - this.stateInDeclaration(c); - } - } - /** - * When we wait for one specific character, we can speed things up - * by skipping through the buffer until we find it. - * - * @returns Whether the character was found. - */ - fastForwardTo(c) { - while (++this.index < this.buffer.length + this.offset) { - if (this.buffer.charCodeAt(this.index - this.offset) === c) { - return true; - } - } - this.index = this.buffer.length + this.offset - 1; - return false; - } - /** - * Comments and CDATA end with `-->` and `]]>`. - * - * Their common qualities are: - * - Their end sequences have a distinct character they start with. - * - That character is then repeated, so we have to check multiple repeats. - * - All characters but the start character of the sequence can be skipped. - */ - stateInCommentLike(c) { - if (c === this.currentSequence[this.sequenceIndex]) { - if (++this.sequenceIndex === this.currentSequence.length) { - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(this.sectionStart, this.index, 2); - } else { - this.cbs.oncomment(this.sectionStart, this.index, 2); - } - this.sequenceIndex = 0; - this.sectionStart = this.index + 1; - this.state = State.Text; - } - } else if (this.sequenceIndex === 0) { - if (this.fastForwardTo(this.currentSequence[0])) { - this.sequenceIndex = 1; - } - } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { - this.sequenceIndex = 0; - } - } - /** - * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name. - * - * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar). - * We allow anything that wouldn't end the tag. - */ - isTagStartChar(c) { - return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c); - } - startSpecial(sequence, offset) { - this.isSpecial = true; - this.currentSequence = sequence; - this.sequenceIndex = offset; - this.state = State.SpecialStartSequence; - } - stateBeforeTagName(c) { - if (c === CharCodes2.ExclamationMark) { - this.state = State.BeforeDeclaration; - this.sectionStart = this.index + 1; - } else if (c === CharCodes2.Questionmark) { - this.state = State.InProcessingInstruction; - this.sectionStart = this.index + 1; - } else if (this.isTagStartChar(c)) { - const lower = c | 32; - this.sectionStart = this.index; - if (this.xmlMode) { - this.state = State.InTagName; - } else if (lower === Sequences.ScriptEnd[2]) { - this.state = State.BeforeSpecialS; - } else if (lower === Sequences.TitleEnd[2] || lower === Sequences.XmpEnd[2]) { - this.state = State.BeforeSpecialT; - } else { - this.state = State.InTagName; - } - } else if (c === CharCodes2.Slash) { - this.state = State.BeforeClosingTagName; - } else { - this.state = State.Text; - this.stateText(c); - } - } - stateInTagName(c) { - if (isEndOfTagSection(c)) { - this.cbs.onopentagname(this.sectionStart, this.index); - this.sectionStart = -1; - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } - } - stateBeforeClosingTagName(c) { - if (isWhitespace(c)) { - } else if (c === CharCodes2.Gt) { - this.state = State.Text; - } else { - this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment; - this.sectionStart = this.index; - } - } - stateInClosingTagName(c) { - if (c === CharCodes2.Gt || isWhitespace(c)) { - this.cbs.onclosetag(this.sectionStart, this.index); - this.sectionStart = -1; - this.state = State.AfterClosingTagName; - this.stateAfterClosingTagName(c); - } - } - stateAfterClosingTagName(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeAttributeName(c) { - if (c === CharCodes2.Gt) { - this.cbs.onopentagend(this.index); - if (this.isSpecial) { - this.state = State.InSpecialTag; - this.sequenceIndex = 0; - } else { - this.state = State.Text; - } - this.sectionStart = this.index + 1; - } else if (c === CharCodes2.Slash) { - this.state = State.InSelfClosingTag; - } else if (!isWhitespace(c)) { - this.state = State.InAttributeName; - this.sectionStart = this.index; - } - } - stateInSelfClosingTag(c) { - if (c === CharCodes2.Gt) { - this.cbs.onselfclosingtag(this.index); - this.state = State.Text; - this.sectionStart = this.index + 1; - this.isSpecial = false; - } else if (!isWhitespace(c)) { - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } - } - stateInAttributeName(c) { - if (c === CharCodes2.Eq || isEndOfTagSection(c)) { - this.cbs.onattribname(this.sectionStart, this.index); - this.sectionStart = this.index; - this.state = State.AfterAttributeName; - this.stateAfterAttributeName(c); - } - } - stateAfterAttributeName(c) { - if (c === CharCodes2.Eq) { - this.state = State.BeforeAttributeValue; - } else if (c === CharCodes2.Slash || c === CharCodes2.Gt) { - this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); - this.sectionStart = -1; - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } else if (!isWhitespace(c)) { - this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); - this.state = State.InAttributeName; - this.sectionStart = this.index; - } - } - stateBeforeAttributeValue(c) { - if (c === CharCodes2.DoubleQuote) { - this.state = State.InAttributeValueDq; - this.sectionStart = this.index + 1; - } else if (c === CharCodes2.SingleQuote) { - this.state = State.InAttributeValueSq; - this.sectionStart = this.index + 1; - } else if (!isWhitespace(c)) { - this.sectionStart = this.index; - this.state = State.InAttributeValueNq; - this.stateInAttributeValueNoQuotes(c); - } - } - handleInAttributeValue(c, quote) { - if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = -1; - this.cbs.onattribend(quote === CharCodes2.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1); - this.state = State.BeforeAttributeName; - } else if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } - stateInAttributeValueDoubleQuotes(c) { - this.handleInAttributeValue(c, CharCodes2.DoubleQuote); - } - stateInAttributeValueSingleQuotes(c) { - this.handleInAttributeValue(c, CharCodes2.SingleQuote); - } - stateInAttributeValueNoQuotes(c) { - if (isWhitespace(c) || c === CharCodes2.Gt) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = -1; - this.cbs.onattribend(QuoteType.Unquoted, this.index); - this.state = State.BeforeAttributeName; - this.stateBeforeAttributeName(c); - } else if (this.decodeEntities && c === CharCodes2.Amp) { - this.startEntity(); - } - } - stateBeforeDeclaration(c) { - if (c === CharCodes2.OpeningSquareBracket) { - this.state = State.CDATASequence; - this.sequenceIndex = 0; - } else { - this.state = c === CharCodes2.Dash ? State.BeforeComment : State.InDeclaration; - } - } - stateInDeclaration(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.cbs.ondeclaration(this.sectionStart, this.index); - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateInProcessingInstruction(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.cbs.onprocessinginstruction(this.sectionStart, this.index); - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeComment(c) { - if (c === CharCodes2.Dash) { - this.state = State.InCommentLike; - this.currentSequence = Sequences.CommentEnd; - this.sequenceIndex = 2; - this.sectionStart = this.index + 1; - } else { - this.state = State.InDeclaration; - } - } - stateInSpecialComment(c) { - if (c === CharCodes2.Gt || this.fastForwardTo(CharCodes2.Gt)) { - this.cbs.oncomment(this.sectionStart, this.index, 0); - this.state = State.Text; - this.sectionStart = this.index + 1; - } - } - stateBeforeSpecialS(c) { - const lower = c | 32; - if (lower === Sequences.ScriptEnd[3]) { - this.startSpecial(Sequences.ScriptEnd, 4); - } else if (lower === Sequences.StyleEnd[3]) { - this.startSpecial(Sequences.StyleEnd, 4); - } else { - this.state = State.InTagName; - this.stateInTagName(c); - } - } - stateBeforeSpecialT(c) { - const lower = c | 32; - switch (lower) { - case Sequences.TitleEnd[3]: { - this.startSpecial(Sequences.TitleEnd, 4); - break; - } - case Sequences.TextareaEnd[3]: { - this.startSpecial(Sequences.TextareaEnd, 4); - break; - } - case Sequences.XmpEnd[3]: { - this.startSpecial(Sequences.XmpEnd, 4); - break; - } - default: { - this.state = State.InTagName; - this.stateInTagName(c); - } - } - } - startEntity() { - this.baseState = this.state; - this.state = State.InEntity; - this.entityStart = this.index; - this.entityDecoder.startEntity(this.xmlMode ? DecodingMode.Strict : this.baseState === State.Text || this.baseState === State.InSpecialTag ? DecodingMode.Legacy : DecodingMode.Attribute); - } - stateInEntity() { - const length = this.entityDecoder.write(this.buffer, this.index - this.offset); - if (length >= 0) { - this.state = this.baseState; - if (length === 0) { - this.index = this.entityStart; - } - } else { - this.index = this.offset + this.buffer.length - 1; - } - } - /** - * Remove data that has already been consumed from the buffer. - */ - cleanup() { - if (this.running && this.sectionStart !== this.index) { - if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) { - this.cbs.ontext(this.sectionStart, this.index); - this.sectionStart = this.index; - } else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) { - this.cbs.onattribdata(this.sectionStart, this.index); - this.sectionStart = this.index; - } - } - } - shouldContinue() { - return this.index < this.buffer.length + this.offset && this.running; - } - /** - * Iterates through the buffer, calling the function corresponding to the current state. - * - * States that are more likely to be hit are higher up, as a performance improvement. - */ - parse() { - while (this.shouldContinue()) { - const c = this.buffer.charCodeAt(this.index - this.offset); - switch (this.state) { - case State.Text: { - this.stateText(c); - break; - } - case State.SpecialStartSequence: { - this.stateSpecialStartSequence(c); - break; - } - case State.InSpecialTag: { - this.stateInSpecialTag(c); - break; - } - case State.CDATASequence: { - this.stateCDATASequence(c); - break; - } - case State.InAttributeValueDq: { - this.stateInAttributeValueDoubleQuotes(c); - break; - } - case State.InAttributeName: { - this.stateInAttributeName(c); - break; - } - case State.InCommentLike: { - this.stateInCommentLike(c); - break; - } - case State.InSpecialComment: { - this.stateInSpecialComment(c); - break; - } - case State.BeforeAttributeName: { - this.stateBeforeAttributeName(c); - break; - } - case State.InTagName: { - this.stateInTagName(c); - break; - } - case State.InClosingTagName: { - this.stateInClosingTagName(c); - break; - } - case State.BeforeTagName: { - this.stateBeforeTagName(c); - break; - } - case State.AfterAttributeName: { - this.stateAfterAttributeName(c); - break; - } - case State.InAttributeValueSq: { - this.stateInAttributeValueSingleQuotes(c); - break; - } - case State.BeforeAttributeValue: { - this.stateBeforeAttributeValue(c); - break; - } - case State.BeforeClosingTagName: { - this.stateBeforeClosingTagName(c); - break; - } - case State.AfterClosingTagName: { - this.stateAfterClosingTagName(c); - break; - } - case State.BeforeSpecialS: { - this.stateBeforeSpecialS(c); - break; - } - case State.BeforeSpecialT: { - this.stateBeforeSpecialT(c); - break; - } - case State.InAttributeValueNq: { - this.stateInAttributeValueNoQuotes(c); - break; - } - case State.InSelfClosingTag: { - this.stateInSelfClosingTag(c); - break; - } - case State.InDeclaration: { - this.stateInDeclaration(c); - break; - } - case State.BeforeDeclaration: { - this.stateBeforeDeclaration(c); - break; - } - case State.BeforeComment: { - this.stateBeforeComment(c); - break; - } - case State.InProcessingInstruction: { - this.stateInProcessingInstruction(c); - break; - } - case State.InEntity: { - this.stateInEntity(); - break; - } - } - this.index++; - } - this.cleanup(); - } - finish() { - if (this.state === State.InEntity) { - this.entityDecoder.end(); - this.state = this.baseState; - } - this.handleTrailingData(); - this.cbs.onend(); - } - /** Handle any trailing data. */ - handleTrailingData() { - const endIndex = this.buffer.length + this.offset; - if (this.sectionStart >= endIndex) { - return; - } - if (this.state === State.InCommentLike) { - if (this.currentSequence === Sequences.CdataEnd) { - this.cbs.oncdata(this.sectionStart, endIndex, 0); - } else { - this.cbs.oncomment(this.sectionStart, endIndex, 0); - } - } else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) { - } else { - this.cbs.ontext(this.sectionStart, endIndex); - } - } - emitCodePoint(cp, consumed) { - if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) { - if (this.sectionStart < this.entityStart) { - this.cbs.onattribdata(this.sectionStart, this.entityStart); - } - this.sectionStart = this.entityStart + consumed; - this.index = this.sectionStart - 1; - this.cbs.onattribentity(cp); - } else { - if (this.sectionStart < this.entityStart) { - this.cbs.ontext(this.sectionStart, this.entityStart); - } - this.sectionStart = this.entityStart + consumed; - this.index = this.sectionStart - 1; - this.cbs.ontextentity(cp, this.sectionStart); - } - } -}; - -// node_modules/htmlparser2/dist/esm/Parser.js -var formTags = /* @__PURE__ */ new Set([ - "input", - "option", - "optgroup", - "select", - "button", - "datalist", - "textarea" -]); -var pTag = /* @__PURE__ */ new Set(["p"]); -var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]); -var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]); -var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]); -var openImpliesClose = /* @__PURE__ */ new Map([ - ["tr", /* @__PURE__ */ new Set(["tr", "th", "td"])], - ["th", /* @__PURE__ */ new Set(["th"])], - ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])], - ["body", /* @__PURE__ */ new Set(["head", "link", "script"])], - ["li", /* @__PURE__ */ new Set(["li"])], - ["p", pTag], - ["h1", pTag], - ["h2", pTag], - ["h3", pTag], - ["h4", pTag], - ["h5", pTag], - ["h6", pTag], - ["select", formTags], - ["input", formTags], - ["output", formTags], - ["button", formTags], - ["datalist", formTags], - ["textarea", formTags], - ["option", /* @__PURE__ */ new Set(["option"])], - ["optgroup", /* @__PURE__ */ new Set(["optgroup", "option"])], - ["dd", ddtTags], - ["dt", ddtTags], - ["address", pTag], - ["article", pTag], - ["aside", pTag], - ["blockquote", pTag], - ["details", pTag], - ["div", pTag], - ["dl", pTag], - ["fieldset", pTag], - ["figcaption", pTag], - ["figure", pTag], - ["footer", pTag], - ["form", pTag], - ["header", pTag], - ["hr", pTag], - ["main", pTag], - ["nav", pTag], - ["ol", pTag], - ["pre", pTag], - ["section", pTag], - ["table", pTag], - ["ul", pTag], - ["rt", rtpTags], - ["rp", rtpTags], - ["tbody", tableSectionTags], - ["tfoot", tableSectionTags] -]); -var voidElements = /* @__PURE__ */ new Set([ - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" -]); -var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]); -var htmlIntegrationElements = /* @__PURE__ */ new Set([ - "mi", - "mo", - "mn", - "ms", - "mtext", - "annotation-xml", - "foreignobject", - "desc", - "title" -]); -var reNameEnd = /\s|\//; -var Parser = class { - constructor(cbs, options = {}) { - var _a3, _b, _c, _d, _e, _f; - this.options = options; - this.startIndex = 0; - this.endIndex = 0; - this.openTagStart = 0; - this.tagname = ""; - this.attribname = ""; - this.attribvalue = ""; - this.attribs = null; - this.stack = []; - this.buffers = []; - this.bufferOffset = 0; - this.writeIndex = 0; - this.ended = false; - this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; - this.htmlMode = !this.options.xmlMode; - this.lowerCaseTagNames = (_a3 = options.lowerCaseTags) !== null && _a3 !== void 0 ? _a3 : this.htmlMode; - this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode; - this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode; - this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this); - this.foreignContext = [!this.htmlMode]; - (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this); - } - // Tokenizer event handlers - /** @internal */ - ontext(start, endIndex) { - var _a3, _b; - const data = this.getSlice(start, endIndex); - this.endIndex = endIndex - 1; - (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, data); - this.startIndex = endIndex; - } - /** @internal */ - ontextentity(cp, endIndex) { - var _a3, _b; - this.endIndex = endIndex - 1; - (_b = (_a3 = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a3, fromCodePoint(cp)); - this.startIndex = endIndex; - } - /** - * Checks if the current tag is a void element. Override this if you want - * to specify your own additional void elements. - */ - isVoidElement(name) { - return this.htmlMode && voidElements.has(name); - } - /** @internal */ - onopentagname(start, endIndex) { - this.endIndex = endIndex; - let name = this.getSlice(start, endIndex); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - this.emitOpenTag(name); - } - emitOpenTag(name) { - var _a3, _b, _c, _d; - this.openTagStart = this.startIndex; - this.tagname = name; - const impliesClose = this.htmlMode && openImpliesClose.get(name); - if (impliesClose) { - while (this.stack.length > 0 && impliesClose.has(this.stack[0])) { - const element = this.stack.shift(); - (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, true); - } - } - if (!this.isVoidElement(name)) { - this.stack.unshift(name); - if (this.htmlMode) { - if (foreignContextElements.has(name)) { - this.foreignContext.unshift(true); - } else if (htmlIntegrationElements.has(name)) { - this.foreignContext.unshift(false); - } - } - } - (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name); - if (this.cbs.onopentag) - this.attribs = {}; - } - endOpenTag(isImplied) { - var _a3, _b; - this.startIndex = this.openTagStart; - if (this.attribs) { - (_b = (_a3 = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a3, this.tagname, this.attribs, isImplied); - this.attribs = null; - } - if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) { - this.cbs.onclosetag(this.tagname, true); - } - this.tagname = ""; - } - /** @internal */ - onopentagend(endIndex) { - this.endIndex = endIndex; - this.endOpenTag(false); - this.startIndex = endIndex + 1; - } - /** @internal */ - onclosetag(start, endIndex) { - var _a3, _b, _c, _d, _e, _f, _g, _h; - this.endIndex = endIndex; - let name = this.getSlice(start, endIndex); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) { - this.foreignContext.shift(); - } - if (!this.isVoidElement(name)) { - const pos = this.stack.indexOf(name); - if (pos !== -1) { - for (let index = 0; index <= pos; index++) { - const element = this.stack.shift(); - (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, element, index !== pos); - } - } else if (this.htmlMode && name === "p") { - this.emitOpenTag("p"); - this.closeCurrentTag(true); - } - } else if (this.htmlMode && name === "br") { - (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br"); - (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true); - (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onselfclosingtag(endIndex) { - this.endIndex = endIndex; - if (this.recognizeSelfClosing || this.foreignContext[0]) { - this.closeCurrentTag(false); - this.startIndex = endIndex + 1; - } else { - this.onopentagend(endIndex); - } - } - closeCurrentTag(isOpenImplied) { - var _a3, _b; - const name = this.tagname; - this.endOpenTag(isOpenImplied); - if (this.stack[0] === name) { - (_b = (_a3 = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a3, name, !isOpenImplied); - this.stack.shift(); - } - } - /** @internal */ - onattribname(start, endIndex) { - this.startIndex = start; - const name = this.getSlice(start, endIndex); - this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name; - } - /** @internal */ - onattribdata(start, endIndex) { - this.attribvalue += this.getSlice(start, endIndex); - } - /** @internal */ - onattribentity(cp) { - this.attribvalue += fromCodePoint(cp); - } - /** @internal */ - onattribend(quote, endIndex) { - var _a3, _b; - this.endIndex = endIndex; - (_b = (_a3 = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a3, this.attribname, this.attribvalue, quote === QuoteType.Double ? '"' : quote === QuoteType.Single ? "'" : quote === QuoteType.NoValue ? void 0 : null); - if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { - this.attribs[this.attribname] = this.attribvalue; - } - this.attribvalue = ""; - } - getInstructionName(value) { - const index = value.search(reNameEnd); - let name = index < 0 ? value : value.substr(0, index); - if (this.lowerCaseTagNames) { - name = name.toLowerCase(); - } - return name; - } - /** @internal */ - ondeclaration(start, endIndex) { - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex); - if (this.cbs.onprocessinginstruction) { - const name = this.getInstructionName(value); - this.cbs.onprocessinginstruction(`!${name}`, `!${value}`); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onprocessinginstruction(start, endIndex) { - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex); - if (this.cbs.onprocessinginstruction) { - const name = this.getInstructionName(value); - this.cbs.onprocessinginstruction(`?${name}`, `?${value}`); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - oncomment(start, endIndex, offset) { - var _a3, _b, _c, _d; - this.endIndex = endIndex; - (_b = (_a3 = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a3, this.getSlice(start, endIndex - offset)); - (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); - this.startIndex = endIndex + 1; - } - /** @internal */ - oncdata(start, endIndex, offset) { - var _a3, _b, _c, _d, _e, _f, _g, _h, _j, _k; - this.endIndex = endIndex; - const value = this.getSlice(start, endIndex - offset); - if (!this.htmlMode || this.options.recognizeCDATA) { - (_b = (_a3 = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a3); - (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); - (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); - } else { - (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`); - (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j); - } - this.startIndex = endIndex + 1; - } - /** @internal */ - onend() { - var _a3, _b; - if (this.cbs.onclosetag) { - this.endIndex = this.startIndex; - for (let index = 0; index < this.stack.length; index++) { - this.cbs.onclosetag(this.stack[index], true); - } - } - (_b = (_a3 = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a3); - } - /** - * Resets the parser to a blank state, ready to parse a new HTML document - */ - reset() { - var _a3, _b, _c, _d; - (_b = (_a3 = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a3); - this.tokenizer.reset(); - this.tagname = ""; - this.attribname = ""; - this.attribs = null; - this.stack.length = 0; - this.startIndex = 0; - this.endIndex = 0; - (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); - this.buffers.length = 0; - this.foreignContext.length = 0; - this.foreignContext.unshift(!this.htmlMode); - this.bufferOffset = 0; - this.writeIndex = 0; - this.ended = false; - } - /** - * Resets the parser, then parses a complete document and - * pushes it to the handler. - * - * @param data Document to parse. - */ - parseComplete(data) { - this.reset(); - this.end(data); - } - getSlice(start, end) { - while (start - this.bufferOffset >= this.buffers[0].length) { - this.shiftBuffer(); - } - let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset); - while (end - this.bufferOffset > this.buffers[0].length) { - this.shiftBuffer(); - slice += this.buffers[0].slice(0, end - this.bufferOffset); - } - return slice; - } - shiftBuffer() { - this.bufferOffset += this.buffers[0].length; - this.writeIndex--; - this.buffers.shift(); - } - /** - * Parses a chunk of data and calls the corresponding callbacks. - * - * @param chunk Chunk to parse. - */ - write(chunk) { - var _a3, _b; - if (this.ended) { - (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".write() after done!")); - return; - } - this.buffers.push(chunk); - if (this.tokenizer.running) { - this.tokenizer.write(chunk); - this.writeIndex++; - } - } - /** - * Parses the end of the buffer and clears the stack, calls onend. - * - * @param chunk Optional final chunk to parse. - */ - end(chunk) { - var _a3, _b; - if (this.ended) { - (_b = (_a3 = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a3, new Error(".end() after done!")); - return; - } - if (chunk) - this.write(chunk); - this.ended = true; - this.tokenizer.end(); - } - /** - * Pauses parsing. The parser won't emit events until `resume` is called. - */ - pause() { - this.tokenizer.pause(); - } - /** - * Resumes parsing after `pause` was called. - */ - resume() { - this.tokenizer.resume(); - while (this.tokenizer.running && this.writeIndex < this.buffers.length) { - this.tokenizer.write(this.buffers[this.writeIndex++]); - } - if (this.ended) - this.tokenizer.end(); - } - /** - * Alias of `write`, for backwards compatibility. - * - * @param chunk Chunk to parse. - * @deprecated - */ - parseChunk(chunk) { - this.write(chunk); - } - /** - * Alias of `end`, for backwards compatibility. - * - * @param chunk Optional final chunk to parse. - * @deprecated - */ - done(chunk) { - this.end(chunk); - } -}; - -// node_modules/domelementtype/lib/esm/index.js -var esm_exports = {}; -__export(esm_exports, { - CDATA: () => CDATA, - Comment: () => Comment, - Directive: () => Directive, - Doctype: () => Doctype, - ElementType: () => ElementType, - Root: () => Root, - Script: () => Script, - Style: () => Style, - Tag: () => Tag, - Text: () => Text, - isTag: () => isTag -}); -var ElementType; -(function(ElementType2) { - ElementType2["Root"] = "root"; - ElementType2["Text"] = "text"; - ElementType2["Directive"] = "directive"; - ElementType2["Comment"] = "comment"; - ElementType2["Script"] = "script"; - ElementType2["Style"] = "style"; - ElementType2["Tag"] = "tag"; - ElementType2["CDATA"] = "cdata"; - ElementType2["Doctype"] = "doctype"; -})(ElementType || (ElementType = {})); -function isTag(elem) { - return elem.type === ElementType.Tag || elem.type === ElementType.Script || elem.type === ElementType.Style; -} -var Root = ElementType.Root; -var Text = ElementType.Text; -var Directive = ElementType.Directive; -var Comment = ElementType.Comment; -var Script = ElementType.Script; -var Style = ElementType.Style; -var Tag = ElementType.Tag; -var CDATA = ElementType.CDATA; -var Doctype = ElementType.Doctype; - -// node_modules/domhandler/lib/esm/node.js -var Node = class { - constructor() { - this.parent = null; - this.prev = null; - this.next = null; - this.startIndex = null; - this.endIndex = null; - } - // Read-write aliases for properties - /** - * Same as {@link parent}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get parentNode() { - return this.parent; - } - set parentNode(parent) { - this.parent = parent; - } - /** - * Same as {@link prev}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get previousSibling() { - return this.prev; - } - set previousSibling(prev) { - this.prev = prev; - } - /** - * Same as {@link next}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get nextSibling() { - return this.next; - } - set nextSibling(next) { - this.next = next; - } - /** - * Clone this node, and optionally its children. - * - * @param recursive Clone child nodes as well. - * @returns A clone of the node. - */ - cloneNode(recursive = false) { - return cloneNode(this, recursive); - } -}; -var DataNode = class extends Node { - /** - * @param data The content of the data node - */ - constructor(data) { - super(); - this.data = data; - } - /** - * Same as {@link data}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get nodeValue() { - return this.data; - } - set nodeValue(data) { - this.data = data; - } -}; -var Text2 = class extends DataNode { - constructor() { - super(...arguments); - this.type = ElementType.Text; - } - get nodeType() { - return 3; - } -}; -var Comment2 = class extends DataNode { - constructor() { - super(...arguments); - this.type = ElementType.Comment; - } - get nodeType() { - return 8; - } -}; -var ProcessingInstruction = class extends DataNode { - constructor(name, data) { - super(data); - this.name = name; - this.type = ElementType.Directive; - } - get nodeType() { - return 1; - } -}; -var NodeWithChildren = class extends Node { - /** - * @param children Children of the node. Only certain node types can have children. - */ - constructor(children) { - super(); - this.children = children; - } - // Aliases - /** First child of the node. */ - get firstChild() { - var _a3; - return (_a3 = this.children[0]) !== null && _a3 !== void 0 ? _a3 : null; - } - /** Last child of the node. */ - get lastChild() { - return this.children.length > 0 ? this.children[this.children.length - 1] : null; - } - /** - * Same as {@link children}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get childNodes() { - return this.children; - } - set childNodes(children) { - this.children = children; - } -}; -var CDATA2 = class extends NodeWithChildren { - constructor() { - super(...arguments); - this.type = ElementType.CDATA; - } - get nodeType() { - return 4; - } -}; -var Document = class extends NodeWithChildren { - constructor() { - super(...arguments); - this.type = ElementType.Root; - } - get nodeType() { - return 9; - } -}; -var Element = class extends NodeWithChildren { - /** - * @param name Name of the tag, eg. `div`, `span`. - * @param attribs Object mapping attribute names to attribute values. - * @param children Children of the node. - */ - constructor(name, attribs, children = [], type = name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag) { - super(children); - this.name = name; - this.attribs = attribs; - this.type = type; - } - get nodeType() { - return 1; - } - // DOM Level 1 aliases - /** - * Same as {@link name}. - * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. - */ - get tagName() { - return this.name; - } - set tagName(name) { - this.name = name; - } - get attributes() { - return Object.keys(this.attribs).map((name) => { - var _a3, _b; - return { - name, - value: this.attribs[name], - namespace: (_a3 = this["x-attribsNamespace"]) === null || _a3 === void 0 ? void 0 : _a3[name], - prefix: (_b = this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name] - }; - }); - } -}; -function isTag2(node) { - return isTag(node); -} -function isCDATA(node) { - return node.type === ElementType.CDATA; -} -function isText(node) { - return node.type === ElementType.Text; -} -function isComment(node) { - return node.type === ElementType.Comment; -} -function isDirective(node) { - return node.type === ElementType.Directive; -} -function isDocument(node) { - return node.type === ElementType.Root; -} -function hasChildren(node) { - return Object.prototype.hasOwnProperty.call(node, "children"); -} -function cloneNode(node, recursive = false) { - let result; - if (isText(node)) { - result = new Text2(node.data); - } else if (isComment(node)) { - result = new Comment2(node.data); - } else if (isTag2(node)) { - const children = recursive ? cloneChildren(node.children) : []; - const clone = new Element(node.name, { ...node.attribs }, children); - children.forEach((child) => child.parent = clone); - if (node.namespace != null) { - clone.namespace = node.namespace; - } - if (node["x-attribsNamespace"]) { - clone["x-attribsNamespace"] = { ...node["x-attribsNamespace"] }; - } - if (node["x-attribsPrefix"]) { - clone["x-attribsPrefix"] = { ...node["x-attribsPrefix"] }; - } - result = clone; - } else if (isCDATA(node)) { - const children = recursive ? cloneChildren(node.children) : []; - const clone = new CDATA2(children); - children.forEach((child) => child.parent = clone); - result = clone; - } else if (isDocument(node)) { - const children = recursive ? cloneChildren(node.children) : []; - const clone = new Document(children); - children.forEach((child) => child.parent = clone); - if (node["x-mode"]) { - clone["x-mode"] = node["x-mode"]; - } - result = clone; - } else if (isDirective(node)) { - const instruction = new ProcessingInstruction(node.name, node.data); - if (node["x-name"] != null) { - instruction["x-name"] = node["x-name"]; - instruction["x-publicId"] = node["x-publicId"]; - instruction["x-systemId"] = node["x-systemId"]; - } - result = instruction; - } else { - throw new Error(`Not implemented yet: ${node.type}`); - } - result.startIndex = node.startIndex; - result.endIndex = node.endIndex; - if (node.sourceCodeLocation != null) { - result.sourceCodeLocation = node.sourceCodeLocation; - } - return result; -} -function cloneChildren(childs) { - const children = childs.map((child) => cloneNode(child, true)); - for (let i = 1; i < children.length; i++) { - children[i].prev = children[i - 1]; - children[i - 1].next = children[i]; - } - return children; -} - -// node_modules/domhandler/lib/esm/index.js -var defaultOpts = { - withStartIndices: false, - withEndIndices: false, - xmlMode: false -}; -var DomHandler = class { - /** - * @param callback Called once parsing has completed. - * @param options Settings for the handler. - * @param elementCB Callback whenever a tag is closed. - */ - constructor(callback, options, elementCB) { - this.dom = []; - this.root = new Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - if (typeof options === "function") { - elementCB = options; - options = defaultOpts; - } - if (typeof callback === "object") { - options = callback; - callback = void 0; - } - this.callback = callback !== null && callback !== void 0 ? callback : null; - this.options = options !== null && options !== void 0 ? options : defaultOpts; - this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; - } - onparserinit(parser) { - this.parser = parser; - } - // Resets the handler back to starting state - onreset() { - this.dom = []; - this.root = new Document(this.dom); - this.done = false; - this.tagStack = [this.root]; - this.lastNode = null; - this.parser = null; - } - // Signals the handler that parsing is done - onend() { - if (this.done) - return; - this.done = true; - this.parser = null; - this.handleCallback(null); - } - onerror(error) { - this.handleCallback(error); - } - onclosetag() { - this.lastNode = null; - const elem = this.tagStack.pop(); - if (this.options.withEndIndices) { - elem.endIndex = this.parser.endIndex; - } - if (this.elementCB) - this.elementCB(elem); - } - onopentag(name, attribs) { - const type = this.options.xmlMode ? ElementType.Tag : void 0; - const element = new Element(name, attribs, void 0, type); - this.addNode(element); - this.tagStack.push(element); - } - ontext(data) { - const { lastNode } = this; - if (lastNode && lastNode.type === ElementType.Text) { - lastNode.data += data; - if (this.options.withEndIndices) { - lastNode.endIndex = this.parser.endIndex; - } - } else { - const node = new Text2(data); - this.addNode(node); - this.lastNode = node; - } - } - oncomment(data) { - if (this.lastNode && this.lastNode.type === ElementType.Comment) { - this.lastNode.data += data; - return; - } - const node = new Comment2(data); - this.addNode(node); - this.lastNode = node; - } - oncommentend() { - this.lastNode = null; - } - oncdatastart() { - const text = new Text2(""); - const node = new CDATA2([text]); - this.addNode(node); - text.parent = node; - this.lastNode = text; - } - oncdataend() { - this.lastNode = null; - } - onprocessinginstruction(name, data) { - const node = new ProcessingInstruction(name, data); - this.addNode(node); - } - handleCallback(error) { - if (typeof this.callback === "function") { - this.callback(error, this.dom); - } else if (error) { - throw error; - } - } - addNode(node) { - const parent = this.tagStack[this.tagStack.length - 1]; - const previousSibling2 = parent.children[parent.children.length - 1]; - if (this.options.withStartIndices) { - node.startIndex = this.parser.startIndex; - } - if (this.options.withEndIndices) { - node.endIndex = this.parser.endIndex; - } - parent.children.push(node); - if (previousSibling2) { - node.prev = previousSibling2; - previousSibling2.next = node; - } - node.parent = parent; - this.lastNode = null; - } -}; - -// node_modules/domutils/lib/esm/index.js -var esm_exports2 = {}; -__export(esm_exports2, { - DocumentPosition: () => DocumentPosition, - append: () => append, - appendChild: () => appendChild, - compareDocumentPosition: () => compareDocumentPosition, - existsOne: () => existsOne, - filter: () => filter, - find: () => find, - findAll: () => findAll, - findOne: () => findOne, - findOneChild: () => findOneChild, - getAttributeValue: () => getAttributeValue, - getChildren: () => getChildren, - getElementById: () => getElementById, - getElements: () => getElements, - getElementsByClassName: () => getElementsByClassName, - getElementsByTagName: () => getElementsByTagName, - getElementsByTagType: () => getElementsByTagType, - getFeed: () => getFeed, - getInnerHTML: () => getInnerHTML, - getName: () => getName, - getOuterHTML: () => getOuterHTML, - getParent: () => getParent, - getSiblings: () => getSiblings, - getText: () => getText, - hasAttrib: () => hasAttrib, - hasChildren: () => hasChildren, - innerText: () => innerText, - isCDATA: () => isCDATA, - isComment: () => isComment, - isDocument: () => isDocument, - isTag: () => isTag2, - isText: () => isText, - nextElementSibling: () => nextElementSibling, - prepend: () => prepend, - prependChild: () => prependChild, - prevElementSibling: () => prevElementSibling, - removeElement: () => removeElement, - removeSubsets: () => removeSubsets, - replaceElement: () => replaceElement, - testElement: () => testElement, - textContent: () => textContent, - uniqueSort: () => uniqueSort -}); - -// node_modules/entities/lib/esm/generated/decode-data-html.js -var decode_data_html_default = new Uint16Array( - // prettier-ignore - '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/generated/decode-data-xml.js -var decode_data_xml_default = new Uint16Array( - // prettier-ignore - "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/decode_codepoint.js -var _a2; -var decodeMap2 = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var fromCodePoint2 = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins - (_a2 = String.fromCodePoint) !== null && _a2 !== void 0 ? _a2 : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } -); -function replaceCodePoint2(codePoint) { - var _a3; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a3 = decodeMap2.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint; -} - -// node_modules/entities/lib/esm/decode.js -var CharCodes3; -(function(CharCodes4) { - CharCodes4[CharCodes4["NUM"] = 35] = "NUM"; - CharCodes4[CharCodes4["SEMI"] = 59] = "SEMI"; - CharCodes4[CharCodes4["EQUALS"] = 61] = "EQUALS"; - CharCodes4[CharCodes4["ZERO"] = 48] = "ZERO"; - CharCodes4[CharCodes4["NINE"] = 57] = "NINE"; - CharCodes4[CharCodes4["LOWER_A"] = 97] = "LOWER_A"; - CharCodes4[CharCodes4["LOWER_F"] = 102] = "LOWER_F"; - CharCodes4[CharCodes4["LOWER_X"] = 120] = "LOWER_X"; - CharCodes4[CharCodes4["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes4[CharCodes4["UPPER_A"] = 65] = "UPPER_A"; - CharCodes4[CharCodes4["UPPER_F"] = 70] = "UPPER_F"; - CharCodes4[CharCodes4["UPPER_Z"] = 90] = "UPPER_Z"; -})(CharCodes3 || (CharCodes3 = {})); -var TO_LOWER_BIT2 = 32; -var BinTrieFlags2; -(function(BinTrieFlags3) { - BinTrieFlags3[BinTrieFlags3["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags3[BinTrieFlags3["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags3[BinTrieFlags3["JUMP_TABLE"] = 127] = "JUMP_TABLE"; -})(BinTrieFlags2 || (BinTrieFlags2 = {})); -function isNumber2(code) { - return code >= CharCodes3.ZERO && code <= CharCodes3.NINE; -} -function isHexadecimalCharacter2(code) { - return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_F || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_F; -} -function isAsciiAlphaNumeric2(code) { - return code >= CharCodes3.UPPER_A && code <= CharCodes3.UPPER_Z || code >= CharCodes3.LOWER_A && code <= CharCodes3.LOWER_Z || isNumber2(code); -} -function isEntityInAttributeInvalidEnd2(code) { - return code === CharCodes3.EQUALS || isAsciiAlphaNumeric2(code); -} -var EntityDecoderState2; -(function(EntityDecoderState3) { - EntityDecoderState3[EntityDecoderState3["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState3[EntityDecoderState3["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState3[EntityDecoderState3["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState3[EntityDecoderState3["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState3[EntityDecoderState3["NamedEntity"] = 4] = "NamedEntity"; -})(EntityDecoderState2 || (EntityDecoderState2 = {})); -var DecodingMode2; -(function(DecodingMode3) { - DecodingMode3[DecodingMode3["Legacy"] = 0] = "Legacy"; - DecodingMode3[DecodingMode3["Strict"] = 1] = "Strict"; - DecodingMode3[DecodingMode3["Attribute"] = 2] = "Attribute"; -})(DecodingMode2 || (DecodingMode2 = {})); -var EntityDecoder2 = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState2.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode2.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState2.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param string The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(str, offset) { - switch (this.state) { - case EntityDecoderState2.EntityStart: { - if (str.charCodeAt(offset) === CharCodes3.NUM) { - this.state = EntityDecoderState2.NumericStart; - this.consumed += 1; - return this.stateNumericStart(str, offset + 1); - } - this.state = EntityDecoderState2.NamedEntity; - return this.stateNamedEntity(str, offset); - } - case EntityDecoderState2.NumericStart: { - return this.stateNumericStart(str, offset); - } - case EntityDecoderState2.NumericDecimal: { - return this.stateNumericDecimal(str, offset); - } - case EntityDecoderState2.NumericHex: { - return this.stateNumericHex(str, offset); - } - case EntityDecoderState2.NamedEntity: { - return this.stateNamedEntity(str, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(str, offset) { - if (offset >= str.length) { - return -1; - } - if ((str.charCodeAt(offset) | TO_LOWER_BIT2) === CharCodes3.LOWER_X) { - this.state = EntityDecoderState2.NumericHex; - this.consumed += 1; - return this.stateNumericHex(str, offset + 1); - } - this.state = EntityDecoderState2.NumericDecimal; - return this.stateNumericDecimal(str, offset); - } - addToNumericResult(str, start, end, base) { - if (start !== end) { - const digitCount = end - start; - this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber2(char) || isHexadecimalCharacter2(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(str, startIdx, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber2(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(str, startIdx, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a3; - if (this.consumed <= expectedLength) { - (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes3.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode2.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint2(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes3.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(str, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14; - for (; offset < str.length; offset++, this.excess++) { - const char = str.charCodeAt(offset); - this.treeIndex = determineBranch2(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode2.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd2(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags2.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes3.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode2.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a3; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags2.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags2.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a3; - switch (this.state) { - case EntityDecoderState2.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode2.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - // Otherwise, emit a numeric entity if we have one. - case EntityDecoderState2.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState2.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState2.NumericStart: { - (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState2.EntityStart: { - return 0; - } - } - } -}; -function getDecoder(decodeTree) { - let ret = ""; - const decoder = new EntityDecoder2(decodeTree, (str) => ret += fromCodePoint2(str)); - return function decodeWithTrie(str, decodeMode) { - let lastIndex = 0; - let offset = 0; - while ((offset = str.indexOf("&", offset)) >= 0) { - ret += str.slice(lastIndex, offset); - decoder.startEntity(decodeMode); - const len = decoder.write( - str, - // Skip the "&" - offset + 1 - ); - if (len < 0) { - lastIndex = offset + decoder.end(); - break; - } - lastIndex = offset + len; - offset = len === 0 ? lastIndex + 1 : lastIndex; - } - const result = ret + str.slice(lastIndex); - ret = ""; - return result; - }; -} -function determineBranch2(decodeTree, current, nodeIdx, char) { - const branchCount = (current & BinTrieFlags2.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags2.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1; - } - let lo = nodeIdx; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midVal = decodeTree[mid]; - if (midVal < char) { - lo = mid + 1; - } else if (midVal > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} -var htmlDecoder = getDecoder(decode_data_html_default); -var xmlDecoder = getDecoder(decode_data_xml_default); - -// node_modules/entities/lib/esm/generated/encode-html.js -function restoreDiff(arr) { - for (let i = 1; i < arr.length; i++) { - arr[i][0] += arr[i - 1][0] + 1; - } - return arr; -} -var encode_html_default = new Map(/* @__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); - -// node_modules/entities/lib/esm/escape.js -var xmlReplacer = /["&'<>$\x80-\uFFFF]/g; -var xmlCodeMap = /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"] -]); -var getCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : ( - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index) - ) -); -function encodeXML(str) { - let ret = ""; - let lastIdx = 0; - let match; - while ((match = xmlReplacer.exec(str)) !== null) { - const i = match.index; - const char = str.charCodeAt(i); - const next = xmlCodeMap.get(char); - if (next !== void 0) { - ret += str.substring(lastIdx, i) + next; - lastIdx = i + 1; - } else { - ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`; - lastIdx = xmlReplacer.lastIndex += Number((char & 64512) === 55296); - } - } - return ret + str.substr(lastIdx); -} -function getEscaper(regex, map) { - return function escape3(data) { - let match; - let lastIdx = 0; - let result = ""; - while (match = regex.exec(data)) { - if (lastIdx !== match.index) { - result += data.substring(lastIdx, match.index); - } - result += map.get(match[0].charCodeAt(0)); - lastIdx = match.index + 1; - } - return result + data.substring(lastIdx); - }; -} -var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); -var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [160, " "] -])); -var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] -])); - -// node_modules/entities/lib/esm/index.js -var EntityLevel; -(function(EntityLevel2) { - EntityLevel2[EntityLevel2["XML"] = 0] = "XML"; - EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML"; -})(EntityLevel || (EntityLevel = {})); -var EncodingMode; -(function(EncodingMode2) { - EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8"; - EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII"; - EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive"; - EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute"; - EncodingMode2[EncodingMode2["Text"] = 4] = "Text"; -})(EncodingMode || (EncodingMode = {})); - -// node_modules/dom-serializer/lib/esm/foreignNames.js -var elementNames = new Map([ - "altGlyph", - "altGlyphDef", - "altGlyphItem", - "animateColor", - "animateMotion", - "animateTransform", - "clipPath", - "feBlend", - "feColorMatrix", - "feComponentTransfer", - "feComposite", - "feConvolveMatrix", - "feDiffuseLighting", - "feDisplacementMap", - "feDistantLight", - "feDropShadow", - "feFlood", - "feFuncA", - "feFuncB", - "feFuncG", - "feFuncR", - "feGaussianBlur", - "feImage", - "feMerge", - "feMergeNode", - "feMorphology", - "feOffset", - "fePointLight", - "feSpecularLighting", - "feSpotLight", - "feTile", - "feTurbulence", - "foreignObject", - "glyphRef", - "linearGradient", - "radialGradient", - "textPath" -].map((val) => [val.toLowerCase(), val])); -var attributeNames = new Map([ - "definitionURL", - "attributeName", - "attributeType", - "baseFrequency", - "baseProfile", - "calcMode", - "clipPathUnits", - "diffuseConstant", - "edgeMode", - "filterUnits", - "glyphRef", - "gradientTransform", - "gradientUnits", - "kernelMatrix", - "kernelUnitLength", - "keyPoints", - "keySplines", - "keyTimes", - "lengthAdjust", - "limitingConeAngle", - "markerHeight", - "markerUnits", - "markerWidth", - "maskContentUnits", - "maskUnits", - "numOctaves", - "pathLength", - "patternContentUnits", - "patternTransform", - "patternUnits", - "pointsAtX", - "pointsAtY", - "pointsAtZ", - "preserveAlpha", - "preserveAspectRatio", - "primitiveUnits", - "refX", - "refY", - "repeatCount", - "repeatDur", - "requiredExtensions", - "requiredFeatures", - "specularConstant", - "specularExponent", - "spreadMethod", - "startOffset", - "stdDeviation", - "stitchTiles", - "surfaceScale", - "systemLanguage", - "tableValues", - "targetX", - "targetY", - "textLength", - "viewBox", - "viewTarget", - "xChannelSelector", - "yChannelSelector", - "zoomAndPan" -].map((val) => [val.toLowerCase(), val])); - -// node_modules/dom-serializer/lib/esm/index.js -var unencodedElements = /* @__PURE__ */ new Set([ - "style", - "script", - "xmp", - "iframe", - "noembed", - "noframes", - "plaintext", - "noscript" -]); -function replaceQuotes(value) { - return value.replace(/"/g, """); -} -function formatAttributes(attributes2, opts) { - var _a3; - if (!attributes2) - return; - const encode = ((_a3 = opts.encodeEntities) !== null && _a3 !== void 0 ? _a3 : opts.decodeEntities) === false ? replaceQuotes : opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML : escapeAttribute; - return Object.keys(attributes2).map((key2) => { - var _a4, _b; - const value = (_a4 = attributes2[key2]) !== null && _a4 !== void 0 ? _a4 : ""; - if (opts.xmlMode === "foreign") { - key2 = (_b = attributeNames.get(key2)) !== null && _b !== void 0 ? _b : key2; - } - if (!opts.emptyAttrs && !opts.xmlMode && value === "") { - return key2; - } - return `${key2}="${encode(value)}"`; - }).join(" "); -} -var singleTag = /* @__PURE__ */ new Set([ - "area", - "base", - "basefont", - "br", - "col", - "command", - "embed", - "frame", - "hr", - "img", - "input", - "isindex", - "keygen", - "link", - "meta", - "param", - "source", - "track", - "wbr" -]); -function render(node, options = {}) { - const nodes = "length" in node ? node : [node]; - let output = ""; - for (let i = 0; i < nodes.length; i++) { - output += renderNode(nodes[i], options); - } - return output; -} -var esm_default = render; -function renderNode(node, options) { - switch (node.type) { - case Root: - return render(node.children, options); - // @ts-expect-error We don't use `Doctype` yet - case Doctype: - case Directive: - return renderDirective(node); - case Comment: - return renderComment(node); - case CDATA: - return renderCdata(node); - case Script: - case Style: - case Tag: - return renderTag(node, options); - case Text: - return renderText(node, options); - } -} -var foreignModeIntegrationPoints = /* @__PURE__ */ new Set([ - "mi", - "mo", - "mn", - "ms", - "mtext", - "annotation-xml", - "foreignObject", - "desc", - "title" -]); -var foreignElements = /* @__PURE__ */ new Set(["svg", "math"]); -function renderTag(elem, opts) { - var _a3; - if (opts.xmlMode === "foreign") { - elem.name = (_a3 = elementNames.get(elem.name)) !== null && _a3 !== void 0 ? _a3 : elem.name; - if (elem.parent && foreignModeIntegrationPoints.has(elem.parent.name)) { - opts = { ...opts, xmlMode: false }; - } - } - if (!opts.xmlMode && foreignElements.has(elem.name)) { - opts = { ...opts, xmlMode: "foreign" }; - } - let tag = `<${elem.name}`; - const attribs = formatAttributes(elem.attribs, opts); - if (attribs) { - tag += ` ${attribs}`; - } - if (elem.children.length === 0 && (opts.xmlMode ? ( - // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags - opts.selfClosingTags !== false - ) : ( - // User explicitly asked for self-closing tags, even in HTML mode - opts.selfClosingTags && singleTag.has(elem.name) - ))) { - if (!opts.xmlMode) - tag += " "; - tag += "/>"; - } else { - tag += ">"; - if (elem.children.length > 0) { - tag += render(elem.children, opts); - } - if (opts.xmlMode || !singleTag.has(elem.name)) { - tag += `</${elem.name}>`; - } - } - return tag; -} -function renderDirective(elem) { - return `<${elem.data}>`; -} -function renderText(elem, opts) { - var _a3; - let data = elem.data || ""; - if (((_a3 = opts.encodeEntities) !== null && _a3 !== void 0 ? _a3 : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && unencodedElements.has(elem.parent.name))) { - data = opts.xmlMode || opts.encodeEntities !== "utf8" ? encodeXML(data) : escapeText(data); - } - return data; -} -function renderCdata(elem) { - return `<![CDATA[${elem.children[0].data}]]>`; -} -function renderComment(elem) { - return `<!--${elem.data}-->`; -} - -// node_modules/domutils/lib/esm/stringify.js -function getOuterHTML(node, options) { - return esm_default(node, options); -} -function getInnerHTML(node, options) { - return hasChildren(node) ? node.children.map((node2) => getOuterHTML(node2, options)).join("") : ""; -} -function getText(node) { - if (Array.isArray(node)) - return node.map(getText).join(""); - if (isTag2(node)) - return node.name === "br" ? "\n" : getText(node.children); - if (isCDATA(node)) - return getText(node.children); - if (isText(node)) - return node.data; - return ""; -} -function textContent(node) { - if (Array.isArray(node)) - return node.map(textContent).join(""); - if (hasChildren(node) && !isComment(node)) { - return textContent(node.children); - } - if (isText(node)) - return node.data; - return ""; -} -function innerText(node) { - if (Array.isArray(node)) - return node.map(innerText).join(""); - if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) { - return innerText(node.children); - } - if (isText(node)) - return node.data; - return ""; -} - -// node_modules/domutils/lib/esm/traversal.js -function getChildren(elem) { - return hasChildren(elem) ? elem.children : []; -} -function getParent(elem) { - return elem.parent || null; -} -function getSiblings(elem) { - const parent = getParent(elem); - if (parent != null) - return getChildren(parent); - const siblings = [elem]; - let { prev, next } = elem; - while (prev != null) { - siblings.unshift(prev); - ({ prev } = prev); - } - while (next != null) { - siblings.push(next); - ({ next } = next); - } - return siblings; -} -function getAttributeValue(elem, name) { - var _a3; - return (_a3 = elem.attribs) === null || _a3 === void 0 ? void 0 : _a3[name]; -} -function hasAttrib(elem, name) { - return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null; -} -function getName(elem) { - return elem.name; -} -function nextElementSibling(elem) { - let { next } = elem; - while (next !== null && !isTag2(next)) - ({ next } = next); - return next; -} -function prevElementSibling(elem) { - let { prev } = elem; - while (prev !== null && !isTag2(prev)) - ({ prev } = prev); - return prev; -} - -// node_modules/domutils/lib/esm/manipulation.js -function removeElement(elem) { - if (elem.prev) - elem.prev.next = elem.next; - if (elem.next) - elem.next.prev = elem.prev; - if (elem.parent) { - const childs = elem.parent.children; - const childsIndex = childs.lastIndexOf(elem); - if (childsIndex >= 0) { - childs.splice(childsIndex, 1); - } - } - elem.next = null; - elem.prev = null; - elem.parent = null; -} -function replaceElement(elem, replacement) { - const prev = replacement.prev = elem.prev; - if (prev) { - prev.next = replacement; - } - const next = replacement.next = elem.next; - if (next) { - next.prev = replacement; - } - const parent = replacement.parent = elem.parent; - if (parent) { - const childs = parent.children; - childs[childs.lastIndexOf(elem)] = replacement; - elem.parent = null; - } -} -function appendChild(parent, child) { - removeElement(child); - child.next = null; - child.parent = parent; - if (parent.children.push(child) > 1) { - const sibling = parent.children[parent.children.length - 2]; - sibling.next = child; - child.prev = sibling; - } else { - child.prev = null; - } -} -function append(elem, next) { - removeElement(next); - const { parent } = elem; - const currNext = elem.next; - next.next = currNext; - next.prev = elem; - elem.next = next; - next.parent = parent; - if (currNext) { - currNext.prev = next; - if (parent) { - const childs = parent.children; - childs.splice(childs.lastIndexOf(currNext), 0, next); - } - } else if (parent) { - parent.children.push(next); - } -} -function prependChild(parent, child) { - removeElement(child); - child.parent = parent; - child.prev = null; - if (parent.children.unshift(child) !== 1) { - const sibling = parent.children[1]; - sibling.prev = child; - child.next = sibling; - } else { - child.next = null; - } -} -function prepend(elem, prev) { - removeElement(prev); - const { parent } = elem; - if (parent) { - const childs = parent.children; - childs.splice(childs.indexOf(elem), 0, prev); - } - if (elem.prev) { - elem.prev.next = prev; - } - prev.parent = parent; - prev.prev = elem.prev; - prev.next = elem; - elem.prev = prev; -} - -// node_modules/domutils/lib/esm/querying.js -function filter(test, node, recurse = true, limit = Infinity) { - return find(test, Array.isArray(node) ? node : [node], recurse, limit); -} -function find(test, nodes, recurse, limit) { - const result = []; - const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; - const indexStack = [0]; - for (; ; ) { - if (indexStack[0] >= nodeStack[0].length) { - if (indexStack.length === 1) { - return result; - } - nodeStack.shift(); - indexStack.shift(); - continue; - } - const elem = nodeStack[0][indexStack[0]++]; - if (test(elem)) { - result.push(elem); - if (--limit <= 0) - return result; - } - if (recurse && hasChildren(elem) && elem.children.length > 0) { - indexStack.unshift(0); - nodeStack.unshift(elem.children); - } - } -} -function findOneChild(test, nodes) { - return nodes.find(test); -} -function findOne(test, nodes, recurse = true) { - const searchedNodes = Array.isArray(nodes) ? nodes : [nodes]; - for (let i = 0; i < searchedNodes.length; i++) { - const node = searchedNodes[i]; - if (isTag2(node) && test(node)) { - return node; - } - if (recurse && hasChildren(node) && node.children.length > 0) { - const found = findOne(test, node.children, true); - if (found) - return found; - } - } - return null; -} -function existsOne(test, nodes) { - return (Array.isArray(nodes) ? nodes : [nodes]).some((node) => isTag2(node) && test(node) || hasChildren(node) && existsOne(test, node.children)); -} -function findAll(test, nodes) { - const result = []; - const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; - const indexStack = [0]; - for (; ; ) { - if (indexStack[0] >= nodeStack[0].length) { - if (nodeStack.length === 1) { - return result; - } - nodeStack.shift(); - indexStack.shift(); - continue; - } - const elem = nodeStack[0][indexStack[0]++]; - if (isTag2(elem) && test(elem)) - result.push(elem); - if (hasChildren(elem) && elem.children.length > 0) { - indexStack.unshift(0); - nodeStack.unshift(elem.children); - } - } -} - -// node_modules/domutils/lib/esm/legacy.js -var Checks = { - tag_name(name) { - if (typeof name === "function") { - return (elem) => isTag2(elem) && name(elem.name); - } else if (name === "*") { - return isTag2; - } - return (elem) => isTag2(elem) && elem.name === name; - }, - tag_type(type) { - if (typeof type === "function") { - return (elem) => type(elem.type); - } - return (elem) => elem.type === type; - }, - tag_contains(data) { - if (typeof data === "function") { - return (elem) => isText(elem) && data(elem.data); - } - return (elem) => isText(elem) && elem.data === data; - } -}; -function getAttribCheck(attrib, value) { - if (typeof value === "function") { - return (elem) => isTag2(elem) && value(elem.attribs[attrib]); - } - return (elem) => isTag2(elem) && elem.attribs[attrib] === value; -} -function combineFuncs(a, b) { - return (elem) => a(elem) || b(elem); -} -function compileTest(options) { - const funcs = Object.keys(options).map((key2) => { - const value = options[key2]; - return Object.prototype.hasOwnProperty.call(Checks, key2) ? Checks[key2](value) : getAttribCheck(key2, value); - }); - return funcs.length === 0 ? null : funcs.reduce(combineFuncs); -} -function testElement(options, node) { - const test = compileTest(options); - return test ? test(node) : true; -} -function getElements(options, nodes, recurse, limit = Infinity) { - const test = compileTest(options); - return test ? filter(test, nodes, recurse, limit) : []; -} -function getElementById(id, nodes, recurse = true) { - if (!Array.isArray(nodes)) - nodes = [nodes]; - return findOne(getAttribCheck("id", id), nodes, recurse); -} -function getElementsByTagName(tagName19, nodes, recurse = true, limit = Infinity) { - return filter(Checks["tag_name"](tagName19), nodes, recurse, limit); -} -function getElementsByClassName(className, nodes, recurse = true, limit = Infinity) { - return filter(getAttribCheck("class", className), nodes, recurse, limit); -} -function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) { - return filter(Checks["tag_type"](type), nodes, recurse, limit); -} - -// node_modules/domutils/lib/esm/helpers.js -function removeSubsets(nodes) { - let idx = nodes.length; - while (--idx >= 0) { - const node = nodes[idx]; - if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { - nodes.splice(idx, 1); - continue; - } - for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) { - if (nodes.includes(ancestor)) { - nodes.splice(idx, 1); - break; - } - } - } - return nodes; -} -var DocumentPosition; -(function(DocumentPosition2) { - DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED"; - DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING"; - DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING"; - DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS"; - DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY"; -})(DocumentPosition || (DocumentPosition = {})); -function compareDocumentPosition(nodeA, nodeB) { - const aParents = []; - const bParents = []; - if (nodeA === nodeB) { - return 0; - } - let current = hasChildren(nodeA) ? nodeA : nodeA.parent; - while (current) { - aParents.unshift(current); - current = current.parent; - } - current = hasChildren(nodeB) ? nodeB : nodeB.parent; - while (current) { - bParents.unshift(current); - current = current.parent; - } - const maxIdx = Math.min(aParents.length, bParents.length); - let idx = 0; - while (idx < maxIdx && aParents[idx] === bParents[idx]) { - idx++; - } - if (idx === 0) { - return DocumentPosition.DISCONNECTED; - } - const sharedParent = aParents[idx - 1]; - const siblings = sharedParent.children; - const aSibling = aParents[idx]; - const bSibling = bParents[idx]; - if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { - if (sharedParent === nodeB) { - return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY; - } - return DocumentPosition.FOLLOWING; - } - if (sharedParent === nodeA) { - return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS; - } - return DocumentPosition.PRECEDING; -} -function uniqueSort(nodes) { - nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1)); - nodes.sort((a, b) => { - const relative = compareDocumentPosition(a, b); - if (relative & DocumentPosition.PRECEDING) { - return -1; - } else if (relative & DocumentPosition.FOLLOWING) { - return 1; - } - return 0; - }); - return nodes; -} - -// node_modules/domutils/lib/esm/feeds.js -function getFeed(doc) { - const feedRoot = getOneElement(isValidFeed, doc); - return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot); -} -function getAtomFeed(feedRoot) { - var _a3; - const childs = feedRoot.children; - const feed = { - type: "atom", - items: getElementsByTagName("entry", childs).map((item) => { - var _a4; - const { children } = item; - const entry = { media: getMediaElements(children) }; - addConditionally(entry, "id", "id", children); - addConditionally(entry, "title", "title", children); - const href2 = (_a4 = getOneElement("link", children)) === null || _a4 === void 0 ? void 0 : _a4.attribs["href"]; - if (href2) { - entry.link = href2; - } - const description = fetch("summary", children) || fetch("content", children); - if (description) { - entry.description = description; - } - const pubDate = fetch("updated", children); - if (pubDate) { - entry.pubDate = new Date(pubDate); - } - return entry; - }) - }; - addConditionally(feed, "id", "id", childs); - addConditionally(feed, "title", "title", childs); - const href = (_a3 = getOneElement("link", childs)) === null || _a3 === void 0 ? void 0 : _a3.attribs["href"]; - if (href) { - feed.link = href; - } - addConditionally(feed, "description", "subtitle", childs); - const updated = fetch("updated", childs); - if (updated) { - feed.updated = new Date(updated); - } - addConditionally(feed, "author", "email", childs, true); - return feed; -} -function getRssFeed(feedRoot) { - var _a3, _b; - const childs = (_b = (_a3 = getOneElement("channel", feedRoot.children)) === null || _a3 === void 0 ? void 0 : _a3.children) !== null && _b !== void 0 ? _b : []; - const feed = { - type: feedRoot.name.substr(0, 3), - id: "", - items: getElementsByTagName("item", feedRoot.children).map((item) => { - const { children } = item; - const entry = { media: getMediaElements(children) }; - addConditionally(entry, "id", "guid", children); - addConditionally(entry, "title", "title", children); - addConditionally(entry, "link", "link", children); - addConditionally(entry, "description", "description", children); - const pubDate = fetch("pubDate", children) || fetch("dc:date", children); - if (pubDate) - entry.pubDate = new Date(pubDate); - return entry; - }) - }; - addConditionally(feed, "title", "title", childs); - addConditionally(feed, "link", "link", childs); - addConditionally(feed, "description", "description", childs); - const updated = fetch("lastBuildDate", childs); - if (updated) { - feed.updated = new Date(updated); - } - addConditionally(feed, "author", "managingEditor", childs, true); - return feed; -} -var MEDIA_KEYS_STRING = ["url", "type", "lang"]; -var MEDIA_KEYS_INT = [ - "fileSize", - "bitrate", - "framerate", - "samplingrate", - "channels", - "duration", - "height", - "width" -]; -function getMediaElements(where) { - return getElementsByTagName("media:content", where).map((elem) => { - const { attribs } = elem; - const media = { - medium: attribs["medium"], - isDefault: !!attribs["isDefault"] - }; - for (const attrib of MEDIA_KEYS_STRING) { - if (attribs[attrib]) { - media[attrib] = attribs[attrib]; - } - } - for (const attrib of MEDIA_KEYS_INT) { - if (attribs[attrib]) { - media[attrib] = parseInt(attribs[attrib], 10); - } - } - if (attribs["expression"]) { - media.expression = attribs["expression"]; - } - return media; - }); -} -function getOneElement(tagName19, node) { - return getElementsByTagName(tagName19, node, true, 1)[0]; -} -function fetch(tagName19, where, recurse = false) { - return textContent(getElementsByTagName(tagName19, where, recurse, 1)).trim(); -} -function addConditionally(obj, prop2, tagName19, where, recurse = false) { - const val = fetch(tagName19, where, recurse); - if (val) - obj[prop2] = val; -} -function isValidFeed(value) { - return value === "rss" || value === "feed" || value === "rdf:RDF"; -} - -// node_modules/htmlparser2/dist/esm/index.js -function parseDocument(data, options) { - const handler4 = new DomHandler(void 0, options); - new Parser(handler4, options).end(data); - return handler4.root; -} -function parseDOM(data, options) { - return parseDocument(data, options).children; -} -function createDocumentStream(callback, options, elementCallback) { - const handler4 = new DomHandler((error) => callback(error, handler4.root), options, elementCallback); - return new Parser(handler4, options); -} -function createDomStream(callback, options, elementCallback) { - const handler4 = new DomHandler(callback, options, elementCallback); - return new Parser(handler4, options); -} -var parseFeedDefaultOptions = { xmlMode: true }; -function parseFeed(feed, options = parseFeedDefaultOptions) { - return getFeed(parseDOM(feed, options)); -} - -// node_modules/linkedom/esm/shared/constants.js -var NODE_END = -1; -var ELEMENT_NODE = 1; -var ATTRIBUTE_NODE = 2; -var TEXT_NODE = 3; -var CDATA_SECTION_NODE = 4; -var COMMENT_NODE = 8; -var DOCUMENT_NODE = 9; -var DOCUMENT_TYPE_NODE = 10; -var DOCUMENT_FRAGMENT_NODE = 11; -var BLOCK_ELEMENTS = /* @__PURE__ */ new Set(["ARTICLE", "ASIDE", "BLOCKQUOTE", "BODY", "BR", "BUTTON", "CANVAS", "CAPTION", "COL", "COLGROUP", "DD", "DIV", "DL", "DT", "EMBED", "FIELDSET", "FIGCAPTION", "FIGURE", "FOOTER", "FORM", "H1", "H2", "H3", "H4", "H5", "H6", "LI", "UL", "OL", "P"]); -var SHOW_ALL = -1; -var SHOW_ELEMENT = 1; -var SHOW_TEXT = 4; -var SHOW_CDATA_SECTION = 8; -var SHOW_COMMENT = 128; -var DOCUMENT_POSITION_DISCONNECTED = 1; -var DOCUMENT_POSITION_PRECEDING = 2; -var DOCUMENT_POSITION_FOLLOWING = 4; -var DOCUMENT_POSITION_CONTAINS = 8; -var DOCUMENT_POSITION_CONTAINED_BY = 16; -var DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32; -var SVG_NAMESPACE = "http://www.w3.org/2000/svg"; - -// node_modules/linkedom/esm/shared/object.js -var { - assign, - create, - defineProperties, - entries, - getOwnPropertyDescriptors, - keys, - setPrototypeOf -} = Object; - -// node_modules/linkedom/esm/shared/utils.js -var $String = String; -var getEnd = (node) => node.nodeType === ELEMENT_NODE ? node[END] : node; -var ignoreCase = ({ ownerDocument }) => ownerDocument[MIME].ignoreCase; -var knownAdjacent = (prev, next) => { - prev[NEXT] = next; - next[PREV] = prev; -}; -var knownBoundaries = (prev, current, next) => { - knownAdjacent(prev, current); - knownAdjacent(getEnd(current), next); -}; -var knownSegment = (prev, start, end, next) => { - knownAdjacent(prev, start); - knownAdjacent(getEnd(end), next); -}; -var knownSiblings = (prev, current, next) => { - knownAdjacent(prev, current); - knownAdjacent(current, next); -}; -var localCase = ({ localName, ownerDocument }) => { - return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName; -}; -var setAdjacent = (prev, next) => { - if (prev) - prev[NEXT] = next; - if (next) - next[PREV] = prev; -}; - -// node_modules/linkedom/esm/shared/shadow-roots.js -var shadowRoots = /* @__PURE__ */ new WeakMap(); - -// node_modules/linkedom/esm/interface/custom-element-registry.js -var reactive = false; -var Classes = /* @__PURE__ */ new WeakMap(); -var customElements = /* @__PURE__ */ new WeakMap(); -var attributeChangedCallback = (element, attributeName, oldValue, newValue) => { - if (reactive && customElements.has(element) && element.attributeChangedCallback && element.constructor.observedAttributes.includes(attributeName)) { - element.attributeChangedCallback(attributeName, oldValue, newValue); - } -}; -var createTrigger = (method, isConnected2) => (element) => { - if (customElements.has(element)) { - const info = customElements.get(element); - if (info.connected !== isConnected2 && element.isConnected === isConnected2) { - info.connected = isConnected2; - if (method in element) - element[method](); - } - } -}; -var triggerConnected = createTrigger("connectedCallback", true); -var connectedCallback = (element) => { - if (reactive) { - triggerConnected(element); - if (shadowRoots.has(element)) - element = shadowRoots.get(element).shadowRoot; - let { [NEXT]: next, [END]: end } = element; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE) - triggerConnected(next); - next = next[NEXT]; - } - } -}; -var triggerDisconnected = createTrigger("disconnectedCallback", false); -var disconnectedCallback = (element) => { - if (reactive) { - triggerDisconnected(element); - if (shadowRoots.has(element)) - element = shadowRoots.get(element).shadowRoot; - let { [NEXT]: next, [END]: end } = element; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE) - triggerDisconnected(next); - next = next[NEXT]; - } - } -}; -var CustomElementRegistry = class { - /** - * @param {Document} ownerDocument - */ - constructor(ownerDocument) { - this.ownerDocument = ownerDocument; - this.registry = /* @__PURE__ */ new Map(); - this.waiting = /* @__PURE__ */ new Map(); - this.active = false; - } - /** - * @param {string} localName the custom element definition name - * @param {Function} Class the custom element **Class** definition - * @param {object?} options the optional object with an `extends` property - */ - define(localName, Class, options = {}) { - const { ownerDocument, registry, waiting } = this; - if (registry.has(localName)) - throw new Error("unable to redefine " + localName); - if (Classes.has(Class)) - throw new Error("unable to redefine the same class: " + Class); - this.active = reactive = true; - const { extends: extend } = options; - Classes.set(Class, { - ownerDocument, - options: { is: extend ? localName : "" }, - localName: extend || localName - }); - const check = extend ? (element) => { - return element.localName === extend && element.getAttribute("is") === localName; - } : (element) => element.localName === localName; - registry.set(localName, { Class, check }); - if (waiting.has(localName)) { - for (const resolve of waiting.get(localName)) - resolve(Class); - waiting.delete(localName); - } - ownerDocument.querySelectorAll( - extend ? `${extend}[is="${localName}"]` : localName - ).forEach(this.upgrade, this); - } - /** - * @param {Element} element - */ - upgrade(element) { - if (customElements.has(element)) - return; - const { ownerDocument, registry } = this; - const ce = element.getAttribute("is") || element.localName; - if (registry.has(ce)) { - const { Class, check } = registry.get(ce); - if (check(element)) { - const { attributes: attributes2, isConnected: isConnected2 } = element; - for (const attr of attributes2) - element.removeAttributeNode(attr); - const values = entries(element); - for (const [key2] of values) - delete element[key2]; - setPrototypeOf(element, Class.prototype); - ownerDocument[UPGRADE] = { element, values }; - new Class(ownerDocument, ce); - customElements.set(element, { connected: isConnected2 }); - for (const attr of attributes2) - element.setAttributeNode(attr); - if (isConnected2 && element.connectedCallback) - element.connectedCallback(); - } - } - } - /** - * @param {string} localName the custom element definition name - */ - whenDefined(localName) { - const { registry, waiting } = this; - return new Promise((resolve) => { - if (registry.has(localName)) - resolve(registry.get(localName).Class); - else { - if (!waiting.has(localName)) - waiting.set(localName, []); - waiting.get(localName).push(resolve); - } - }); - } - /** - * @param {string} localName the custom element definition name - * @returns {Function?} the custom element **Class**, if any - */ - get(localName) { - const info = this.registry.get(localName); - return info && info.Class; - } - /** - * @param {Function} Class **Class** of custom element - * @returns {string?} found tag name or null - */ - getName(Class) { - if (Classes.has(Class)) { - const { localName } = Classes.get(Class); - return localName; - } - return null; - } -}; - -// node_modules/linkedom/esm/shared/parse-from-string.js -var { Parser: Parser2 } = esm_exports3; -var notParsing = true; -var append2 = (self, node, active) => { - const end = self[END]; - node.parentNode = self; - knownBoundaries(end[PREV], node, end); - if (active && node.nodeType === ELEMENT_NODE) - connectedCallback(node); - return node; -}; -var attribute = (element, end, attribute2, value, active) => { - attribute2[VALUE] = value; - attribute2.ownerElement = element; - knownSiblings(end[PREV], attribute2, end); - if (attribute2.name === "class") - element.className = value; - if (active) - attributeChangedCallback(element, attribute2.name, null, value); -}; -var parseFromString = (document, isHTML, markupLanguage) => { - const { active, registry } = document[CUSTOM_ELEMENTS]; - let node = document; - let ownerSVGElement = null; - let parsingCData = false; - notParsing = false; - const content = new Parser2({ - // <!DOCTYPE ...> - onprocessinginstruction(name, data) { - if (name.toLowerCase() === "!doctype") - document.doctype = data.slice(name.length).trim(); - }, - // <tagName> - onopentag(name, attributes2) { - let create3 = true; - if (isHTML) { - if (ownerSVGElement) { - node = append2(node, document.createElementNS(SVG_NAMESPACE, name), active); - node.ownerSVGElement = ownerSVGElement; - create3 = false; - } else if (name === "svg" || name === "SVG") { - ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name); - node = append2(node, ownerSVGElement, active); - create3 = false; - } else if (active) { - const ce = name.includes("-") ? name : attributes2.is || ""; - if (ce && registry.has(ce)) { - const { Class } = registry.get(ce); - node = append2(node, new Class(), active); - delete attributes2.is; - create3 = false; - } - } - } - if (create3) - node = append2(node, document.createElement(name), false); - let end = node[END]; - for (const name2 of keys(attributes2)) - attribute(node, end, document.createAttribute(name2), attributes2[name2], active); - }, - // #text, #comment - oncomment(data) { - append2(node, document.createComment(data), active); - }, - ontext(text) { - if (parsingCData) { - append2(node, document.createCDATASection(text), active); - } else { - append2(node, document.createTextNode(text), active); - } - }, - // #cdata - oncdatastart() { - parsingCData = true; - }, - oncdataend() { - parsingCData = false; - }, - // </tagName> - onclosetag() { - if (isHTML && node === ownerSVGElement) - ownerSVGElement = null; - node = node.parentNode; - } - }, { - lowerCaseAttributeNames: false, - decodeEntities: true, - xmlMode: !isHTML - }); - content.write(markupLanguage); - content.end(); - notParsing = true; - return document; -}; - -// node_modules/linkedom/esm/shared/register-html-class.js -var htmlClasses = /* @__PURE__ */ new Map(); -var registerHTMLClass = (names, Class) => { - for (const name of [].concat(names)) { - htmlClasses.set(name, Class); - htmlClasses.set(name.toUpperCase(), Class); - } -}; - -// node_modules/linkedom/esm/interface/document.js -var import_perf_hooks = __toESM(require_perf_hooks(), 1); - -// node_modules/linkedom/esm/shared/jsdon.js -var loopSegment = ({ [NEXT]: next, [END]: end }, json) => { - while (next !== end) { - switch (next.nodeType) { - case ATTRIBUTE_NODE: - attrAsJSON(next, json); - break; - case TEXT_NODE: - case COMMENT_NODE: - case CDATA_SECTION_NODE: - characterDataAsJSON(next, json); - break; - case ELEMENT_NODE: - elementAsJSON(next, json); - next = getEnd(next); - break; - case DOCUMENT_TYPE_NODE: - documentTypeAsJSON(next, json); - break; - } - next = next[NEXT]; - } - const last = json.length - 1; - const value = json[last]; - if (typeof value === "number" && value < 0) - json[last] += NODE_END; - else - json.push(NODE_END); -}; -var attrAsJSON = (attr, json) => { - json.push(ATTRIBUTE_NODE, attr.name); - const value = attr[VALUE].trim(); - if (value) - json.push(value); -}; -var characterDataAsJSON = (node, json) => { - const value = node[VALUE]; - if (value.trim()) - json.push(node.nodeType, value); -}; -var nonElementAsJSON = (node, json) => { - json.push(node.nodeType); - loopSegment(node, json); -}; -var documentTypeAsJSON = ({ name, publicId, systemId }, json) => { - json.push(DOCUMENT_TYPE_NODE, name); - if (publicId) - json.push(publicId); - if (systemId) - json.push(systemId); -}; -var elementAsJSON = (element, json) => { - json.push(ELEMENT_NODE, element.localName); - loopSegment(element, json); -}; - -// node_modules/linkedom/esm/interface/mutation-observer.js -var createRecord = (type, target, element, addedNodes, removedNodes, attributeName, oldValue) => ({ - type, - target, - addedNodes, - removedNodes, - attributeName, - oldValue, - previousSibling: element?.previousSibling || null, - nextSibling: element?.nextSibling || null -}); -var queueAttribute = (observer, target, attributeName, attributeFilter, attributeOldValue, oldValue) => { - if (!attributeFilter || attributeFilter.includes(attributeName)) { - const { callback, records, scheduled } = observer; - records.push(createRecord( - "attributes", - target, - null, - [], - [], - attributeName, - attributeOldValue ? oldValue : void 0 - )); - if (!scheduled) { - observer.scheduled = true; - Promise.resolve().then(() => { - observer.scheduled = false; - callback(records.splice(0), observer); - }); - } - } -}; -var attributeChangedCallback2 = (element, attributeName, oldValue) => { - const { ownerDocument } = element; - const { active, observers } = ownerDocument[MUTATION_OBSERVER]; - if (active) { - for (const observer of observers) { - for (const [ - target, - { - childList, - subtree, - attributes: attributes2, - attributeFilter, - attributeOldValue - } - ] of observer.nodes) { - if (childList) { - if (subtree && (target === ownerDocument || target.contains(element)) || !subtree && target.children.includes(element)) { - queueAttribute( - observer, - element, - attributeName, - attributeFilter, - attributeOldValue, - oldValue - ); - break; - } - } else if (attributes2 && target === element) { - queueAttribute( - observer, - element, - attributeName, - attributeFilter, - attributeOldValue, - oldValue - ); - break; - } - } - } - } -}; -var moCallback = (element, parentNode) => { - const { ownerDocument } = element; - const { active, observers } = ownerDocument[MUTATION_OBSERVER]; - if (active) { - for (const observer of observers) { - for (const [target, { subtree, childList, characterData }] of observer.nodes) { - if (childList) { - if (parentNode && (target === parentNode || /* c8 ignore next */ - subtree && target.contains(parentNode)) || !parentNode && (subtree && (target === ownerDocument || /* c8 ignore next */ - target.contains(element)) || !subtree && target[characterData ? "childNodes" : "children"].includes(element))) { - const { callback, records, scheduled } = observer; - records.push(createRecord( - "childList", - target, - element, - parentNode ? [] : [element], - parentNode ? [element] : [] - )); - if (!scheduled) { - observer.scheduled = true; - Promise.resolve().then(() => { - observer.scheduled = false; - callback(records.splice(0), observer); - }); - } - break; - } - } - } - } - } -}; -var MutationObserverClass = class { - constructor(ownerDocument) { - const observers = /* @__PURE__ */ new Set(); - this.observers = observers; - this.active = false; - this.class = class MutationObserver { - constructor(callback) { - this.callback = callback; - this.nodes = /* @__PURE__ */ new Map(); - this.records = []; - this.scheduled = false; - } - disconnect() { - this.records.splice(0); - this.nodes.clear(); - observers.delete(this); - ownerDocument[MUTATION_OBSERVER].active = !!observers.size; - } - /** - * @param {Element} target - * @param {MutationObserverInit} options - */ - observe(target, options = { - subtree: false, - childList: false, - attributes: false, - attributeFilter: null, - attributeOldValue: false, - characterData: false - // TODO: not implemented yet - // characterDataOldValue: false - }) { - if ("attributeOldValue" in options || "attributeFilter" in options) - options.attributes = true; - options.childList = !!options.childList; - options.subtree = !!options.subtree; - this.nodes.set(target, options); - observers.add(this); - ownerDocument[MUTATION_OBSERVER].active = true; - } - /** - * @returns {MutationRecord[]} - */ - takeRecords() { - return this.records.splice(0); - } - }; - } -}; - -// node_modules/linkedom/esm/shared/attributes.js -var emptyAttributes = /* @__PURE__ */ new Set([ - "allowfullscreen", - "allowpaymentrequest", - "async", - "autofocus", - "autoplay", - "checked", - "class", - "contenteditable", - "controls", - "default", - "defer", - "disabled", - "draggable", - "formnovalidate", - "hidden", - "id", - "ismap", - "itemscope", - "loop", - "multiple", - "muted", - "nomodule", - "novalidate", - "open", - "playsinline", - "readonly", - "required", - "reversed", - "selected", - "style", - "truespeed" -]); -var setAttribute = (element, attribute2) => { - const { [VALUE]: value, name } = attribute2; - attribute2.ownerElement = element; - knownSiblings(element, attribute2, element[NEXT]); - if (name === "class") - element.className = value; - attributeChangedCallback2(element, name, null); - attributeChangedCallback(element, name, null, value); -}; -var removeAttribute = (element, attribute2) => { - const { [VALUE]: value, name } = attribute2; - knownAdjacent(attribute2[PREV], attribute2[NEXT]); - attribute2.ownerElement = attribute2[PREV] = attribute2[NEXT] = null; - if (name === "class") - element[CLASS_LIST] = null; - attributeChangedCallback2(element, name, value); - attributeChangedCallback(element, name, value, null); -}; -var booleanAttribute = { - get(element, name) { - return element.hasAttribute(name); - }, - set(element, name, value) { - if (value) - element.setAttribute(name, ""); - else - element.removeAttribute(name); - } -}; -var numericAttribute = { - get(element, name) { - return parseFloat(element.getAttribute(name) || 0); - }, - set(element, name, value) { - element.setAttribute(name, value); - } -}; -var stringAttribute = { - get(element, name) { - return element.getAttribute(name) || ""; - }, - set(element, name, value) { - element.setAttribute(name, value); - } -}; - -// node_modules/linkedom/esm/interface/event-target.js -var wm = /* @__PURE__ */ new WeakMap(); -function dispatch(event, listener) { - if (typeof listener === "function") - listener.call(event.target, event); - else - listener.handleEvent(event); - return event._stopImmediatePropagationFlag; -} -function invokeListeners({ currentTarget, target }) { - const map = wm.get(currentTarget); - if (map && map.has(this.type)) { - const listeners = map.get(this.type); - if (currentTarget === target) { - this.eventPhase = this.AT_TARGET; - } else { - this.eventPhase = this.BUBBLING_PHASE; - } - this.currentTarget = currentTarget; - this.target = target; - for (const [listener, options] of listeners) { - if (options && options.once) - listeners.delete(listener); - if (dispatch(this, listener)) - break; - } - delete this.currentTarget; - delete this.target; - return this.cancelBubble; - } -} -var DOMEventTarget = class { - constructor() { - wm.set(this, /* @__PURE__ */ new Map()); - } - /** - * @protected - */ - _getParent() { - return null; - } - addEventListener(type, listener, options) { - const map = wm.get(this); - if (!map.has(type)) - map.set(type, /* @__PURE__ */ new Map()); - map.get(type).set(listener, options); - } - removeEventListener(type, listener) { - const map = wm.get(this); - if (map.has(type)) { - const listeners = map.get(type); - if (listeners.delete(listener) && !listeners.size) - map.delete(type); - } - } - dispatchEvent(event) { - let node = this; - event.eventPhase = event.CAPTURING_PHASE; - while (node) { - if (node.dispatchEvent) - event._path.push({ currentTarget: node, target: this }); - node = event.bubbles && node._getParent && node._getParent(); - } - event._path.some(invokeListeners, event); - event._path = []; - event.eventPhase = event.NONE; - return !event.defaultPrevented; - } -}; - -// node_modules/linkedom/esm/interface/node-list.js -var NodeList = class extends Array { - item(i) { - return i < this.length ? this[i] : null; - } -}; - -// node_modules/linkedom/esm/interface/node.js -var getParentNodeCount = ({ parentNode }) => { - let count = 0; - while (parentNode) { - count++; - parentNode = parentNode.parentNode; - } - return count; -}; -var Node2 = class extends DOMEventTarget { - static get ELEMENT_NODE() { - return ELEMENT_NODE; - } - static get ATTRIBUTE_NODE() { - return ATTRIBUTE_NODE; - } - static get TEXT_NODE() { - return TEXT_NODE; - } - static get CDATA_SECTION_NODE() { - return CDATA_SECTION_NODE; - } - static get COMMENT_NODE() { - return COMMENT_NODE; - } - static get DOCUMENT_NODE() { - return DOCUMENT_NODE; - } - static get DOCUMENT_FRAGMENT_NODE() { - return DOCUMENT_FRAGMENT_NODE; - } - static get DOCUMENT_TYPE_NODE() { - return DOCUMENT_TYPE_NODE; - } - constructor(ownerDocument, localName, nodeType) { - super(); - this.ownerDocument = ownerDocument; - this.localName = localName; - this.nodeType = nodeType; - this.parentNode = null; - this[NEXT] = null; - this[PREV] = null; - } - get ELEMENT_NODE() { - return ELEMENT_NODE; - } - get ATTRIBUTE_NODE() { - return ATTRIBUTE_NODE; - } - get TEXT_NODE() { - return TEXT_NODE; - } - get CDATA_SECTION_NODE() { - return CDATA_SECTION_NODE; - } - get COMMENT_NODE() { - return COMMENT_NODE; - } - get DOCUMENT_NODE() { - return DOCUMENT_NODE; - } - get DOCUMENT_FRAGMENT_NODE() { - return DOCUMENT_FRAGMENT_NODE; - } - get DOCUMENT_TYPE_NODE() { - return DOCUMENT_TYPE_NODE; - } - get baseURI() { - const ownerDocument = this.nodeType === DOCUMENT_NODE ? this : this.ownerDocument; - if (ownerDocument) { - const base = ownerDocument.querySelector("base"); - if (base) - return base.getAttribute("href"); - const { location } = ownerDocument.defaultView; - if (location) - return location.href; - } - return null; - } - /* c8 ignore start */ - // mixin: node - get isConnected() { - return false; - } - get nodeName() { - return this.localName; - } - get parentElement() { - return null; - } - get previousSibling() { - return null; - } - get previousElementSibling() { - return null; - } - get nextSibling() { - return null; - } - get nextElementSibling() { - return null; - } - get childNodes() { - return new NodeList(); - } - get firstChild() { - return null; - } - get lastChild() { - return null; - } - // default values - get nodeValue() { - return null; - } - set nodeValue(value) { - } - get textContent() { - return null; - } - set textContent(value) { - } - normalize() { - } - cloneNode() { - return null; - } - contains() { - return false; - } - /** - * Inserts a node before a reference node as a child of this parent node. - * @param {Node} newNode The node to be inserted. - * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes. - * @returns The added child - */ - // eslint-disable-next-line no-unused-vars - insertBefore(newNode, referenceNode) { - return newNode; - } - /** - * Adds a node to the end of the list of children of this node. - * @param {Node} child The node to append to the given parent node. - * @returns The appended child. - */ - appendChild(child) { - return child; - } - /** - * Replaces a child node within this node - * @param {Node} newChild The new node to replace oldChild. - * @param {Node} oldChild The child to be replaced. - * @returns The replaced Node. This is the same node as oldChild. - */ - replaceChild(newChild, oldChild) { - return oldChild; - } - /** - * Removes a child node from the DOM. - * @param {Node} child A Node that is the child node to be removed from the DOM. - * @returns The removed node. - */ - removeChild(child) { - return child; - } - toString() { - return ""; - } - /* c8 ignore stop */ - hasChildNodes() { - return !!this.lastChild; - } - isSameNode(node) { - return this === node; - } - // TODO: attributes? - compareDocumentPosition(target) { - let result = 0; - if (this !== target) { - let self = getParentNodeCount(this); - let other = getParentNodeCount(target); - if (self < other) { - result += DOCUMENT_POSITION_FOLLOWING; - if (this.contains(target)) - result += DOCUMENT_POSITION_CONTAINED_BY; - } else if (other < self) { - result += DOCUMENT_POSITION_PRECEDING; - if (target.contains(this)) - result += DOCUMENT_POSITION_CONTAINS; - } else if (self && other) { - const { childNodes } = this.parentNode; - if (childNodes.indexOf(this) < childNodes.indexOf(target)) - result += DOCUMENT_POSITION_FOLLOWING; - else - result += DOCUMENT_POSITION_PRECEDING; - } - if (!self || !other) { - result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC; - result += DOCUMENT_POSITION_DISCONNECTED; - } - } - return result; - } - isEqualNode(node) { - if (this === node) - return true; - if (this.nodeType === node.nodeType) { - switch (this.nodeType) { - case DOCUMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: { - const aNodes = this.childNodes; - const bNodes = node.childNodes; - return aNodes.length === bNodes.length && aNodes.every((node2, i) => node2.isEqualNode(bNodes[i])); - } - } - return this.toString() === node.toString(); - } - return false; - } - /** - * @protected - */ - _getParent() { - return this.parentNode; - } - /** - * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>). - * Calling it on an element inside a shadow DOM will return the associated ShadowRoot. - * @return {ShadowRoot | HTMLDocument} - */ - getRootNode() { - let root = this; - while (root.parentNode) - root = root.parentNode; - return root; - } -}; - -// node_modules/linkedom/esm/shared/text-escaper.js -var { replace } = ""; -var ca = /[<>&\xA0]/g; -var esca = { - "\xA0": " ", - "&": "&", - "<": "<", - ">": ">" -}; -var pe = (m) => esca[m]; -var escape2 = (es) => replace.call(es, ca, pe); - -// node_modules/linkedom/esm/interface/attr.js -var QUOTE = /"/g; -var Attr = class _Attr extends Node2 { - constructor(ownerDocument, name, value = "") { - super(ownerDocument, name, ATTRIBUTE_NODE); - this.ownerElement = null; - this.name = $String(name); - this[VALUE] = $String(value); - this[CHANGED] = false; - } - get value() { - return this[VALUE]; - } - set value(newValue) { - const { [VALUE]: oldValue, name, ownerElement } = this; - this[VALUE] = $String(newValue); - this[CHANGED] = true; - if (ownerElement) { - attributeChangedCallback2(ownerElement, name, oldValue); - attributeChangedCallback(ownerElement, name, oldValue, this[VALUE]); - } - } - cloneNode() { - const { ownerDocument, name, [VALUE]: value } = this; - return new _Attr(ownerDocument, name, value); - } - toString() { - const { name, [VALUE]: value } = this; - if (emptyAttributes.has(name) && !value) { - return ignoreCase(this) ? name : `${name}=""`; - } - const escapedValue = (ignoreCase(this) ? value : escape2(value)).replace(QUOTE, """); - return `${name}="${escapedValue}"`; - } - toJSON() { - const json = []; - attrAsJSON(this, json); - return json; - } -}; - -// node_modules/linkedom/esm/shared/node.js -var isConnected = ({ ownerDocument, parentNode }) => { - while (parentNode) { - if (parentNode === ownerDocument) - return true; - parentNode = parentNode.parentNode || parentNode.host; - } - return false; -}; -var parentElement = ({ parentNode }) => { - if (parentNode) { - switch (parentNode.nodeType) { - case DOCUMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: - return null; - } - } - return parentNode; -}; -var previousSibling = ({ [PREV]: prev }) => { - switch (prev ? prev.nodeType : 0) { - case NODE_END: - return prev[START]; - case TEXT_NODE: - case COMMENT_NODE: - case CDATA_SECTION_NODE: - return prev; - } - return null; -}; -var nextSibling = (node) => { - const next = getEnd(node)[NEXT]; - return next && (next.nodeType === NODE_END ? null : next); -}; - -// node_modules/linkedom/esm/mixin/non-document-type-child-node.js -var nextElementSibling2 = (node) => { - let next = nextSibling(node); - while (next && next.nodeType !== ELEMENT_NODE) - next = nextSibling(next); - return next; -}; -var previousElementSibling = (node) => { - let prev = previousSibling(node); - while (prev && prev.nodeType !== ELEMENT_NODE) - prev = previousSibling(prev); - return prev; -}; - -// node_modules/linkedom/esm/mixin/child-node.js -var asFragment = (ownerDocument, nodes) => { - const fragment = ownerDocument.createDocumentFragment(); - fragment.append(...nodes); - return fragment; -}; -var before = (node, nodes) => { - const { ownerDocument, parentNode } = node; - if (parentNode) - parentNode.insertBefore( - asFragment(ownerDocument, nodes), - node - ); -}; -var after = (node, nodes) => { - const { ownerDocument, parentNode } = node; - if (parentNode) - parentNode.insertBefore( - asFragment(ownerDocument, nodes), - getEnd(node)[NEXT] - ); -}; -var replaceWith = (node, nodes) => { - const { ownerDocument, parentNode } = node; - if (parentNode) { - if (nodes.includes(node)) - replaceWith(node, [node = node.cloneNode()]); - parentNode.insertBefore( - asFragment(ownerDocument, nodes), - node - ); - node.remove(); - } -}; -var remove = (prev, current, next) => { - const { parentNode, nodeType } = current; - if (prev || next) { - setAdjacent(prev, next); - current[PREV] = null; - getEnd(current)[NEXT] = null; - } - if (parentNode) { - current.parentNode = null; - moCallback(current, parentNode); - if (nodeType === ELEMENT_NODE) - disconnectedCallback(current); - } -}; - -// node_modules/linkedom/esm/interface/character-data.js -var CharacterData = class extends Node2 { - constructor(ownerDocument, localName, nodeType, data) { - super(ownerDocument, localName, nodeType); - this[VALUE] = $String(data); - } - // <Mixins> - get isConnected() { - return isConnected(this); - } - get parentElement() { - return parentElement(this); - } - get previousSibling() { - return previousSibling(this); - } - get nextSibling() { - return nextSibling(this); - } - get previousElementSibling() { - return previousElementSibling(this); - } - get nextElementSibling() { - return nextElementSibling2(this); - } - before(...nodes) { - before(this, nodes); - } - after(...nodes) { - after(this, nodes); - } - replaceWith(...nodes) { - replaceWith(this, nodes); - } - remove() { - remove(this[PREV], this, this[NEXT]); - } - // </Mixins> - // CharacterData only - /* c8 ignore start */ - get data() { - return this[VALUE]; - } - set data(value) { - this[VALUE] = $String(value); - moCallback(this, this.parentNode); - } - get nodeValue() { - return this.data; - } - set nodeValue(value) { - this.data = value; - } - get textContent() { - return this.data; - } - set textContent(value) { - this.data = value; - } - get length() { - return this.data.length; - } - substringData(offset, count) { - return this.data.substr(offset, count); - } - appendData(data) { - this.data += data; - } - insertData(offset, data) { - const { data: t } = this; - this.data = t.slice(0, offset) + data + t.slice(offset); - } - deleteData(offset, count) { - const { data: t } = this; - this.data = t.slice(0, offset) + t.slice(offset + count); - } - replaceData(offset, count, data) { - const { data: t } = this; - this.data = t.slice(0, offset) + data + t.slice(offset + count); - } - /* c8 ignore stop */ - toJSON() { - const json = []; - characterDataAsJSON(this, json); - return json; - } -}; - -// node_modules/linkedom/esm/interface/cdata-section.js -var CDATASection = class _CDATASection extends CharacterData { - constructor(ownerDocument, data = "") { - super(ownerDocument, "#cdatasection", CDATA_SECTION_NODE, data); - } - cloneNode() { - const { ownerDocument, [VALUE]: data } = this; - return new _CDATASection(ownerDocument, data); - } - toString() { - return `<![CDATA[${this[VALUE]}]]>`; - } -}; - -// node_modules/linkedom/esm/interface/comment.js -var Comment3 = class _Comment extends CharacterData { - constructor(ownerDocument, data = "") { - super(ownerDocument, "#comment", COMMENT_NODE, data); - } - cloneNode() { - const { ownerDocument, [VALUE]: data } = this; - return new _Comment(ownerDocument, data); - } - toString() { - return `<!--${this[VALUE]}-->`; - } -}; - -// node_modules/css-select/lib/esm/index.js -var import_boolbase6 = __toESM(require_boolbase(), 1); - -// node_modules/css-what/lib/es/types.js -var SelectorType; -(function(SelectorType2) { - SelectorType2["Attribute"] = "attribute"; - SelectorType2["Pseudo"] = "pseudo"; - SelectorType2["PseudoElement"] = "pseudo-element"; - SelectorType2["Tag"] = "tag"; - SelectorType2["Universal"] = "universal"; - SelectorType2["Adjacent"] = "adjacent"; - SelectorType2["Child"] = "child"; - SelectorType2["Descendant"] = "descendant"; - SelectorType2["Parent"] = "parent"; - SelectorType2["Sibling"] = "sibling"; - SelectorType2["ColumnCombinator"] = "column-combinator"; -})(SelectorType || (SelectorType = {})); -var AttributeAction; -(function(AttributeAction2) { - AttributeAction2["Any"] = "any"; - AttributeAction2["Element"] = "element"; - AttributeAction2["End"] = "end"; - AttributeAction2["Equals"] = "equals"; - AttributeAction2["Exists"] = "exists"; - AttributeAction2["Hyphen"] = "hyphen"; - AttributeAction2["Not"] = "not"; - AttributeAction2["Start"] = "start"; -})(AttributeAction || (AttributeAction = {})); - -// node_modules/css-what/lib/es/parse.js -var reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/; -var reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi; -var actionTypes = /* @__PURE__ */ new Map([ - [126, AttributeAction.Element], - [94, AttributeAction.Start], - [36, AttributeAction.End], - [42, AttributeAction.Any], - [33, AttributeAction.Not], - [124, AttributeAction.Hyphen] -]); -var unpackPseudos = /* @__PURE__ */ new Set([ - "has", - "not", - "matches", - "is", - "where", - "host", - "host-context" -]); -function isTraversal(selector) { - switch (selector.type) { - case SelectorType.Adjacent: - case SelectorType.Child: - case SelectorType.Descendant: - case SelectorType.Parent: - case SelectorType.Sibling: - case SelectorType.ColumnCombinator: - return true; - default: - return false; - } -} -var stripQuotesFromPseudos = /* @__PURE__ */ new Set(["contains", "icontains"]); -function funescape(_, escaped, escapedWhitespace) { - const high = parseInt(escaped, 16) - 65536; - return high !== high || escapedWhitespace ? escaped : high < 0 ? ( - // BMP codepoint - String.fromCharCode(high + 65536) - ) : ( - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320) - ); -} -function unescapeCSS(str) { - return str.replace(reEscape, funescape); -} -function isQuote(c) { - return c === 39 || c === 34; -} -function isWhitespace2(c) { - return c === 32 || c === 9 || c === 10 || c === 12 || c === 13; -} -function parse(selector) { - const subselects2 = []; - const endIndex = parseSelector(subselects2, `${selector}`, 0); - if (endIndex < selector.length) { - throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`); - } - return subselects2; -} -function parseSelector(subselects2, selector, selectorIndex) { - let tokens = []; - function getName3(offset) { - const match = selector.slice(selectorIndex + offset).match(reName); - if (!match) { - throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`); - } - const [name] = match; - selectorIndex += offset + name.length; - return unescapeCSS(name); - } - function stripWhitespace(offset) { - selectorIndex += offset; - while (selectorIndex < selector.length && isWhitespace2(selector.charCodeAt(selectorIndex))) { - selectorIndex++; - } - } - function readValueWithParenthesis() { - selectorIndex += 1; - const start = selectorIndex; - let counter = 1; - for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) { - if (selector.charCodeAt(selectorIndex) === 40 && !isEscaped(selectorIndex)) { - counter++; - } else if (selector.charCodeAt(selectorIndex) === 41 && !isEscaped(selectorIndex)) { - counter--; - } - } - if (counter) { - throw new Error("Parenthesis not matched"); - } - return unescapeCSS(selector.slice(start, selectorIndex - 1)); - } - function isEscaped(pos) { - let slashCount = 0; - while (selector.charCodeAt(--pos) === 92) - slashCount++; - return (slashCount & 1) === 1; - } - function ensureNotTraversal() { - if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) { - throw new Error("Did not expect successive traversals."); - } - } - function addTraversal(type) { - if (tokens.length > 0 && tokens[tokens.length - 1].type === SelectorType.Descendant) { - tokens[tokens.length - 1].type = type; - return; - } - ensureNotTraversal(); - tokens.push({ type }); - } - function addSpecialAttribute(name, action) { - tokens.push({ - type: SelectorType.Attribute, - name, - action, - value: getName3(1), - namespace: null, - ignoreCase: "quirks" - }); - } - function finalizeSubselector() { - if (tokens.length && tokens[tokens.length - 1].type === SelectorType.Descendant) { - tokens.pop(); - } - if (tokens.length === 0) { - throw new Error("Empty sub-selector"); - } - subselects2.push(tokens); - } - stripWhitespace(0); - if (selector.length === selectorIndex) { - return selectorIndex; - } - loop: while (selectorIndex < selector.length) { - const firstChar = selector.charCodeAt(selectorIndex); - switch (firstChar) { - // Whitespace - case 32: - case 9: - case 10: - case 12: - case 13: { - if (tokens.length === 0 || tokens[0].type !== SelectorType.Descendant) { - ensureNotTraversal(); - tokens.push({ type: SelectorType.Descendant }); - } - stripWhitespace(1); - break; - } - // Traversals - case 62: { - addTraversal(SelectorType.Child); - stripWhitespace(1); - break; - } - case 60: { - addTraversal(SelectorType.Parent); - stripWhitespace(1); - break; - } - case 126: { - addTraversal(SelectorType.Sibling); - stripWhitespace(1); - break; - } - case 43: { - addTraversal(SelectorType.Adjacent); - stripWhitespace(1); - break; - } - // Special attribute selectors: .class, #id - case 46: { - addSpecialAttribute("class", AttributeAction.Element); - break; - } - case 35: { - addSpecialAttribute("id", AttributeAction.Equals); - break; - } - case 91: { - stripWhitespace(1); - let name; - let namespace = null; - if (selector.charCodeAt(selectorIndex) === 124) { - name = getName3(1); - } else if (selector.startsWith("*|", selectorIndex)) { - namespace = "*"; - name = getName3(2); - } else { - name = getName3(0); - if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 61) { - namespace = name; - name = getName3(1); - } - } - stripWhitespace(0); - let action = AttributeAction.Exists; - const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex)); - if (possibleAction) { - action = possibleAction; - if (selector.charCodeAt(selectorIndex + 1) !== 61) { - throw new Error("Expected `=`"); - } - stripWhitespace(2); - } else if (selector.charCodeAt(selectorIndex) === 61) { - action = AttributeAction.Equals; - stripWhitespace(1); - } - let value = ""; - let ignoreCase2 = null; - if (action !== "exists") { - if (isQuote(selector.charCodeAt(selectorIndex))) { - const quote = selector.charCodeAt(selectorIndex); - let sectionEnd = selectorIndex + 1; - while (sectionEnd < selector.length && (selector.charCodeAt(sectionEnd) !== quote || isEscaped(sectionEnd))) { - sectionEnd += 1; - } - if (selector.charCodeAt(sectionEnd) !== quote) { - throw new Error("Attribute value didn't end"); - } - value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd)); - selectorIndex = sectionEnd + 1; - } else { - const valueStart = selectorIndex; - while (selectorIndex < selector.length && (!isWhitespace2(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== 93 || isEscaped(selectorIndex))) { - selectorIndex += 1; - } - value = unescapeCSS(selector.slice(valueStart, selectorIndex)); - } - stripWhitespace(0); - const forceIgnore = selector.charCodeAt(selectorIndex) | 32; - if (forceIgnore === 115) { - ignoreCase2 = false; - stripWhitespace(1); - } else if (forceIgnore === 105) { - ignoreCase2 = true; - stripWhitespace(1); - } - } - if (selector.charCodeAt(selectorIndex) !== 93) { - throw new Error("Attribute selector didn't terminate"); - } - selectorIndex += 1; - const attributeSelector = { - type: SelectorType.Attribute, - name, - action, - value, - namespace, - ignoreCase: ignoreCase2 - }; - tokens.push(attributeSelector); - break; - } - case 58: { - if (selector.charCodeAt(selectorIndex + 1) === 58) { - tokens.push({ - type: SelectorType.PseudoElement, - name: getName3(2).toLowerCase(), - data: selector.charCodeAt(selectorIndex) === 40 ? readValueWithParenthesis() : null - }); - continue; - } - const name = getName3(1).toLowerCase(); - let data = null; - if (selector.charCodeAt(selectorIndex) === 40) { - if (unpackPseudos.has(name)) { - if (isQuote(selector.charCodeAt(selectorIndex + 1))) { - throw new Error(`Pseudo-selector ${name} cannot be quoted`); - } - data = []; - selectorIndex = parseSelector(data, selector, selectorIndex + 1); - if (selector.charCodeAt(selectorIndex) !== 41) { - throw new Error(`Missing closing parenthesis in :${name} (${selector})`); - } - selectorIndex += 1; - } else { - data = readValueWithParenthesis(); - if (stripQuotesFromPseudos.has(name)) { - const quot = data.charCodeAt(0); - if (quot === data.charCodeAt(data.length - 1) && isQuote(quot)) { - data = data.slice(1, -1); - } - } - data = unescapeCSS(data); - } - } - tokens.push({ type: SelectorType.Pseudo, name, data }); - break; - } - case 44: { - finalizeSubselector(); - tokens = []; - stripWhitespace(1); - break; - } - default: { - if (selector.startsWith("/*", selectorIndex)) { - const endIndex = selector.indexOf("*/", selectorIndex + 2); - if (endIndex < 0) { - throw new Error("Comment was not terminated"); - } - selectorIndex = endIndex + 2; - if (tokens.length === 0) { - stripWhitespace(0); - } - break; - } - let namespace = null; - let name; - if (firstChar === 42) { - selectorIndex += 1; - name = "*"; - } else if (firstChar === 124) { - name = ""; - if (selector.charCodeAt(selectorIndex + 1) === 124) { - addTraversal(SelectorType.ColumnCombinator); - stripWhitespace(2); - break; - } - } else if (reName.test(selector.slice(selectorIndex))) { - name = getName3(0); - } else { - break loop; - } - if (selector.charCodeAt(selectorIndex) === 124 && selector.charCodeAt(selectorIndex + 1) !== 124) { - namespace = name; - if (selector.charCodeAt(selectorIndex + 1) === 42) { - name = "*"; - selectorIndex += 2; - } else { - name = getName3(1); - } - } - tokens.push(name === "*" ? { type: SelectorType.Universal, namespace } : { type: SelectorType.Tag, name, namespace }); - } - } - } - finalizeSubselector(); - return selectorIndex; -} - -// node_modules/css-select/lib/esm/compile.js -var import_boolbase5 = __toESM(require_boolbase(), 1); - -// node_modules/css-select/lib/esm/sort.js -var procedure = /* @__PURE__ */ new Map([ - [SelectorType.Universal, 50], - [SelectorType.Tag, 30], - [SelectorType.Attribute, 1], - [SelectorType.Pseudo, 0] -]); -function isTraversal2(token) { - return !procedure.has(token.type); -} -var attributes = /* @__PURE__ */ new Map([ - [AttributeAction.Exists, 10], - [AttributeAction.Equals, 8], - [AttributeAction.Not, 7], - [AttributeAction.Start, 6], - [AttributeAction.End, 6], - [AttributeAction.Any, 5] -]); -function sortByProcedure(arr) { - const procs = arr.map(getProcedure); - for (let i = 1; i < arr.length; i++) { - const procNew = procs[i]; - if (procNew < 0) - continue; - for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) { - const token = arr[j + 1]; - arr[j + 1] = arr[j]; - arr[j] = token; - procs[j + 1] = procs[j]; - procs[j] = procNew; - } - } -} -function getProcedure(token) { - var _a3, _b; - let proc = (_a3 = procedure.get(token.type)) !== null && _a3 !== void 0 ? _a3 : -1; - if (token.type === SelectorType.Attribute) { - proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4; - if (token.action === AttributeAction.Equals && token.name === "id") { - proc = 9; - } - if (token.ignoreCase) { - proc >>= 1; - } - } else if (token.type === SelectorType.Pseudo) { - if (!token.data) { - proc = 3; - } else if (token.name === "has" || token.name === "contains") { - proc = 0; - } else if (Array.isArray(token.data)) { - proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure)))); - if (proc < 0) { - proc = 0; - } - } else { - proc = 2; - } - } - return proc; -} - -// node_modules/css-select/lib/esm/attributes.js -var import_boolbase = __toESM(require_boolbase(), 1); -var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g; -function escapeRegex(value) { - return value.replace(reChars, "\\$&"); -} -var caseInsensitiveAttributes = /* @__PURE__ */ new Set([ - "accept", - "accept-charset", - "align", - "alink", - "axis", - "bgcolor", - "charset", - "checked", - "clear", - "codetype", - "color", - "compact", - "declare", - "defer", - "dir", - "direction", - "disabled", - "enctype", - "face", - "frame", - "hreflang", - "http-equiv", - "lang", - "language", - "link", - "media", - "method", - "multiple", - "nohref", - "noresize", - "noshade", - "nowrap", - "readonly", - "rel", - "rev", - "rules", - "scope", - "scrolling", - "selected", - "shape", - "target", - "text", - "type", - "valign", - "valuetype", - "vlink" -]); -function shouldIgnoreCase(selector, options) { - return typeof selector.ignoreCase === "boolean" ? selector.ignoreCase : selector.ignoreCase === "quirks" ? !!options.quirksMode : !options.xmlMode && caseInsensitiveAttributes.has(selector.name); -} -var attributeRules = { - equals(next, data, options) { - const { adapter: adapter2 } = options; - const { name } = data; - let { value } = data; - if (shouldIgnoreCase(data, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr = adapter2.getAttributeValue(elem, name); - return attr != null && attr.length === value.length && attr.toLowerCase() === value && next(elem); - }; - } - return (elem) => adapter2.getAttributeValue(elem, name) === value && next(elem); - }, - hyphen(next, data, options) { - const { adapter: adapter2 } = options; - const { name } = data; - let { value } = data; - const len = value.length; - if (shouldIgnoreCase(data, options)) { - value = value.toLowerCase(); - return function hyphenIC(elem) { - const attr = adapter2.getAttributeValue(elem, name); - return attr != null && (attr.length === len || attr.charAt(len) === "-") && attr.substr(0, len).toLowerCase() === value && next(elem); - }; - } - return function hyphen(elem) { - const attr = adapter2.getAttributeValue(elem, name); - return attr != null && (attr.length === len || attr.charAt(len) === "-") && attr.substr(0, len) === value && next(elem); - }; - }, - element(next, data, options) { - const { adapter: adapter2 } = options; - const { name, value } = data; - if (/\s/.test(value)) { - return import_boolbase.default.falseFunc; - } - const regex = new RegExp(`(?:^|\\s)${escapeRegex(value)}(?:$|\\s)`, shouldIgnoreCase(data, options) ? "i" : ""); - return function element(elem) { - const attr = adapter2.getAttributeValue(elem, name); - return attr != null && attr.length >= value.length && regex.test(attr) && next(elem); - }; - }, - exists(next, { name }, { adapter: adapter2 }) { - return (elem) => adapter2.hasAttrib(elem, name) && next(elem); - }, - start(next, data, options) { - const { adapter: adapter2 } = options; - const { name } = data; - let { value } = data; - const len = value.length; - if (len === 0) { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr = adapter2.getAttributeValue(elem, name); - return attr != null && attr.length >= len && attr.substr(0, len).toLowerCase() === value && next(elem); - }; - } - return (elem) => { - var _a3; - return !!((_a3 = adapter2.getAttributeValue(elem, name)) === null || _a3 === void 0 ? void 0 : _a3.startsWith(value)) && next(elem); - }; - }, - end(next, data, options) { - const { adapter: adapter2 } = options; - const { name } = data; - let { value } = data; - const len = -value.length; - if (len === 0) { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data, options)) { - value = value.toLowerCase(); - return (elem) => { - var _a3; - return ((_a3 = adapter2.getAttributeValue(elem, name)) === null || _a3 === void 0 ? void 0 : _a3.substr(len).toLowerCase()) === value && next(elem); - }; - } - return (elem) => { - var _a3; - return !!((_a3 = adapter2.getAttributeValue(elem, name)) === null || _a3 === void 0 ? void 0 : _a3.endsWith(value)) && next(elem); - }; - }, - any(next, data, options) { - const { adapter: adapter2 } = options; - const { name, value } = data; - if (value === "") { - return import_boolbase.default.falseFunc; - } - if (shouldIgnoreCase(data, options)) { - const regex = new RegExp(escapeRegex(value), "i"); - return function anyIC(elem) { - const attr = adapter2.getAttributeValue(elem, name); - return attr != null && attr.length >= value.length && regex.test(attr) && next(elem); - }; - } - return (elem) => { - var _a3; - return !!((_a3 = adapter2.getAttributeValue(elem, name)) === null || _a3 === void 0 ? void 0 : _a3.includes(value)) && next(elem); - }; - }, - not(next, data, options) { - const { adapter: adapter2 } = options; - const { name } = data; - let { value } = data; - if (value === "") { - return (elem) => !!adapter2.getAttributeValue(elem, name) && next(elem); - } else if (shouldIgnoreCase(data, options)) { - value = value.toLowerCase(); - return (elem) => { - const attr = adapter2.getAttributeValue(elem, name); - return (attr == null || attr.length !== value.length || attr.toLowerCase() !== value) && next(elem); - }; - } - return (elem) => adapter2.getAttributeValue(elem, name) !== value && next(elem); - } -}; - -// node_modules/nth-check/lib/esm/parse.js -var whitespace = /* @__PURE__ */ new Set([9, 10, 12, 13, 32]); -var ZERO = "0".charCodeAt(0); -var NINE = "9".charCodeAt(0); -function parse2(formula) { - formula = formula.trim().toLowerCase(); - if (formula === "even") { - return [2, 0]; - } else if (formula === "odd") { - return [2, 1]; - } - let idx = 0; - let a = 0; - let sign = readSign(); - let number = readNumber(); - if (idx < formula.length && formula.charAt(idx) === "n") { - idx++; - a = sign * (number !== null && number !== void 0 ? number : 1); - skipWhitespace(); - if (idx < formula.length) { - sign = readSign(); - skipWhitespace(); - number = readNumber(); - } else { - sign = number = 0; - } - } - if (number === null || idx < formula.length) { - throw new Error(`n-th rule couldn't be parsed ('${formula}')`); - } - return [a, sign * number]; - function readSign() { - if (formula.charAt(idx) === "-") { - idx++; - return -1; - } - if (formula.charAt(idx) === "+") { - idx++; - } - return 1; - } - function readNumber() { - const start = idx; - let value = 0; - while (idx < formula.length && formula.charCodeAt(idx) >= ZERO && formula.charCodeAt(idx) <= NINE) { - value = value * 10 + (formula.charCodeAt(idx) - ZERO); - idx++; - } - return idx === start ? null : value; - } - function skipWhitespace() { - while (idx < formula.length && whitespace.has(formula.charCodeAt(idx))) { - idx++; - } - } -} - -// node_modules/nth-check/lib/esm/compile.js -var import_boolbase2 = __toESM(require_boolbase(), 1); -function compile(parsed) { - const a = parsed[0]; - const b = parsed[1] - 1; - if (b < 0 && a <= 0) - return import_boolbase2.default.falseFunc; - if (a === -1) - return (index) => index <= b; - if (a === 0) - return (index) => index === b; - if (a === 1) - return b < 0 ? import_boolbase2.default.trueFunc : (index) => index >= b; - const absA = Math.abs(a); - const bMod = (b % absA + absA) % absA; - return a > 1 ? (index) => index >= b && index % absA === bMod : (index) => index <= b && index % absA === bMod; -} - -// node_modules/nth-check/lib/esm/index.js -function nthCheck(formula) { - return compile(parse2(formula)); -} - -// node_modules/css-select/lib/esm/pseudo-selectors/filters.js -var import_boolbase3 = __toESM(require_boolbase(), 1); -function getChildFunc(next, adapter2) { - return (elem) => { - const parent = adapter2.getParent(elem); - return parent != null && adapter2.isTag(parent) && next(elem); - }; -} -var filters = { - contains(next, text, { adapter: adapter2 }) { - return function contains(elem) { - return next(elem) && adapter2.getText(elem).includes(text); - }; - }, - icontains(next, text, { adapter: adapter2 }) { - const itext = text.toLowerCase(); - return function icontains(elem) { - return next(elem) && adapter2.getText(elem).toLowerCase().includes(itext); - }; - }, - // Location specific methods - "nth-child"(next, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next, adapter2); - return function nthChild(elem) { - const siblings = adapter2.getSiblings(elem); - let pos = 0; - for (let i = 0; i < siblings.length; i++) { - if (equals(elem, siblings[i])) - break; - if (adapter2.isTag(siblings[i])) { - pos++; - } - } - return func(pos) && next(elem); - }; - }, - "nth-last-child"(next, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next, adapter2); - return function nthLastChild(elem) { - const siblings = adapter2.getSiblings(elem); - let pos = 0; - for (let i = siblings.length - 1; i >= 0; i--) { - if (equals(elem, siblings[i])) - break; - if (adapter2.isTag(siblings[i])) { - pos++; - } - } - return func(pos) && next(elem); - }; - }, - "nth-of-type"(next, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next, adapter2); - return function nthOfType(elem) { - const siblings = adapter2.getSiblings(elem); - let pos = 0; - for (let i = 0; i < siblings.length; i++) { - const currentSibling = siblings[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === adapter2.getName(elem)) { - pos++; - } - } - return func(pos) && next(elem); - }; - }, - "nth-last-of-type"(next, rule, { adapter: adapter2, equals }) { - const func = nthCheck(rule); - if (func === import_boolbase3.default.falseFunc) - return import_boolbase3.default.falseFunc; - if (func === import_boolbase3.default.trueFunc) - return getChildFunc(next, adapter2); - return function nthLastOfType(elem) { - const siblings = adapter2.getSiblings(elem); - let pos = 0; - for (let i = siblings.length - 1; i >= 0; i--) { - const currentSibling = siblings[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === adapter2.getName(elem)) { - pos++; - } - } - return func(pos) && next(elem); - }; - }, - // TODO determine the actual root element - root(next, _rule, { adapter: adapter2 }) { - return (elem) => { - const parent = adapter2.getParent(elem); - return (parent == null || !adapter2.isTag(parent)) && next(elem); - }; - }, - scope(next, rule, options, context) { - const { equals } = options; - if (!context || context.length === 0) { - return filters["root"](next, rule, options); - } - if (context.length === 1) { - return (elem) => equals(context[0], elem) && next(elem); - } - return (elem) => context.includes(elem) && next(elem); - }, - hover: dynamicStatePseudo("isHovered"), - visited: dynamicStatePseudo("isVisited"), - active: dynamicStatePseudo("isActive") -}; -function dynamicStatePseudo(name) { - return function dynamicPseudo(next, _rule, { adapter: adapter2 }) { - const func = adapter2[name]; - if (typeof func !== "function") { - return import_boolbase3.default.falseFunc; - } - return function active(elem) { - return func(elem) && next(elem); - }; - }; -} - -// node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js -var pseudos = { - empty(elem, { adapter: adapter2 }) { - return !adapter2.getChildren(elem).some((elem2) => ( - // FIXME: `getText` call is potentially expensive. - adapter2.isTag(elem2) || adapter2.getText(elem2) !== "" - )); - }, - "first-child"(elem, { adapter: adapter2, equals }) { - if (adapter2.prevElementSibling) { - return adapter2.prevElementSibling(elem) == null; - } - const firstChild = adapter2.getSiblings(elem).find((elem2) => adapter2.isTag(elem2)); - return firstChild != null && equals(elem, firstChild); - }, - "last-child"(elem, { adapter: adapter2, equals }) { - const siblings = adapter2.getSiblings(elem); - for (let i = siblings.length - 1; i >= 0; i--) { - if (equals(elem, siblings[i])) - return true; - if (adapter2.isTag(siblings[i])) - break; - } - return false; - }, - "first-of-type"(elem, { adapter: adapter2, equals }) { - const siblings = adapter2.getSiblings(elem); - const elemName = adapter2.getName(elem); - for (let i = 0; i < siblings.length; i++) { - const currentSibling = siblings[i]; - if (equals(elem, currentSibling)) - return true; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === elemName) { - break; - } - } - return false; - }, - "last-of-type"(elem, { adapter: adapter2, equals }) { - const siblings = adapter2.getSiblings(elem); - const elemName = adapter2.getName(elem); - for (let i = siblings.length - 1; i >= 0; i--) { - const currentSibling = siblings[i]; - if (equals(elem, currentSibling)) - return true; - if (adapter2.isTag(currentSibling) && adapter2.getName(currentSibling) === elemName) { - break; - } - } - return false; - }, - "only-of-type"(elem, { adapter: adapter2, equals }) { - const elemName = adapter2.getName(elem); - return adapter2.getSiblings(elem).every((sibling) => equals(elem, sibling) || !adapter2.isTag(sibling) || adapter2.getName(sibling) !== elemName); - }, - "only-child"(elem, { adapter: adapter2, equals }) { - return adapter2.getSiblings(elem).every((sibling) => equals(elem, sibling) || !adapter2.isTag(sibling)); - } -}; -function verifyPseudoArgs(func, name, subselect, argIndex) { - if (subselect === null) { - if (func.length > argIndex) { - throw new Error(`Pseudo-class :${name} requires an argument`); - } - } else if (func.length === argIndex) { - throw new Error(`Pseudo-class :${name} doesn't have any arguments`); - } -} - -// node_modules/css-select/lib/esm/pseudo-selectors/aliases.js -var aliases = { - // Links - "any-link": ":is(a, area, link)[href]", - link: ":any-link:not(:visited)", - // Forms - // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements - disabled: `:is( - :is(button, input, select, textarea, optgroup, option)[disabled], - optgroup[disabled] > option, - fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *) - )`, - enabled: ":not(:disabled)", - checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)", - required: ":is(input, select, textarea)[required]", - optional: ":is(input, select, textarea):not([required])", - // JQuery extensions - // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness - selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", - checkbox: "[type=checkbox]", - file: "[type=file]", - password: "[type=password]", - radio: "[type=radio]", - reset: "[type=reset]", - image: "[type=image]", - submit: "[type=submit]", - parent: ":not(:empty)", - header: ":is(h1, h2, h3, h4, h5, h6)", - button: ":is(button, input[type=button])", - input: ":is(input, textarea, select, button)", - text: "input:is(:not([type!='']), [type=text])" -}; - -// node_modules/css-select/lib/esm/pseudo-selectors/subselects.js -var import_boolbase4 = __toESM(require_boolbase(), 1); -var PLACEHOLDER_ELEMENT = {}; -function ensureIsTag(next, adapter2) { - if (next === import_boolbase4.default.falseFunc) - return import_boolbase4.default.falseFunc; - return (elem) => adapter2.isTag(elem) && next(elem); -} -function getNextSiblings(elem, adapter2) { - const siblings = adapter2.getSiblings(elem); - if (siblings.length <= 1) - return []; - const elemIndex = siblings.indexOf(elem); - if (elemIndex < 0 || elemIndex === siblings.length - 1) - return []; - return siblings.slice(elemIndex + 1).filter(adapter2.isTag); -} -function copyOptions(options) { - return { - xmlMode: !!options.xmlMode, - lowerCaseAttributeNames: !!options.lowerCaseAttributeNames, - lowerCaseTags: !!options.lowerCaseTags, - quirksMode: !!options.quirksMode, - cacheResults: !!options.cacheResults, - pseudos: options.pseudos, - adapter: options.adapter, - equals: options.equals - }; -} -var is = (next, token, options, context, compileToken2) => { - const func = compileToken2(token, copyOptions(options), context); - return func === import_boolbase4.default.trueFunc ? next : func === import_boolbase4.default.falseFunc ? import_boolbase4.default.falseFunc : (elem) => func(elem) && next(elem); -}; -var subselects = { - is, - /** - * `:matches` and `:where` are aliases for `:is`. - */ - matches: is, - where: is, - not(next, token, options, context, compileToken2) { - const func = compileToken2(token, copyOptions(options), context); - return func === import_boolbase4.default.falseFunc ? next : func === import_boolbase4.default.trueFunc ? import_boolbase4.default.falseFunc : (elem) => !func(elem) && next(elem); - }, - has(next, subselect, options, _context, compileToken2) { - const { adapter: adapter2 } = options; - const opts = copyOptions(options); - opts.relativeSelector = true; - const context = subselect.some((s) => s.some(isTraversal2)) ? ( - // Used as a placeholder. Will be replaced with the actual element. - [PLACEHOLDER_ELEMENT] - ) : void 0; - const compiled = compileToken2(subselect, opts, context); - if (compiled === import_boolbase4.default.falseFunc) - return import_boolbase4.default.falseFunc; - const hasElement = ensureIsTag(compiled, adapter2); - if (context && compiled !== import_boolbase4.default.trueFunc) { - const { shouldTestNextSiblings = false } = compiled; - return (elem) => { - if (!next(elem)) - return false; - context[0] = elem; - const childs = adapter2.getChildren(elem); - const nextElements = shouldTestNextSiblings ? [...childs, ...getNextSiblings(elem, adapter2)] : childs; - return adapter2.existsOne(hasElement, nextElements); - }; - } - return (elem) => next(elem) && adapter2.existsOne(hasElement, adapter2.getChildren(elem)); - } -}; - -// node_modules/css-select/lib/esm/pseudo-selectors/index.js -function compilePseudoSelector(next, selector, options, context, compileToken2) { - var _a3; - const { name, data } = selector; - if (Array.isArray(data)) { - if (!(name in subselects)) { - throw new Error(`Unknown pseudo-class :${name}(${data})`); - } - return subselects[name](next, data, options, context, compileToken2); - } - const userPseudo = (_a3 = options.pseudos) === null || _a3 === void 0 ? void 0 : _a3[name]; - const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name]; - if (typeof stringPseudo === "string") { - if (data != null) { - throw new Error(`Pseudo ${name} doesn't have any arguments`); - } - const alias = parse(stringPseudo); - return subselects["is"](next, alias, options, context, compileToken2); - } - if (typeof userPseudo === "function") { - verifyPseudoArgs(userPseudo, name, data, 1); - return (elem) => userPseudo(elem, data) && next(elem); - } - if (name in filters) { - return filters[name](next, data, options, context); - } - if (name in pseudos) { - const pseudo = pseudos[name]; - verifyPseudoArgs(pseudo, name, data, 2); - return (elem) => pseudo(elem, options, data) && next(elem); - } - throw new Error(`Unknown pseudo-class :${name}`); -} - -// node_modules/css-select/lib/esm/general.js -function getElementParent(node, adapter2) { - const parent = adapter2.getParent(node); - if (parent && adapter2.isTag(parent)) { - return parent; - } - return null; -} -function compileGeneralSelector(next, selector, options, context, compileToken2) { - const { adapter: adapter2, equals } = options; - switch (selector.type) { - case SelectorType.PseudoElement: { - throw new Error("Pseudo-elements are not supported by css-select"); - } - case SelectorType.ColumnCombinator: { - throw new Error("Column combinators are not yet supported by css-select"); - } - case SelectorType.Attribute: { - if (selector.namespace != null) { - throw new Error("Namespaced attributes are not yet supported by css-select"); - } - if (!options.xmlMode || options.lowerCaseAttributeNames) { - selector.name = selector.name.toLowerCase(); - } - return attributeRules[selector.action](next, selector, options); - } - case SelectorType.Pseudo: { - return compilePseudoSelector(next, selector, options, context, compileToken2); - } - // Tags - case SelectorType.Tag: { - if (selector.namespace != null) { - throw new Error("Namespaced tag names are not yet supported by css-select"); - } - let { name } = selector; - if (!options.xmlMode || options.lowerCaseTags) { - name = name.toLowerCase(); - } - return function tag(elem) { - return adapter2.getName(elem) === name && next(elem); - }; - } - // Traversal - case SelectorType.Descendant: { - if (options.cacheResults === false || typeof WeakSet === "undefined") { - return function descendant(elem) { - let current = elem; - while (current = getElementParent(current, adapter2)) { - if (next(current)) { - return true; - } - } - return false; - }; - } - const isFalseCache = /* @__PURE__ */ new WeakSet(); - return function cachedDescendant(elem) { - let current = elem; - while (current = getElementParent(current, adapter2)) { - if (!isFalseCache.has(current)) { - if (adapter2.isTag(current) && next(current)) { - return true; - } - isFalseCache.add(current); - } - } - return false; - }; - } - case "_flexibleDescendant": { - return function flexibleDescendant(elem) { - let current = elem; - do { - if (next(current)) - return true; - } while (current = getElementParent(current, adapter2)); - return false; - }; - } - case SelectorType.Parent: { - return function parent(elem) { - return adapter2.getChildren(elem).some((elem2) => adapter2.isTag(elem2) && next(elem2)); - }; - } - case SelectorType.Child: { - return function child(elem) { - const parent = adapter2.getParent(elem); - return parent != null && adapter2.isTag(parent) && next(parent); - }; - } - case SelectorType.Sibling: { - return function sibling(elem) { - const siblings = adapter2.getSiblings(elem); - for (let i = 0; i < siblings.length; i++) { - const currentSibling = siblings[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling) && next(currentSibling)) { - return true; - } - } - return false; - }; - } - case SelectorType.Adjacent: { - if (adapter2.prevElementSibling) { - return function adjacent(elem) { - const previous = adapter2.prevElementSibling(elem); - return previous != null && next(previous); - }; - } - return function adjacent(elem) { - const siblings = adapter2.getSiblings(elem); - let lastElement; - for (let i = 0; i < siblings.length; i++) { - const currentSibling = siblings[i]; - if (equals(elem, currentSibling)) - break; - if (adapter2.isTag(currentSibling)) { - lastElement = currentSibling; - } - } - return !!lastElement && next(lastElement); - }; - } - case SelectorType.Universal: { - if (selector.namespace != null && selector.namespace !== "*") { - throw new Error("Namespaced universal selectors are not yet supported by css-select"); - } - return next; - } - } -} - -// node_modules/css-select/lib/esm/compile.js -function compile2(selector, options, context) { - const next = compileUnsafe(selector, options, context); - return ensureIsTag(next, options.adapter); -} -function compileUnsafe(selector, options, context) { - const token = typeof selector === "string" ? parse(selector) : selector; - return compileToken(token, options, context); -} -function includesScopePseudo(t) { - return t.type === SelectorType.Pseudo && (t.name === "scope" || Array.isArray(t.data) && t.data.some((data) => data.some(includesScopePseudo))); -} -var DESCENDANT_TOKEN = { type: SelectorType.Descendant }; -var FLEXIBLE_DESCENDANT_TOKEN = { - type: "_flexibleDescendant" -}; -var SCOPE_TOKEN = { - type: SelectorType.Pseudo, - name: "scope", - data: null -}; -function absolutize(token, { adapter: adapter2 }, context) { - const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => { - const parent = adapter2.isTag(e) && adapter2.getParent(e); - return e === PLACEHOLDER_ELEMENT || parent && adapter2.isTag(parent); - })); - for (const t of token) { - if (t.length > 0 && isTraversal2(t[0]) && t[0].type !== SelectorType.Descendant) { - } else if (hasContext && !t.some(includesScopePseudo)) { - t.unshift(DESCENDANT_TOKEN); - } else { - continue; - } - t.unshift(SCOPE_TOKEN); - } -} -function compileToken(token, options, context) { - var _a3; - token.forEach(sortByProcedure); - context = (_a3 = options.context) !== null && _a3 !== void 0 ? _a3 : context; - const isArrayContext = Array.isArray(context); - const finalContext = context && (Array.isArray(context) ? context : [context]); - if (options.relativeSelector !== false) { - absolutize(token, options, finalContext); - } else if (token.some((t) => t.length > 0 && isTraversal2(t[0]))) { - throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled"); - } - let shouldTestNextSiblings = false; - const query2 = token.map((rules) => { - if (rules.length >= 2) { - const [first, second] = rules; - if (first.type !== SelectorType.Pseudo || first.name !== "scope") { - } else if (isArrayContext && second.type === SelectorType.Descendant) { - rules[1] = FLEXIBLE_DESCENDANT_TOKEN; - } else if (second.type === SelectorType.Adjacent || second.type === SelectorType.Sibling) { - shouldTestNextSiblings = true; - } - } - return compileRules(rules, options, finalContext); - }).reduce(reduceRules, import_boolbase5.default.falseFunc); - query2.shouldTestNextSiblings = shouldTestNextSiblings; - return query2; -} -function compileRules(rules, options, context) { - var _a3; - return rules.reduce((previous, rule) => previous === import_boolbase5.default.falseFunc ? import_boolbase5.default.falseFunc : compileGeneralSelector(previous, rule, options, context, compileToken), (_a3 = options.rootFunc) !== null && _a3 !== void 0 ? _a3 : import_boolbase5.default.trueFunc); -} -function reduceRules(a, b) { - if (b === import_boolbase5.default.falseFunc || a === import_boolbase5.default.trueFunc) { - return a; - } - if (a === import_boolbase5.default.falseFunc || b === import_boolbase5.default.trueFunc) { - return b; - } - return function combine(elem) { - return a(elem) || b(elem); - }; -} - -// node_modules/css-select/lib/esm/index.js -var defaultEquals = (a, b) => a === b; -var defaultOptions = { - adapter: esm_exports2, - equals: defaultEquals -}; -function convertOptionFormats(options) { - var _a3, _b, _c, _d; - const opts = options !== null && options !== void 0 ? options : defaultOptions; - (_a3 = opts.adapter) !== null && _a3 !== void 0 ? _a3 : opts.adapter = esm_exports2; - (_b = opts.equals) !== null && _b !== void 0 ? _b : opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals; - return opts; -} -function wrapCompile(func) { - return function addAdapter(selector, options, context) { - const opts = convertOptionFormats(options); - return func(selector, opts, context); - }; -} -var compile3 = wrapCompile(compile2); -var _compileUnsafe = wrapCompile(compileUnsafe); -var _compileToken = wrapCompile(compileToken); -function getSelectorFunc(searchFunc) { - return function select(query2, elements, options) { - const opts = convertOptionFormats(options); - if (typeof query2 !== "function") { - query2 = compileUnsafe(query2, opts, elements); - } - const filteredElements = prepareContext(elements, opts.adapter, query2.shouldTestNextSiblings); - return searchFunc(query2, filteredElements, opts); - }; -} -function prepareContext(elems, adapter2, shouldTestNextSiblings = false) { - if (shouldTestNextSiblings) { - elems = appendNextSiblings(elems, adapter2); - } - return Array.isArray(elems) ? adapter2.removeSubsets(elems) : adapter2.getChildren(elems); -} -function appendNextSiblings(elem, adapter2) { - const elems = Array.isArray(elem) ? elem.slice(0) : [elem]; - const elemsLength = elems.length; - for (let i = 0; i < elemsLength; i++) { - const nextSiblings = getNextSiblings(elems[i], adapter2); - elems.push(...nextSiblings); - } - return elems; -} -var selectAll = getSelectorFunc((query2, elems, options) => query2 === import_boolbase6.default.falseFunc || !elems || elems.length === 0 ? [] : options.adapter.findAll(query2, elems)); -var selectOne = getSelectorFunc((query2, elems, options) => query2 === import_boolbase6.default.falseFunc || !elems || elems.length === 0 ? null : options.adapter.findOne(query2, elems)); -function is2(elem, query2, options) { - const opts = convertOptionFormats(options); - return (typeof query2 === "function" ? query2 : compile2(query2, opts))(elem); -} - -// node_modules/linkedom/esm/shared/matches.js -var { isArray } = Array; -var isTag3 = ({ nodeType }) => nodeType === ELEMENT_NODE; -var existsOne2 = (test, elements) => elements.some( - (element) => isTag3(element) && (test(element) || existsOne2(test, getChildren2(element))) -); -var getAttributeValue2 = (element, name) => name === "class" ? element.classList.value : element.getAttribute(name); -var getChildren2 = ({ childNodes }) => childNodes; -var getName2 = (element) => { - const { localName } = element; - return ignoreCase(element) ? localName.toLowerCase() : localName; -}; -var getParent2 = ({ parentNode }) => parentNode; -var getSiblings2 = (element) => { - const { parentNode } = element; - return parentNode ? getChildren2(parentNode) : element; -}; -var getText2 = (node) => { - if (isArray(node)) - return node.map(getText2).join(""); - if (isTag3(node)) - return getText2(getChildren2(node)); - if (node.nodeType === TEXT_NODE) - return node.data; - return ""; -}; -var hasAttrib2 = (element, name) => element.hasAttribute(name); -var removeSubsets2 = (nodes) => { - let { length } = nodes; - while (length--) { - const node = nodes[length]; - if (length && -1 < nodes.lastIndexOf(node, length - 1)) { - nodes.splice(length, 1); - continue; - } - for (let { parentNode } = node; parentNode; parentNode = parentNode.parentNode) { - if (nodes.includes(parentNode)) { - nodes.splice(length, 1); - break; - } - } - } - return nodes; -}; -var findAll2 = (test, nodes) => { - const matches2 = []; - for (const node of nodes) { - if (isTag3(node)) { - if (test(node)) - matches2.push(node); - matches2.push(...findAll2(test, getChildren2(node))); - } - } - return matches2; -}; -var findOne2 = (test, nodes) => { - for (let node of nodes) - if (test(node) || (node = findOne2(test, getChildren2(node)))) - return node; - return null; -}; -var adapter = { - isTag: isTag3, - existsOne: existsOne2, - getAttributeValue: getAttributeValue2, - getChildren: getChildren2, - getName: getName2, - getParent: getParent2, - getSiblings: getSiblings2, - getText: getText2, - hasAttrib: hasAttrib2, - removeSubsets: removeSubsets2, - findAll: findAll2, - findOne: findOne2 -}; -var prepareMatch = (element, selectors) => compile3( - selectors, - { - context: selectors.includes(":scope") ? element : void 0, - xmlMode: !ignoreCase(element), - adapter - } -); -var matches = (element, selectors) => is2( - element, - selectors, - { - strict: true, - context: selectors.includes(":scope") ? element : void 0, - xmlMode: !ignoreCase(element), - adapter - } -); - -// node_modules/linkedom/esm/interface/text.js -var Text3 = class _Text extends CharacterData { - constructor(ownerDocument, data = "") { - super(ownerDocument, "#text", TEXT_NODE, data); - } - get wholeText() { - const text = []; - let { previousSibling: previousSibling2, nextSibling: nextSibling2 } = this; - while (previousSibling2) { - if (previousSibling2.nodeType === TEXT_NODE) - text.unshift(previousSibling2[VALUE]); - else - break; - previousSibling2 = previousSibling2.previousSibling; - } - text.push(this[VALUE]); - while (nextSibling2) { - if (nextSibling2.nodeType === TEXT_NODE) - text.push(nextSibling2[VALUE]); - else - break; - nextSibling2 = nextSibling2.nextSibling; - } - return text.join(""); - } - cloneNode() { - const { ownerDocument, [VALUE]: data } = this; - return new _Text(ownerDocument, data); - } - toString() { - return escape2(this[VALUE]); - } -}; - -// node_modules/linkedom/esm/mixin/parent-node.js -var isNode = (node) => node instanceof Node2; -var insert = (parentNode, child, nodes) => { - const { ownerDocument } = parentNode; - for (const node of nodes) - parentNode.insertBefore( - isNode(node) ? node : new Text3(ownerDocument, node), - child - ); -}; -var ParentNode = class extends Node2 { - constructor(ownerDocument, localName, nodeType) { - super(ownerDocument, localName, nodeType); - this[PRIVATE] = null; - this[NEXT] = this[END] = { - [NEXT]: null, - [PREV]: this, - [START]: this, - nodeType: NODE_END, - ownerDocument: this.ownerDocument, - parentNode: null - }; - } - get childNodes() { - const childNodes = new NodeList(); - let { firstChild } = this; - while (firstChild) { - childNodes.push(firstChild); - firstChild = nextSibling(firstChild); - } - return childNodes; - } - get children() { - const children = new NodeList(); - let { firstElementChild } = this; - while (firstElementChild) { - children.push(firstElementChild); - firstElementChild = nextElementSibling2(firstElementChild); - } - return children; - } - /** - * @returns {NodeStruct | null} - */ - get firstChild() { - let { [NEXT]: next, [END]: end } = this; - while (next.nodeType === ATTRIBUTE_NODE) - next = next[NEXT]; - return next === end ? null : next; - } - /** - * @returns {NodeStruct | null} - */ - get firstElementChild() { - let { firstChild } = this; - while (firstChild) { - if (firstChild.nodeType === ELEMENT_NODE) - return firstChild; - firstChild = nextSibling(firstChild); - } - return null; - } - get lastChild() { - const prev = this[END][PREV]; - switch (prev.nodeType) { - case NODE_END: - return prev[START]; - case ATTRIBUTE_NODE: - return null; - } - return prev === this ? null : prev; - } - get lastElementChild() { - let { lastChild } = this; - while (lastChild) { - if (lastChild.nodeType === ELEMENT_NODE) - return lastChild; - lastChild = previousSibling(lastChild); - } - return null; - } - get childElementCount() { - return this.children.length; - } - prepend(...nodes) { - insert(this, this.firstChild, nodes); - } - append(...nodes) { - insert(this, this[END], nodes); - } - replaceChildren(...nodes) { - let { [NEXT]: next, [END]: end } = this; - while (next !== end && next.nodeType === ATTRIBUTE_NODE) - next = next[NEXT]; - while (next !== end) { - const after2 = getEnd(next)[NEXT]; - next.remove(); - next = after2; - } - if (nodes.length) - insert(this, end, nodes); - } - getElementsByClassName(className) { - const elements = new NodeList(); - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE && next.hasAttribute("class") && next.classList.has(className)) - elements.push(next); - next = next[NEXT]; - } - return elements; - } - getElementsByTagName(tagName19) { - const elements = new NodeList(); - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE && (next.localName === tagName19 || localCase(next) === tagName19)) - elements.push(next); - next = next[NEXT]; - } - return elements; - } - querySelector(selectors) { - const matches2 = prepareMatch(this, selectors); - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE && matches2(next)) - return next; - next = next.nodeType === ELEMENT_NODE && next.localName === "template" ? next[END] : next[NEXT]; - } - return null; - } - querySelectorAll(selectors) { - const matches2 = prepareMatch(this, selectors); - const elements = new NodeList(); - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE && matches2(next)) - elements.push(next); - next = next.nodeType === ELEMENT_NODE && next.localName === "template" ? next[END] : next[NEXT]; - } - return elements; - } - appendChild(node) { - return this.insertBefore(node, this[END]); - } - contains(node) { - let parentNode = node; - while (parentNode && parentNode !== this) - parentNode = parentNode.parentNode; - return parentNode === this; - } - insertBefore(node, before2 = null) { - if (node === before2) - return node; - if (node === this) - throw new Error("unable to append a node to itself"); - const next = before2 || this[END]; - switch (node.nodeType) { - case ELEMENT_NODE: - node.remove(); - node.parentNode = this; - knownBoundaries(next[PREV], node, next); - moCallback(node, null); - connectedCallback(node); - break; - case DOCUMENT_FRAGMENT_NODE: { - let { [PRIVATE]: parentNode, firstChild, lastChild } = node; - if (firstChild) { - knownSegment(next[PREV], firstChild, lastChild, next); - knownAdjacent(node, node[END]); - if (parentNode) - parentNode.replaceChildren(); - do { - firstChild.parentNode = this; - moCallback(firstChild, null); - if (firstChild.nodeType === ELEMENT_NODE) - connectedCallback(firstChild); - } while (firstChild !== lastChild && (firstChild = nextSibling(firstChild))); - } - break; - } - case TEXT_NODE: - case COMMENT_NODE: - case CDATA_SECTION_NODE: - node.remove(); - /* eslint no-fallthrough:0 */ - // this covers DOCUMENT_TYPE_NODE too - default: - node.parentNode = this; - knownSiblings(next[PREV], node, next); - moCallback(node, null); - break; - } - return node; - } - normalize() { - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - const { [NEXT]: $next, [PREV]: $prev, nodeType } = next; - if (nodeType === TEXT_NODE) { - if (!next[VALUE]) - next.remove(); - else if ($prev && $prev.nodeType === TEXT_NODE) { - $prev.textContent += next.textContent; - next.remove(); - } - } - next = $next; - } - } - removeChild(node) { - if (node.parentNode !== this) - throw new Error("node is not a child"); - node.remove(); - return node; - } - replaceChild(node, replaced) { - const next = getEnd(replaced)[NEXT]; - replaced.remove(); - this.insertBefore(node, next); - return replaced; - } -}; - -// node_modules/linkedom/esm/mixin/non-element-parent-node.js -var NonElementParentNode = class extends ParentNode { - getElementById(id) { - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE && next.id === id) - return next; - next = next[NEXT]; - } - return null; - } - cloneNode(deep) { - const { ownerDocument, constructor } = this; - const nonEPN = new constructor(ownerDocument); - if (deep) { - const { [END]: end } = nonEPN; - for (const node of this.childNodes) - nonEPN.insertBefore(node.cloneNode(deep), end); - } - return nonEPN; - } - toString() { - const { childNodes, localName } = this; - return `<${localName}>${childNodes.join("")}</${localName}>`; - } - toJSON() { - const json = []; - nonElementAsJSON(this, json); - return json; - } -}; - -// node_modules/linkedom/esm/interface/document-fragment.js -var DocumentFragment = class extends NonElementParentNode { - constructor(ownerDocument) { - super(ownerDocument, "#document-fragment", DOCUMENT_FRAGMENT_NODE); - } -}; - -// node_modules/linkedom/esm/interface/document-type.js -var DocumentType = class _DocumentType extends Node2 { - constructor(ownerDocument, name, publicId = "", systemId = "") { - super(ownerDocument, "#document-type", DOCUMENT_TYPE_NODE); - this.name = name; - this.publicId = publicId; - this.systemId = systemId; - } - cloneNode() { - const { ownerDocument, name, publicId, systemId } = this; - return new _DocumentType(ownerDocument, name, publicId, systemId); - } - toString() { - const { name, publicId, systemId } = this; - const hasPublic = 0 < publicId.length; - const str = [name]; - if (hasPublic) - str.push("PUBLIC", `"${publicId}"`); - if (systemId.length) { - if (!hasPublic) - str.push("SYSTEM"); - str.push(`"${systemId}"`); - } - return `<!DOCTYPE ${str.join(" ")}>`; - } - toJSON() { - const json = []; - documentTypeAsJSON(this, json); - return json; - } -}; - -// node_modules/linkedom/esm/mixin/inner-html.js -var getInnerHtml = (node) => node.childNodes.join(""); -var setInnerHtml = (node, html) => { - const { ownerDocument } = node; - const { constructor } = ownerDocument; - const document = new constructor(); - document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS]; - const { childNodes } = parseFromString(document, ignoreCase(node), html); - node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument)); -}; -function setOwnerDocument(node) { - node.ownerDocument = this; - switch (node.nodeType) { - case ELEMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: - node.childNodes.forEach(setOwnerDocument, this); - break; - } - return node; -} - -// node_modules/uhyphen/esm/index.js -var esm_default2 = (camel) => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, "$2$5-$3$6").toLowerCase(); - -// node_modules/linkedom/esm/dom/string-map.js -var refs = /* @__PURE__ */ new WeakMap(); -var key = (name) => `data-${esm_default2(name)}`; -var prop = (name) => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase()); -var handler = { - get(dataset, name) { - if (name in dataset) - return refs.get(dataset).getAttribute(key(name)); - }, - set(dataset, name, value) { - dataset[name] = value; - refs.get(dataset).setAttribute(key(name), value); - return true; - }, - deleteProperty(dataset, name) { - if (name in dataset) - refs.get(dataset).removeAttribute(key(name)); - return delete dataset[name]; - } -}; -var DOMStringMap = class { - /** - * @param {Element} ref - */ - constructor(ref) { - for (const { name, value } of ref.attributes) { - if (/^data-/.test(name)) - this[prop(name)] = value; - } - refs.set(this, ref); - return new Proxy(this, handler); - } -}; -setPrototypeOf(DOMStringMap.prototype, null); - -// node_modules/linkedom/esm/dom/token-list.js -var { add } = Set.prototype; -var addTokens = (self, tokens) => { - for (const token of tokens) { - if (token) - add.call(self, token); - } -}; -var update = ({ [OWNER_ELEMENT]: ownerElement, value }) => { - const attribute2 = ownerElement.getAttributeNode("class"); - if (attribute2) - attribute2.value = value; - else - setAttribute( - ownerElement, - new Attr(ownerElement.ownerDocument, "class", value) - ); -}; -var DOMTokenList = class extends Set { - constructor(ownerElement) { - super(); - this[OWNER_ELEMENT] = ownerElement; - const attribute2 = ownerElement.getAttributeNode("class"); - if (attribute2) - addTokens(this, attribute2.value.split(/\s+/)); - } - get length() { - return this.size; - } - get value() { - return [...this].join(" "); - } - /** - * @param {...string} tokens - */ - add(...tokens) { - addTokens(this, tokens); - update(this); - } - /** - * @param {string} token - */ - contains(token) { - return this.has(token); - } - /** - * @param {...string} tokens - */ - remove(...tokens) { - for (const token of tokens) - this.delete(token); - update(this); - } - /** - * @param {string} token - * @param {boolean?} force - */ - toggle(token, force) { - if (this.has(token)) { - if (force) - return true; - this.delete(token); - update(this); - } else if (force || arguments.length === 1) { - super.add(token); - update(this); - return true; - } - return false; - } - /** - * @param {string} token - * @param {string} newToken - */ - replace(token, newToken) { - if (this.has(token)) { - this.delete(token); - super.add(newToken); - update(this); - return true; - } - return false; - } - /** - * @param {string} token - */ - supports() { - return true; - } -}; - -// node_modules/linkedom/esm/interface/css-style-declaration.js -var refs2 = /* @__PURE__ */ new WeakMap(); -var getKeys = (style) => [...style.keys()].filter((key2) => key2 !== PRIVATE); -var updateKeys = (style) => { - const attr = refs2.get(style).getAttributeNode("style"); - if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) { - style.clear(); - if (attr) { - style.set(PRIVATE, attr); - for (const rule of attr[VALUE].split(/\s*;\s*/)) { - let [key2, ...rest] = rule.split(":"); - if (rest.length > 0) { - key2 = key2.trim(); - const value = rest.join(":").trim(); - if (key2 && value) - style.set(key2, value); - } - } - } - } - return attr; -}; -var handler2 = { - get(style, name) { - if (name in prototype) - return style[name]; - updateKeys(style); - if (name === "length") - return getKeys(style).length; - if (/^\d+$/.test(name)) - return getKeys(style)[name]; - return style.get(esm_default2(name)); - }, - set(style, name, value) { - if (name === "cssText") - style[name] = value; - else { - let attr = updateKeys(style); - if (value == null) - style.delete(esm_default2(name)); - else - style.set(esm_default2(name), value); - if (!attr) { - const element = refs2.get(style); - attr = element.ownerDocument.createAttribute("style"); - element.setAttributeNode(attr); - style.set(PRIVATE, attr); - } - attr[CHANGED] = false; - attr[VALUE] = style.toString(); - } - return true; - } -}; -var CSSStyleDeclaration = class extends Map { - constructor(element) { - super(); - refs2.set(this, element); - return new Proxy(this, handler2); - } - get cssText() { - return this.toString(); - } - set cssText(value) { - refs2.get(this).setAttribute("style", value); - } - getPropertyValue(name) { - const self = this[PRIVATE]; - return handler2.get(self, name); - } - setProperty(name, value) { - const self = this[PRIVATE]; - handler2.set(self, name, value); - } - removeProperty(name) { - const self = this[PRIVATE]; - handler2.set(self, name, null); - } - [Symbol.iterator]() { - const self = this[PRIVATE]; - updateKeys(self); - const keys2 = getKeys(self); - const { length } = keys2; - let i = 0; - return { - next() { - const done = i === length; - return { done, value: done ? null : keys2[i++] }; - } - }; - } - get [PRIVATE]() { - return this; - } - toString() { - const self = this[PRIVATE]; - updateKeys(self); - const cssText = []; - self.forEach(push, cssText); - return cssText.join(";"); - } -}; -var { prototype } = CSSStyleDeclaration; -function push(value, key2) { - if (key2 !== PRIVATE) - this.push(`${key2}:${value}`); -} - -// node_modules/linkedom/esm/interface/event.js -var BUBBLING_PHASE = 3; -var AT_TARGET = 2; -var CAPTURING_PHASE = 1; -var NONE = 0; -function getCurrentTarget(ev) { - return ev.currentTarget; -} -var GlobalEvent = class { - static get BUBBLING_PHASE() { - return BUBBLING_PHASE; - } - static get AT_TARGET() { - return AT_TARGET; - } - static get CAPTURING_PHASE() { - return CAPTURING_PHASE; - } - static get NONE() { - return NONE; - } - constructor(type, eventInitDict = {}) { - this.type = type; - this.bubbles = !!eventInitDict.bubbles; - this.cancelBubble = false; - this._stopImmediatePropagationFlag = false; - this.cancelable = !!eventInitDict.cancelable; - this.eventPhase = this.NONE; - this.timeStamp = Date.now(); - this.defaultPrevented = false; - this.originalTarget = null; - this.returnValue = null; - this.srcElement = null; - this.target = null; - this._path = []; - } - get BUBBLING_PHASE() { - return BUBBLING_PHASE; - } - get AT_TARGET() { - return AT_TARGET; - } - get CAPTURING_PHASE() { - return CAPTURING_PHASE; - } - get NONE() { - return NONE; - } - preventDefault() { - this.defaultPrevented = true; - } - // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath - composedPath() { - return this._path.map(getCurrentTarget); - } - stopPropagation() { - this.cancelBubble = true; - } - stopImmediatePropagation() { - this.stopPropagation(); - this._stopImmediatePropagationFlag = true; - } -}; - -// node_modules/linkedom/esm/interface/named-node-map.js -var NamedNodeMap = class extends Array { - constructor(ownerElement) { - super(); - this.ownerElement = ownerElement; - } - getNamedItem(name) { - return this.ownerElement.getAttributeNode(name); - } - setNamedItem(attr) { - this.ownerElement.setAttributeNode(attr); - this.unshift(attr); - } - removeNamedItem(name) { - const item = this.getNamedItem(name); - this.ownerElement.removeAttribute(name); - this.splice(this.indexOf(item), 1); - } - item(index) { - return index < this.length ? this[index] : null; - } - /* c8 ignore start */ - getNamedItemNS(_, name) { - return this.getNamedItem(name); - } - setNamedItemNS(_, attr) { - return this.setNamedItem(attr); - } - removeNamedItemNS(_, name) { - return this.removeNamedItem(name); - } - /* c8 ignore stop */ -}; - -// node_modules/linkedom/esm/interface/shadow-root.js -var ShadowRoot = class extends NonElementParentNode { - constructor(host) { - super(host.ownerDocument, "#shadow-root", DOCUMENT_FRAGMENT_NODE); - this.host = host; - } - get innerHTML() { - return getInnerHtml(this); - } - set innerHTML(html) { - setInnerHtml(this, html); - } -}; - -// node_modules/linkedom/esm/interface/element.js -var attributesHandler = { - get(target, key2) { - return key2 in target ? target[key2] : target.find(({ name }) => name === key2); - } -}; -var create2 = (ownerDocument, element, localName) => { - if ("ownerSVGElement" in element) { - const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName); - svg.ownerSVGElement = element.ownerSVGElement; - return svg; - } - return ownerDocument.createElement(localName); -}; -var isVoid = ({ localName, ownerDocument }) => { - return ownerDocument[MIME].voidElements.test(localName); -}; -var Element2 = class extends ParentNode { - constructor(ownerDocument, localName) { - super(ownerDocument, localName, ELEMENT_NODE); - this[CLASS_LIST] = null; - this[DATASET] = null; - this[STYLE] = null; - } - // <Mixins> - get isConnected() { - return isConnected(this); - } - get parentElement() { - return parentElement(this); - } - get previousSibling() { - return previousSibling(this); - } - get nextSibling() { - return nextSibling(this); - } - get namespaceURI() { - return "http://www.w3.org/1999/xhtml"; - } - get previousElementSibling() { - return previousElementSibling(this); - } - get nextElementSibling() { - return nextElementSibling2(this); - } - before(...nodes) { - before(this, nodes); - } - after(...nodes) { - after(this, nodes); - } - replaceWith(...nodes) { - replaceWith(this, nodes); - } - remove() { - remove(this[PREV], this, this[END][NEXT]); - } - // </Mixins> - // <specialGetters> - get id() { - return stringAttribute.get(this, "id"); - } - set id(value) { - stringAttribute.set(this, "id", value); - } - get className() { - return this.classList.value; - } - set className(value) { - const { classList } = this; - classList.clear(); - classList.add(...$String(value).split(/\s+/)); - } - get nodeName() { - return localCase(this); - } - get tagName() { - return localCase(this); - } - get classList() { - return this[CLASS_LIST] || (this[CLASS_LIST] = new DOMTokenList(this)); - } - get dataset() { - return this[DATASET] || (this[DATASET] = new DOMStringMap(this)); - } - getBoundingClientRect() { - return { - x: 0, - y: 0, - bottom: 0, - height: 0, - left: 0, - right: 0, - top: 0, - width: 0 - }; - } - get nonce() { - return stringAttribute.get(this, "nonce"); - } - set nonce(value) { - stringAttribute.set(this, "nonce", value); - } - get style() { - return this[STYLE] || (this[STYLE] = new CSSStyleDeclaration(this)); - } - get tabIndex() { - return numericAttribute.get(this, "tabindex") || -1; - } - set tabIndex(value) { - numericAttribute.set(this, "tabindex", value); - } - get slot() { - return stringAttribute.get(this, "slot"); - } - set slot(value) { - stringAttribute.set(this, "slot", value); - } - // </specialGetters> - // <contentRelated> - get innerText() { - const text = []; - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - if (next.nodeType === TEXT_NODE) { - text.push(next.textContent.replace(/\s+/g, " ")); - } else if (text.length && next[NEXT] != end && BLOCK_ELEMENTS.has(next.tagName)) { - text.push("\n"); - } - next = next[NEXT]; - } - return text.join(""); - } - /** - * @returns {String} - */ - get textContent() { - const text = []; - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - const nodeType = next.nodeType; - if (nodeType === TEXT_NODE || nodeType === CDATA_SECTION_NODE) - text.push(next.textContent); - next = next[NEXT]; - } - return text.join(""); - } - set textContent(text) { - this.replaceChildren(); - if (text != null && text !== "") - this.appendChild(new Text3(this.ownerDocument, text)); - } - get innerHTML() { - return getInnerHtml(this); - } - set innerHTML(html) { - setInnerHtml(this, html); - } - get outerHTML() { - return this.toString(); - } - set outerHTML(html) { - const template = this.ownerDocument.createElement(""); - template.innerHTML = html; - this.replaceWith(...template.childNodes); - } - // </contentRelated> - // <attributes> - get attributes() { - const attributes2 = new NamedNodeMap(this); - let next = this[NEXT]; - while (next.nodeType === ATTRIBUTE_NODE) { - attributes2.push(next); - next = next[NEXT]; - } - return new Proxy(attributes2, attributesHandler); - } - focus() { - this.dispatchEvent(new GlobalEvent("focus")); - } - getAttribute(name) { - if (name === "class") - return this.className; - const attribute2 = this.getAttributeNode(name); - return attribute2 && (ignoreCase(this) ? attribute2.value : escape2(attribute2.value)); - } - getAttributeNode(name) { - let next = this[NEXT]; - while (next.nodeType === ATTRIBUTE_NODE) { - if (next.name === name) - return next; - next = next[NEXT]; - } - return null; - } - getAttributeNames() { - const attributes2 = new NodeList(); - let next = this[NEXT]; - while (next.nodeType === ATTRIBUTE_NODE) { - attributes2.push(next.name); - next = next[NEXT]; - } - return attributes2; - } - hasAttribute(name) { - return !!this.getAttributeNode(name); - } - hasAttributes() { - return this[NEXT].nodeType === ATTRIBUTE_NODE; - } - removeAttribute(name) { - if (name === "class" && this[CLASS_LIST]) - this[CLASS_LIST].clear(); - let next = this[NEXT]; - while (next.nodeType === ATTRIBUTE_NODE) { - if (next.name === name) { - removeAttribute(this, next); - return; - } - next = next[NEXT]; - } - } - removeAttributeNode(attribute2) { - let next = this[NEXT]; - while (next.nodeType === ATTRIBUTE_NODE) { - if (next === attribute2) { - removeAttribute(this, next); - return; - } - next = next[NEXT]; - } - } - setAttribute(name, value) { - if (name === "class") - this.className = value; - else { - const attribute2 = this.getAttributeNode(name); - if (attribute2) - attribute2.value = value; - else - setAttribute(this, new Attr(this.ownerDocument, name, value)); - } - } - setAttributeNode(attribute2) { - const { name } = attribute2; - const previously = this.getAttributeNode(name); - if (previously !== attribute2) { - if (previously) - this.removeAttributeNode(previously); - const { ownerElement } = attribute2; - if (ownerElement) - ownerElement.removeAttributeNode(attribute2); - setAttribute(this, attribute2); - } - return previously; - } - toggleAttribute(name, force) { - if (this.hasAttribute(name)) { - if (!force) { - this.removeAttribute(name); - return false; - } - return true; - } else if (force || arguments.length === 1) { - this.setAttribute(name, ""); - return true; - } - return false; - } - // </attributes> - // <ShadowDOM> - get shadowRoot() { - if (shadowRoots.has(this)) { - const { mode, shadowRoot } = shadowRoots.get(this); - if (mode === "open") - return shadowRoot; - } - return null; - } - attachShadow(init) { - if (shadowRoots.has(this)) - throw new Error("operation not supported"); - const shadowRoot = new ShadowRoot(this); - shadowRoots.set(this, { - mode: init.mode, - shadowRoot - }); - return shadowRoot; - } - // </ShadowDOM> - // <selectors> - matches(selectors) { - return matches(this, selectors); - } - closest(selectors) { - let parentElement2 = this; - const matches2 = prepareMatch(parentElement2, selectors); - while (parentElement2 && !matches2(parentElement2)) - parentElement2 = parentElement2.parentElement; - return parentElement2; - } - // </selectors> - // <insertAdjacent> - insertAdjacentElement(position, element) { - const { parentElement: parentElement2 } = this; - switch (position) { - case "beforebegin": - if (parentElement2) { - parentElement2.insertBefore(element, this); - break; - } - return null; - case "afterbegin": - this.insertBefore(element, this.firstChild); - break; - case "beforeend": - this.insertBefore(element, null); - break; - case "afterend": - if (parentElement2) { - parentElement2.insertBefore(element, this.nextSibling); - break; - } - return null; - } - return element; - } - insertAdjacentHTML(position, html) { - const template = this.ownerDocument.createElement("template"); - template.innerHTML = html; - this.insertAdjacentElement(position, template.content); - } - insertAdjacentText(position, text) { - const node = this.ownerDocument.createTextNode(text); - this.insertAdjacentElement(position, node); - } - // </insertAdjacent> - cloneNode(deep = false) { - const { ownerDocument, localName } = this; - const addNext = (next2) => { - next2.parentNode = parentNode; - knownAdjacent($next, next2); - $next = next2; - }; - const clone = create2(ownerDocument, this, localName); - let parentNode = clone, $next = clone; - let { [NEXT]: next, [END]: prev } = this; - while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) { - switch (next.nodeType) { - case NODE_END: - knownAdjacent($next, parentNode[END]); - $next = parentNode[END]; - parentNode = parentNode.parentNode; - break; - case ELEMENT_NODE: { - const node = create2(ownerDocument, next, next.localName); - addNext(node); - parentNode = node; - break; - } - case ATTRIBUTE_NODE: { - const attr = next.cloneNode(deep); - attr.ownerElement = parentNode; - addNext(attr); - break; - } - case TEXT_NODE: - case COMMENT_NODE: - case CDATA_SECTION_NODE: - addNext(next.cloneNode(deep)); - break; - } - next = next[NEXT]; - } - knownAdjacent($next, clone[END]); - return clone; - } - // <custom> - toString() { - const out = []; - const { [END]: end } = this; - let next = { [NEXT]: this }; - let isOpened = false; - do { - next = next[NEXT]; - switch (next.nodeType) { - case ATTRIBUTE_NODE: { - const attr = " " + next; - switch (attr) { - case " id": - case " class": - case " style": - break; - default: - out.push(attr); - } - break; - } - case NODE_END: { - const start = next[START]; - if (isOpened) { - if ("ownerSVGElement" in start) - out.push(" />"); - else if (isVoid(start)) - out.push(ignoreCase(start) ? ">" : " />"); - else - out.push(`></${start.localName}>`); - isOpened = false; - } else - out.push(`</${start.localName}>`); - break; - } - case ELEMENT_NODE: - if (isOpened) - out.push(">"); - if (next.toString !== this.toString) { - out.push(next.toString()); - next = next[END]; - isOpened = false; - } else { - out.push(`<${next.localName}`); - isOpened = true; - } - break; - case TEXT_NODE: - case COMMENT_NODE: - case CDATA_SECTION_NODE: - out.push((isOpened ? ">" : "") + next); - isOpened = false; - break; - } - } while (next !== end); - return out.join(""); - } - toJSON() { - const json = []; - elementAsJSON(this, json); - return json; - } - // </custom> - /* c8 ignore start */ - getAttributeNS(_, name) { - return this.getAttribute(name); - } - getElementsByTagNameNS(_, name) { - return this.getElementsByTagName(name); - } - hasAttributeNS(_, name) { - return this.hasAttribute(name); - } - removeAttributeNS(_, name) { - this.removeAttribute(name); - } - setAttributeNS(_, name, value) { - this.setAttribute(name, value); - } - setAttributeNodeNS(attr) { - return this.setAttributeNode(attr); - } - /* c8 ignore stop */ -}; - -// node_modules/linkedom/esm/svg/element.js -var classNames = /* @__PURE__ */ new WeakMap(); -var handler3 = { - get(target, name) { - return target[name]; - }, - set(target, name, value) { - target[name] = value; - return true; - } -}; -var SVGElement = class extends Element2 { - constructor(ownerDocument, localName, ownerSVGElement = null) { - super(ownerDocument, localName); - this.ownerSVGElement = ownerSVGElement; - } - get className() { - if (!classNames.has(this)) - classNames.set(this, new Proxy({ baseVal: "", animVal: "" }, handler3)); - return classNames.get(this); - } - /* c8 ignore start */ - set className(value) { - const { classList } = this; - classList.clear(); - classList.add(...$String(value).split(/\s+/)); - } - /* c8 ignore stop */ - get namespaceURI() { - return "http://www.w3.org/2000/svg"; - } - getAttribute(name) { - return name === "class" ? [...this.classList].join(" ") : super.getAttribute(name); - } - setAttribute(name, value) { - if (name === "class") - this.className = value; - else if (name === "style") { - const { className } = this; - className.baseVal = className.animVal = value; - } - super.setAttribute(name, value); - } -}; - -// node_modules/linkedom/esm/shared/facades.js -var illegalConstructor = () => { - throw new TypeError("Illegal constructor"); -}; -function Attr2() { - illegalConstructor(); -} -setPrototypeOf(Attr2, Attr); -Attr2.prototype = Attr.prototype; -function CDATASection2() { - illegalConstructor(); -} -setPrototypeOf(CDATASection2, CDATASection); -CDATASection2.prototype = CDATASection.prototype; -function CharacterData2() { - illegalConstructor(); -} -setPrototypeOf(CharacterData2, CharacterData); -CharacterData2.prototype = CharacterData.prototype; -function Comment4() { - illegalConstructor(); -} -setPrototypeOf(Comment4, Comment3); -Comment4.prototype = Comment3.prototype; -function DocumentFragment2() { - illegalConstructor(); -} -setPrototypeOf(DocumentFragment2, DocumentFragment); -DocumentFragment2.prototype = DocumentFragment.prototype; -function DocumentType2() { - illegalConstructor(); -} -setPrototypeOf(DocumentType2, DocumentType); -DocumentType2.prototype = DocumentType.prototype; -function Element3() { - illegalConstructor(); -} -setPrototypeOf(Element3, Element2); -Element3.prototype = Element2.prototype; -function Node3() { - illegalConstructor(); -} -setPrototypeOf(Node3, Node2); -Node3.prototype = Node2.prototype; -function ShadowRoot2() { - illegalConstructor(); -} -setPrototypeOf(ShadowRoot2, ShadowRoot); -ShadowRoot2.prototype = ShadowRoot.prototype; -function Text4() { - illegalConstructor(); -} -setPrototypeOf(Text4, Text3); -Text4.prototype = Text3.prototype; -function SVGElement2() { - illegalConstructor(); -} -setPrototypeOf(SVGElement2, SVGElement); -SVGElement2.prototype = SVGElement.prototype; -var Facades = { - Attr: Attr2, - CDATASection: CDATASection2, - CharacterData: CharacterData2, - Comment: Comment4, - DocumentFragment: DocumentFragment2, - DocumentType: DocumentType2, - Element: Element3, - Node: Node3, - ShadowRoot: ShadowRoot2, - Text: Text4, - SVGElement: SVGElement2 -}; - -// node_modules/linkedom/esm/html/element.js -var Level0 = /* @__PURE__ */ new WeakMap(); -var level0 = { - get(element, name) { - return Level0.has(element) && Level0.get(element)[name] || null; - }, - set(element, name, value) { - if (!Level0.has(element)) - Level0.set(element, {}); - const handlers = Level0.get(element); - const type = name.slice(2); - if (handlers[name]) - element.removeEventListener(type, handlers[name], false); - if (handlers[name] = value) - element.addEventListener(type, value, false); - } -}; -var HTMLElement = class extends Element2 { - static get observedAttributes() { - return []; - } - constructor(ownerDocument = null, localName = "") { - super(ownerDocument, localName); - const ownerLess = !ownerDocument; - let options; - if (ownerLess) { - const { constructor: Class } = this; - if (!Classes.has(Class)) - throw new Error("unable to initialize this Custom Element"); - ({ ownerDocument, localName, options } = Classes.get(Class)); - } - if (ownerDocument[UPGRADE]) { - const { element, values } = ownerDocument[UPGRADE]; - ownerDocument[UPGRADE] = null; - for (const [key2, value] of values) - element[key2] = value; - return element; - } - if (ownerLess) { - this.ownerDocument = this[END].ownerDocument = ownerDocument; - this.localName = localName; - customElements.set(this, { connected: false }); - if (options.is) - this.setAttribute("is", options.is); - } - } - /* c8 ignore start */ - /* TODO: what about these? - offsetHeight - offsetLeft - offsetParent - offsetTop - offsetWidth - */ - blur() { - this.dispatchEvent(new GlobalEvent("blur")); - } - click() { - const clickEvent = new GlobalEvent("click", { bubbles: true, cancelable: true }); - clickEvent.button = 0; - this.dispatchEvent(clickEvent); - } - // Boolean getters - get accessKeyLabel() { - const { accessKey } = this; - return accessKey && `Alt+Shift+${accessKey}`; - } - get isContentEditable() { - return this.hasAttribute("contenteditable"); - } - // Boolean Accessors - get contentEditable() { - return booleanAttribute.get(this, "contenteditable"); - } - set contentEditable(value) { - booleanAttribute.set(this, "contenteditable", value); - } - get draggable() { - return booleanAttribute.get(this, "draggable"); - } - set draggable(value) { - booleanAttribute.set(this, "draggable", value); - } - get hidden() { - return booleanAttribute.get(this, "hidden"); - } - set hidden(value) { - booleanAttribute.set(this, "hidden", value); - } - get spellcheck() { - return booleanAttribute.get(this, "spellcheck"); - } - set spellcheck(value) { - booleanAttribute.set(this, "spellcheck", value); - } - // String Accessors - get accessKey() { - return stringAttribute.get(this, "accesskey"); - } - set accessKey(value) { - stringAttribute.set(this, "accesskey", value); - } - get dir() { - return stringAttribute.get(this, "dir"); - } - set dir(value) { - stringAttribute.set(this, "dir", value); - } - get lang() { - return stringAttribute.get(this, "lang"); - } - set lang(value) { - stringAttribute.set(this, "lang", value); - } - get title() { - return stringAttribute.get(this, "title"); - } - set title(value) { - stringAttribute.set(this, "title", value); - } - // DOM Level 0 - get onabort() { - return level0.get(this, "onabort"); - } - set onabort(value) { - level0.set(this, "onabort", value); - } - get onblur() { - return level0.get(this, "onblur"); - } - set onblur(value) { - level0.set(this, "onblur", value); - } - get oncancel() { - return level0.get(this, "oncancel"); - } - set oncancel(value) { - level0.set(this, "oncancel", value); - } - get oncanplay() { - return level0.get(this, "oncanplay"); - } - set oncanplay(value) { - level0.set(this, "oncanplay", value); - } - get oncanplaythrough() { - return level0.get(this, "oncanplaythrough"); - } - set oncanplaythrough(value) { - level0.set(this, "oncanplaythrough", value); - } - get onchange() { - return level0.get(this, "onchange"); - } - set onchange(value) { - level0.set(this, "onchange", value); - } - get onclick() { - return level0.get(this, "onclick"); - } - set onclick(value) { - level0.set(this, "onclick", value); - } - get onclose() { - return level0.get(this, "onclose"); - } - set onclose(value) { - level0.set(this, "onclose", value); - } - get oncontextmenu() { - return level0.get(this, "oncontextmenu"); - } - set oncontextmenu(value) { - level0.set(this, "oncontextmenu", value); - } - get oncuechange() { - return level0.get(this, "oncuechange"); - } - set oncuechange(value) { - level0.set(this, "oncuechange", value); - } - get ondblclick() { - return level0.get(this, "ondblclick"); - } - set ondblclick(value) { - level0.set(this, "ondblclick", value); - } - get ondrag() { - return level0.get(this, "ondrag"); - } - set ondrag(value) { - level0.set(this, "ondrag", value); - } - get ondragend() { - return level0.get(this, "ondragend"); - } - set ondragend(value) { - level0.set(this, "ondragend", value); - } - get ondragenter() { - return level0.get(this, "ondragenter"); - } - set ondragenter(value) { - level0.set(this, "ondragenter", value); - } - get ondragleave() { - return level0.get(this, "ondragleave"); - } - set ondragleave(value) { - level0.set(this, "ondragleave", value); - } - get ondragover() { - return level0.get(this, "ondragover"); - } - set ondragover(value) { - level0.set(this, "ondragover", value); - } - get ondragstart() { - return level0.get(this, "ondragstart"); - } - set ondragstart(value) { - level0.set(this, "ondragstart", value); - } - get ondrop() { - return level0.get(this, "ondrop"); - } - set ondrop(value) { - level0.set(this, "ondrop", value); - } - get ondurationchange() { - return level0.get(this, "ondurationchange"); - } - set ondurationchange(value) { - level0.set(this, "ondurationchange", value); - } - get onemptied() { - return level0.get(this, "onemptied"); - } - set onemptied(value) { - level0.set(this, "onemptied", value); - } - get onended() { - return level0.get(this, "onended"); - } - set onended(value) { - level0.set(this, "onended", value); - } - get onerror() { - return level0.get(this, "onerror"); - } - set onerror(value) { - level0.set(this, "onerror", value); - } - get onfocus() { - return level0.get(this, "onfocus"); - } - set onfocus(value) { - level0.set(this, "onfocus", value); - } - get oninput() { - return level0.get(this, "oninput"); - } - set oninput(value) { - level0.set(this, "oninput", value); - } - get oninvalid() { - return level0.get(this, "oninvalid"); - } - set oninvalid(value) { - level0.set(this, "oninvalid", value); - } - get onkeydown() { - return level0.get(this, "onkeydown"); - } - set onkeydown(value) { - level0.set(this, "onkeydown", value); - } - get onkeypress() { - return level0.get(this, "onkeypress"); - } - set onkeypress(value) { - level0.set(this, "onkeypress", value); - } - get onkeyup() { - return level0.get(this, "onkeyup"); - } - set onkeyup(value) { - level0.set(this, "onkeyup", value); - } - get onload() { - return level0.get(this, "onload"); - } - set onload(value) { - level0.set(this, "onload", value); - } - get onloadeddata() { - return level0.get(this, "onloadeddata"); - } - set onloadeddata(value) { - level0.set(this, "onloadeddata", value); - } - get onloadedmetadata() { - return level0.get(this, "onloadedmetadata"); - } - set onloadedmetadata(value) { - level0.set(this, "onloadedmetadata", value); - } - get onloadstart() { - return level0.get(this, "onloadstart"); - } - set onloadstart(value) { - level0.set(this, "onloadstart", value); - } - get onmousedown() { - return level0.get(this, "onmousedown"); - } - set onmousedown(value) { - level0.set(this, "onmousedown", value); - } - get onmouseenter() { - return level0.get(this, "onmouseenter"); - } - set onmouseenter(value) { - level0.set(this, "onmouseenter", value); - } - get onmouseleave() { - return level0.get(this, "onmouseleave"); - } - set onmouseleave(value) { - level0.set(this, "onmouseleave", value); - } - get onmousemove() { - return level0.get(this, "onmousemove"); - } - set onmousemove(value) { - level0.set(this, "onmousemove", value); - } - get onmouseout() { - return level0.get(this, "onmouseout"); - } - set onmouseout(value) { - level0.set(this, "onmouseout", value); - } - get onmouseover() { - return level0.get(this, "onmouseover"); - } - set onmouseover(value) { - level0.set(this, "onmouseover", value); - } - get onmouseup() { - return level0.get(this, "onmouseup"); - } - set onmouseup(value) { - level0.set(this, "onmouseup", value); - } - get onmousewheel() { - return level0.get(this, "onmousewheel"); - } - set onmousewheel(value) { - level0.set(this, "onmousewheel", value); - } - get onpause() { - return level0.get(this, "onpause"); - } - set onpause(value) { - level0.set(this, "onpause", value); - } - get onplay() { - return level0.get(this, "onplay"); - } - set onplay(value) { - level0.set(this, "onplay", value); - } - get onplaying() { - return level0.get(this, "onplaying"); - } - set onplaying(value) { - level0.set(this, "onplaying", value); - } - get onprogress() { - return level0.get(this, "onprogress"); - } - set onprogress(value) { - level0.set(this, "onprogress", value); - } - get onratechange() { - return level0.get(this, "onratechange"); - } - set onratechange(value) { - level0.set(this, "onratechange", value); - } - get onreset() { - return level0.get(this, "onreset"); - } - set onreset(value) { - level0.set(this, "onreset", value); - } - get onresize() { - return level0.get(this, "onresize"); - } - set onresize(value) { - level0.set(this, "onresize", value); - } - get onscroll() { - return level0.get(this, "onscroll"); - } - set onscroll(value) { - level0.set(this, "onscroll", value); - } - get onseeked() { - return level0.get(this, "onseeked"); - } - set onseeked(value) { - level0.set(this, "onseeked", value); - } - get onseeking() { - return level0.get(this, "onseeking"); - } - set onseeking(value) { - level0.set(this, "onseeking", value); - } - get onselect() { - return level0.get(this, "onselect"); - } - set onselect(value) { - level0.set(this, "onselect", value); - } - get onshow() { - return level0.get(this, "onshow"); - } - set onshow(value) { - level0.set(this, "onshow", value); - } - get onstalled() { - return level0.get(this, "onstalled"); - } - set onstalled(value) { - level0.set(this, "onstalled", value); - } - get onsubmit() { - return level0.get(this, "onsubmit"); - } - set onsubmit(value) { - level0.set(this, "onsubmit", value); - } - get onsuspend() { - return level0.get(this, "onsuspend"); - } - set onsuspend(value) { - level0.set(this, "onsuspend", value); - } - get ontimeupdate() { - return level0.get(this, "ontimeupdate"); - } - set ontimeupdate(value) { - level0.set(this, "ontimeupdate", value); - } - get ontoggle() { - return level0.get(this, "ontoggle"); - } - set ontoggle(value) { - level0.set(this, "ontoggle", value); - } - get onvolumechange() { - return level0.get(this, "onvolumechange"); - } - set onvolumechange(value) { - level0.set(this, "onvolumechange", value); - } - get onwaiting() { - return level0.get(this, "onwaiting"); - } - set onwaiting(value) { - level0.set(this, "onwaiting", value); - } - get onauxclick() { - return level0.get(this, "onauxclick"); - } - set onauxclick(value) { - level0.set(this, "onauxclick", value); - } - get ongotpointercapture() { - return level0.get(this, "ongotpointercapture"); - } - set ongotpointercapture(value) { - level0.set(this, "ongotpointercapture", value); - } - get onlostpointercapture() { - return level0.get(this, "onlostpointercapture"); - } - set onlostpointercapture(value) { - level0.set(this, "onlostpointercapture", value); - } - get onpointercancel() { - return level0.get(this, "onpointercancel"); - } - set onpointercancel(value) { - level0.set(this, "onpointercancel", value); - } - get onpointerdown() { - return level0.get(this, "onpointerdown"); - } - set onpointerdown(value) { - level0.set(this, "onpointerdown", value); - } - get onpointerenter() { - return level0.get(this, "onpointerenter"); - } - set onpointerenter(value) { - level0.set(this, "onpointerenter", value); - } - get onpointerleave() { - return level0.get(this, "onpointerleave"); - } - set onpointerleave(value) { - level0.set(this, "onpointerleave", value); - } - get onpointermove() { - return level0.get(this, "onpointermove"); - } - set onpointermove(value) { - level0.set(this, "onpointermove", value); - } - get onpointerout() { - return level0.get(this, "onpointerout"); - } - set onpointerout(value) { - level0.set(this, "onpointerout", value); - } - get onpointerover() { - return level0.get(this, "onpointerover"); - } - set onpointerover(value) { - level0.set(this, "onpointerover", value); - } - get onpointerup() { - return level0.get(this, "onpointerup"); - } - set onpointerup(value) { - level0.set(this, "onpointerup", value); - } - /* c8 ignore stop */ -}; - -// node_modules/linkedom/esm/html/template-element.js -var tagName = "template"; -var HTMLTemplateElement = class extends HTMLElement { - constructor(ownerDocument) { - super(ownerDocument, tagName); - const content = this.ownerDocument.createDocumentFragment(); - (this[CONTENT] = content)[PRIVATE] = this; - } - get content() { - if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) { - for (const node of this.childNodes) - this[CONTENT].appendChild(node.cloneNode(true)); - } - return this[CONTENT]; - } -}; -registerHTMLClass(tagName, HTMLTemplateElement); - -// node_modules/linkedom/esm/html/html-element.js -var HTMLHtmlElement = class extends HTMLElement { - constructor(ownerDocument, localName = "html") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/text-element.js -var { toString } = HTMLElement.prototype; -var TextElement = class extends HTMLElement { - get innerHTML() { - return this.textContent; - } - set innerHTML(html) { - this.textContent = html; - } - toString() { - const outerHTML = toString.call(this.cloneNode()); - return outerHTML.replace("><", () => `>${this.textContent}<`); - } -}; - -// node_modules/linkedom/esm/html/script-element.js -var tagName2 = "script"; -var HTMLScriptElement = class extends TextElement { - constructor(ownerDocument, localName = tagName2) { - super(ownerDocument, localName); - } - get type() { - return stringAttribute.get(this, "type"); - } - set type(value) { - stringAttribute.set(this, "type", value); - } - get src() { - return stringAttribute.get(this, "src"); - } - set src(value) { - stringAttribute.set(this, "src", value); - } - get defer() { - return booleanAttribute.get(this, "defer"); - } - set defer(value) { - booleanAttribute.set(this, "defer", value); - } - get crossOrigin() { - return stringAttribute.get(this, "crossorigin"); - } - set crossOrigin(value) { - stringAttribute.set(this, "crossorigin", value); - } - get nomodule() { - return booleanAttribute.get(this, "nomodule"); - } - set nomodule(value) { - booleanAttribute.set(this, "nomodule", value); - } - get referrerPolicy() { - return stringAttribute.get(this, "referrerpolicy"); - } - set referrerPolicy(value) { - stringAttribute.set(this, "referrerpolicy", value); - } - get nonce() { - return stringAttribute.get(this, "nonce"); - } - set nonce(value) { - stringAttribute.set(this, "nonce", value); - } - get async() { - return booleanAttribute.get(this, "async"); - } - set async(value) { - booleanAttribute.set(this, "async", value); - } - get text() { - return this.textContent; - } - set text(content) { - this.textContent = content; - } -}; -registerHTMLClass(tagName2, HTMLScriptElement); - -// node_modules/linkedom/esm/html/frame-element.js -var HTMLFrameElement = class extends HTMLElement { - constructor(ownerDocument, localName = "frame") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/i-frame-element.js -var tagName3 = "iframe"; -var HTMLIFrameElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName3) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get src() { - return stringAttribute.get(this, "src"); - } - set src(value) { - stringAttribute.set(this, "src", value); - } - get srcdoc() { - return stringAttribute.get(this, "srcdoc"); - } - set srcdoc(value) { - stringAttribute.set(this, "srcdoc", value); - } - get name() { - return stringAttribute.get(this, "name"); - } - set name(value) { - stringAttribute.set(this, "name", value); - } - get allow() { - return stringAttribute.get(this, "allow"); - } - set allow(value) { - stringAttribute.set(this, "allow", value); - } - get allowFullscreen() { - return booleanAttribute.get(this, "allowfullscreen"); - } - set allowFullscreen(value) { - booleanAttribute.set(this, "allowfullscreen", value); - } - get referrerPolicy() { - return stringAttribute.get(this, "referrerpolicy"); - } - set referrerPolicy(value) { - stringAttribute.set(this, "referrerpolicy", value); - } - get loading() { - return stringAttribute.get(this, "loading"); - } - set loading(value) { - stringAttribute.set(this, "loading", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName3, HTMLIFrameElement); - -// node_modules/linkedom/esm/html/object-element.js -var HTMLObjectElement = class extends HTMLElement { - constructor(ownerDocument, localName = "object") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/head-element.js -var HTMLHeadElement = class extends HTMLElement { - constructor(ownerDocument, localName = "head") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/body-element.js -var HTMLBodyElement = class extends HTMLElement { - constructor(ownerDocument, localName = "body") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/style-element.js -var import_cssom = __toESM(require_lib(), 1); -var tagName4 = "style"; -var HTMLStyleElement = class extends TextElement { - constructor(ownerDocument, localName = tagName4) { - super(ownerDocument, localName); - this[SHEET] = null; - } - get sheet() { - const sheet = this[SHEET]; - if (sheet !== null) { - return sheet; - } - return this[SHEET] = (0, import_cssom.parse)(this.textContent); - } - get innerHTML() { - return super.innerHTML || ""; - } - set innerHTML(value) { - super.textContent = value; - this[SHEET] = null; - } - get innerText() { - return super.innerText || ""; - } - set innerText(value) { - super.textContent = value; - this[SHEET] = null; - } - get textContent() { - return super.textContent || ""; - } - set textContent(value) { - super.textContent = value; - this[SHEET] = null; - } -}; -registerHTMLClass(tagName4, HTMLStyleElement); - -// node_modules/linkedom/esm/html/time-element.js -var HTMLTimeElement = class extends HTMLElement { - constructor(ownerDocument, localName = "time") { - super(ownerDocument, localName); - } - /** - * @type {string} - */ - get dateTime() { - return stringAttribute.get(this, "datetime"); - } - set dateTime(value) { - stringAttribute.set(this, "datetime", value); - } -}; -registerHTMLClass("time", HTMLTimeElement); - -// node_modules/linkedom/esm/html/field-set-element.js -var HTMLFieldSetElement = class extends HTMLElement { - constructor(ownerDocument, localName = "fieldset") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/embed-element.js -var HTMLEmbedElement = class extends HTMLElement { - constructor(ownerDocument, localName = "embed") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/hr-element.js -var HTMLHRElement = class extends HTMLElement { - constructor(ownerDocument, localName = "hr") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/progress-element.js -var HTMLProgressElement = class extends HTMLElement { - constructor(ownerDocument, localName = "progress") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/paragraph-element.js -var HTMLParagraphElement = class extends HTMLElement { - constructor(ownerDocument, localName = "p") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/table-element.js -var HTMLTableElement = class extends HTMLElement { - constructor(ownerDocument, localName = "table") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/frame-set-element.js -var HTMLFrameSetElement = class extends HTMLElement { - constructor(ownerDocument, localName = "frameset") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/li-element.js -var HTMLLIElement = class extends HTMLElement { - constructor(ownerDocument, localName = "li") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/base-element.js -var HTMLBaseElement = class extends HTMLElement { - constructor(ownerDocument, localName = "base") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/data-list-element.js -var HTMLDataListElement = class extends HTMLElement { - constructor(ownerDocument, localName = "datalist") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/input-element.js -var tagName5 = "input"; -var HTMLInputElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName5) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get autofocus() { - return booleanAttribute.get(this, "autofocus") || -1; - } - set autofocus(value) { - booleanAttribute.set(this, "autofocus", value); - } - get disabled() { - return booleanAttribute.get(this, "disabled"); - } - set disabled(value) { - booleanAttribute.set(this, "disabled", value); - } - get name() { - return this.getAttribute("name"); - } - set name(value) { - this.setAttribute("name", value); - } - get placeholder() { - return this.getAttribute("placeholder"); - } - set placeholder(value) { - this.setAttribute("placeholder", value); - } - get type() { - return this.getAttribute("type"); - } - set type(value) { - this.setAttribute("type", value); - } - get value() { - return stringAttribute.get(this, "value"); - } - set value(value) { - stringAttribute.set(this, "value", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName5, HTMLInputElement); - -// node_modules/linkedom/esm/html/param-element.js -var HTMLParamElement = class extends HTMLElement { - constructor(ownerDocument, localName = "param") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/media-element.js -var HTMLMediaElement = class extends HTMLElement { - constructor(ownerDocument, localName = "media") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/audio-element.js -var HTMLAudioElement = class extends HTMLElement { - constructor(ownerDocument, localName = "audio") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/heading-element.js -var tagName6 = "h1"; -var HTMLHeadingElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName6) { - super(ownerDocument, localName); - } -}; -registerHTMLClass([tagName6, "h2", "h3", "h4", "h5", "h6"], HTMLHeadingElement); - -// node_modules/linkedom/esm/html/directory-element.js -var HTMLDirectoryElement = class extends HTMLElement { - constructor(ownerDocument, localName = "dir") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/quote-element.js -var HTMLQuoteElement = class extends HTMLElement { - constructor(ownerDocument, localName = "quote") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/canvas-element.js -var import_canvas = __toESM(require_canvas(), 1); -var { createCanvas } = import_canvas.default; -var tagName7 = "canvas"; -var HTMLCanvasElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName7) { - super(ownerDocument, localName); - this[IMAGE] = createCanvas(300, 150); - } - get width() { - return this[IMAGE].width; - } - set width(value) { - numericAttribute.set(this, "width", value); - this[IMAGE].width = value; - } - get height() { - return this[IMAGE].height; - } - set height(value) { - numericAttribute.set(this, "height", value); - this[IMAGE].height = value; - } - getContext(type) { - return this[IMAGE].getContext(type); - } - toDataURL(...args) { - return this[IMAGE].toDataURL(...args); - } -}; -registerHTMLClass(tagName7, HTMLCanvasElement); - -// node_modules/linkedom/esm/html/legend-element.js -var HTMLLegendElement = class extends HTMLElement { - constructor(ownerDocument, localName = "legend") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/option-element.js -var tagName8 = "option"; -var HTMLOptionElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName8) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get value() { - return stringAttribute.get(this, "value"); - } - set value(value) { - stringAttribute.set(this, "value", value); - } - /* c8 ignore stop */ - get selected() { - return booleanAttribute.get(this, "selected"); - } - set selected(value) { - const option = this.parentElement?.querySelector("option[selected]"); - if (option && option !== this) - option.selected = false; - booleanAttribute.set(this, "selected", value); - } -}; -registerHTMLClass(tagName8, HTMLOptionElement); - -// node_modules/linkedom/esm/html/span-element.js -var HTMLSpanElement = class extends HTMLElement { - constructor(ownerDocument, localName = "span") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/meter-element.js -var HTMLMeterElement = class extends HTMLElement { - constructor(ownerDocument, localName = "meter") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/video-element.js -var HTMLVideoElement = class extends HTMLElement { - constructor(ownerDocument, localName = "video") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/table-cell-element.js -var HTMLTableCellElement = class extends HTMLElement { - constructor(ownerDocument, localName = "td") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/title-element.js -var tagName9 = "title"; -var HTMLTitleElement = class extends TextElement { - constructor(ownerDocument, localName = tagName9) { - super(ownerDocument, localName); - } -}; -registerHTMLClass(tagName9, HTMLTitleElement); - -// node_modules/linkedom/esm/html/output-element.js -var HTMLOutputElement = class extends HTMLElement { - constructor(ownerDocument, localName = "output") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/table-row-element.js -var HTMLTableRowElement = class extends HTMLElement { - constructor(ownerDocument, localName = "tr") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/data-element.js -var HTMLDataElement = class extends HTMLElement { - constructor(ownerDocument, localName = "data") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/menu-element.js -var HTMLMenuElement = class extends HTMLElement { - constructor(ownerDocument, localName = "menu") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/select-element.js -var tagName10 = "select"; -var HTMLSelectElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName10) { - super(ownerDocument, localName); - } - get options() { - let children = new NodeList(); - let { firstElementChild } = this; - while (firstElementChild) { - if (firstElementChild.tagName === "OPTGROUP") - children.push(...firstElementChild.children); - else - children.push(firstElementChild); - firstElementChild = firstElementChild.nextElementSibling; - } - return children; - } - /* c8 ignore start */ - get disabled() { - return booleanAttribute.get(this, "disabled"); - } - set disabled(value) { - booleanAttribute.set(this, "disabled", value); - } - get name() { - return this.getAttribute("name"); - } - set name(value) { - this.setAttribute("name", value); - } - /* c8 ignore stop */ - get value() { - return this.querySelector("option[selected]")?.value; - } -}; -registerHTMLClass(tagName10, HTMLSelectElement); - -// node_modules/linkedom/esm/html/br-element.js -var HTMLBRElement = class extends HTMLElement { - constructor(ownerDocument, localName = "br") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/button-element.js -var tagName11 = "button"; -var HTMLButtonElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName11) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get disabled() { - return booleanAttribute.get(this, "disabled"); - } - set disabled(value) { - booleanAttribute.set(this, "disabled", value); - } - get name() { - return this.getAttribute("name"); - } - set name(value) { - this.setAttribute("name", value); - } - get type() { - return this.getAttribute("type"); - } - set type(value) { - this.setAttribute("type", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName11, HTMLButtonElement); - -// node_modules/linkedom/esm/html/map-element.js -var HTMLMapElement = class extends HTMLElement { - constructor(ownerDocument, localName = "map") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/opt-group-element.js -var HTMLOptGroupElement = class extends HTMLElement { - constructor(ownerDocument, localName = "optgroup") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/d-list-element.js -var HTMLDListElement = class extends HTMLElement { - constructor(ownerDocument, localName = "dl") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/text-area-element.js -var tagName12 = "textarea"; -var HTMLTextAreaElement = class extends TextElement { - constructor(ownerDocument, localName = tagName12) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get disabled() { - return booleanAttribute.get(this, "disabled"); - } - set disabled(value) { - booleanAttribute.set(this, "disabled", value); - } - get name() { - return this.getAttribute("name"); - } - set name(value) { - this.setAttribute("name", value); - } - get placeholder() { - return this.getAttribute("placeholder"); - } - set placeholder(value) { - this.setAttribute("placeholder", value); - } - get type() { - return this.getAttribute("type"); - } - set type(value) { - this.setAttribute("type", value); - } - get value() { - return this.textContent; - } - set value(content) { - this.textContent = content; - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName12, HTMLTextAreaElement); - -// node_modules/linkedom/esm/html/font-element.js -var HTMLFontElement = class extends HTMLElement { - constructor(ownerDocument, localName = "font") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/div-element.js -var HTMLDivElement = class extends HTMLElement { - constructor(ownerDocument, localName = "div") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/link-element.js -var tagName13 = "link"; -var HTMLLinkElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName13) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - // copy paste from img.src, already covered - get disabled() { - return booleanAttribute.get(this, "disabled"); - } - set disabled(value) { - booleanAttribute.set(this, "disabled", value); - } - get href() { - return stringAttribute.get(this, "href").trim(); - } - set href(value) { - stringAttribute.set(this, "href", value); - } - get hreflang() { - return stringAttribute.get(this, "hreflang"); - } - set hreflang(value) { - stringAttribute.set(this, "hreflang", value); - } - get media() { - return stringAttribute.get(this, "media"); - } - set media(value) { - stringAttribute.set(this, "media", value); - } - get rel() { - return stringAttribute.get(this, "rel"); - } - set rel(value) { - stringAttribute.set(this, "rel", value); - } - get type() { - return stringAttribute.get(this, "type"); - } - set type(value) { - stringAttribute.set(this, "type", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName13, HTMLLinkElement); - -// node_modules/linkedom/esm/html/slot-element.js -var tagName14 = "slot"; -var HTMLSlotElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName14) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get name() { - return this.getAttribute("name"); - } - set name(value) { - this.setAttribute("name", value); - } - assign() { - } - assignedNodes(options) { - const isNamedSlot = !!this.name; - const hostChildNodes = this.getRootNode().host?.childNodes ?? []; - let slottables; - if (isNamedSlot) { - slottables = [...hostChildNodes].filter((node) => node.slot === this.name); - } else { - slottables = [...hostChildNodes].filter((node) => !node.slot); - } - if (options?.flatten) { - const result = []; - for (let slottable of slottables) { - if (slottable.localName === "slot") { - result.push(...slottable.assignedNodes({ flatten: true })); - } else { - result.push(slottable); - } - } - slottables = result; - } - return slottables.length ? slottables : [...this.childNodes]; - } - assignedElements(options) { - const slottables = this.assignedNodes(options).filter((n) => n.nodeType === 1); - return slottables.length ? slottables : [...this.children]; - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName14, HTMLSlotElement); - -// node_modules/linkedom/esm/html/form-element.js -var HTMLFormElement = class extends HTMLElement { - constructor(ownerDocument, localName = "form") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/image-element.js -var tagName15 = "img"; -var HTMLImageElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName15) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get alt() { - return stringAttribute.get(this, "alt"); - } - set alt(value) { - stringAttribute.set(this, "alt", value); - } - get sizes() { - return stringAttribute.get(this, "sizes"); - } - set sizes(value) { - stringAttribute.set(this, "sizes", value); - } - get src() { - return stringAttribute.get(this, "src"); - } - set src(value) { - stringAttribute.set(this, "src", value); - } - get srcset() { - return stringAttribute.get(this, "srcset"); - } - set srcset(value) { - stringAttribute.set(this, "srcset", value); - } - get title() { - return stringAttribute.get(this, "title"); - } - set title(value) { - stringAttribute.set(this, "title", value); - } - get width() { - return numericAttribute.get(this, "width"); - } - set width(value) { - numericAttribute.set(this, "width", value); - } - get height() { - return numericAttribute.get(this, "height"); - } - set height(value) { - numericAttribute.set(this, "height", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName15, HTMLImageElement); - -// node_modules/linkedom/esm/html/pre-element.js -var HTMLPreElement = class extends HTMLElement { - constructor(ownerDocument, localName = "pre") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/u-list-element.js -var HTMLUListElement = class extends HTMLElement { - constructor(ownerDocument, localName = "ul") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/meta-element.js -var tagName16 = "meta"; -var HTMLMetaElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName16) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get name() { - return stringAttribute.get(this, "name"); - } - set name(value) { - stringAttribute.set(this, "name", value); - } - get httpEquiv() { - return stringAttribute.get(this, "http-equiv"); - } - set httpEquiv(value) { - stringAttribute.set(this, "http-equiv", value); - } - get content() { - return stringAttribute.get(this, "content"); - } - set content(value) { - stringAttribute.set(this, "content", value); - } - get charset() { - return stringAttribute.get(this, "charset"); - } - set charset(value) { - stringAttribute.set(this, "charset", value); - } - get media() { - return stringAttribute.get(this, "media"); - } - set media(value) { - stringAttribute.set(this, "media", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName16, HTMLMetaElement); - -// node_modules/linkedom/esm/html/picture-element.js -var HTMLPictureElement = class extends HTMLElement { - constructor(ownerDocument, localName = "picture") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/area-element.js -var HTMLAreaElement = class extends HTMLElement { - constructor(ownerDocument, localName = "area") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/o-list-element.js -var HTMLOListElement = class extends HTMLElement { - constructor(ownerDocument, localName = "ol") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/table-caption-element.js -var HTMLTableCaptionElement = class extends HTMLElement { - constructor(ownerDocument, localName = "caption") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/anchor-element.js -var tagName17 = "a"; -var HTMLAnchorElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName17) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - // copy paste from img.src, already covered - get href() { - return encodeURI(decodeURI(stringAttribute.get(this, "href"))).trim(); - } - set href(value) { - stringAttribute.set(this, "href", decodeURI(value)); - } - get download() { - return encodeURI(decodeURI(stringAttribute.get(this, "download"))); - } - set download(value) { - stringAttribute.set(this, "download", decodeURI(value)); - } - get target() { - return stringAttribute.get(this, "target"); - } - set target(value) { - stringAttribute.set(this, "target", value); - } - get type() { - return stringAttribute.get(this, "type"); - } - set type(value) { - stringAttribute.set(this, "type", value); - } - get rel() { - return stringAttribute.get(this, "rel"); - } - set rel(value) { - stringAttribute.set(this, "rel", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName17, HTMLAnchorElement); - -// node_modules/linkedom/esm/html/label-element.js -var HTMLLabelElement = class extends HTMLElement { - constructor(ownerDocument, localName = "label") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/unknown-element.js -var HTMLUnknownElement = class extends HTMLElement { - constructor(ownerDocument, localName = "unknown") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/mod-element.js -var HTMLModElement = class extends HTMLElement { - constructor(ownerDocument, localName = "mod") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/details-element.js -var HTMLDetailsElement = class extends HTMLElement { - constructor(ownerDocument, localName = "details") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/source-element.js -var tagName18 = "source"; -var HTMLSourceElement = class extends HTMLElement { - constructor(ownerDocument, localName = tagName18) { - super(ownerDocument, localName); - } - /* c8 ignore start */ - get src() { - return stringAttribute.get(this, "src"); - } - set src(value) { - stringAttribute.set(this, "src", value); - } - get srcset() { - return stringAttribute.get(this, "srcset"); - } - set srcset(value) { - stringAttribute.set(this, "srcset", value); - } - get sizes() { - return stringAttribute.get(this, "sizes"); - } - set sizes(value) { - stringAttribute.set(this, "sizes", value); - } - get type() { - return stringAttribute.get(this, "type"); - } - set type(value) { - stringAttribute.set(this, "type", value); - } - /* c8 ignore stop */ -}; -registerHTMLClass(tagName18, HTMLSourceElement); - -// node_modules/linkedom/esm/html/track-element.js -var HTMLTrackElement = class extends HTMLElement { - constructor(ownerDocument, localName = "track") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/html/marquee-element.js -var HTMLMarqueeElement = class extends HTMLElement { - constructor(ownerDocument, localName = "marquee") { - super(ownerDocument, localName); - } -}; - -// node_modules/linkedom/esm/shared/html-classes.js -var HTMLClasses = { - HTMLElement, - HTMLTemplateElement, - HTMLHtmlElement, - HTMLScriptElement, - HTMLFrameElement, - HTMLIFrameElement, - HTMLObjectElement, - HTMLHeadElement, - HTMLBodyElement, - HTMLStyleElement, - HTMLTimeElement, - HTMLFieldSetElement, - HTMLEmbedElement, - HTMLHRElement, - HTMLProgressElement, - HTMLParagraphElement, - HTMLTableElement, - HTMLFrameSetElement, - HTMLLIElement, - HTMLBaseElement, - HTMLDataListElement, - HTMLInputElement, - HTMLParamElement, - HTMLMediaElement, - HTMLAudioElement, - HTMLHeadingElement, - HTMLDirectoryElement, - HTMLQuoteElement, - HTMLCanvasElement, - HTMLLegendElement, - HTMLOptionElement, - HTMLSpanElement, - HTMLMeterElement, - HTMLVideoElement, - HTMLTableCellElement, - HTMLTitleElement, - HTMLOutputElement, - HTMLTableRowElement, - HTMLDataElement, - HTMLMenuElement, - HTMLSelectElement, - HTMLBRElement, - HTMLButtonElement, - HTMLMapElement, - HTMLOptGroupElement, - HTMLDListElement, - HTMLTextAreaElement, - HTMLFontElement, - HTMLDivElement, - HTMLLinkElement, - HTMLSlotElement, - HTMLFormElement, - HTMLImageElement, - HTMLPreElement, - HTMLUListElement, - HTMLMetaElement, - HTMLPictureElement, - HTMLAreaElement, - HTMLOListElement, - HTMLTableCaptionElement, - HTMLAnchorElement, - HTMLLabelElement, - HTMLUnknownElement, - HTMLModElement, - HTMLDetailsElement, - HTMLSourceElement, - HTMLTrackElement, - HTMLMarqueeElement -}; - -// node_modules/linkedom/esm/shared/mime.js -var voidElements2 = { test: () => true }; -var Mime = { - "text/html": { - docType: "<!DOCTYPE html>", - ignoreCase: true, - voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i - }, - "image/svg+xml": { - docType: '<?xml version="1.0" encoding="utf-8"?>', - ignoreCase: false, - voidElements: voidElements2 - }, - "text/xml": { - docType: '<?xml version="1.0" encoding="utf-8"?>', - ignoreCase: false, - voidElements: voidElements2 - }, - "application/xml": { - docType: '<?xml version="1.0" encoding="utf-8"?>', - ignoreCase: false, - voidElements: voidElements2 - }, - "application/xhtml+xml": { - docType: '<?xml version="1.0" encoding="utf-8"?>', - ignoreCase: false, - voidElements: voidElements2 - } -}; - -// node_modules/linkedom/esm/interface/custom-event.js -var CustomEvent = class extends GlobalEvent { - constructor(type, eventInitDict = {}) { - super(type, eventInitDict); - this.detail = eventInitDict.detail; - } -}; - -// node_modules/linkedom/esm/interface/input-event.js -var InputEvent = class extends GlobalEvent { - constructor(type, inputEventInit = {}) { - super(type, inputEventInit); - this.inputType = inputEventInit.inputType; - this.data = inputEventInit.data; - this.dataTransfer = inputEventInit.dataTransfer; - this.isComposing = inputEventInit.isComposing || false; - this.ranges = inputEventInit.ranges; - } -}; - -// node_modules/linkedom/esm/interface/image.js -var ImageClass = (ownerDocument) => ( - /** - * @implements globalThis.Image - */ - class Image extends HTMLImageElement { - constructor(width, height) { - super(ownerDocument); - switch (arguments.length) { - case 1: - this.height = width; - this.width = width; - break; - case 2: - this.height = height; - this.width = width; - break; - } - } - } -); - -// node_modules/linkedom/esm/interface/range.js -var deleteContents = ({ [START]: start, [END]: end }, fragment = null) => { - setAdjacent(start[PREV], end[NEXT]); - do { - const after2 = getEnd(start); - const next = after2 === end ? after2 : after2[NEXT]; - if (fragment) - fragment.insertBefore(start, fragment[END]); - else - start.remove(); - start = next; - } while (start !== end); -}; -var Range = class _Range { - constructor() { - this[START] = null; - this[END] = null; - this.commonAncestorContainer = null; - } - /* TODO: this is more complicated than it looks - setStart(node, offset) { - this[START] = node.childNodes[offset]; - } - - setEnd(node, offset) { - this[END] = getEnd(node.childNodes[offset]); - } - //*/ - insertNode(newNode) { - this[END].parentNode.insertBefore(newNode, this[START]); - } - selectNode(node) { - this[START] = node; - this[END] = getEnd(node); - } - // TODO: SVG elements should then create contextual fragments - // that return SVG nodes - selectNodeContents(node) { - this.selectNode(node); - this.commonAncestorContainer = node; - } - surroundContents(parentNode) { - parentNode.replaceChildren(this.extractContents()); - } - setStartBefore(node) { - this[START] = node; - } - setStartAfter(node) { - this[START] = node.nextSibling; - } - setEndBefore(node) { - this[END] = getEnd(node.previousSibling); - } - setEndAfter(node) { - this[END] = getEnd(node); - } - cloneContents() { - let { [START]: start, [END]: end } = this; - const fragment = start.ownerDocument.createDocumentFragment(); - while (start !== end) { - fragment.insertBefore(start.cloneNode(true), fragment[END]); - start = getEnd(start); - if (start !== end) - start = start[NEXT]; - } - return fragment; - } - deleteContents() { - deleteContents(this); - } - extractContents() { - const fragment = this[START].ownerDocument.createDocumentFragment(); - deleteContents(this, fragment); - return fragment; - } - createContextualFragment(html) { - const { commonAncestorContainer: doc } = this; - const isSVG = "ownerSVGElement" in doc; - const document = isSVG ? doc.ownerDocument : doc; - const template = document.createElement("template"); - template.innerHTML = html; - let { content } = template; - if (isSVG) { - const childNodes = [...content.childNodes]; - content = document.createDocumentFragment(); - Object.setPrototypeOf(content, SVGElement.prototype); - content.ownerSVGElement = document; - for (const child of childNodes) { - Object.setPrototypeOf(child, SVGElement.prototype); - child.ownerSVGElement = document; - content.appendChild(child); - } - } else - this.selectNode(content); - return content; - } - cloneRange() { - const range = new _Range(); - range[START] = this[START]; - range[END] = this[END]; - return range; - } -}; - -// node_modules/linkedom/esm/interface/tree-walker.js -var isOK = ({ nodeType }, mask) => { - switch (nodeType) { - case ELEMENT_NODE: - return mask & SHOW_ELEMENT; - case TEXT_NODE: - return mask & SHOW_TEXT; - case COMMENT_NODE: - return mask & SHOW_COMMENT; - case CDATA_SECTION_NODE: - return mask & SHOW_CDATA_SECTION; - } - return 0; -}; -var TreeWalker = class { - constructor(root, whatToShow = SHOW_ALL) { - this.root = root; - this.currentNode = root; - this.whatToShow = whatToShow; - let { [NEXT]: next, [END]: end } = root; - if (root.nodeType === DOCUMENT_NODE) { - const { documentElement } = root; - next = documentElement; - end = documentElement[END]; - } - const nodes = []; - while (next && next !== end) { - if (isOK(next, whatToShow)) - nodes.push(next); - next = next[NEXT]; - } - this[PRIVATE] = { i: 0, nodes }; - } - nextNode() { - const $ = this[PRIVATE]; - this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null; - return this.currentNode; - } -}; - -// node_modules/linkedom/esm/interface/document.js -var query = (method, ownerDocument, selectors) => { - let { [NEXT]: next, [END]: end } = ownerDocument; - return method.call({ ownerDocument, [NEXT]: next, [END]: end }, selectors); -}; -var globalExports = assign( - {}, - Facades, - HTMLClasses, - { - CustomEvent, - Event: GlobalEvent, - EventTarget: DOMEventTarget, - InputEvent, - NamedNodeMap, - NodeList - } -); -var window = /* @__PURE__ */ new WeakMap(); -var Document2 = class extends NonElementParentNode { - constructor(type) { - super(null, "#document", DOCUMENT_NODE); - this[CUSTOM_ELEMENTS] = { active: false, registry: null }; - this[MUTATION_OBSERVER] = { active: false, class: null }; - this[MIME] = Mime[type]; - this[DOCTYPE] = null; - this[DOM_PARSER] = null; - this[GLOBALS] = null; - this[IMAGE] = null; - this[UPGRADE] = null; - } - /** - * @type {globalThis.Document['defaultView']} - */ - get defaultView() { - if (!window.has(this)) - window.set(this, new Proxy(globalThis, { - set: (target, name, value) => { - switch (name) { - case "addEventListener": - case "removeEventListener": - case "dispatchEvent": - this[EVENT_TARGET][name] = value; - break; - default: - target[name] = value; - break; - } - return true; - }, - get: (globalThis2, name) => { - switch (name) { - case "addEventListener": - case "removeEventListener": - case "dispatchEvent": - if (!this[EVENT_TARGET]) { - const et = this[EVENT_TARGET] = new DOMEventTarget(); - et.dispatchEvent = et.dispatchEvent.bind(et); - et.addEventListener = et.addEventListener.bind(et); - et.removeEventListener = et.removeEventListener.bind(et); - } - return this[EVENT_TARGET][name]; - case "document": - return this; - /* c8 ignore start */ - case "navigator": - return { - userAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" - }; - /* c8 ignore stop */ - case "window": - return window.get(this); - case "customElements": - if (!this[CUSTOM_ELEMENTS].registry) - this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this); - return this[CUSTOM_ELEMENTS]; - case "performance": - return import_perf_hooks.performance; - case "DOMParser": - return this[DOM_PARSER]; - case "Image": - if (!this[IMAGE]) - this[IMAGE] = ImageClass(this); - return this[IMAGE]; - case "MutationObserver": - if (!this[MUTATION_OBSERVER].class) - this[MUTATION_OBSERVER] = new MutationObserverClass(this); - return this[MUTATION_OBSERVER].class; - } - return this[GLOBALS] && this[GLOBALS][name] || globalExports[name] || globalThis2[name]; - } - })); - return window.get(this); - } - get doctype() { - const docType = this[DOCTYPE]; - if (docType) - return docType; - const { firstChild } = this; - if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE) - return this[DOCTYPE] = firstChild; - return null; - } - set doctype(value) { - if (/^([a-z:]+)(\s+system|\s+public(\s+"([^"]+)")?)?(\s+"([^"]+)")?/i.test(value)) { - const { $1: name, $4: publicId, $6: systemId } = RegExp; - this[DOCTYPE] = new DocumentType(this, name, publicId, systemId); - knownSiblings(this, this[DOCTYPE], this[NEXT]); - } - } - get documentElement() { - return this.firstElementChild; - } - get isConnected() { - return true; - } - /** - * @protected - */ - _getParent() { - return this[EVENT_TARGET]; - } - createAttribute(name) { - return new Attr(this, name); - } - createCDATASection(data) { - return new CDATASection(this, data); - } - createComment(textContent2) { - return new Comment3(this, textContent2); - } - createDocumentFragment() { - return new DocumentFragment(this); - } - createDocumentType(name, publicId, systemId) { - return new DocumentType(this, name, publicId, systemId); - } - createElement(localName) { - return new Element2(this, localName); - } - createRange() { - const range = new Range(); - range.commonAncestorContainer = this; - return range; - } - createTextNode(textContent2) { - return new Text3(this, textContent2); - } - createTreeWalker(root, whatToShow = -1) { - return new TreeWalker(root, whatToShow); - } - createNodeIterator(root, whatToShow = -1) { - return this.createTreeWalker(root, whatToShow); - } - createEvent(name) { - const event = create(name === "Event" ? new GlobalEvent("") : new CustomEvent("")); - event.initEvent = event.initCustomEvent = (type, canBubble = false, cancelable = false, detail) => { - event.bubbles = !!canBubble; - defineProperties(event, { - type: { value: type }, - canBubble: { value: canBubble }, - cancelable: { value: cancelable }, - detail: { value: detail } - }); - }; - return event; - } - cloneNode(deep = false) { - const { - constructor, - [CUSTOM_ELEMENTS]: customElements2, - [DOCTYPE]: doctype - } = this; - const document = new constructor(); - document[CUSTOM_ELEMENTS] = customElements2; - if (deep) { - const end = document[END]; - const { childNodes } = this; - for (let { length } = childNodes, i = 0; i < length; i++) - document.insertBefore(childNodes[i].cloneNode(true), end); - if (doctype) - document[DOCTYPE] = childNodes[0]; - } - return document; - } - importNode(externalNode) { - const deep = 1 < arguments.length && !!arguments[1]; - const node = externalNode.cloneNode(deep); - const { [CUSTOM_ELEMENTS]: customElements2 } = this; - const { active } = customElements2; - const upgrade = (element) => { - const { ownerDocument, nodeType } = element; - element.ownerDocument = this; - if (active && ownerDocument !== this && nodeType === ELEMENT_NODE) - customElements2.upgrade(element); - }; - upgrade(node); - if (deep) { - switch (node.nodeType) { - case ELEMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: { - let { [NEXT]: next, [END]: end } = node; - while (next !== end) { - if (next.nodeType === ELEMENT_NODE) - upgrade(next); - next = next[NEXT]; - } - break; - } - } - } - return node; - } - toString() { - return this.childNodes.join(""); - } - querySelector(selectors) { - return query(super.querySelector, this, selectors); - } - querySelectorAll(selectors) { - return query(super.querySelectorAll, this, selectors); - } - /* c8 ignore start */ - getElementsByTagNameNS(_, name) { - return this.getElementsByTagName(name); - } - createAttributeNS(_, name) { - return this.createAttribute(name); - } - createElementNS(nsp, localName, options) { - return nsp === SVG_NAMESPACE ? new SVGElement(this, localName, null) : this.createElement(localName, options); - } - /* c8 ignore stop */ -}; -setPrototypeOf( - globalExports.Document = function Document3() { - illegalConstructor(); - }, - Document2 -).prototype = Document2.prototype; - -// node_modules/linkedom/esm/html/document.js -var createHTMLElement = (ownerDocument, builtin, localName, options) => { - if (!builtin && htmlClasses.has(localName)) { - const Class = htmlClasses.get(localName); - return new Class(ownerDocument, localName); - } - const { [CUSTOM_ELEMENTS]: { active, registry } } = ownerDocument; - if (active) { - const ce = builtin ? options.is : localName; - if (registry.has(ce)) { - const { Class } = registry.get(ce); - const element = new Class(ownerDocument, localName); - customElements.set(element, { connected: false }); - return element; - } - } - return new HTMLElement(ownerDocument, localName); -}; -var HTMLDocument = class extends Document2 { - constructor() { - super("text/html"); - } - get all() { - const nodeList = new NodeList(); - let { [NEXT]: next, [END]: end } = this; - while (next !== end) { - switch (next.nodeType) { - case ELEMENT_NODE: - nodeList.push(next); - break; - } - next = next[NEXT]; - } - return nodeList; - } - /** - * @type HTMLHeadElement - */ - get head() { - const { documentElement } = this; - let { firstElementChild } = documentElement; - if (!firstElementChild || firstElementChild.tagName !== "HEAD") { - firstElementChild = this.createElement("head"); - documentElement.prepend(firstElementChild); - } - return firstElementChild; - } - /** - * @type HTMLBodyElement - */ - get body() { - const { head } = this; - let { nextElementSibling: nextElementSibling3 } = head; - if (!nextElementSibling3 || nextElementSibling3.tagName !== "BODY") { - nextElementSibling3 = this.createElement("body"); - head.after(nextElementSibling3); - } - return nextElementSibling3; - } - /** - * @type HTMLTitleElement - */ - get title() { - const { head } = this; - return head.getElementsByTagName("title").at(0)?.textContent || ""; - } - set title(textContent2) { - const { head } = this; - let title = head.getElementsByTagName("title").at(0); - if (title) - title.textContent = textContent2; - else { - head.insertBefore( - this.createElement("title"), - head.firstChild - ).textContent = textContent2; - } - } - createElement(localName, options) { - const builtin = !!(options && options.is); - const element = createHTMLElement(this, builtin, localName, options); - if (builtin) - element.setAttribute("is", options.is); - return element; - } -}; - -// node_modules/linkedom/esm/svg/document.js -var SVGDocument = class extends Document2 { - constructor() { - super("image/svg+xml"); - } - toString() { - return this[MIME].docType + super.toString(); - } -}; - -// node_modules/linkedom/esm/xml/document.js -var XMLDocument = class extends Document2 { - constructor() { - super("text/xml"); - } - toString() { - return this[MIME].docType + super.toString(); - } -}; - -// node_modules/linkedom/esm/dom/parser.js -var DOMParser = class _DOMParser { - /** @typedef {{ "text/html": HTMLDocument, "image/svg+xml": SVGDocument, "text/xml": XMLDocument }} MimeToDoc */ - /** - * @template {keyof MimeToDoc} MIME - * @param {string} markupLanguage - * @param {MIME} mimeType - * @returns {MimeToDoc[MIME]} - */ - parseFromString(markupLanguage, mimeType, globals = null) { - let isHTML = false, document; - if (mimeType === "text/html") { - isHTML = true; - document = new HTMLDocument(); - } else if (mimeType === "image/svg+xml") - document = new SVGDocument(); - else - document = new XMLDocument(); - document[DOM_PARSER] = _DOMParser; - if (globals) - document[GLOBALS] = globals; - if (isHTML && markupLanguage === "...") - markupLanguage = "<!doctype html><html><head></head><body></body></html>"; - return markupLanguage ? parseFromString(document, isHTML, markupLanguage) : document; - } -}; - -// node_modules/linkedom/esm/shared/parse-json.js -var { parse: parse4 } = JSON; -var append3 = (parentNode, node, end) => { - node.parentNode = parentNode; - knownSiblings(end[PREV], node, end); -}; -var createHTMLElement2 = (ownerDocument, localName) => { - if (htmlClasses.has(localName)) { - const Class = htmlClasses.get(localName); - return new Class(ownerDocument, localName); - } - return new HTMLElement(ownerDocument, localName); -}; -var parseJSON = (value) => { - const array = typeof value === "string" ? parse4(value) : value; - const { length } = array; - const document = new HTMLDocument(); - let parentNode = document, end = parentNode[END], svg = false, i = 0; - while (i < length) { - let nodeType = array[i++]; - switch (nodeType) { - case ELEMENT_NODE: { - const localName = array[i++]; - const isSVG = svg || localName === "svg" || localName === "SVG"; - const element = isSVG ? new SVGElement(document, localName, parentNode.ownerSVGElement || null) : createHTMLElement2(document, localName); - knownBoundaries(end[PREV], element, end); - element.parentNode = parentNode; - parentNode = element; - end = parentNode[END]; - svg = isSVG; - break; - } - case ATTRIBUTE_NODE: { - const name = array[i++]; - const value2 = typeof array[i] === "string" ? array[i++] : ""; - const attr = new Attr(document, name, value2); - attr.ownerElement = parentNode; - knownSiblings(end[PREV], attr, end); - break; - } - case TEXT_NODE: - append3(parentNode, new Text3(document, array[i++]), end); - break; - case COMMENT_NODE: - append3(parentNode, new Comment3(document, array[i++]), end); - break; - case CDATA_SECTION_NODE: - append3(parentNode, new CDATASection(document, array[i++]), end); - break; - case DOCUMENT_TYPE_NODE: { - const args = [document]; - while (typeof array[i] === "string") - args.push(array[i++]); - if (args.length === 3 && /\.dtd$/i.test(args[2])) - args.splice(2, 0, ""); - append3(parentNode, new DocumentType(...args), end); - break; - } - case DOCUMENT_FRAGMENT_NODE: - parentNode = document.createDocumentFragment(); - end = parentNode[END]; - /* eslint no-fallthrough:0 */ - case DOCUMENT_NODE: - break; - default: - do { - nodeType -= NODE_END; - if (svg && !parentNode.ownerSVGElement) - svg = false; - parentNode = parentNode.parentNode || parentNode; - } while (nodeType < 0); - end = parentNode[END]; - break; - } - } - switch (i && array[0]) { - case ELEMENT_NODE: - return document.firstElementChild; - case DOCUMENT_FRAGMENT_NODE: - return parentNode; - } - return document; -}; -var toJSON = (node) => node.toJSON(); - -// node_modules/linkedom/esm/interface/node-filter.js -var NodeFilter = class { - static get SHOW_ALL() { - return SHOW_ALL; - } - static get SHOW_ELEMENT() { - return SHOW_ELEMENT; - } - static get SHOW_COMMENT() { - return SHOW_COMMENT; - } - static get SHOW_CDATA_SECTION() { - return SHOW_CDATA_SECTION; - } - static get SHOW_TEXT() { - return SHOW_TEXT; - } -}; - -// node_modules/linkedom/esm/index.js -var parseHTML = (html, globals = null) => new DOMParser().parseFromString( - html, - "text/html", - globals -).defaultView; -function Document4() { - illegalConstructor(); -} -setPrototypeOf(Document4, Document2).prototype = Document2.prototype; -export { - Attr2 as Attr, - CDATASection2 as CDATASection, - CharacterData2 as CharacterData, - Comment4 as Comment, - CustomEvent, - DOMParser, - Document4 as Document, - DocumentFragment2 as DocumentFragment, - DocumentType2 as DocumentType, - Element3 as Element, - GlobalEvent as Event, - DOMEventTarget as EventTarget, - Facades, - HTMLAnchorElement, - HTMLAreaElement, - HTMLAudioElement, - HTMLBRElement, - HTMLBaseElement, - HTMLBodyElement, - HTMLButtonElement, - HTMLCanvasElement, - HTMLClasses, - HTMLDListElement, - HTMLDataElement, - HTMLDataListElement, - HTMLDetailsElement, - HTMLDirectoryElement, - HTMLDivElement, - HTMLElement, - HTMLEmbedElement, - HTMLFieldSetElement, - HTMLFontElement, - HTMLFormElement, - HTMLFrameElement, - HTMLFrameSetElement, - HTMLHRElement, - HTMLHeadElement, - HTMLHeadingElement, - HTMLHtmlElement, - HTMLIFrameElement, - HTMLImageElement, - HTMLInputElement, - HTMLLIElement, - HTMLLabelElement, - HTMLLegendElement, - HTMLLinkElement, - HTMLMapElement, - HTMLMarqueeElement, - HTMLMediaElement, - HTMLMenuElement, - HTMLMetaElement, - HTMLMeterElement, - HTMLModElement, - HTMLOListElement, - HTMLObjectElement, - HTMLOptGroupElement, - HTMLOptionElement, - HTMLOutputElement, - HTMLParagraphElement, - HTMLParamElement, - HTMLPictureElement, - HTMLPreElement, - HTMLProgressElement, - HTMLQuoteElement, - HTMLScriptElement, - HTMLSelectElement, - HTMLSlotElement, - HTMLSourceElement, - HTMLSpanElement, - HTMLStyleElement, - HTMLTableCaptionElement, - HTMLTableCellElement, - HTMLTableElement, - HTMLTableRowElement, - HTMLTemplateElement, - HTMLTextAreaElement, - HTMLTimeElement, - HTMLTitleElement, - HTMLTrackElement, - HTMLUListElement, - HTMLUnknownElement, - HTMLVideoElement, - InputEvent, - Node3 as Node, - NodeFilter, - NodeList, - SVGElement2 as SVGElement, - ShadowRoot2 as ShadowRoot, - Text4 as Text, - illegalConstructor, - parseHTML, - parseJSON, - toJSON -}; -//# sourceMappingURL=linkedom.js.map diff --git a/vendor/yomitan/lib/linkedom.js.map b/vendor/yomitan/lib/linkedom.js.map deleted file mode 100644 index c896b9a7..00000000 --- a/vendor/yomitan/lib/linkedom.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/linkedom/commonjs/perf_hooks.cjs", "../../node_modules/boolbase/index.js", "../../node_modules/cssom/lib/StyleSheet.js", "../../node_modules/cssom/lib/CSSRule.js", "../../node_modules/cssom/lib/CSSStyleRule.js", "../../node_modules/cssom/lib/CSSStyleSheet.js", "../../node_modules/cssom/lib/MediaList.js", "../../node_modules/cssom/lib/CSSImportRule.js", "../../node_modules/cssom/lib/CSSGroupingRule.js", "../../node_modules/cssom/lib/CSSConditionRule.js", "../../node_modules/cssom/lib/CSSMediaRule.js", "../../node_modules/cssom/lib/CSSSupportsRule.js", "../../node_modules/cssom/lib/CSSFontFaceRule.js", "../../node_modules/cssom/lib/CSSHostRule.js", "../../node_modules/cssom/lib/CSSKeyframeRule.js", "../../node_modules/cssom/lib/CSSKeyframesRule.js", "../../node_modules/cssom/lib/CSSValue.js", "../../node_modules/cssom/lib/CSSValueExpression.js", "../../node_modules/cssom/lib/MatcherList.js", "../../node_modules/cssom/lib/CSSDocumentRule.js", "../../node_modules/cssom/lib/parse.js", "../../node_modules/cssom/lib/CSSStyleDeclaration.js", "../../node_modules/cssom/lib/clone.js", "../../node_modules/cssom/lib/index.js", "../../node_modules/linkedom/commonjs/canvas-shim.cjs", "../../node_modules/linkedom/commonjs/canvas.cjs", "../../node_modules/linkedom/esm/shared/symbols.js", "../../node_modules/htmlparser2/src/index.ts", "../../node_modules/htmlparser2/node_modules/entities/src/generated/decode-data-html.ts", "../../node_modules/htmlparser2/node_modules/entities/src/generated/decode-data-xml.ts", "../../node_modules/htmlparser2/node_modules/entities/src/decode-codepoint.ts", "../../node_modules/htmlparser2/node_modules/entities/src/decode.ts", "../../node_modules/htmlparser2/src/Tokenizer.ts", "../../node_modules/htmlparser2/src/Parser.ts", "../../node_modules/domelementtype/lib/esm/index.js", "../../node_modules/domhandler/lib/esm/node.js", "../../node_modules/domhandler/lib/esm/index.js", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/index.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/encode-html.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/escape.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/index.ts", "../../node_modules/dom-serializer/lib/esm/foreignNames.js", "../../node_modules/dom-serializer/lib/esm/index.js", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/stringify.ts", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/traversal.ts", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/manipulation.ts", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/querying.ts", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/legacy.ts", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/helpers.ts", "https://raw.githubusercontent.com/fb55/domutils/0ab8bcf1ecfc70dfc93291a4cb2496578ac25e9c/src/feeds.ts", "../../node_modules/linkedom/esm/shared/constants.js", "../../node_modules/linkedom/esm/shared/object.js", "../../node_modules/linkedom/esm/shared/utils.js", "../../node_modules/linkedom/esm/shared/shadow-roots.js", "../../node_modules/linkedom/esm/interface/custom-element-registry.js", "../../node_modules/linkedom/esm/shared/parse-from-string.js", "../../node_modules/linkedom/esm/shared/register-html-class.js", "../../node_modules/linkedom/esm/interface/document.js", "../../node_modules/linkedom/esm/shared/jsdon.js", "../../node_modules/linkedom/esm/interface/mutation-observer.js", "../../node_modules/linkedom/esm/shared/attributes.js", "../../node_modules/linkedom/esm/interface/event-target.js", "../../node_modules/linkedom/esm/interface/node-list.js", "../../node_modules/linkedom/esm/interface/node.js", "../../node_modules/linkedom/esm/shared/text-escaper.js", "../../node_modules/linkedom/esm/interface/attr.js", "../../node_modules/linkedom/esm/shared/node.js", "../../node_modules/linkedom/esm/mixin/non-document-type-child-node.js", "../../node_modules/linkedom/esm/mixin/child-node.js", "../../node_modules/linkedom/esm/interface/character-data.js", "../../node_modules/linkedom/esm/interface/cdata-section.js", "../../node_modules/linkedom/esm/interface/comment.js", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/index.ts", "../../node_modules/css-what/lib/es/types.js", "../../node_modules/css-what/lib/es/parse.js", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/compile.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/sort.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/attributes.ts", "https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/parse.ts", "https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/compile.ts", "https://raw.githubusercontent.com/fb55/nth-check/639fd2a4000b69f82350aad8c34cb43f77e483ba/src/index.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/filters.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/pseudos.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/aliases.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/subselects.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/pseudo-selectors/index.ts", "https://raw.githubusercontent.com/fb55/css-select/0f0725a9dfeddd2fdb54eda9656cdbab5bbf6be6/src/general.ts", "../../node_modules/linkedom/esm/shared/matches.js", "../../node_modules/linkedom/esm/interface/text.js", "../../node_modules/linkedom/esm/mixin/parent-node.js", "../../node_modules/linkedom/esm/mixin/non-element-parent-node.js", "../../node_modules/linkedom/esm/interface/document-fragment.js", "../../node_modules/linkedom/esm/interface/document-type.js", "../../node_modules/linkedom/esm/mixin/inner-html.js", "../../node_modules/uhyphen/esm/index.js", "../../node_modules/linkedom/esm/dom/string-map.js", "../../node_modules/linkedom/esm/dom/token-list.js", "../../node_modules/linkedom/esm/interface/css-style-declaration.js", "../../node_modules/linkedom/esm/interface/event.js", "../../node_modules/linkedom/esm/interface/named-node-map.js", "../../node_modules/linkedom/esm/interface/shadow-root.js", "../../node_modules/linkedom/esm/interface/element.js", "../../node_modules/linkedom/esm/svg/element.js", "../../node_modules/linkedom/esm/shared/facades.js", "../../node_modules/linkedom/esm/html/element.js", "../../node_modules/linkedom/esm/html/template-element.js", "../../node_modules/linkedom/esm/html/html-element.js", "../../node_modules/linkedom/esm/html/text-element.js", "../../node_modules/linkedom/esm/html/script-element.js", "../../node_modules/linkedom/esm/html/frame-element.js", "../../node_modules/linkedom/esm/html/i-frame-element.js", "../../node_modules/linkedom/esm/html/object-element.js", "../../node_modules/linkedom/esm/html/head-element.js", "../../node_modules/linkedom/esm/html/body-element.js", "../../node_modules/linkedom/esm/html/style-element.js", "../../node_modules/linkedom/esm/html/time-element.js", "../../node_modules/linkedom/esm/html/field-set-element.js", "../../node_modules/linkedom/esm/html/embed-element.js", "../../node_modules/linkedom/esm/html/hr-element.js", "../../node_modules/linkedom/esm/html/progress-element.js", "../../node_modules/linkedom/esm/html/paragraph-element.js", "../../node_modules/linkedom/esm/html/table-element.js", "../../node_modules/linkedom/esm/html/frame-set-element.js", "../../node_modules/linkedom/esm/html/li-element.js", "../../node_modules/linkedom/esm/html/base-element.js", "../../node_modules/linkedom/esm/html/data-list-element.js", "../../node_modules/linkedom/esm/html/input-element.js", "../../node_modules/linkedom/esm/html/param-element.js", "../../node_modules/linkedom/esm/html/media-element.js", "../../node_modules/linkedom/esm/html/audio-element.js", "../../node_modules/linkedom/esm/html/heading-element.js", "../../node_modules/linkedom/esm/html/directory-element.js", "../../node_modules/linkedom/esm/html/quote-element.js", "../../node_modules/linkedom/esm/html/canvas-element.js", "../../node_modules/linkedom/esm/html/legend-element.js", "../../node_modules/linkedom/esm/html/option-element.js", "../../node_modules/linkedom/esm/html/span-element.js", "../../node_modules/linkedom/esm/html/meter-element.js", "../../node_modules/linkedom/esm/html/video-element.js", "../../node_modules/linkedom/esm/html/table-cell-element.js", "../../node_modules/linkedom/esm/html/title-element.js", "../../node_modules/linkedom/esm/html/output-element.js", "../../node_modules/linkedom/esm/html/table-row-element.js", "../../node_modules/linkedom/esm/html/data-element.js", "../../node_modules/linkedom/esm/html/menu-element.js", "../../node_modules/linkedom/esm/html/select-element.js", "../../node_modules/linkedom/esm/html/br-element.js", "../../node_modules/linkedom/esm/html/button-element.js", "../../node_modules/linkedom/esm/html/map-element.js", "../../node_modules/linkedom/esm/html/opt-group-element.js", "../../node_modules/linkedom/esm/html/d-list-element.js", "../../node_modules/linkedom/esm/html/text-area-element.js", "../../node_modules/linkedom/esm/html/font-element.js", "../../node_modules/linkedom/esm/html/div-element.js", "../../node_modules/linkedom/esm/html/link-element.js", "../../node_modules/linkedom/esm/html/slot-element.js", "../../node_modules/linkedom/esm/html/form-element.js", "../../node_modules/linkedom/esm/html/image-element.js", "../../node_modules/linkedom/esm/html/pre-element.js", "../../node_modules/linkedom/esm/html/u-list-element.js", "../../node_modules/linkedom/esm/html/meta-element.js", "../../node_modules/linkedom/esm/html/picture-element.js", "../../node_modules/linkedom/esm/html/area-element.js", "../../node_modules/linkedom/esm/html/o-list-element.js", "../../node_modules/linkedom/esm/html/table-caption-element.js", "../../node_modules/linkedom/esm/html/anchor-element.js", "../../node_modules/linkedom/esm/html/label-element.js", "../../node_modules/linkedom/esm/html/unknown-element.js", "../../node_modules/linkedom/esm/html/mod-element.js", "../../node_modules/linkedom/esm/html/details-element.js", "../../node_modules/linkedom/esm/html/source-element.js", "../../node_modules/linkedom/esm/html/track-element.js", "../../node_modules/linkedom/esm/html/marquee-element.js", "../../node_modules/linkedom/esm/shared/html-classes.js", "../../node_modules/linkedom/esm/shared/mime.js", "../../node_modules/linkedom/esm/interface/custom-event.js", "../../node_modules/linkedom/esm/interface/input-event.js", "../../node_modules/linkedom/esm/interface/image.js", "../../node_modules/linkedom/esm/interface/range.js", "../../node_modules/linkedom/esm/interface/tree-walker.js", "../../node_modules/linkedom/esm/html/document.js", "../../node_modules/linkedom/esm/svg/document.js", "../../node_modules/linkedom/esm/xml/document.js", "../../node_modules/linkedom/esm/dom/parser.js", "../../node_modules/linkedom/esm/shared/parse-json.js", "../../node_modules/linkedom/esm/interface/node-filter.js", "../../node_modules/linkedom/esm/index.js"], - "sourcesContent": ["/* c8 ignore start */\ntry {\n const {performance} = require('perf_hooks');\n exports.performance = performance;\n}\ncatch (fallback) {\n exports.performance = {now() { return +new Date; }};\n}\n/* c8 ignore stop */\n", "module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};", "//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-stylesheet-interface\n */\nCSSOM.StyleSheet = function StyleSheet() {\n\tthis.parentStyleSheet = null;\n};\n\n\n//.CommonJS\nexports.StyleSheet = CSSOM.StyleSheet;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-cssrule-interface\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSRule\n */\nCSSOM.CSSRule = function CSSRule() {\n\tthis.parentRule = null;\n\tthis.parentStyleSheet = null;\n};\n\nCSSOM.CSSRule.UNKNOWN_RULE = 0; // obsolete\nCSSOM.CSSRule.STYLE_RULE = 1;\nCSSOM.CSSRule.CHARSET_RULE = 2; // obsolete\nCSSOM.CSSRule.IMPORT_RULE = 3;\nCSSOM.CSSRule.MEDIA_RULE = 4;\nCSSOM.CSSRule.FONT_FACE_RULE = 5;\nCSSOM.CSSRule.PAGE_RULE = 6;\nCSSOM.CSSRule.KEYFRAMES_RULE = 7;\nCSSOM.CSSRule.KEYFRAME_RULE = 8;\nCSSOM.CSSRule.MARGIN_RULE = 9;\nCSSOM.CSSRule.NAMESPACE_RULE = 10;\nCSSOM.CSSRule.COUNTER_STYLE_RULE = 11;\nCSSOM.CSSRule.SUPPORTS_RULE = 12;\nCSSOM.CSSRule.DOCUMENT_RULE = 13;\nCSSOM.CSSRule.FONT_FEATURE_VALUES_RULE = 14;\nCSSOM.CSSRule.VIEWPORT_RULE = 15;\nCSSOM.CSSRule.REGION_STYLE_RULE = 16;\n\n\nCSSOM.CSSRule.prototype = {\n\tconstructor: CSSOM.CSSRule\n\t//FIXME\n};\n\n\n//.CommonJS\nexports.CSSRule = CSSOM.CSSRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssstylerule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule\n */\nCSSOM.CSSStyleRule = function CSSStyleRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.selectorText = \"\";\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;\nCSSOM.CSSStyleRule.prototype.type = 1;\n\nObject.defineProperty(CSSOM.CSSStyleRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar text;\n\t\tif (this.selectorText) {\n\t\t\ttext = this.selectorText + \" {\" + this.style.cssText + \"}\";\n\t\t} else {\n\t\t\ttext = \"\";\n\t\t}\n\t\treturn text;\n\t},\n\tset: function(cssText) {\n\t\tvar rule = CSSOM.CSSStyleRule.parse(cssText);\n\t\tthis.style = rule.style;\n\t\tthis.selectorText = rule.selectorText;\n\t}\n});\n\n\n/**\n * NON-STANDARD\n * lightweight version of parse.js.\n * @param {string} ruleText\n * @return CSSStyleRule\n */\nCSSOM.CSSStyleRule.parse = function(ruleText) {\n\tvar i = 0;\n\tvar state = \"selector\";\n\tvar index;\n\tvar j = i;\n\tvar buffer = \"\";\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true\n\t};\n\n\tvar styleRule = new CSSOM.CSSStyleRule();\n\tvar name, priority=\"\";\n\n\tfor (var character; (character = ruleText.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\t// Squash 2 or more white-spaces in the row into 1\n\t\t\t\tswitch (ruleText.charAt(i - 1)) {\n\t\t\t\t\tcase \" \":\n\t\t\t\t\tcase \"\\t\":\n\t\t\t\t\tcase \"\\r\":\n\t\t\t\t\tcase \"\\n\":\n\t\t\t\t\tcase \"\\f\":\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuffer += \" \";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf('\"', j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow '\" is missing';\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tj = i + 1;\n\t\t\tindex = ruleText.indexOf(\"'\", j) + 1;\n\t\t\tif (!index) {\n\t\t\t\tthrow \"' is missing\";\n\t\t\t}\n\t\t\tbuffer += ruleText.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (ruleText.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = ruleText.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new SyntaxError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && ruleText.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"name\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tif (state === \"value\") {\n\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\tpriority = \"\";\n\t\t\t\tbuffer = \"\";\n\t\t\t} else if (state === \"name\") {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tstate = \"selector\";\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\t}\n\t}\n\n\treturn styleRule;\n\n};\n\n\n//.CommonJS\nexports.CSSStyleRule = CSSOM.CSSStyleRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tStyleSheet: require(\"./StyleSheet\").StyleSheet,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet\n */\nCSSOM.CSSStyleSheet = function CSSStyleSheet() {\n\tCSSOM.StyleSheet.call(this);\n\tthis.cssRules = [];\n};\n\n\nCSSOM.CSSStyleSheet.prototype = new CSSOM.StyleSheet();\nCSSOM.CSSStyleSheet.prototype.constructor = CSSOM.CSSStyleSheet;\n\n\n/**\n * Used to insert a new rule into the style sheet. The new rule now becomes part of the cascade.\n *\n * sheet = new Sheet(\"body {margin: 0}\")\n * sheet.toString()\n * -> \"body{margin:0;}\"\n * sheet.insertRule(\"img {border: none}\", 0)\n * -> 0\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n *\n * @param {string} rule\n * @param {number} index\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-insertRule\n * @return {number} The index within the style sheet's rule collection of the newly inserted rule.\n */\nCSSOM.CSSStyleSheet.prototype.insertRule = function(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentStyleSheet = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n\n/**\n * Used to delete a rule from the style sheet.\n *\n * sheet = new Sheet(\"img{border:none} body{margin:0}\")\n * sheet.toString()\n * -> \"img{border:none;}body{margin:0;}\"\n * sheet.deleteRule(0)\n * sheet.toString()\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the style sheet's rule list of the rule to remove.\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleSheet-deleteRule\n */\nCSSOM.CSSStyleSheet.prototype.deleteRule = function(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1);\n};\n\n\n/**\n * NON-STANDARD\n * @return {string} serialize stylesheet\n */\nCSSOM.CSSStyleSheet.prototype.toString = function() {\n\tvar result = \"\";\n\tvar rules = this.cssRules;\n\tfor (var i=0; i<rules.length; i++) {\n\t\tresult += rules[i].cssText + \"\\n\";\n\t}\n\treturn result;\n};\n\n\n//.CommonJS\nexports.CSSStyleSheet = CSSOM.CSSStyleSheet;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleSheet.js\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#the-medialist-interface\n */\nCSSOM.MediaList = function MediaList(){\n\tthis.length = 0;\n};\n\nCSSOM.MediaList.prototype = {\n\n\tconstructor: CSSOM.MediaList,\n\n\t/**\n\t * @return {string}\n\t */\n\tget mediaText() {\n\t\treturn Array.prototype.join.call(this, \", \");\n\t},\n\n\t/**\n\t * @param {string} value\n\t */\n\tset mediaText(value) {\n\t\tvar values = value.split(\",\");\n\t\tvar length = this.length = values.length;\n\t\tfor (var i=0; i<length; i++) {\n\t\t\tthis[i] = values[i].trim();\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tappendMedium: function(medium) {\n\t\tif (Array.prototype.indexOf.call(this, medium) === -1) {\n\t\t\tthis[this.length] = medium;\n\t\t\tthis.length++;\n\t\t}\n\t},\n\n\t/**\n\t * @param {string} medium\n\t */\n\tdeleteMedium: function(medium) {\n\t\tvar index = Array.prototype.indexOf.call(this, medium);\n\t\tif (index !== -1) {\n\t\t\tArray.prototype.splice.call(this, index, 1);\n\t\t}\n\t}\n\n};\n\n\n//.CommonJS\nexports.MediaList = CSSOM.MediaList;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssimportrule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSImportRule\n */\nCSSOM.CSSImportRule = function CSSImportRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.href = \"\";\n\tthis.media = new CSSOM.MediaList();\n\tthis.styleSheet = new CSSOM.CSSStyleSheet();\n};\n\nCSSOM.CSSImportRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSImportRule.prototype.constructor = CSSOM.CSSImportRule;\nCSSOM.CSSImportRule.prototype.type = 3;\n\nObject.defineProperty(CSSOM.CSSImportRule.prototype, \"cssText\", {\n get: function() {\n var mediaText = this.media.mediaText;\n return \"@import url(\" + this.href + \")\" + (mediaText ? \" \" + mediaText : \"\") + \";\";\n },\n set: function(cssText) {\n var i = 0;\n\n /**\n * @import url(partial.css) screen, handheld;\n * || |\n * after-import media\n * |\n * url\n */\n var state = '';\n\n var buffer = '';\n var index;\n for (var character; (character = cssText.charAt(i)); i++) {\n\n switch (character) {\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n case '\\f':\n if (state === 'after-import') {\n state = 'url';\n } else {\n buffer += character;\n }\n break;\n\n case '@':\n if (!state && cssText.indexOf('@import', i) === i) {\n state = 'after-import';\n i += 'import'.length;\n buffer = '';\n }\n break;\n\n case 'u':\n if (state === 'url' && cssText.indexOf('url(', i) === i) {\n index = cssText.indexOf(')', i + 1);\n if (index === -1) {\n throw i + ': \")\" not found';\n }\n i += 'url('.length;\n var url = cssText.slice(i, index);\n if (url[0] === url[url.length - 1]) {\n if (url[0] === '\"' || url[0] === \"'\") {\n url = url.slice(1, -1);\n }\n }\n this.href = url;\n i = index;\n state = 'media';\n }\n break;\n\n case '\"':\n if (state === 'url') {\n index = cssText.indexOf('\"', i + 1);\n if (!index) {\n throw i + \": '\\\"' not found\";\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case \"'\":\n if (state === 'url') {\n index = cssText.indexOf(\"'\", i + 1);\n if (!index) {\n throw i + ': \"\\'\" not found';\n }\n this.href = cssText.slice(i + 1, index);\n i = index;\n state = 'media';\n }\n break;\n\n case ';':\n if (state === 'media') {\n if (buffer) {\n this.media.mediaText = buffer.trim();\n }\n }\n break;\n\n default:\n if (state === 'media') {\n buffer += character;\n }\n break;\n }\n }\n }\n});\n\n\n//.CommonJS\nexports.CSSImportRule = CSSOM.CSSImportRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/cssom/#the-cssgroupingrule-interface\n */\nCSSOM.CSSGroupingRule = function CSSGroupingRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSGroupingRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSGroupingRule.prototype.constructor = CSSOM.CSSGroupingRule;\n\n\n/**\n * Used to insert a new CSS rule to a list of CSS rules.\n *\n * @example\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n * cssGroupingRule.insertRule(\"img{border:none;}\", 1)\n * -> 1\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}img{border:none;}\"\n *\n * @param {string} rule\n * @param {number} [index]\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-insertrule\n * @return {number} The index within the grouping rule's collection of the newly inserted rule.\n */\n CSSOM.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index) {\n\tif (index < 0 || index > this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tvar cssRule = CSSOM.parse(rule).cssRules[0];\n\tcssRule.parentRule = this;\n\tthis.cssRules.splice(index, 0, cssRule);\n\treturn index;\n};\n\n/**\n * Used to delete a rule from the grouping rule.\n *\n * cssGroupingRule.cssText\n * -> \"img{border:none;}body{margin:0;}\"\n * cssGroupingRule.deleteRule(0)\n * cssGroupingRule.cssText\n * -> \"body{margin:0;}\"\n *\n * @param {number} index within the grouping rule's rule list of the rule to remove.\n * @see https://www.w3.org/TR/cssom-1/#dom-cssgroupingrule-deleterule\n */\n CSSOM.CSSGroupingRule.prototype.deleteRule = function deleteRule(index) {\n\tif (index < 0 || index >= this.cssRules.length) {\n\t\tthrow new RangeError(\"INDEX_SIZE_ERR\");\n\t}\n\tthis.cssRules.splice(index, 1)[0].parentRule = null;\n};\n\n//.CommonJS\nexports.CSSGroupingRule = CSSOM.CSSGroupingRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://www.w3.org/TR/css-conditional-3/#the-cssconditionrule-interface\n */\nCSSOM.CSSConditionRule = function CSSConditionRule() {\n CSSOM.CSSGroupingRule.call(this);\n this.cssRules = [];\n};\n\nCSSOM.CSSConditionRule.prototype = new CSSOM.CSSGroupingRule();\nCSSOM.CSSConditionRule.prototype.constructor = CSSOM.CSSConditionRule;\nCSSOM.CSSConditionRule.prototype.conditionText = ''\nCSSOM.CSSConditionRule.prototype.cssText = ''\n\n//.CommonJS\nexports.CSSConditionRule = CSSOM.CSSConditionRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tMediaList: require(\"./MediaList\").MediaList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#cssmediarule\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSMediaRule\n */\nCSSOM.CSSMediaRule = function CSSMediaRule() {\n\tCSSOM.CSSConditionRule.call(this);\n\tthis.media = new CSSOM.MediaList();\n};\n\nCSSOM.CSSMediaRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSMediaRule.prototype.constructor = CSSOM.CSSMediaRule;\nCSSOM.CSSMediaRule.prototype.type = 4;\n\n// https://opensource.apple.com/source/WebCore/WebCore-7611.1.21.161.3/css/CSSMediaRule.cpp\nObject.defineProperties(CSSOM.CSSMediaRule.prototype, {\n \"conditionText\": {\n get: function() {\n return this.media.mediaText;\n },\n set: function(value) {\n this.media.mediaText = value;\n },\n configurable: true,\n enumerable: true\n },\n \"cssText\": {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@media \" + this.media.mediaText + \" {\" + cssTexts.join(\"\") + \"}\";\n },\n configurable: true,\n enumerable: true\n }\n});\n\n\n//.CommonJS\nexports.CSSMediaRule = CSSOM.CSSMediaRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n CSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n CSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://drafts.csswg.org/css-conditional-3/#the-csssupportsrule-interface\n */\nCSSOM.CSSSupportsRule = function CSSSupportsRule() {\n CSSOM.CSSConditionRule.call(this);\n};\n\nCSSOM.CSSSupportsRule.prototype = new CSSOM.CSSConditionRule();\nCSSOM.CSSSupportsRule.prototype.constructor = CSSOM.CSSSupportsRule;\nCSSOM.CSSSupportsRule.prototype.type = 12;\n\nObject.defineProperty(CSSOM.CSSSupportsRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n\n for (var i = 0, length = this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n\n return \"@supports \" + this.conditionText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n//.CommonJS\nexports.CSSSupportsRule = CSSOM.CSSSupportsRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://dev.w3.org/csswg/cssom/#css-font-face-rule\n */\nCSSOM.CSSFontFaceRule = function CSSFontFaceRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSFontFaceRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSFontFaceRule.prototype.constructor = CSSOM.CSSFontFaceRule;\nCSSOM.CSSFontFaceRule.prototype.type = 5;\n//FIXME\n//CSSOM.CSSFontFaceRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSFontFaceRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSFontFaceRule.cpp\nObject.defineProperty(CSSOM.CSSFontFaceRule.prototype, \"cssText\", {\n get: function() {\n return \"@font-face {\" + this.style.cssText + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSFontFaceRule = CSSOM.CSSFontFaceRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/shadow-dom/#host-at-rule\n */\nCSSOM.CSSHostRule = function CSSHostRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSHostRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSHostRule.prototype.constructor = CSSOM.CSSHostRule;\nCSSOM.CSSHostRule.prototype.type = 1001;\n//FIXME\n//CSSOM.CSSHostRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSHostRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSHostRule.prototype, \"cssText\", {\n\tget: function() {\n\t\tvar cssTexts = [];\n\t\tfor (var i=0, length=this.cssRules.length; i < length; i++) {\n\t\t\tcssTexts.push(this.cssRules[i].cssText);\n\t\t}\n\t\treturn \"@host {\" + cssTexts.join(\"\") + \"}\";\n\t}\n});\n\n\n//.CommonJS\nexports.CSSHostRule = CSSOM.CSSHostRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleDeclaration: require('./CSSStyleDeclaration').CSSStyleDeclaration\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframeRule\n */\nCSSOM.CSSKeyframeRule = function CSSKeyframeRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.keyText = '';\n\tthis.style = new CSSOM.CSSStyleDeclaration();\n\tthis.style.parentRule = this;\n};\n\nCSSOM.CSSKeyframeRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframeRule.prototype.constructor = CSSOM.CSSKeyframeRule;\nCSSOM.CSSKeyframeRule.prototype.type = 8;\n//FIXME\n//CSSOM.CSSKeyframeRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframeRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframeRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframeRule.prototype, \"cssText\", {\n get: function() {\n return this.keyText + \" {\" + this.style.cssText + \"} \";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframeRule = CSSOM.CSSKeyframeRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSRule: require(\"./CSSRule\").CSSRule\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/css3-animations/#DOM-CSSKeyframesRule\n */\nCSSOM.CSSKeyframesRule = function CSSKeyframesRule() {\n\tCSSOM.CSSRule.call(this);\n\tthis.name = '';\n\tthis.cssRules = [];\n};\n\nCSSOM.CSSKeyframesRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSKeyframesRule.prototype.constructor = CSSOM.CSSKeyframesRule;\nCSSOM.CSSKeyframesRule.prototype.type = 7;\n//FIXME\n//CSSOM.CSSKeyframesRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSKeyframesRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\n// http://www.opensource.apple.com/source/WebCore/WebCore-955.66.1/css/WebKitCSSKeyframesRule.cpp\nObject.defineProperty(CSSOM.CSSKeyframesRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(\" \" + this.cssRules[i].cssText);\n }\n return \"@\" + (this._vendorPrefix || '') + \"keyframes \" + this.name + \" { \\n\" + cssTexts.join(\"\\n\") + \"\\n}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSKeyframesRule = CSSOM.CSSKeyframesRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n *\n * TODO: add if needed\n */\nCSSOM.CSSValue = function CSSValue() {\n};\n\nCSSOM.CSSValue.prototype = {\n\tconstructor: CSSOM.CSSValue,\n\n\t// @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue\n\tset cssText(text) {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('DOMException: property \"cssText\" of \"' + name + '\" is readonly and can not be replaced with \"' + text + '\"!');\n\t},\n\n\tget cssText() {\n\t\tvar name = this._getConstructorName();\n\n\t\tthrow new Error('getter \"cssText\" of \"' + name + '\" is not implemented!');\n\t},\n\n\t_getConstructorName: function() {\n\t\tvar s = this.constructor.toString(),\n\t\t\t\tc = s.match(/function\\s([^\\(]+)/),\n\t\t\t\tname = c[1];\n\n\t\treturn name;\n\t}\n};\n\n\n//.CommonJS\nexports.CSSValue = CSSOM.CSSValue;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSValue: require('./CSSValue').CSSValue\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://msdn.microsoft.com/en-us/library/ms537634(v=vs.85).aspx\n *\n */\nCSSOM.CSSValueExpression = function CSSValueExpression(token, idx) {\n\tthis._token = token;\n\tthis._idx = idx;\n};\n\nCSSOM.CSSValueExpression.prototype = new CSSOM.CSSValue();\nCSSOM.CSSValueExpression.prototype.constructor = CSSOM.CSSValueExpression;\n\n/**\n * parse css expression() value\n *\n * @return {Object}\n * - error:\n * or\n * - idx:\n * - expression:\n *\n * Example:\n *\n * .selector {\n *\t\tzoom: expression(documentElement.clientWidth > 1000 ? '1000px' : 'auto');\n * }\n */\nCSSOM.CSSValueExpression.prototype.parse = function() {\n\tvar token = this._token,\n\t\t\tidx = this._idx;\n\n\tvar character = '',\n\t\t\texpression = '',\n\t\t\terror = '',\n\t\t\tinfo,\n\t\t\tparen = [];\n\n\n\tfor (; ; ++idx) {\n\t\tcharacter = token.charAt(idx);\n\n\t\t// end of token\n\t\tif (character === '') {\n\t\t\terror = 'css expression error: unfinished expression!';\n\t\t\tbreak;\n\t\t}\n\n\t\tswitch(character) {\n\t\t\tcase '(':\n\t\t\t\tparen.push(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase ')':\n\t\t\t\tparen.pop(character);\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\n\t\t\tcase '/':\n\t\t\t\tif ((info = this._parseJSComment(token, idx))) { // comment?\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\terror = 'css expression error: unfinished comment in expression!';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tidx = info.idx;\n\t\t\t\t\t\t// ignore the comment\n\t\t\t\t\t}\n\t\t\t\t} else if ((info = this._parseJSRexExp(token, idx))) { // regexp\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else { // other\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tinfo = this._parseJSString(token, idx, character);\n\t\t\t\tif (info) { // string\n\t\t\t\t\tidx = info.idx;\n\t\t\t\t\texpression += info.text;\n\t\t\t\t} else {\n\t\t\t\t\texpression += character;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\texpression += character;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (error) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// end of expression\n\t\tif (paren.length === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tvar ret;\n\tif (error) {\n\t\tret = {\n\t\t\terror: error\n\t\t};\n\t} else {\n\t\tret = {\n\t\t\tidx: idx,\n\t\t\texpression: expression\n\t\t};\n\t}\n\n\treturn ret;\n};\n\n\n/**\n *\n * @return {Object|false}\n * - idx:\n * - text:\n * or\n * - error:\n * or\n * false\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSComment = function(token, idx) {\n\tvar nextChar = token.charAt(idx + 1),\n\t\t\ttext;\n\n\tif (nextChar === '/' || nextChar === '*') {\n\t\tvar startIdx = idx,\n\t\t\t\tendIdx,\n\t\t\t\tcommentEndChar;\n\n\t\tif (nextChar === '/') { // line comment\n\t\t\tcommentEndChar = '\\n';\n\t\t} else if (nextChar === '*') { // block comment\n\t\t\tcommentEndChar = '*/';\n\t\t}\n\n\t\tendIdx = token.indexOf(commentEndChar, startIdx + 1 + 1);\n\t\tif (endIdx !== -1) {\n\t\t\tendIdx = endIdx + commentEndChar.length - 1;\n\t\t\ttext = token.substring(idx, endIdx + 1);\n\t\t\treturn {\n\t\t\t\tidx: endIdx,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t} else {\n\t\t\tvar error = 'css expression error: unfinished comment in expression!';\n\t\t\treturn {\n\t\t\t\terror: error\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\n\n/**\n *\n * @return {Object|false}\n *\t\t\t\t\t- idx:\n *\t\t\t\t\t- text:\n *\t\t\t\t\tor \n *\t\t\t\t\tfalse\n *\n */\nCSSOM.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) {\n\tvar endIdx = this._findMatchedIdx(token, idx, sep),\n\t\t\ttext;\n\n\tif (endIdx === -1) {\n\t\treturn false;\n\t} else {\n\t\ttext = token.substring(idx, endIdx + sep.length);\n\n\t\treturn {\n\t\t\tidx: endIdx,\n\t\t\ttext: text\n\t\t};\n\t}\n};\n\n\n/**\n * parse regexp in css expression\n *\n * @return {Object|false}\n *\t\t\t\t- idx:\n *\t\t\t\t- regExp:\n *\t\t\t\tor \n *\t\t\t\tfalse\n */\n\n/*\n\nall legal RegExp\n \n/a/\n(/a/)\n[/a/]\n[12, /a/]\n\n!/a/\n\n+/a/\n-/a/\n* /a/\n/ /a/\n%/a/\n\n===/a/\n!==/a/\n==/a/\n!=/a/\n>/a/\n>=/a/\n</a/\n<=/a/\n\n&/a/\n|/a/\n^/a/\n~/a/\n<</a/\n>>/a/\n>>>/a/\n\n&&/a/\n||/a/\n?/a/\n=/a/\n,/a/\n\n\t\tdelete /a/\n\t\t\t\tin /a/\ninstanceof /a/\n\t\t\t\tnew /a/\n\t\ttypeof /a/\n\t\t\tvoid /a/\n\n*/\nCSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {\n\tvar before = token.substring(0, idx).replace(/\\s+$/, \"\"),\n\t\t\tlegalRegx = [\n\t\t\t\t/^$/,\n\t\t\t\t/\\($/,\n\t\t\t\t/\\[$/,\n\t\t\t\t/\\!$/,\n\t\t\t\t/\\+$/,\n\t\t\t\t/\\-$/,\n\t\t\t\t/\\*$/,\n\t\t\t\t/\\/\\s+/,\n\t\t\t\t/\\%$/,\n\t\t\t\t/\\=$/,\n\t\t\t\t/\\>$/,\n\t\t\t\t/<$/,\n\t\t\t\t/\\&$/,\n\t\t\t\t/\\|$/,\n\t\t\t\t/\\^$/,\n\t\t\t\t/\\~$/,\n\t\t\t\t/\\?$/,\n\t\t\t\t/\\,$/,\n\t\t\t\t/delete$/,\n\t\t\t\t/in$/,\n\t\t\t\t/instanceof$/,\n\t\t\t\t/new$/,\n\t\t\t\t/typeof$/,\n\t\t\t\t/void$/\n\t\t\t];\n\n\tvar isLegal = legalRegx.some(function(reg) {\n\t\treturn reg.test(before);\n\t});\n\n\tif (!isLegal) {\n\t\treturn false;\n\t} else {\n\t\tvar sep = '/';\n\n\t\t// same logic as string\n\t\treturn this._parseJSString(token, idx, sep);\n\t}\n};\n\n\n/**\n *\n * find next sep(same line) index in `token`\n *\n * @return {Number}\n *\n */\nCSSOM.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) {\n\tvar startIdx = idx,\n\t\t\tendIdx;\n\n\tvar NOT_FOUND = -1;\n\n\twhile(true) {\n\t\tendIdx = token.indexOf(sep, startIdx + 1);\n\n\t\tif (endIdx === -1) { // not found\n\t\t\tendIdx = NOT_FOUND;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tvar text = token.substring(idx + 1, endIdx),\n\t\t\t\t\tmatched = text.match(/\\\\+$/);\n\t\t\tif (!matched || matched[0] % 2 === 0) { // not escaped\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tstartIdx = endIdx;\n\t\t\t}\n\t\t}\n\t}\n\n\t// boundary must be in the same line(js sting or regexp)\n\tvar nextNewLineIdx = token.indexOf('\\n', idx + 1);\n\tif (nextNewLineIdx < endIdx) {\n\t\tendIdx = NOT_FOUND;\n\t}\n\n\n\treturn endIdx;\n};\n\n\n\n\n//.CommonJS\nexports.CSSValueExpression = CSSOM.CSSValueExpression;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.MatcherList = function MatcherList(){\n this.length = 0;\n};\n\nCSSOM.MatcherList.prototype = {\n\n constructor: CSSOM.MatcherList,\n\n /**\n * @return {string}\n */\n get matcherText() {\n return Array.prototype.join.call(this, \", \");\n },\n\n /**\n * @param {string} value\n */\n set matcherText(value) {\n // just a temporary solution, actually it may be wrong by just split the value with ',', because a url can include ','.\n var values = value.split(\",\");\n var length = this.length = values.length;\n for (var i=0; i<length; i++) {\n this[i] = values[i].trim();\n }\n },\n\n /**\n * @param {string} matcher\n */\n appendMatcher: function(matcher) {\n if (Array.prototype.indexOf.call(this, matcher) === -1) {\n this[this.length] = matcher;\n this.length++;\n }\n },\n\n /**\n * @param {string} matcher\n */\n deleteMatcher: function(matcher) {\n var index = Array.prototype.indexOf.call(this, matcher);\n if (index !== -1) {\n Array.prototype.splice.call(this, index, 1);\n }\n }\n\n};\n\n\n//.CommonJS\nexports.MatcherList = CSSOM.MatcherList;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n CSSRule: require(\"./CSSRule\").CSSRule,\n MatcherList: require(\"./MatcherList\").MatcherList\n};\n///CommonJS\n\n\n/**\n * @constructor\n * @see https://developer.mozilla.org/en/CSS/@-moz-document\n */\nCSSOM.CSSDocumentRule = function CSSDocumentRule() {\n CSSOM.CSSRule.call(this);\n this.matcher = new CSSOM.MatcherList();\n this.cssRules = [];\n};\n\nCSSOM.CSSDocumentRule.prototype = new CSSOM.CSSRule();\nCSSOM.CSSDocumentRule.prototype.constructor = CSSOM.CSSDocumentRule;\nCSSOM.CSSDocumentRule.prototype.type = 10;\n//FIXME\n//CSSOM.CSSDocumentRule.prototype.insertRule = CSSStyleSheet.prototype.insertRule;\n//CSSOM.CSSDocumentRule.prototype.deleteRule = CSSStyleSheet.prototype.deleteRule;\n\nObject.defineProperty(CSSOM.CSSDocumentRule.prototype, \"cssText\", {\n get: function() {\n var cssTexts = [];\n for (var i=0, length=this.cssRules.length; i < length; i++) {\n cssTexts.push(this.cssRules[i].cssText);\n }\n return \"@-moz-document \" + this.matcher.matcherText + \" {\" + cssTexts.join(\"\") + \"}\";\n }\n});\n\n\n//.CommonJS\nexports.CSSDocumentRule = CSSOM.CSSDocumentRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @param {string} token\n */\nCSSOM.parse = function parse(token) {\n\n\tvar i = 0;\n\n\t/**\n\t\t\"before-selector\" or\n\t\t\"selector\" or\n\t\t\"atRule\" or\n\t\t\"atBlock\" or\n\t\t\"conditionBlock\" or\n\t\t\"before-name\" or\n\t\t\"name\" or\n\t\t\"before-value\" or\n\t\t\"value\"\n\t*/\n\tvar state = \"before-selector\";\n\n\tvar index;\n\tvar buffer = \"\";\n\tvar valueParenthesisDepth = 0;\n\n\tvar SIGNIFICANT_WHITESPACE = {\n\t\t\"selector\": true,\n\t\t\"value\": true,\n\t\t\"value-parenthesis\": true,\n\t\t\"atRule\": true,\n\t\t\"importRule-begin\": true,\n\t\t\"importRule\": true,\n\t\t\"atBlock\": true,\n\t\t\"conditionBlock\": true,\n\t\t'documentRule-begin': true\n\t};\n\n\tvar styleSheet = new CSSOM.CSSStyleSheet();\n\n\t// @type CSSStyleSheet|CSSMediaRule|CSSSupportsRule|CSSFontFaceRule|CSSKeyframesRule|CSSDocumentRule\n\tvar currentScope = styleSheet;\n\n\t// @type CSSMediaRule|CSSSupportsRule|CSSKeyframesRule|CSSDocumentRule\n\tvar parentRule;\n\n\tvar ancestorRules = [];\n\tvar hasAncestors = false;\n\tvar prevScope;\n\n\tvar name, priority=\"\", styleRule, mediaRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule;\n\n\tvar atKeyframesRegExp = /@(-(?:\\w+-)+)?keyframes/g;\n\n\tvar parseError = function(message) {\n\t\tvar lines = token.substring(0, i).split('\\n');\n\t\tvar lineCount = lines.length;\n\t\tvar charCount = lines.pop().length + 1;\n\t\tvar error = new Error(message + ' (line ' + lineCount + ', char ' + charCount + ')');\n\t\terror.line = lineCount;\n\t\t/* jshint sub : true */\n\t\terror['char'] = charCount;\n\t\terror.styleSheet = styleSheet;\n\t\tthrow error;\n\t};\n\n\tfor (var character; (character = token.charAt(i)); i++) {\n\n\t\tswitch (character) {\n\n\t\tcase \" \":\n\t\tcase \"\\t\":\n\t\tcase \"\\r\":\n\t\tcase \"\\n\":\n\t\tcase \"\\f\":\n\t\t\tif (SIGNIFICANT_WHITESPACE[state]) {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// String\n\t\tcase '\"':\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf('\"', index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError('Unmatched \"');\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"'\":\n\t\t\tindex = i + 1;\n\t\t\tdo {\n\t\t\t\tindex = token.indexOf(\"'\", index) + 1;\n\t\t\t\tif (!index) {\n\t\t\t\t\tparseError(\"Unmatched '\");\n\t\t\t\t}\n\t\t\t} while (token[index - 2] === '\\\\');\n\t\t\tbuffer += token.slice(i, index);\n\t\t\ti = index - 1;\n\t\t\tswitch (state) {\n\t\t\t\tcase 'before-value':\n\t\t\t\t\tstate = 'value';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'importRule-begin':\n\t\t\t\t\tstate = 'importRule';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// Comment\n\t\tcase \"/\":\n\t\t\tif (token.charAt(i + 1) === \"*\") {\n\t\t\t\ti += 2;\n\t\t\t\tindex = token.indexOf(\"*/\", i);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tparseError(\"Missing */\");\n\t\t\t\t} else {\n\t\t\t\t\ti = index + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tif (state === \"importRule-begin\") {\n\t\t\t\tbuffer += \" \";\n\t\t\t\tstate = \"importRule\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\t// At-rule\n\t\tcase \"@\":\n\t\t\tif (token.indexOf(\"@-moz-document\", i) === i) {\n\t\t\t\tstate = \"documentRule-begin\";\n\t\t\t\tdocumentRule = new CSSOM.CSSDocumentRule();\n\t\t\t\tdocumentRule.__starts = i;\n\t\t\t\ti += \"-moz-document\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@media\", i) === i) {\n\t\t\t\tstate = \"atBlock\";\n\t\t\t\tmediaRule = new CSSOM.CSSMediaRule();\n\t\t\t\tmediaRule.__starts = i;\n\t\t\t\ti += \"media\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@supports\", i) === i) {\n\t\t\t\tstate = \"conditionBlock\";\n\t\t\t\tsupportsRule = new CSSOM.CSSSupportsRule();\n\t\t\t\tsupportsRule.__starts = i;\n\t\t\t\ti += \"supports\".length;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@host\", i) === i) {\n\t\t\t\tstate = \"hostRule-begin\";\n\t\t\t\ti += \"host\".length;\n\t\t\t\thostRule = new CSSOM.CSSHostRule();\n\t\t\t\thostRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@import\", i) === i) {\n\t\t\t\tstate = \"importRule-begin\";\n\t\t\t\ti += \"import\".length;\n\t\t\t\tbuffer += \"@import\";\n\t\t\t\tbreak;\n\t\t\t} else if (token.indexOf(\"@font-face\", i) === i) {\n\t\t\t\tstate = \"fontFaceRule-begin\";\n\t\t\t\ti += \"font-face\".length;\n\t\t\t\tfontFaceRule = new CSSOM.CSSFontFaceRule();\n\t\t\t\tfontFaceRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tatKeyframesRegExp.lastIndex = i;\n\t\t\t\tvar matchKeyframes = atKeyframesRegExp.exec(token);\n\t\t\t\tif (matchKeyframes && matchKeyframes.index === i) {\n\t\t\t\t\tstate = \"keyframesRule-begin\";\n\t\t\t\t\tkeyframesRule = new CSSOM.CSSKeyframesRule();\n\t\t\t\t\tkeyframesRule.__starts = i;\n\t\t\t\t\tkeyframesRule._vendorPrefix = matchKeyframes[1]; // Will come out as undefined if no prefix was found\n\t\t\t\t\ti += matchKeyframes[0].length - 1;\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (state === \"selector\") {\n\t\t\t\t\tstate = \"atRule\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"{\":\n\t\t\tif (state === \"selector\" || state === \"atRule\") {\n\t\t\t\tstyleRule.selectorText = buffer.trim();\n\t\t\t\tstyleRule.style.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"atBlock\") {\n\t\t\t\tmediaRule.media.mediaText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = mediaRule;\n\t\t\t\tmediaRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"conditionBlock\") {\n\t\t\t\tsupportsRule.conditionText = buffer.trim();\n\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = supportsRule;\n\t\t\t\tsupportsRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"hostRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t}\n\n\t\t\t\tcurrentScope = parentRule = hostRule;\n\t\t\t\thostRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t} else if (state === \"fontFaceRule-begin\") {\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tfontFaceRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tfontFaceRule.parentStyleSheet = styleSheet;\n\t\t\t\tstyleRule = fontFaceRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"keyframesRule-begin\") {\n\t\t\t\tkeyframesRule.name = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tkeyframesRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tkeyframesRule.parentStyleSheet = styleSheet;\n\t\t\t\tcurrentScope = parentRule = keyframesRule;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t} else if (state === \"keyframeRule-begin\") {\n\t\t\t\tstyleRule = new CSSOM.CSSKeyframeRule();\n\t\t\t\tstyleRule.keyText = buffer.trim();\n\t\t\t\tstyleRule.__starts = i;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-name\";\n\t\t\t} else if (state === \"documentRule-begin\") {\n\t\t\t\t// FIXME: what if this '{' is in the url text of the match function?\n\t\t\t\tdocumentRule.matcher.matcherText = buffer.trim();\n\t\t\t\tif (parentRule) {\n\t\t\t\t\tancestorRules.push(parentRule);\n\t\t\t\t\tdocumentRule.parentRule = parentRule;\n\t\t\t\t}\n\t\t\t\tcurrentScope = parentRule = documentRule;\n\t\t\t\tdocumentRule.parentStyleSheet = styleSheet;\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-selector\";\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \":\":\n\t\t\tif (state === \"name\") {\n\t\t\t\tname = buffer.trim();\n\t\t\t\tbuffer = \"\";\n\t\t\t\tstate = \"before-value\";\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"(\":\n\t\t\tif (state === 'value') {\n\t\t\t\t// ie css expression mode\n\t\t\t\tif (buffer.trim() === 'expression') {\n\t\t\t\t\tvar info = (new CSSOM.CSSValueExpression(token, i)).parse();\n\n\t\t\t\t\tif (info.error) {\n\t\t\t\t\t\tparseError(info.error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuffer += info.expression;\n\t\t\t\t\t\ti = info.idx;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = 'value-parenthesis';\n\t\t\t\t\t//always ensure this is reset to 1 on transition\n\t\t\t\t\t//from value to value-parenthesis\n\t\t\t\t\tvalueParenthesisDepth = 1;\n\t\t\t\t\tbuffer += character;\n\t\t\t\t}\n\t\t\t} else if (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth++;\n\t\t\t\tbuffer += character;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \")\":\n\t\t\tif (state === 'value-parenthesis') {\n\t\t\t\tvalueParenthesisDepth--;\n\t\t\t\tif (valueParenthesisDepth === 0) state = 'value';\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\n\t\tcase \"!\":\n\t\t\tif (state === \"value\" && token.indexOf(\"!important\", i) === i) {\n\t\t\t\tpriority = \"important\";\n\t\t\t\ti += \"important\".length;\n\t\t\t} else {\n\t\t\t\tbuffer += character;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \";\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"atRule\":\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule\":\n\t\t\t\t\timportRule = new CSSOM.CSSImportRule();\n\t\t\t\t\timportRule.parentStyleSheet = importRule.styleSheet.parentStyleSheet = styleSheet;\n\t\t\t\t\timportRule.cssText = buffer + character;\n\t\t\t\t\tstyleSheet.cssRules.push(importRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbuffer += character;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"}\":\n\t\t\tswitch (state) {\n\t\t\t\tcase \"value\":\n\t\t\t\t\tstyleRule.style.setProperty(name, buffer.trim(), priority);\n\t\t\t\t\tpriority = \"\";\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase \"before-name\":\n\t\t\t\tcase \"name\":\n\t\t\t\t\tstyleRule.__ends = i + 1;\n\t\t\t\t\tif (parentRule) {\n\t\t\t\t\t\tstyleRule.parentRule = parentRule;\n\t\t\t\t\t}\n\t\t\t\t\tstyleRule.parentStyleSheet = styleSheet;\n\t\t\t\t\tcurrentScope.cssRules.push(styleRule);\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tif (currentScope.constructor === CSSOM.CSSKeyframesRule) {\n\t\t\t\t\t\tstate = \"keyframeRule-begin\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"keyframeRule-begin\":\n\t\t\t\tcase \"before-selector\":\n\t\t\t\tcase \"selector\":\n\t\t\t\t\t// End of media/supports/document rule.\n\t\t\t\t\tif (!parentRule) {\n\t\t\t\t\t\tparseError(\"Unexpected }\");\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle rules nested in @media or @supports\n\t\t\t\t\thasAncestors = ancestorRules.length > 0;\n\n\t\t\t\t\twhile (ancestorRules.length > 0) {\n\t\t\t\t\t\tparentRule = ancestorRules.pop();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tparentRule.constructor.name === \"CSSMediaRule\"\n\t\t\t\t\t\t\t|| parentRule.constructor.name === \"CSSSupportsRule\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tprevScope = currentScope;\n\t\t\t\t\t\t\tcurrentScope = parentRule;\n\t\t\t\t\t\t\tcurrentScope.cssRules.push(prevScope);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ancestorRules.length === 0) {\n\t\t\t\t\t\t\thasAncestors = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!hasAncestors) {\n\t\t\t\t\t\tcurrentScope.__ends = i + 1;\n\t\t\t\t\t\tstyleSheet.cssRules.push(currentScope);\n\t\t\t\t\t\tcurrentScope = styleSheet;\n\t\t\t\t\t\tparentRule = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tbuffer = \"\";\n\t\t\t\t\tstate = \"before-selector\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tswitch (state) {\n\t\t\t\tcase \"before-selector\":\n\t\t\t\t\tstate = \"selector\";\n\t\t\t\t\tstyleRule = new CSSOM.CSSStyleRule();\n\t\t\t\t\tstyleRule.__starts = i;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-name\":\n\t\t\t\t\tstate = \"name\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"before-value\":\n\t\t\t\t\tstate = \"value\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"importRule-begin\":\n\t\t\t\t\tstate = \"importRule\";\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbuffer += character;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn styleSheet;\n};\n\n\n//.CommonJS\nexports.parse = CSSOM.parse;\n// The following modules cannot be included sooner due to the mutual dependency with parse.js\nCSSOM.CSSStyleSheet = require(\"./CSSStyleSheet\").CSSStyleSheet;\nCSSOM.CSSStyleRule = require(\"./CSSStyleRule\").CSSStyleRule;\nCSSOM.CSSImportRule = require(\"./CSSImportRule\").CSSImportRule;\nCSSOM.CSSGroupingRule = require(\"./CSSGroupingRule\").CSSGroupingRule;\nCSSOM.CSSMediaRule = require(\"./CSSMediaRule\").CSSMediaRule;\nCSSOM.CSSConditionRule = require(\"./CSSConditionRule\").CSSConditionRule;\nCSSOM.CSSSupportsRule = require(\"./CSSSupportsRule\").CSSSupportsRule;\nCSSOM.CSSFontFaceRule = require(\"./CSSFontFaceRule\").CSSFontFaceRule;\nCSSOM.CSSHostRule = require(\"./CSSHostRule\").CSSHostRule;\nCSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nCSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nCSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nCSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nCSSOM.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {};\n///CommonJS\n\n\n/**\n * @constructor\n * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration\n */\nCSSOM.CSSStyleDeclaration = function CSSStyleDeclaration(){\n\tthis.length = 0;\n\tthis.parentRule = null;\n\n\t// NON-STANDARD\n\tthis._importants = {};\n};\n\n\nCSSOM.CSSStyleDeclaration.prototype = {\n\n\tconstructor: CSSOM.CSSStyleDeclaration,\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set.\n\t */\n\tgetPropertyValue: function(name) {\n\t\treturn this[name] || \"\";\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t * @param {string} [priority=null] \"important\" or null\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty\n\t */\n\tsetProperty: function(name, value, priority) {\n\t\tif (this[name]) {\n\t\t\t// Property already exist. Overwrite it.\n\t\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\t\tif (index < 0) {\n\t\t\t\tthis[this.length] = name;\n\t\t\t\tthis.length++;\n\t\t\t}\n\t\t} else {\n\t\t\t// New property.\n\t\t\tthis[this.length] = name;\n\t\t\tthis.length++;\n\t\t}\n\t\tthis[name] = value + \"\";\n\t\tthis._importants[name] = priority;\n\t},\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty\n\t * @return {string} the value of the property if it has been explicitly set for this declaration block.\n\t * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property.\n\t */\n\tremoveProperty: function(name) {\n\t\tif (!(name in this)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar index = Array.prototype.indexOf.call(this, name);\n\t\tif (index < 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tvar prevValue = this[name];\n\t\tthis[name] = \"\";\n\n\t\t// That's what WebKit and Opera do\n\t\tArray.prototype.splice.call(this, index, 1);\n\n\t\t// That's what Firefox does\n\t\t//this[index] = \"\"\n\n\t\treturn prevValue;\n\t},\n\n\tgetPropertyCSSValue: function() {\n\t\t//FIXME\n\t},\n\n\t/**\n\t *\n\t * @param {String} name\n\t */\n\tgetPropertyPriority: function(name) {\n\t\treturn this._importants[name] || \"\";\n\t},\n\n\n\t/**\n\t * element.style.overflow = \"auto\"\n\t * element.style.getPropertyShorthand(\"overflow-x\")\n\t * -> \"overflow\"\n\t */\n\tgetPropertyShorthand: function() {\n\t\t//FIXME\n\t},\n\n\tisPropertyImplicit: function() {\n\t\t//FIXME\n\t},\n\n\t// Doesn't work in IE < 9\n\tget cssText(){\n\t\tvar properties = [];\n\t\tfor (var i=0, length=this.length; i < length; ++i) {\n\t\t\tvar name = this[i];\n\t\t\tvar value = this.getPropertyValue(name);\n\t\t\tvar priority = this.getPropertyPriority(name);\n\t\t\tif (priority) {\n\t\t\t\tpriority = \" !\" + priority;\n\t\t\t}\n\t\t\tproperties[i] = name + \": \" + value + priority + \";\";\n\t\t}\n\t\treturn properties.join(\" \");\n\t},\n\n\tset cssText(text){\n\t\tvar i, name;\n\t\tfor (i = this.length; i--;) {\n\t\t\tname = this[i];\n\t\t\tthis[name] = \"\";\n\t\t}\n\t\tArray.prototype.splice.call(this, 0, this.length);\n\t\tthis._importants = {};\n\n\t\tvar dummyRule = CSSOM.parse('#bogus{' + text + '}').cssRules[0].style;\n\t\tvar length = dummyRule.length;\n\t\tfor (i = 0; i < length; ++i) {\n\t\t\tname = dummyRule[i];\n\t\t\tthis.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name));\n\t\t}\n\t}\n};\n\n\n//.CommonJS\nexports.CSSStyleDeclaration = CSSOM.CSSStyleDeclaration;\nCSSOM.parse = require('./parse').parse; // Cannot be included sooner due to the mutual dependency between parse.js and CSSStyleDeclaration.js\n///CommonJS\n", "//.CommonJS\nvar CSSOM = {\n\tCSSStyleSheet: require(\"./CSSStyleSheet\").CSSStyleSheet,\n\tCSSRule: require(\"./CSSRule\").CSSRule,\n\tCSSStyleRule: require(\"./CSSStyleRule\").CSSStyleRule,\n\tCSSGroupingRule: require(\"./CSSGroupingRule\").CSSGroupingRule,\n\tCSSConditionRule: require(\"./CSSConditionRule\").CSSConditionRule,\n\tCSSMediaRule: require(\"./CSSMediaRule\").CSSMediaRule,\n\tCSSSupportsRule: require(\"./CSSSupportsRule\").CSSSupportsRule,\n\tCSSStyleDeclaration: require(\"./CSSStyleDeclaration\").CSSStyleDeclaration,\n\tCSSKeyframeRule: require('./CSSKeyframeRule').CSSKeyframeRule,\n\tCSSKeyframesRule: require('./CSSKeyframesRule').CSSKeyframesRule\n};\n///CommonJS\n\n\n/**\n * Produces a deep copy of stylesheet \u2014 the instance variables of stylesheet are copied recursively.\n * @param {CSSStyleSheet|CSSOM.CSSStyleSheet} stylesheet\n * @nosideeffects\n * @return {CSSOM.CSSStyleSheet}\n */\nCSSOM.clone = function clone(stylesheet) {\n\n\tvar cloned = new CSSOM.CSSStyleSheet();\n\n\tvar rules = stylesheet.cssRules;\n\tif (!rules) {\n\t\treturn cloned;\n\t}\n\n\tfor (var i = 0, rulesLength = rules.length; i < rulesLength; i++) {\n\t\tvar rule = rules[i];\n\t\tvar ruleClone = cloned.cssRules[i] = new rule.constructor();\n\n\t\tvar style = rule.style;\n\t\tif (style) {\n\t\t\tvar styleClone = ruleClone.style = new CSSOM.CSSStyleDeclaration();\n\t\t\tfor (var j = 0, styleLength = style.length; j < styleLength; j++) {\n\t\t\t\tvar name = styleClone[j] = style[j];\n\t\t\t\tstyleClone[name] = style[name];\n\t\t\t\tstyleClone._importants[name] = style.getPropertyPriority(name);\n\t\t\t}\n\t\t\tstyleClone.length = style.length;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('keyText')) {\n\t\t\truleClone.keyText = rule.keyText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('selectorText')) {\n\t\t\truleClone.selectorText = rule.selectorText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('mediaText')) {\n\t\t\truleClone.mediaText = rule.mediaText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('conditionText')) {\n\t\t\truleClone.conditionText = rule.conditionText;\n\t\t}\n\n\t\tif (rule.hasOwnProperty('cssRules')) {\n\t\t\truleClone.cssRules = clone(rule).cssRules;\n\t\t}\n\t}\n\n\treturn cloned;\n\n};\n\n//.CommonJS\nexports.clone = CSSOM.clone;\n///CommonJS\n", "'use strict';\n\nexports.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;\nexports.CSSRule = require('./CSSRule').CSSRule;\nexports.CSSGroupingRule = require('./CSSGroupingRule').CSSGroupingRule;\nexports.CSSConditionRule = require('./CSSConditionRule').CSSConditionRule;\nexports.CSSStyleRule = require('./CSSStyleRule').CSSStyleRule;\nexports.MediaList = require('./MediaList').MediaList;\nexports.CSSMediaRule = require('./CSSMediaRule').CSSMediaRule;\nexports.CSSSupportsRule = require('./CSSSupportsRule').CSSSupportsRule;\nexports.CSSImportRule = require('./CSSImportRule').CSSImportRule;\nexports.CSSFontFaceRule = require('./CSSFontFaceRule').CSSFontFaceRule;\nexports.CSSHostRule = require('./CSSHostRule').CSSHostRule;\nexports.StyleSheet = require('./StyleSheet').StyleSheet;\nexports.CSSStyleSheet = require('./CSSStyleSheet').CSSStyleSheet;\nexports.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;\nexports.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;\nexports.MatcherList = require('./MatcherList').MatcherList;\nexports.CSSDocumentRule = require('./CSSDocumentRule').CSSDocumentRule;\nexports.CSSValue = require('./CSSValue').CSSValue;\nexports.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;\nexports.parse = require('./parse').parse;\nexports.clone = require('./clone').clone;\n", "class Canvas {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n getContext() {\n return null;\n }\n toDataURL() {\n return '';\n }\n}\n\nmodule.exports = {\n createCanvas: (width, height) => new Canvas(width, height),\n};\n", "/* c8 ignore start */\ntry {\n module.exports = require('canvas');\n} catch (fallback) {\n module.exports = require('./canvas-shim.cjs');\n}\n/* c8 ignore stop */\n", "// used in Attr to signal changes\nexport const CHANGED = Symbol('changed');\n\n// used in Element to setup once classList\nexport const CLASS_LIST = Symbol('classList');\n\n// used in Document to attach once customElements\nexport const CUSTOM_ELEMENTS = Symbol('CustomElements');\n\n// used in HTMLTemplateElement\nexport const CONTENT = Symbol('content');\n\n// used in Element for data attributes\nexport const DATASET = Symbol('dataset');\n\n// used in Document to attach the DocType\nexport const DOCTYPE = Symbol('doctype');\n\n// used in parser and Document to attach once a DOMParser\nexport const DOM_PARSER = Symbol('DOMParser');\n\n// used to reference an end node\nexport const END = Symbol('end');\n\n// used in Document to make the globalThis an event target\nexport const EVENT_TARGET = Symbol('EventTarget');\n\n// used to augment a created document defaultView\nexport const GLOBALS = Symbol('globals');\n\n// used in both Canvas and Document to provide images\nexport const IMAGE = Symbol('image');\n\n// used to define Document mime type\nexport const MIME = Symbol('mime');\n\n// used in Document to attach once MutationObserver\nexport const MUTATION_OBSERVER = Symbol('MutationObserver');\n\n// used to define next node reference\nexport const NEXT = Symbol('next');\n\n// used to define Attr owner elements\nexport const OWNER_ELEMENT = Symbol('ownerElement');\n\n// used to define previous node reference\nexport const PREV = Symbol('prev');\n\n// used to define various \"private\" properties\nexport const PRIVATE = Symbol('private');\n\n// used to define the CSSStyleSheet.sheet\nexport const SHEET = Symbol('sheet');\n\n// used to define start node reference\nexport const START = Symbol('start');\n\n// used to define special CSS style attribute\nexport const STYLE = Symbol('style');\n\n// used to upgrade Custom Elements\nexport const UPGRADE = Symbol('upgrade');\n\n// used to define generic values\nexport const VALUE = Symbol('value');\n", "import { Parser, type ParserOptions } from \"./Parser.js\";\nexport type { Handler, ParserOptions } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\n\nimport {\n DomHandler,\n type DomHandlerOptions,\n type ChildNode,\n type Element,\n type Document,\n} from \"domhandler\";\n\nexport {\n DomHandler,\n // Old name for DomHandler\n DomHandler as DefaultHandler,\n type DomHandlerOptions,\n} from \"domhandler\";\n\nexport type Options = ParserOptions & DomHandlerOptions;\n\n// Helper methods\n\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n */\nexport function parseDocument(data: string, options?: Options): Document {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM handler.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data: string, options?: Options): ChildNode[] {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with the resulting document.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDocumentStream(\n callback: (error: Error | null, document: Document) => void,\n options?: Options,\n elementCallback?: (element: Element) => void,\n): Parser {\n const handler: DomHandler = new DomHandler(\n (error: Error | null) => callback(error, handler.root),\n options,\n elementCallback,\n );\n return new Parser(handler, options);\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed, with an array of root nodes.\n * @param options Optional options for the parser and DOM handler.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n * @deprecated Use `createDocumentStream` instead.\n */\nexport function createDomStream(\n callback: (error: Error | null, dom: ChildNode[]) => void,\n options?: Options,\n elementCallback?: (element: Element) => void,\n): Parser {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\n\nexport {\n default as Tokenizer,\n type Callbacks as TokenizerCallbacks,\n QuoteType,\n} from \"./Tokenizer.js\";\n\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\n\nimport { getFeed, type Feed } from \"domutils\";\n\nexport { getFeed, type Feed } from \"domutils\";\n\nconst parseFeedDefaultOptions = { xmlMode: true };\n\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(\n feed: string,\n options: Options = parseFeedDefaultOptions,\n): Feed | null {\n return getFeed(parseDOM(feed, options));\n}\n\nexport * as DomUtils from \"domutils\";\n", "// Generated using scripts/write-decode-map.ts\n\nexport const htmlDecodeTree: Uint16Array = /* #__PURE__ */ new Uint16Array(\n // prettier-ignore\n /* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)),\n);\n", "// Generated using scripts/write-decode-map.ts\n\nexport const xmlDecodeTree: Uint16Array = /* #__PURE__ */ new Uint16Array(\n // prettier-ignore\n /* #__PURE__ */ \"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)),\n);\n", "// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\n\nconst decodeMap = new Map([\n [0, 65_533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint: (...codePoints: number[]) => string =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n String.fromCodePoint ??\n function (codePoint: number): string {\n let output = \"\";\n\n if (codePoint > 0xff_ff) {\n codePoint -= 0x1_00_00;\n output += String.fromCharCode(\n ((codePoint >>> 10) & 0x3_ff) | 0xd8_00,\n );\n codePoint = 0xdc_00 | (codePoint & 0x3_ff);\n }\n\n output += String.fromCharCode(codePoint);\n return output;\n };\n\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint: number): number {\n if (\n (codePoint >= 0xd8_00 && codePoint <= 0xdf_ff) ||\n codePoint > 0x10_ff_ff\n ) {\n return 0xff_fd;\n }\n\n return decodeMap.get(codePoint) ?? codePoint;\n}\n\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint: number): string {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n", "import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\n\nconst enum CharCodes {\n NUM = 35, // \"#\"\n SEMI = 59, // \";\"\n EQUALS = 61, // \"=\"\n ZERO = 48, // \"0\"\n NINE = 57, // \"9\"\n LOWER_A = 97, // \"a\"\n LOWER_F = 102, // \"f\"\n LOWER_X = 120, // \"x\"\n LOWER_Z = 122, // \"z\"\n UPPER_A = 65, // \"A\"\n UPPER_F = 70, // \"F\"\n UPPER_Z = 90, // \"Z\"\n}\n\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b10_0000;\n\nexport enum BinTrieFlags {\n VALUE_LENGTH = 0b1100_0000_0000_0000,\n BRANCH_LENGTH = 0b0011_1111_1000_0000,\n JUMP_TABLE = 0b0000_0000_0111_1111,\n}\n\nfunction isNumber(code: number): boolean {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\n\nfunction isHexadecimalCharacter(code: number): boolean {\n return (\n (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)\n );\n}\n\nfunction isAsciiAlphaNumeric(code: number): boolean {\n return (\n (code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code)\n );\n}\n\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code: number): boolean {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\n\nconst enum EntityDecoderState {\n EntityStart,\n NumericStart,\n NumericDecimal,\n NumericHex,\n NamedEntity,\n}\n\nexport enum DecodingMode {\n /** Entities in text nodes that can end with any character. */\n Legacy = 0,\n /** Only allow entities terminated with a semicolon. */\n Strict = 1,\n /** Entities in attributes have limitations on ending characters. */\n Attribute = 2,\n}\n\n/**\n * Producers for character reference errors as defined in the HTML spec.\n */\nexport interface EntityErrorProducer {\n missingSemicolonAfterCharacterReference(): void;\n absenceOfDigitsInNumericCharacterReference(\n consumedCharacters: number,\n ): void;\n validateNumericCharacterReference(code: number): void;\n}\n\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n private readonly decodeTree: Uint16Array,\n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n private readonly emitCodePoint: (cp: number, consumed: number) => void,\n /** An object that is used to produce errors. */\n private readonly errors?: EntityErrorProducer | undefined,\n ) {}\n\n /** The current state of the decoder. */\n private state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n private consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n private result = 0;\n\n /** The current index in the decode tree. */\n private treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n private excess = 1;\n /** The mode in which the decoder is operating. */\n private decodeMode = DecodingMode.Strict;\n\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode: DecodingMode): void {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input: string, offset: number): number {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericStart(input: string, offset: number): number {\n if (offset >= input.length) {\n return -1;\n }\n\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n\n private addToNumericResult(\n input: string,\n start: number,\n end: number,\n base: number,\n ): void {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericHex(input: string, offset: number): number {\n const startIndex = offset;\n\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n } else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n\n this.addToNumericResult(input, startIndex, offset, 16);\n\n return -1;\n }\n\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNumericDecimal(input: string, offset: number): number {\n const startIndex = offset;\n\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n } else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n\n this.addToNumericResult(input, startIndex, offset, 10);\n\n return -1;\n }\n\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n private emitNumericEntity(lastCp: number, expectedLength: number): number {\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n this.errors?.absenceOfDigitsInNumericCharacterReference(\n this.consumed,\n );\n return 0;\n }\n\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n } else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n\n this.errors.validateNumericCharacterReference(this.result);\n }\n\n return this.consumed;\n }\n\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n private stateNamedEntity(input: string, offset: number): number {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n\n this.treeIndex = determineBranch(\n decodeTree,\n current,\n this.treeIndex + Math.max(1, valueLength),\n char,\n );\n\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(\n this.treeIndex,\n valueLength,\n this.consumed + this.excess,\n );\n }\n\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n\n return -1;\n }\n\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n private emitNotTerminatedNamedEntity(): number {\n const { result, decodeTree } = this;\n\n const valueLength =\n (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n\n this.emitNamedEntityData(result, valueLength, this.consumed);\n this.errors?.missingSemicolonAfterCharacterReference();\n\n return this.consumed;\n }\n\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n private emitNamedEntityData(\n result: number,\n valueLength: number,\n consumed: number,\n ): number {\n const { decodeTree } = this;\n\n this.emitCodePoint(\n valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1],\n consumed,\n );\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n\n return consumed;\n }\n\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end(): number {\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n this.errors?.absenceOfDigitsInNumericCharacterReference(\n this.consumed,\n );\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree: Uint16Array) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(\n decodeTree,\n (data) => (returnValue += fromCodePoint(data)),\n );\n\n return function decodeWithTrie(\n input: string,\n decodeMode: DecodingMode,\n ): string {\n let lastIndex = 0;\n let offset = 0;\n\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n\n decoder.startEntity(decodeMode);\n\n const length = decoder.write(\n input,\n // Skip the \"&\"\n offset + 1,\n );\n\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n\n const result = returnValue + input.slice(lastIndex);\n\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n\n return result;\n };\n}\n\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(\n decodeTree: Uint16Array,\n current: number,\n nodeIndex: number,\n char: number,\n): number {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n\n // Case 3: Multiple branches encoded in dictionary\n\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n\n if (midValue < char) {\n lo = mid + 1;\n } else if (midValue > char) {\n hi = mid - 1;\n } else {\n return decodeTree[mid + branchCount];\n }\n }\n\n return -1;\n}\n\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(\n htmlString: string,\n mode: DecodingMode = DecodingMode.Legacy,\n): string {\n return htmlDecoder(htmlString, mode);\n}\n\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute: string): string {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString: string): string {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString: string): string {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\n\nexport {\n decodeCodePoint,\n replaceCodePoint,\n fromCodePoint,\n} from \"./decode-codepoint.js\";\n", "import {\n EntityDecoder,\n DecodingMode,\n htmlDecodeTree,\n xmlDecodeTree,\n} from \"entities/decode\";\n\nconst enum CharCodes {\n Tab = 0x9, // \"\\t\"\n NewLine = 0xa, // \"\\n\"\n FormFeed = 0xc, // \"\\f\"\n CarriageReturn = 0xd, // \"\\r\"\n Space = 0x20, // \" \"\n ExclamationMark = 0x21, // \"!\"\n Number = 0x23, // \"#\"\n Amp = 0x26, // \"&\"\n SingleQuote = 0x27, // \"'\"\n DoubleQuote = 0x22, // '\"'\n Dash = 0x2d, // \"-\"\n Slash = 0x2f, // \"/\"\n Zero = 0x30, // \"0\"\n Nine = 0x39, // \"9\"\n Semi = 0x3b, // \";\"\n Lt = 0x3c, // \"<\"\n Eq = 0x3d, // \"=\"\n Gt = 0x3e, // \">\"\n Questionmark = 0x3f, // \"?\"\n UpperA = 0x41, // \"A\"\n LowerA = 0x61, // \"a\"\n UpperF = 0x46, // \"F\"\n LowerF = 0x66, // \"f\"\n UpperZ = 0x5a, // \"Z\"\n LowerZ = 0x7a, // \"z\"\n LowerX = 0x78, // \"x\"\n OpeningSquareBracket = 0x5b, // \"[\"\n}\n\n/** All the states the tokenizer can be in. */\nconst enum State {\n Text = 1,\n BeforeTagName, // After <\n InTagName,\n InSelfClosingTag,\n BeforeClosingTagName,\n InClosingTagName,\n AfterClosingTagName,\n\n // Attributes\n BeforeAttributeName,\n InAttributeName,\n AfterAttributeName,\n BeforeAttributeValue,\n InAttributeValueDq, // \"\n InAttributeValueSq, // '\n InAttributeValueNq,\n\n // Declarations\n BeforeDeclaration, // !\n InDeclaration,\n\n // Processing instructions\n InProcessingInstruction, // ?\n\n // Comments & CDATA\n BeforeComment,\n CDATASequence,\n InSpecialComment,\n InCommentLike,\n\n // Special tags\n BeforeSpecialS, // Decide if we deal with `<script` or `<style`\n BeforeSpecialT, // Decide if we deal with `<title` or `<textarea`\n SpecialStartSequence,\n InSpecialTag,\n\n InEntity,\n}\n\nfunction isWhitespace(c: number): boolean {\n return (\n c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn\n );\n}\n\nfunction isEndOfTagSection(c: number): boolean {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\n\nfunction isASCIIAlpha(c: number): boolean {\n return (\n (c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ)\n );\n}\n\nexport enum QuoteType {\n NoValue = 0,\n Unquoted = 1,\n Single = 2,\n Double = 3,\n}\n\nexport interface Callbacks {\n onattribdata(start: number, endIndex: number): void;\n onattribentity(codepoint: number): void;\n onattribend(quote: QuoteType, endIndex: number): void;\n onattribname(start: number, endIndex: number): void;\n oncdata(start: number, endIndex: number, endOffset: number): void;\n onclosetag(start: number, endIndex: number): void;\n oncomment(start: number, endIndex: number, endOffset: number): void;\n ondeclaration(start: number, endIndex: number): void;\n onend(): void;\n onopentagend(endIndex: number): void;\n onopentagname(start: number, endIndex: number): void;\n onprocessinginstruction(start: number, endIndex: number): void;\n onselfclosingtag(endIndex: number): void;\n ontext(start: number, endIndex: number): void;\n ontextentity(codepoint: number, endIndex: number): void;\n}\n\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n TextareaEnd: new Uint8Array([\n 0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,\n ]), // `</textarea`\n XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`\n};\n\nexport default class Tokenizer {\n /** The current state the tokenizer is in. */\n private state = State.Text;\n /** The read buffer. */\n private buffer = \"\";\n /** The beginning of the section that is currently being read. */\n private sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n private index = 0;\n /** The start of the last entity. */\n private entityStart = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n private baseState = State.Text;\n /** For special parsing behavior inside of script and style tags. */\n private isSpecial = false;\n /** Indicates whether the tokenizer has been paused. */\n public running = true;\n /** The offset of the current buffer. */\n private offset = 0;\n\n private readonly xmlMode: boolean;\n private readonly decodeEntities: boolean;\n private readonly entityDecoder: EntityDecoder;\n\n constructor(\n {\n xmlMode = false,\n decodeEntities = true,\n }: { xmlMode?: boolean; decodeEntities?: boolean },\n private readonly cbs: Callbacks,\n ) {\n this.xmlMode = xmlMode;\n this.decodeEntities = decodeEntities;\n this.entityDecoder = new EntityDecoder(\n xmlMode ? xmlDecodeTree : htmlDecodeTree,\n (cp, consumed) => this.emitCodePoint(cp, consumed),\n );\n }\n\n public reset(): void {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined!;\n this.running = true;\n this.offset = 0;\n }\n\n public write(chunk: string): void {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n\n public end(): void {\n if (this.running) this.finish();\n }\n\n public pause(): void {\n this.running = false;\n }\n\n public resume(): void {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n\n private stateText(c: number): void {\n if (\n c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))\n ) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n } else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n\n private currentSequence: Uint8Array = undefined!;\n private sequenceIndex = 0;\n private stateSpecialStartSequence(c: number): void {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n\n if (!isMatch) {\n this.isSpecial = false;\n } else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n\n /** Look for an end tag. For <title> tags, also decode entities. */\n private stateInSpecialTag(c: number): void {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n\n this.sequenceIndex = 0;\n }\n\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n } else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n } else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n } else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n\n private stateCDATASequence(c: number): void {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n } else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n private fastForwardTo(c: number): boolean {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n\n return false;\n }\n\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n private stateInCommentLike(c: number): void {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n } else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n } else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n } else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n private isTagStartChar(c: number) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n\n private startSpecial(sequence: Uint8Array, offset: number) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n\n private stateBeforeTagName(c: number): void {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n } else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n } else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (this.xmlMode) {\n this.state = State.InTagName;\n } else if (lower === Sequences.ScriptEnd[2]) {\n this.state = State.BeforeSpecialS;\n } else if (\n lower === Sequences.TitleEnd[2] ||\n lower === Sequences.XmpEnd[2]\n ) {\n this.state = State.BeforeSpecialT;\n } else {\n this.state = State.InTagName;\n }\n } else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n } else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n private stateInTagName(c: number): void {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n private stateBeforeClosingTagName(c: number): void {\n if (isWhitespace(c)) {\n // Ignore\n } else if (c === CharCodes.Gt) {\n this.state = State.Text;\n } else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n private stateInClosingTagName(c: number): void {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n private stateAfterClosingTagName(c: number): void {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n private stateBeforeAttributeName(c: number): void {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n } else {\n this.state = State.Text;\n }\n this.sectionStart = this.index + 1;\n } else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n } else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n private stateInSelfClosingTag(c: number): void {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n } else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n private stateInAttributeName(c: number): void {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n private stateAfterAttributeName(c: number): void {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n } else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n private stateBeforeAttributeValue(c: number): void {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n } else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n } else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n private handleInAttributeValue(c: number, quote: number) {\n if (\n c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))\n ) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(\n quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single,\n this.index + 1,\n );\n this.state = State.BeforeAttributeName;\n } else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n private stateInAttributeValueDoubleQuotes(c: number): void {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n private stateInAttributeValueSingleQuotes(c: number): void {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n private stateInAttributeValueNoQuotes(c: number): void {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n } else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n private stateBeforeDeclaration(c: number): void {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n } else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n private stateInDeclaration(c: number): void {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n private stateInProcessingInstruction(c: number): void {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n private stateBeforeComment(c: number): void {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n } else {\n this.state = State.InDeclaration;\n }\n }\n private stateInSpecialComment(c: number): void {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n private stateBeforeSpecialS(c: number): void {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n } else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n } else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n\n private stateBeforeSpecialT(c: number): void {\n const lower = c | 0x20;\n switch (lower) {\n case Sequences.TitleEnd[3]: {\n this.startSpecial(Sequences.TitleEnd, 4);\n\n break;\n }\n case Sequences.TextareaEnd[3]: {\n this.startSpecial(Sequences.TextareaEnd, 4);\n\n break;\n }\n case Sequences.XmpEnd[3]: {\n this.startSpecial(Sequences.XmpEnd, 4);\n\n break;\n }\n default: {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n }\n\n private startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(\n this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute,\n );\n }\n\n private stateInEntity(): void {\n const length = this.entityDecoder.write(\n this.buffer,\n this.index - this.offset,\n );\n\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n\n if (length === 0) {\n this.index = this.entityStart;\n }\n } else {\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n\n /**\n * Remove data that has already been consumed from the buffer.\n */\n private cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (\n this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)\n ) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n } else if (\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq\n ) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n\n private shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n private parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.BeforeSpecialT: {\n this.stateBeforeSpecialT(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n\n private finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n\n this.handleTrailingData();\n\n this.cbs.onend();\n }\n\n /** Handle any trailing data. */\n private handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n } else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n } else if (\n this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName\n ) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n } else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n\n private emitCodePoint(cp: number, consumed: number): void {\n if (\n this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag\n ) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n\n this.cbs.onattribentity(cp);\n } else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n", "import Tokenizer, { type Callbacks, QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/decode\";\n\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\n\nconst openImpliesClose = new Map<string, Set<string>>([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\n\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\n\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\n\nexport interface ParserOptions {\n /**\n * Indicates whether special tags (`<script>`, `<style>`, and `<title>`) should get special treatment\n * and if \"empty\" tags (eg. `<br>`) can have children. If `false`, the content of special tags\n * will be text only. For feeds and other XML content (documents that don't consist of HTML),\n * set this to `true`.\n *\n * @default false\n */\n xmlMode?: boolean;\n\n /**\n * Decode entities within the document.\n *\n * @default true\n */\n decodeEntities?: boolean;\n\n /**\n * If set to true, all tags will be lowercased.\n *\n * @default !xmlMode\n */\n lowerCaseTags?: boolean;\n\n /**\n * If set to `true`, all attribute names will be lowercased. This has noticeable impact on speed.\n *\n * @default !xmlMode\n */\n lowerCaseAttributeNames?: boolean;\n\n /**\n * If set to true, CDATA sections will be recognized as text even if the xmlMode option is not enabled.\n * NOTE: If xmlMode is set to `true` then CDATA sections will always be recognized as text.\n *\n * @default xmlMode\n */\n recognizeCDATA?: boolean;\n\n /**\n * If set to `true`, self-closing tags will trigger the onclosetag event even if xmlMode is not set to `true`.\n * NOTE: If xmlMode is set to `true` then self-closing tags will always be recognized.\n *\n * @default xmlMode\n */\n recognizeSelfClosing?: boolean;\n\n /**\n * Allows the default tokenizer to be overwritten.\n */\n Tokenizer?: typeof Tokenizer;\n}\n\nexport interface Handler {\n onparserinit(parser: Parser): void;\n\n /**\n * Resets the handler back to starting state\n */\n onreset(): void;\n\n /**\n * Signals the handler that parsing is done\n */\n onend(): void;\n onerror(error: Error): void;\n onclosetag(name: string, isImplied: boolean): void;\n onopentagname(name: string): void;\n /**\n *\n * @param name Name of the attribute\n * @param value Value of the attribute.\n * @param quote Quotes used around the attribute. `null` if the attribute has no quotes around the value, `undefined` if the attribute has no value.\n */\n onattribute(\n name: string,\n value: string,\n quote?: string | undefined | null,\n ): void;\n onopentag(\n name: string,\n attribs: { [s: string]: string },\n isImplied: boolean,\n ): void;\n ontext(data: string): void;\n oncomment(data: string): void;\n oncdatastart(): void;\n oncdataend(): void;\n oncommentend(): void;\n onprocessinginstruction(name: string, data: string): void;\n}\n\nconst reNameEnd = /\\s|\\//;\n\nexport class Parser implements Callbacks {\n /** The start index of the last event. */\n public startIndex = 0;\n /** The end index of the last event. */\n public endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n private openTagStart = 0;\n\n private tagname = \"\";\n private attribname = \"\";\n private attribvalue = \"\";\n private attribs: null | { [key: string]: string } = null;\n private readonly stack: string[] = [];\n /** Determines whether self-closing tags are recognized. */\n private readonly foreignContext: boolean[];\n private readonly cbs: Partial<Handler>;\n private readonly lowerCaseTagNames: boolean;\n private readonly lowerCaseAttributeNames: boolean;\n private readonly recognizeSelfClosing: boolean;\n /** We are parsing HTML. Inverse of the `xmlMode` option. */\n private readonly htmlMode: boolean;\n private readonly tokenizer: Tokenizer;\n\n private readonly buffers: string[] = [];\n private bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n private writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n private ended = false;\n\n constructor(\n cbs?: Partial<Handler> | null,\n private readonly options: ParserOptions = {},\n ) {\n this.cbs = cbs ?? {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = options.lowerCaseTags ?? this.htmlMode;\n this.lowerCaseAttributeNames =\n options.lowerCaseAttributeNames ?? this.htmlMode;\n this.recognizeSelfClosing =\n options.recognizeSelfClosing ?? !this.htmlMode;\n this.tokenizer = new (options.Tokenizer ?? Tokenizer)(\n this.options,\n this,\n );\n this.foreignContext = [!this.htmlMode];\n this.cbs.onparserinit?.(this);\n }\n\n // Tokenizer event handlers\n\n /** @internal */\n ontext(start: number, endIndex: number): void {\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n this.cbs.ontext?.(data);\n this.startIndex = endIndex;\n }\n\n /** @internal */\n ontextentity(cp: number, endIndex: number): void {\n this.endIndex = endIndex - 1;\n this.cbs.ontext?.(fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n */\n protected isVoidElement(name: string): boolean {\n return this.htmlMode && voidElements.has(name);\n }\n\n /** @internal */\n onopentagname(start: number, endIndex: number): void {\n this.endIndex = endIndex;\n\n let name = this.getSlice(start, endIndex);\n\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n this.emitOpenTag(name);\n }\n\n private emitOpenTag(name: string) {\n this.openTagStart = this.startIndex;\n this.tagname = name;\n\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n const element = this.stack.shift()!;\n this.cbs.onclosetag?.(element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n\n if (this.htmlMode) {\n if (foreignContextElements.has(name)) {\n this.foreignContext.unshift(true);\n } else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(false);\n }\n }\n }\n this.cbs.onopentagname?.(name);\n if (this.cbs.onopentag) this.attribs = {};\n }\n\n private endOpenTag(isImplied: boolean) {\n this.startIndex = this.openTagStart;\n\n if (this.attribs) {\n this.cbs.onopentag?.(this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n\n this.tagname = \"\";\n }\n\n /** @internal */\n onopentagend(endIndex: number): void {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n\n /** @internal */\n onclosetag(start: number, endIndex: number): void {\n this.endIndex = endIndex;\n\n let name = this.getSlice(start, endIndex);\n\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n if (\n this.htmlMode &&\n (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name))\n ) {\n this.foreignContext.shift();\n }\n\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index <= pos; index++) {\n const element = this.stack.shift()!;\n // We know the stack has sufficient elements.\n this.cbs.onclosetag?.(element, index !== pos);\n }\n } else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n } else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n this.cbs.onopentagname?.(\"br\");\n this.cbs.onopentag?.(\"br\", {}, true);\n this.cbs.onclosetag?.(\"br\", false);\n }\n\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n\n /** @internal */\n onselfclosingtag(endIndex: number): void {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.foreignContext[0]) {\n this.closeCurrentTag(false);\n\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n } else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n\n private closeCurrentTag(isOpenImplied: boolean) {\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n this.cbs.onclosetag?.(name, !isOpenImplied);\n this.stack.shift();\n }\n }\n\n /** @internal */\n onattribname(start: number, endIndex: number): void {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n\n /** @internal */\n onattribdata(start: number, endIndex: number): void {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n\n /** @internal */\n onattribentity(cp: number): void {\n this.attribvalue += fromCodePoint(cp);\n }\n\n /** @internal */\n onattribend(quote: QuoteType, endIndex: number): void {\n this.endIndex = endIndex;\n\n this.cbs.onattribute?.(\n this.attribname,\n this.attribvalue,\n quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null,\n );\n\n if (\n this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)\n ) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n\n private getInstructionName(value: string) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n return name;\n }\n\n /** @internal */\n ondeclaration(start: number, endIndex: number): void {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n\n /** @internal */\n onprocessinginstruction(start: number, endIndex: number): void {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n\n /** @internal */\n oncomment(start: number, endIndex: number, offset: number): void {\n this.endIndex = endIndex;\n\n this.cbs.oncomment?.(this.getSlice(start, endIndex - offset));\n this.cbs.oncommentend?.();\n\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n\n /** @internal */\n oncdata(start: number, endIndex: number, offset: number): void {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n\n if (!this.htmlMode || this.options.recognizeCDATA) {\n this.cbs.oncdatastart?.();\n this.cbs.ontext?.(value);\n this.cbs.oncdataend?.();\n } else {\n this.cbs.oncomment?.(`[CDATA[${value}]]`);\n this.cbs.oncommentend?.();\n }\n\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n\n /** @internal */\n onend(): void {\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n this.cbs.onend?.();\n }\n\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n public reset(): void {\n this.cbs.onreset?.();\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n this.cbs.onparserinit?.(this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(!this.htmlMode);\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n public parseComplete(data: string): void {\n this.reset();\n this.end(data);\n }\n\n private getSlice(start: number, end: number) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n\n let slice = this.buffers[0].slice(\n start - this.bufferOffset,\n end - this.bufferOffset,\n );\n\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n\n return slice;\n }\n\n private shiftBuffer(): void {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n public write(chunk: string): void {\n if (this.ended) {\n this.cbs.onerror?.(new Error(\".write() after done!\"));\n return;\n }\n\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n public end(chunk?: string): void {\n if (this.ended) {\n this.cbs.onerror?.(new Error(\".end() after done!\"));\n return;\n }\n\n if (chunk) this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n public pause(): void {\n this.tokenizer.pause();\n }\n\n /**\n * Resumes parsing after `pause` was called.\n */\n public resume(): void {\n this.tokenizer.resume();\n\n while (\n this.tokenizer.running &&\n this.writeIndex < this.buffers.length\n ) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n\n if (this.ended) this.tokenizer.end();\n }\n\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n public parseChunk(chunk: string): void {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n public done(chunk?: string): void {\n this.end(chunk);\n }\n}\n", "/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n", "import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n", "import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n", null, null, null, null, null, null, null, null, "export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n", "/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n", null, null, null, null, null, null, null, "// Internal\nexport const NODE_END = -1;\n\n// Node\nexport const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const CDATA_SECTION_NODE = 4;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n\n// Elements\nexport const BLOCK_ELEMENTS = new Set(['ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'BODY', 'BR', 'BUTTON', 'CANVAS', 'CAPTION', 'COL', 'COLGROUP', 'DD', 'DIV', 'DL', 'DT', 'EMBED', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'UL', 'OL', 'P']);\n\n// TreeWalker\nexport const SHOW_ALL = -1;\nexport const SHOW_ELEMENT = 1;\nexport const SHOW_TEXT = 4;\nexport const SHOW_CDATA_SECTION = 8;\nexport const SHOW_COMMENT = 128;\n\n// Document position\nexport const DOCUMENT_POSITION_DISCONNECTED = 0x01;\nexport const DOCUMENT_POSITION_PRECEDING = 0x02;\nexport const DOCUMENT_POSITION_FOLLOWING = 0x04;\nexport const DOCUMENT_POSITION_CONTAINS = 0x08;\nexport const DOCUMENT_POSITION_CONTAINED_BY = 0x10;\nexport const DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\n\n// SVG\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n", "const {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n} = Object;\n\nexport {\n assign,\n create,\n defineProperties,\n entries,\n getOwnPropertyDescriptors,\n keys,\n setPrototypeOf\n};\n", "import {ELEMENT_NODE} from './constants.js';\nimport {END, MIME, NEXT, PREV} from './symbols.js';\n\nconst $String = String;\nexport {$String as String};\n\nexport const getEnd = node => node.nodeType === ELEMENT_NODE ? node[END] : node;\n\nexport const ignoreCase = ({ownerDocument}) => ownerDocument[MIME].ignoreCase;\n\nexport const knownAdjacent = (prev, next) => {\n prev[NEXT] = next;\n next[PREV] = prev;\n};\n\nexport const knownBoundaries = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(getEnd(current), next);\n};\n\nexport const knownSegment = (prev, start, end, next) => {\n knownAdjacent(prev, start);\n knownAdjacent(getEnd(end), next);\n};\n\nexport const knownSiblings = (prev, current, next) => {\n knownAdjacent(prev, current);\n knownAdjacent(current, next);\n};\n\nexport const localCase = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName;\n};\n\nexport const setAdjacent = (prev, next) => {\n if (prev)\n prev[NEXT] = next;\n if (next)\n next[PREV] = prev;\n};\n", "export const shadowRoots = new WeakMap;\n", "import {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT, UPGRADE} from '../shared/symbols.js';\nimport {entries, setPrototypeOf} from '../shared/object.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nlet reactive = false;\n\nexport const Classes = new WeakMap;\n\nexport const customElements = new WeakMap;\n\nexport const attributeChangedCallback = (element, attributeName, oldValue, newValue) => {\n if (\n reactive &&\n customElements.has(element) &&\n element.attributeChangedCallback &&\n element.constructor.observedAttributes.includes(attributeName)\n ) {\n element.attributeChangedCallback(attributeName, oldValue, newValue);\n }\n};\n\nconst createTrigger = (method, isConnected) => element => {\n if (customElements.has(element)) {\n const info = customElements.get(element);\n if (info.connected !== isConnected && element.isConnected === isConnected) {\n info.connected = isConnected;\n if (method in element)\n element[method]();\n }\n }\n};\n\nconst triggerConnected = createTrigger('connectedCallback', true);\nexport const connectedCallback = element => {\n if (reactive) {\n triggerConnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerConnected(next);\n next = next[NEXT];\n }\n }\n};\n\nconst triggerDisconnected = createTrigger('disconnectedCallback', false);\nexport const disconnectedCallback = element => {\n if (reactive) {\n triggerDisconnected(element);\n if (shadowRoots.has(element))\n element = shadowRoots.get(element).shadowRoot;\n let {[NEXT]: next, [END]: end} = element;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n triggerDisconnected(next);\n next = next[NEXT];\n }\n }\n};\n\n/**\n * @implements globalThis.CustomElementRegistry\n */\nexport class CustomElementRegistry {\n\n /**\n * @param {Document} ownerDocument\n */\n constructor(ownerDocument) {\n /**\n * @private\n */\n this.ownerDocument = ownerDocument;\n\n /**\n * @private\n */\n this.registry = new Map;\n\n /**\n * @private\n */\n this.waiting = new Map;\n\n /**\n * @private\n */\n this.active = false;\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @param {Function} Class the custom element **Class** definition\n * @param {object?} options the optional object with an `extends` property\n */\n define(localName, Class, options = {}) {\n const {ownerDocument, registry, waiting} = this;\n\n if (registry.has(localName))\n throw new Error('unable to redefine ' + localName);\n\n if (Classes.has(Class))\n throw new Error('unable to redefine the same class: ' + Class);\n\n this.active = (reactive = true);\n\n const {extends: extend} = options;\n\n Classes.set(Class, {\n ownerDocument,\n options: {is: extend ? localName : ''},\n localName: extend || localName\n });\n\n const check = extend ?\n element => {\n return element.localName === extend &&\n element.getAttribute('is') === localName;\n } :\n element => element.localName === localName;\n registry.set(localName, {Class, check});\n if (waiting.has(localName)) {\n for (const resolve of waiting.get(localName))\n resolve(Class);\n waiting.delete(localName);\n }\n ownerDocument.querySelectorAll(\n extend ? `${extend}[is=\"${localName}\"]` : localName\n ).forEach(this.upgrade, this);\n }\n\n /**\n * @param {Element} element\n */\n upgrade(element) {\n if (customElements.has(element))\n return;\n const {ownerDocument, registry} = this;\n const ce = element.getAttribute('is') || element.localName;\n if (registry.has(ce)) {\n const {Class, check} = registry.get(ce);\n if (check(element)) {\n const {attributes, isConnected} = element;\n for (const attr of attributes)\n element.removeAttributeNode(attr);\n\n const values = entries(element);\n for (const [key] of values)\n delete element[key];\n\n setPrototypeOf(element, Class.prototype);\n ownerDocument[UPGRADE] = {element, values};\n new Class(ownerDocument, ce);\n\n customElements.set(element, {connected: isConnected});\n\n for (const attr of attributes)\n element.setAttributeNode(attr);\n\n if (isConnected && element.connectedCallback)\n element.connectedCallback();\n }\n }\n }\n\n /**\n * @param {string} localName the custom element definition name\n */\n whenDefined(localName) {\n const {registry, waiting} = this;\n return new Promise(resolve => {\n if (registry.has(localName))\n resolve(registry.get(localName).Class);\n else {\n if (!waiting.has(localName))\n waiting.set(localName, []);\n waiting.get(localName).push(resolve);\n }\n });\n }\n\n /**\n * @param {string} localName the custom element definition name\n * @returns {Function?} the custom element **Class**, if any\n */\n get(localName) {\n const info = this.registry.get(localName);\n return info && info.Class;\n }\n\n /**\n * @param {Function} Class **Class** of custom element\n * @returns {string?} found tag name or null\n */\n getName(Class) {\n if (Classes.has(Class)) {\n const { localName } = Classes.get(Class);\n return localName;\n }\n return null;\n }\n}\n", "import * as HTMLParser2 from 'htmlparser2';\n\nimport {ELEMENT_NODE, SVG_NAMESPACE} from './constants.js';\nimport {CUSTOM_ELEMENTS, PREV, END, VALUE} from './symbols.js';\nimport {keys} from './object.js';\n\nimport {knownBoundaries, knownSiblings} from './utils.js';\nimport {attributeChangedCallback, connectedCallback} from '../interface/custom-element-registry.js';\n\nconst {Parser} = HTMLParser2;\n\n// import {Mime} from './mime.js';\n// const VOID_SOURCE = Mime['text/html'].voidElements.source.slice(4, -2);\n// const VOID_ELEMENTS = new RegExp(`<(${VOID_SOURCE})([^>]*?)>`, 'gi');\n// const VOID_SANITIZER = (_, $1, $2) => `<${$1}${$2}${/\\/$/.test($2) ? '' : ' /'}>`;\n// const voidSanitizer = html => html.replace(VOID_ELEMENTS, VOID_SANITIZER);\n\nlet notParsing = true;\n\nconst append = (self, node, active) => {\n const end = self[END];\n node.parentNode = self;\n knownBoundaries(end[PREV], node, end);\n if (active && node.nodeType === ELEMENT_NODE)\n connectedCallback(node);\n return node;\n};\n\nconst attribute = (element, end, attribute, value, active) => {\n attribute[VALUE] = value;\n attribute.ownerElement = element;\n knownSiblings(end[PREV], attribute, end);\n if (attribute.name === 'class')\n element.className = value;\n if (active)\n attributeChangedCallback(element, attribute.name, null, value);\n};\n\nexport const isNotParsing = () => notParsing;\n\nexport const parseFromString = (document, isHTML, markupLanguage) => {\n const {active, registry} = document[CUSTOM_ELEMENTS];\n\n let node = document;\n let ownerSVGElement = null;\n let parsingCData = false;\n\n notParsing = false;\n\n const content = new Parser({\n // <!DOCTYPE ...>\n onprocessinginstruction(name, data) {\n if (name.toLowerCase() === '!doctype')\n document.doctype = data.slice(name.length).trim();\n },\n\n // <tagName>\n onopentag(name, attributes) {\n let create = true;\n if (isHTML) {\n if (ownerSVGElement) {\n node = append(node, document.createElementNS(SVG_NAMESPACE, name), active);\n node.ownerSVGElement = ownerSVGElement;\n create = false;\n }\n else if (name === 'svg' || name === 'SVG') {\n ownerSVGElement = document.createElementNS(SVG_NAMESPACE, name);\n node = append(node, ownerSVGElement, active);\n create = false;\n }\n else if (active) {\n const ce = name.includes('-') ? name : (attributes.is || '');\n if (ce && registry.has(ce)) {\n const {Class} = registry.get(ce);\n node = append(node, new Class, active);\n delete attributes.is;\n create = false;\n }\n }\n }\n\n if (create)\n node = append(node, document.createElement(name), false);\n\n let end = node[END];\n for (const name of keys(attributes))\n attribute(node, end, document.createAttribute(name), attributes[name], active);\n },\n\n // #text, #comment\n oncomment(data) { append(node, document.createComment(data), active); },\n ontext(text) {\n if (parsingCData) {\n append(node, document.createCDATASection(text), active);\n } else {\n append(node, document.createTextNode(text), active);\n }\n },\n\n // #cdata\n oncdatastart() { parsingCData = true; },\n oncdataend() { parsingCData = false; },\n\n // </tagName>\n onclosetag() {\n if (isHTML && node === ownerSVGElement)\n ownerSVGElement = null;\n node = node.parentNode;\n }\n }, {\n lowerCaseAttributeNames: false,\n decodeEntities: true,\n xmlMode: !isHTML\n });\n\n content.write(markupLanguage);\n content.end();\n\n notParsing = true;\n\n return document;\n};\n", "export const htmlClasses = new Map;\n\nexport const registerHTMLClass = (names, Class) => {\n for (const name of [].concat(names)) {\n htmlClasses.set(name, Class);\n htmlClasses.set(name.toUpperCase(), Class);\n }\n};\n", "import {performance} from '../../commonjs/perf_hooks.cjs';\n\nimport {DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE} from '../shared/constants.js';\n\nimport {\n CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER,\n DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE\n} from '../shared/symbols.js';\n\nimport {Facades, illegalConstructor} from '../shared/facades.js';\nimport {HTMLClasses} from '../shared/html-classes.js';\nimport {Mime} from '../shared/mime.js';\nimport {knownSiblings} from '../shared/utils.js';\nimport {assign, create, defineProperties, setPrototypeOf} from '../shared/object.js';\n\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {Attr} from './attr.js';\nimport {CDATASection} from './cdata-section.js'\nimport {Comment} from './comment.js';\nimport {CustomElementRegistry} from './custom-element-registry.js';\nimport {CustomEvent} from './custom-event.js';\nimport {DocumentFragment} from './document-fragment.js';\nimport {DocumentType} from './document-type.js';\nimport {Element} from './element.js';\nimport {Event} from './event.js';\nimport {EventTarget} from './event-target.js';\nimport {InputEvent} from './input-event.js';\nimport {ImageClass} from './image.js';\nimport {MutationObserverClass} from './mutation-observer.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {NodeList} from './node-list.js';\nimport {Range} from './range.js';\nimport {Text} from './text.js';\nimport {TreeWalker} from './tree-walker.js';\n\nconst query = (method, ownerDocument, selectors) => {\n let {[NEXT]: next, [END]: end} = ownerDocument;\n return method.call({ownerDocument, [NEXT]: next, [END]: end}, selectors);\n};\n\nconst globalExports = assign(\n {},\n Facades,\n HTMLClasses,\n {\n CustomEvent,\n Event,\n EventTarget,\n InputEvent,\n NamedNodeMap,\n NodeList\n }\n);\n\nconst window = new WeakMap;\n\n/**\n * @implements globalThis.Document\n */\nexport class Document extends NonElementParentNode {\n constructor(type) {\n super(null, '#document', DOCUMENT_NODE);\n this[CUSTOM_ELEMENTS] = {active: false, registry: null};\n this[MUTATION_OBSERVER] = {active: false, class: null};\n this[MIME] = Mime[type];\n /** @type {DocumentType} */\n this[DOCTYPE] = null;\n this[DOM_PARSER] = null;\n this[GLOBALS] = null;\n this[IMAGE] = null;\n this[UPGRADE] = null;\n }\n\n /**\n * @type {globalThis.Document['defaultView']}\n */\n get defaultView() {\n if (!window.has(this))\n window.set(this, new Proxy(globalThis, {\n set: (target, name, value) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n this[EVENT_TARGET][name] = value;\n break;\n default:\n target[name] = value;\n break;\n }\n return true;\n },\n get: (globalThis, name) => {\n switch (name) {\n case 'addEventListener':\n case 'removeEventListener':\n case 'dispatchEvent':\n if (!this[EVENT_TARGET]) {\n const et = this[EVENT_TARGET] = new EventTarget;\n et.dispatchEvent = et.dispatchEvent.bind(et);\n et.addEventListener = et.addEventListener.bind(et);\n et.removeEventListener = et.removeEventListener.bind(et);\n }\n return this[EVENT_TARGET][name];\n case 'document':\n return this;\n /* c8 ignore start */\n case 'navigator':\n return {\n userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'\n };\n /* c8 ignore stop */\n case 'window':\n return window.get(this);\n case 'customElements':\n if (!this[CUSTOM_ELEMENTS].registry)\n this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this);\n return this[CUSTOM_ELEMENTS];\n case 'performance':\n return performance;\n case 'DOMParser':\n return this[DOM_PARSER];\n case 'Image':\n if (!this[IMAGE])\n this[IMAGE] = ImageClass(this);\n return this[IMAGE];\n case 'MutationObserver':\n if (!this[MUTATION_OBSERVER].class)\n this[MUTATION_OBSERVER] = new MutationObserverClass(this);\n return this[MUTATION_OBSERVER].class;\n }\n return (this[GLOBALS] && this[GLOBALS][name]) ||\n globalExports[name] ||\n globalThis[name];\n }\n }));\n return window.get(this);\n }\n\n get doctype() {\n const docType = this[DOCTYPE];\n if (docType)\n return docType;\n const {firstChild} = this;\n if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE)\n return (this[DOCTYPE] = firstChild);\n return null;\n }\n\n set doctype(value) {\n if (/^([a-z:]+)(\\s+system|\\s+public(\\s+\"([^\"]+)\")?)?(\\s+\"([^\"]+)\")?/i.test(value)) {\n const {$1: name, $4: publicId, $6: systemId} = RegExp;\n this[DOCTYPE] = new DocumentType(this, name, publicId, systemId);\n knownSiblings(this, this[DOCTYPE], this[NEXT]);\n }\n }\n\n get documentElement() {\n return this.firstElementChild;\n }\n\n get isConnected() { return true; }\n\n /**\n * @protected\n */\n _getParent() {\n return this[EVENT_TARGET];\n }\n\n createAttribute(name) { return new Attr(this, name); }\n createCDATASection(data) { return new CDATASection(this, data); }\n createComment(textContent) { return new Comment(this, textContent); }\n createDocumentFragment() { return new DocumentFragment(this); }\n createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); }\n createElement(localName) { return new Element(this, localName); }\n createRange() {\n const range = new Range;\n range.commonAncestorContainer = this;\n return range;\n }\n createTextNode(textContent) { return new Text(this, textContent); }\n createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); }\n createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); }\n\n createEvent(name) {\n const event = create(name === 'Event' ? new Event('') : new CustomEvent(''));\n event.initEvent = event.initCustomEvent = (\n type,\n canBubble = false,\n cancelable = false,\n detail\n ) => {\n event.bubbles = !!canBubble;\n\n defineProperties(event, {\n type: {value: type},\n canBubble: {value: canBubble},\n cancelable: {value: cancelable},\n detail: {value: detail}\n });\n };\n return event;\n }\n\n cloneNode(deep = false) {\n const {\n constructor,\n [CUSTOM_ELEMENTS]: customElements,\n [DOCTYPE]: doctype\n } = this;\n const document = new constructor();\n document[CUSTOM_ELEMENTS] = customElements;\n if (deep) {\n const end = document[END];\n const {childNodes} = this;\n for (let {length} = childNodes, i = 0; i < length; i++)\n document.insertBefore(childNodes[i].cloneNode(true), end);\n if (doctype)\n document[DOCTYPE] = childNodes[0];\n }\n return document;\n }\n\n importNode(externalNode) {\n // important: keep the signature length as *one*\n // or it would behave like old IE or Edge with polyfills\n const deep = 1 < arguments.length && !!arguments[1];\n const node = externalNode.cloneNode(deep);\n const {[CUSTOM_ELEMENTS]: customElements} = this;\n const {active} = customElements;\n const upgrade = element => {\n const {ownerDocument, nodeType} = element;\n element.ownerDocument = this;\n if (active && ownerDocument !== this && nodeType === ELEMENT_NODE)\n customElements.upgrade(element);\n };\n upgrade(node);\n if (deep) {\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n let {[NEXT]: next, [END]: end} = node;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE)\n upgrade(next);\n next = next[NEXT];\n }\n break;\n }\n }\n }\n return node;\n }\n\n toString() { return this.childNodes.join(''); }\n\n querySelector(selectors) {\n return query(super.querySelector, this, selectors);\n }\n\n querySelectorAll(selectors) {\n return query(super.querySelectorAll, this, selectors);\n }\n\n /* c8 ignore start */\n getElementsByTagNameNS(_, name) {\n return this.getElementsByTagName(name);\n }\n createAttributeNS(_, name) {\n return this.createAttribute(name);\n }\n createElementNS(nsp, localName, options) {\n return nsp === SVG_NAMESPACE ?\n new SVGElement(this, localName, null) :\n this.createElement(localName, options);\n }\n /* c8 ignore stop */\n}\n\nsetPrototypeOf(\n globalExports.Document = function Document() {\n illegalConstructor();\n },\n Document\n).prototype = Document.prototype;\n", "import {\n NODE_END,\n ATTRIBUTE_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_TYPE_NODE,\n ELEMENT_NODE,\n TEXT_NODE\n} from './constants.js';\n\nimport {END, NEXT, VALUE} from './symbols.js';\n\nimport {getEnd} from './utils.js';\n\nconst loopSegment = ({[NEXT]: next, [END]: end}, json) => {\n while (next !== end) {\n switch (next.nodeType) {\n case ATTRIBUTE_NODE:\n attrAsJSON(next, json);\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n characterDataAsJSON(next, json);\n break;\n case ELEMENT_NODE:\n elementAsJSON(next, json);\n next = getEnd(next);\n break;\n case DOCUMENT_TYPE_NODE:\n documentTypeAsJSON(next, json);\n break;\n }\n next = next[NEXT];\n }\n const last = json.length - 1;\n const value = json[last];\n if (typeof value === 'number' && value < 0)\n json[last] += NODE_END;\n else\n json.push(NODE_END);\n};\n\nexport const attrAsJSON = (attr, json) => {\n json.push(ATTRIBUTE_NODE, attr.name);\n const value = attr[VALUE].trim();\n if (value)\n json.push(value);\n};\n\nexport const characterDataAsJSON = (node, json) => {\n const value = node[VALUE];\n if (value.trim())\n json.push(node.nodeType, value);\n};\n\nexport const nonElementAsJSON = (node, json) => {\n json.push(node.nodeType);\n loopSegment(node, json);\n};\n\nexport const documentTypeAsJSON = ({name, publicId, systemId}, json) => {\n json.push(DOCUMENT_TYPE_NODE, name);\n if (publicId)\n json.push(publicId);\n if (systemId)\n json.push(systemId);\n};\n\nexport const elementAsJSON = (element, json) => {\n json.push(ELEMENT_NODE, element.localName);\n loopSegment(element, json);\n};\n", "import {MUTATION_OBSERVER} from '../shared/symbols.js';\n\nconst createRecord =\n (type, target, element, addedNodes, removedNodes, attributeName, oldValue) =>\n ({\n type,\n target,\n addedNodes,\n removedNodes,\n attributeName,\n oldValue,\n previousSibling: element?.previousSibling || null,\n nextSibling: element?.nextSibling || null,\n});\n\nconst queueAttribute = (\n observer, target, attributeName, attributeFilter, attributeOldValue, oldValue\n) => {\n if ((!attributeFilter || attributeFilter.includes(attributeName))) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'attributes', target, null,\n [], [],\n attributeName, attributeOldValue ? oldValue : void 0\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n }\n};\n\nexport const attributeChangedCallback = (element, attributeName, oldValue) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [\n target,\n {\n childList,\n subtree,\n attributes,\n attributeFilter,\n attributeOldValue\n }\n ] of observer.nodes) {\n if (childList) {\n if (\n (subtree && (target === ownerDocument || target.contains(element))) ||\n (!subtree && target.children.includes(element))\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n else if (\n attributes &&\n target === element\n ) {\n queueAttribute(\n observer, element,\n attributeName, attributeFilter, attributeOldValue, oldValue\n );\n break;\n }\n }\n }\n }\n};\n\nexport const moCallback = (element, parentNode) => {\n const {ownerDocument} = element;\n const {active, observers} = ownerDocument[MUTATION_OBSERVER];\n if (active) {\n for (const observer of observers) {\n for (const [target, {subtree, childList, characterData}] of observer.nodes) {\n if (childList) {\n if (\n (parentNode && (target === parentNode || /* c8 ignore next */(subtree && target.contains(parentNode)))) ||\n (!parentNode && ((subtree && (target === ownerDocument || /* c8 ignore next */target.contains(element))) ||\n (!subtree && target[characterData ? 'childNodes' : 'children'].includes(element))))\n ) {\n const {callback, records, scheduled} = observer;\n records.push(createRecord(\n 'childList', target, element,\n parentNode ? [] : [element], parentNode ? [element] : []\n ));\n if (!scheduled) {\n observer.scheduled = true;\n Promise.resolve().then(() => {\n observer.scheduled = false;\n callback(records.splice(0), observer);\n });\n }\n break;\n }\n }\n }\n }\n }\n};\n\nexport class MutationObserverClass {\n constructor(ownerDocument) {\n const observers = new Set;\n this.observers = observers;\n this.active = false;\n\n /**\n * @implements globalThis.MutationObserver\n */\n this.class = class MutationObserver {\n\n constructor(callback) {\n /**\n * @private\n */\n this.callback = callback;\n\n /**\n * @private\n */\n this.nodes = new Map;\n\n /**\n * @private\n */\n this.records = [];\n\n /**\n * @private\n */\n this.scheduled = false;\n }\n\n disconnect() {\n this.records.splice(0);\n this.nodes.clear();\n observers.delete(this);\n ownerDocument[MUTATION_OBSERVER].active = !!observers.size;\n }\n\n /**\n * @param {Element} target\n * @param {MutationObserverInit} options\n */\n observe(target, options = {\n subtree: false,\n childList: false,\n attributes: false,\n attributeFilter: null,\n attributeOldValue: false,\n characterData: false,\n // TODO: not implemented yet\n // characterDataOldValue: false\n }) {\n if (('attributeOldValue' in options) || ('attributeFilter' in options))\n options.attributes = true;\n // if ('characterDataOldValue' in options)\n // options.characterData = true;\n options.childList = !!options.childList;\n options.subtree = !!options.subtree;\n this.nodes.set(target, options);\n observers.add(this);\n ownerDocument[MUTATION_OBSERVER].active = true;\n }\n\n /**\n * @returns {MutationRecord[]}\n */\n takeRecords() { return this.records.splice(0); }\n }\n }\n}\n", "import {CLASS_LIST, NEXT, PREV, VALUE} from './symbols.js';\n\nimport {knownAdjacent, knownSiblings} from './utils.js';\n\nimport {attributeChangedCallback as ceAttributes} from '../interface/custom-element-registry.js';\nimport {attributeChangedCallback as moAttributes} from '../interface/mutation-observer.js';\n\nexport const emptyAttributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'class',\n 'contenteditable',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'draggable',\n 'formnovalidate',\n 'hidden',\n 'id',\n 'ismap',\n 'itemscope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected',\n 'style',\n 'truespeed'\n]);\n\nexport const setAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n attribute.ownerElement = element;\n knownSiblings(element, attribute, element[NEXT]);\n if (name === 'class')\n element.className = value;\n moAttributes(element, name, null);\n ceAttributes(element, name, null, value);\n};\n\nexport const removeAttribute = (element, attribute) => {\n const {[VALUE]: value, name} = attribute;\n knownAdjacent(attribute[PREV], attribute[NEXT]);\n attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null;\n if (name === 'class')\n element[CLASS_LIST] = null;\n moAttributes(element, name, value);\n ceAttributes(element, name, value, null);\n};\n\nexport const booleanAttribute = {\n get(element, name) {\n return element.hasAttribute(name);\n },\n set(element, name, value) {\n if (value)\n element.setAttribute(name, '');\n else\n element.removeAttribute(name);\n }\n};\n\nexport const numericAttribute = {\n get(element, name) {\n return parseFloat(element.getAttribute(name) || 0);\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\nexport const stringAttribute = {\n get(element, name) {\n return element.getAttribute(name) || '';\n },\n set(element, name, value) {\n element.setAttribute(name, value);\n }\n};\n\n/* oddly enough, this apparently is not a thing\nexport const nullableAttribute = {\n get(element, name) {\n return element.getAttribute(name);\n },\n set(element, name, value) {\n if (value === null)\n element.removeAttribute(name);\n else\n element.setAttribute(name, value);\n }\n};\n*/\n", "// https://dom.spec.whatwg.org/#interface-eventtarget\n\nconst wm = new WeakMap();\n\nfunction dispatch(event, listener) {\n if (typeof listener === 'function')\n listener.call(event.target, event);\n else\n listener.handleEvent(event);\n return event._stopImmediatePropagationFlag;\n}\n\nfunction invokeListeners({currentTarget, target}) {\n const map = wm.get(currentTarget);\n if (map && map.has(this.type)) {\n const listeners = map.get(this.type);\n if (currentTarget === target) {\n this.eventPhase = this.AT_TARGET;\n } else {\n this.eventPhase = this.BUBBLING_PHASE;\n }\n\n this.currentTarget = currentTarget;\n this.target = target;\n for (const [listener, options] of listeners) {\n if (options && options.once)\n listeners.delete(listener);\n if (dispatch(this, listener))\n break;\n }\n delete this.currentTarget;\n delete this.target;\n return this.cancelBubble;\n }\n}\n\n\n/**\n * @implements globalThis.EventTarget\n */\nclass DOMEventTarget {\n\n constructor() {\n wm.set(this, new Map);\n }\n\n /**\n * @protected\n */\n _getParent() {\n return null;\n }\n\n addEventListener(type, listener, options) {\n const map = wm.get(this);\n if (!map.has(type)) \n map.set(type, new Map);\n map.get(type).set(listener, options);\n }\n\n removeEventListener(type, listener) {\n const map = wm.get(this);\n if (map.has(type)) {\n const listeners = map.get(type);\n if (listeners.delete(listener) && !listeners.size)\n map.delete(type);\n }\n }\n\n dispatchEvent(event) {\n let node = this;\n event.eventPhase = event.CAPTURING_PHASE;\n\n // intentionally simplified, specs imply way more code: https://dom.spec.whatwg.org/#event-path\n while (node) {\n if (node.dispatchEvent)\n event._path.push({currentTarget: node, target: this});\n node = event.bubbles && node._getParent && node._getParent();\n }\n event._path.some(invokeListeners, event);\n event._path = [];\n event.eventPhase = event.NONE;\n return !event.defaultPrevented;\n }\n\n}\n\nexport {DOMEventTarget as EventTarget};\n", "// https://dom.spec.whatwg.org/#interface-nodelist\n\n/**\n * @implements globalThis.NodeList\n */\nexport class NodeList extends Array {\n item(i) { return i < this.length ? this[i] : null; }\n}\n", "// https://dom.spec.whatwg.org/#node\n\nimport {\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_POSITION_DISCONNECTED,\n DOCUMENT_POSITION_PRECEDING,\n DOCUMENT_POSITION_FOLLOWING,\n DOCUMENT_POSITION_CONTAINS,\n DOCUMENT_POSITION_CONTAINED_BY,\n DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n} from '../shared/constants.js';\n\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {EventTarget} from './event-target.js';\n\nimport {NodeList} from './node-list.js';\n\nconst getParentNodeCount = ({parentNode}) => {\n let count = 0;\n while (parentNode) {\n count++;\n parentNode = parentNode.parentNode;\n }\n return count;\n};\n\n/**\n * @implements globalThis.Node\n */\nexport class Node extends EventTarget {\n\n static get ELEMENT_NODE() { return ELEMENT_NODE; }\n static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n static get TEXT_NODE() { return TEXT_NODE; }\n static get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n static get COMMENT_NODE() { return COMMENT_NODE; }\n static get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n constructor(ownerDocument, localName, nodeType) {\n super();\n this.ownerDocument = ownerDocument;\n this.localName = localName;\n this.nodeType = nodeType;\n this.parentNode = null;\n this[NEXT] = null;\n this[PREV] = null;\n }\n\n get ELEMENT_NODE() { return ELEMENT_NODE; }\n get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; }\n get TEXT_NODE() { return TEXT_NODE; }\n get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; }\n get COMMENT_NODE() { return COMMENT_NODE; }\n get DOCUMENT_NODE() { return DOCUMENT_NODE; }\n get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; }\n get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; }\n\n get baseURI() {\n const ownerDocument = this.nodeType === DOCUMENT_NODE ?\n this : this.ownerDocument;\n if (ownerDocument) {\n const base = ownerDocument.querySelector('base');\n if (base)\n return base.getAttribute('href');\n\n const {location} = ownerDocument.defaultView;\n if (location)\n return location.href;\n }\n\n return null;\n }\n\n /* c8 ignore start */\n // mixin: node\n get isConnected() { return false; }\n get nodeName() { return this.localName; }\n get parentElement() { return null; }\n get previousSibling() { return null; }\n get previousElementSibling() { return null; }\n get nextSibling() { return null; }\n get nextElementSibling() { return null; }\n get childNodes() { return new NodeList; }\n get firstChild() { return null; }\n get lastChild() { return null; }\n\n // default values\n get nodeValue() { return null; }\n set nodeValue(value) {}\n get textContent() { return null; }\n set textContent(value) {}\n normalize() {}\n cloneNode() { return null; }\n contains() { return false; }\n /**\n * Inserts a node before a reference node as a child of this parent node.\n * @param {Node} newNode The node to be inserted.\n * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes.\n * @returns The added child\n */\n // eslint-disable-next-line no-unused-vars\n insertBefore(newNode, referenceNode) { return newNode }\n /**\n * Adds a node to the end of the list of children of this node.\n * @param {Node} child The node to append to the given parent node.\n * @returns The appended child.\n */\n appendChild(child) { return child }\n /**\n * Replaces a child node within this node\n * @param {Node} newChild The new node to replace oldChild.\n * @param {Node} oldChild The child to be replaced.\n * @returns The replaced Node. This is the same node as oldChild.\n */\n replaceChild(newChild, oldChild) { return oldChild }\n /**\n * Removes a child node from the DOM.\n * @param {Node} child A Node that is the child node to be removed from the DOM.\n * @returns The removed node.\n */\n removeChild(child) { return child }\n toString() { return ''; }\n /* c8 ignore stop */\n\n hasChildNodes() { return !!this.lastChild; }\n isSameNode(node) { return this === node; }\n\n // TODO: attributes?\n compareDocumentPosition(target) {\n let result = 0;\n if (this !== target) {\n let self = getParentNodeCount(this);\n let other = getParentNodeCount(target);\n if (self < other) {\n result += DOCUMENT_POSITION_FOLLOWING;\n if (this.contains(target))\n result += DOCUMENT_POSITION_CONTAINED_BY;\n }\n else if (other < self) {\n result += DOCUMENT_POSITION_PRECEDING;\n if (target.contains(this))\n result += DOCUMENT_POSITION_CONTAINS;\n }\n else if (self && other) {\n const {childNodes} = this.parentNode;\n if (childNodes.indexOf(this) < childNodes.indexOf(target))\n result += DOCUMENT_POSITION_FOLLOWING;\n else\n result += DOCUMENT_POSITION_PRECEDING;\n }\n if (!self || !other) {\n result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;\n result += DOCUMENT_POSITION_DISCONNECTED;\n }\n }\n return result;\n }\n\n isEqualNode(node) {\n if (this === node)\n return true;\n if (this.nodeType === node.nodeType) {\n switch (this.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE: {\n const aNodes = this.childNodes;\n const bNodes = node.childNodes;\n return aNodes.length === bNodes.length && aNodes.every((node, i) => node.isEqualNode(bNodes[i]));\n }\n }\n return this.toString() === node.toString();\n }\n return false;\n }\n\n /**\n * @protected\n */\n _getParent() {\n return this.parentNode;\n }\n\n /**\n * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>).\n * Calling it on an element inside a shadow DOM will return the associated ShadowRoot.\n * @return {ShadowRoot | HTMLDocument}\n */\n getRootNode() {\n let root = this;\n while (root.parentNode)\n root = root.parentNode;\n return root;\n }\n}\n", "const {replace} = '';\n\n// escape\nconst ca = /[<>&\\xA0]/g;\n\nconst esca = {\n '\\xA0': ' ',\n '&': '&',\n '<': '<',\n '>': '>'\n};\n\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>` only.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n", "import {ATTRIBUTE_NODE} from '../shared/constants.js';\nimport {CHANGED, VALUE} from '../shared/symbols.js';\nimport {String, ignoreCase} from '../shared/utils.js';\nimport {attrAsJSON} from '../shared/jsdon.js';\nimport {emptyAttributes} from '../shared/attributes.js';\n\nimport {attributeChangedCallback as moAttributes} from './mutation-observer.js';\nimport {attributeChangedCallback as ceAttributes} from './custom-element-registry.js';\n\nimport {Node} from './node.js';\nimport {escape} from '../shared/text-escaper.js';\n\nconst QUOTE = /\"/g;\n\n/**\n * @implements globalThis.Attr\n */\nexport class Attr extends Node {\n constructor(ownerDocument, name, value = '') {\n super(ownerDocument, name, ATTRIBUTE_NODE);\n this.ownerElement = null;\n this.name = String(name);\n this[VALUE] = String(value);\n this[CHANGED] = false;\n }\n\n get value() { return this[VALUE]; }\n set value(newValue) {\n const {[VALUE]: oldValue, name, ownerElement} = this;\n this[VALUE] = String(newValue);\n this[CHANGED] = true;\n if (ownerElement) {\n moAttributes(ownerElement, name, oldValue);\n ceAttributes(ownerElement, name, oldValue, this[VALUE]);\n }\n }\n\n cloneNode() {\n const {ownerDocument, name, [VALUE]: value} = this;\n return new Attr(ownerDocument, name, value);\n }\n\n toString() {\n const {name, [VALUE]: value} = this;\n if (emptyAttributes.has(name) && !value) {\n return ignoreCase(this) ? name : `${name}=\"\"`;\n }\n const escapedValue = (ignoreCase(this) ? value : escape(value)).replace(QUOTE, '"');\n return `${name}=\"${escapedValue}\"`;\n }\n\n toJSON() {\n const json = [];\n attrAsJSON(this, json);\n return json;\n }\n}\n", "import {\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_FRAGMENT_NODE,\n TEXT_NODE,\n NODE_END\n} from './constants.js';\n\nimport {START, NEXT, PREV} from './symbols.js';\nimport {getEnd} from './utils.js';\n\nexport const isConnected = ({ownerDocument, parentNode}) => {\n while (parentNode) {\n if (parentNode === ownerDocument)\n return true;\n parentNode = parentNode.parentNode || parentNode.host;\n }\n return false;\n};\n\nexport const parentElement = ({parentNode}) => {\n if (parentNode) {\n switch (parentNode.nodeType) {\n case DOCUMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n return null;\n }\n }\n return parentNode;\n};\n\nexport const previousSibling = ({[PREV]: prev}) => {\n switch (prev ? prev.nodeType : 0) {\n case NODE_END:\n return prev[START];\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n return prev;\n }\n return null;\n};\n\nexport const nextSibling = node => {\n const next = getEnd(node)[NEXT];\n return next && (next.nodeType === NODE_END ? null : next);\n};\n", "// https://dom.spec.whatwg.org/#nondocumenttypechildnode\n// CharacterData, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\n\nimport {nextSibling, previousSibling} from '../shared/node.js';\n\nexport const nextElementSibling = node => {\n let next = nextSibling(node);\n while (next && next.nodeType !== ELEMENT_NODE)\n next = nextSibling(next);\n return next;\n};\n\nexport const previousElementSibling = node => {\n let prev = previousSibling(node);\n while (prev && prev.nodeType !== ELEMENT_NODE)\n prev = previousSibling(prev);\n return prev;\n};\n", "// https://dom.spec.whatwg.org/#childnode\n// CharacterData, DocumentType, Element\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {NEXT, PREV} from '../shared/symbols.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {disconnectedCallback} from '../interface/custom-element-registry.js';\n\nconst asFragment = (ownerDocument, nodes) => {\n const fragment = ownerDocument.createDocumentFragment();\n fragment.append(...nodes);\n return fragment;\n};\n\nexport const before = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n};\n\nexport const after = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode)\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n getEnd(node)[NEXT]\n );\n};\n\nexport const replaceWith = (node, nodes) => {\n const {ownerDocument, parentNode} = node;\n if (parentNode) {\n if (nodes.includes(node))\n replaceWith(node, [node = node.cloneNode()]);\n parentNode.insertBefore(\n asFragment(ownerDocument, nodes),\n node\n );\n node.remove();\n }\n};\n\nexport const remove = (prev, current, next) => {\n const {parentNode, nodeType} = current;\n if (prev || next) {\n setAdjacent(prev, next);\n current[PREV] = null;\n getEnd(current)[NEXT] = null;\n }\n if (parentNode) {\n current.parentNode = null;\n moCallback(current, parentNode);\n if (nodeType === ELEMENT_NODE)\n disconnectedCallback(current);\n }\n};\n", "// https://dom.spec.whatwg.org/#interface-characterdata\n\nimport {NEXT, PREV, VALUE} from '../shared/symbols.js';\nimport {String} from '../shared/utils.js';\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {characterDataAsJSON} from '../shared/jsdon.js';\n\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\n\nimport {Node} from './node.js';\nimport {moCallback} from './mutation-observer.js';\n\n/**\n * @implements globalThis.CharacterData\n */\nexport class CharacterData extends Node {\n\n constructor(ownerDocument, localName, nodeType, data) {\n super(ownerDocument, localName, nodeType);\n this[VALUE] = String(data);\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[NEXT]); }\n // </Mixins>\n\n // CharacterData only\n /* c8 ignore start */\n get data() { return this[VALUE]; }\n set data(value) {\n this[VALUE] = String(value);\n moCallback(this, this.parentNode);\n }\n\n get nodeValue() { return this.data; }\n set nodeValue(value) { this.data = value; }\n\n get textContent() { return this.data; }\n set textContent(value) { this.data = value; }\n\n get length() { return this.data.length; }\n\n substringData(offset, count) {\n return this.data.substr(offset, count);\n }\n\n appendData(data) {\n this.data += data;\n }\n\n insertData(offset, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset);\n }\n\n deleteData(offset, count) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + t.slice(offset + count);\n }\n\n replaceData(offset, count, data) {\n const {data: t} = this;\n this.data = t.slice(0, offset) + data + t.slice(offset + count);\n }\n /* c8 ignore stop */\n\n toJSON() {\n const json = [];\n characterDataAsJSON(this, json);\n return json;\n }\n}\n", "import {CDATA_SECTION_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.CDATASection\n */\nexport class CDATASection extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#cdatasection', CDATA_SECTION_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new CDATASection(ownerDocument, data);\n }\n\n toString() { return `<![CDATA[${this[VALUE]}]]>`; }\n}\n", "import {COMMENT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Comment\n */\nexport class Comment extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#comment', COMMENT_NODE, data);\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Comment(ownerDocument, data);\n }\n\n toString() { return `<!--${this[VALUE]}-->`; }\n}\n", null, "export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n", "import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, "import * as CSSselect from 'css-select';\n\nimport {ELEMENT_NODE, TEXT_NODE} from './constants.js';\nimport {ignoreCase} from './utils.js';\n\nconst {isArray} = Array;\n\n/* c8 ignore start */\nconst isTag = ({nodeType}) => nodeType === ELEMENT_NODE;\n\nconst existsOne = (test, elements) => elements.some(\n element => isTag(element) && (\n test(element) ||\n existsOne(test, getChildren(element))\n )\n);\n\nconst getAttributeValue = (element, name) => name === 'class' ?\n element.classList.value : element.getAttribute(name);\n\nconst getChildren = ({childNodes}) => childNodes;\n\nconst getName = (element) => {\n const {localName} = element;\n return ignoreCase(element) ? localName.toLowerCase() : localName;\n};\n\nconst getParent = ({parentNode}) => parentNode;\n\nconst getSiblings = element => {\n const {parentNode} = element;\n return parentNode ? getChildren(parentNode) : element;\n};\n\nconst getText = node => {\n if (isArray(node))\n return node.map(getText).join('');\n if (isTag(node))\n return getText(getChildren(node));\n if (node.nodeType === TEXT_NODE)\n return node.data;\n return '';\n};\n\nconst hasAttrib = (element, name) => element.hasAttribute(name);\n\nconst removeSubsets = nodes => {\n let {length} = nodes;\n while (length--) {\n const node = nodes[length];\n if (length && -1 < nodes.lastIndexOf(node, length - 1)) {\n nodes.splice(length, 1);\n continue;\n }\n for (let {parentNode} = node; parentNode; parentNode = parentNode.parentNode) {\n if (nodes.includes(parentNode)) {\n nodes.splice(length, 1);\n break;\n }\n }\n }\n return nodes;\n};\n\nconst findAll = (test, nodes) => {\n const matches = [];\n for (const node of nodes) {\n if (isTag(node)) {\n if (test(node))\n matches.push(node);\n matches.push(...findAll(test, getChildren(node)));\n }\n }\n return matches;\n};\n\nconst findOne = (test, nodes) => {\n for (let node of nodes)\n if (test(node) || (node = findOne(test, getChildren(node))))\n return node;\n return null;\n};\n/* c8 ignore stop */\n\nconst adapter = {\n isTag,\n existsOne,\n getAttributeValue,\n getChildren,\n getName,\n getParent,\n getSiblings,\n getText,\n hasAttrib,\n removeSubsets,\n findAll,\n findOne\n};\n\nexport const prepareMatch = (element, selectors) => CSSselect.compile(\n selectors,\n {\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n\nexport const matches = (element, selectors) => CSSselect.is(\n element,\n selectors,\n {\n strict: true,\n context: selectors.includes(':scope') ? element : void 0,\n xmlMode: !ignoreCase(element),\n adapter\n }\n);\n", "import {TEXT_NODE} from '../shared/constants.js';\nimport {VALUE} from '../shared/symbols.js';\nimport {escape} from '../shared/text-escaper.js';\n\nimport {CharacterData} from './character-data.js';\n\n/**\n * @implements globalThis.Text\n */\nexport class Text extends CharacterData {\n constructor(ownerDocument, data = '') {\n super(ownerDocument, '#text', TEXT_NODE, data);\n }\n\n get wholeText() {\n const text = [];\n let {previousSibling, nextSibling} = this;\n while (previousSibling) {\n if (previousSibling.nodeType === TEXT_NODE)\n text.unshift(previousSibling[VALUE]);\n else\n break;\n previousSibling = previousSibling.previousSibling;\n }\n text.push(this[VALUE]);\n while (nextSibling) {\n if (nextSibling.nodeType === TEXT_NODE)\n text.push(nextSibling[VALUE]);\n else\n break;\n nextSibling = nextSibling.nextSibling;\n }\n return text.join('');\n }\n\n cloneNode() {\n const {ownerDocument, [VALUE]: data} = this;\n return new Text(ownerDocument, data);\n }\n\n toString() { return escape(this[VALUE]); }\n}\n", "// https://dom.spec.whatwg.org/#interface-parentnode\n// Document, DocumentFragment, Element\n\nimport {\n ATTRIBUTE_NODE,\n DOCUMENT_FRAGMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n NODE_END,\n CDATA_SECTION_NODE,\n COMMENT_NODE\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT, PREV, START, VALUE} from '../shared/symbols.js';\n\nimport {prepareMatch} from '../shared/matches.js';\nimport {previousSibling, nextSibling} from '../shared/node.js';\nimport {getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase} from '../shared/utils.js';\n\nimport {Node} from '../interface/node.js';\nimport {Text} from '../interface/text.js';\nimport {NodeList} from '../interface/node-list.js';\n\nimport {moCallback} from '../interface/mutation-observer.js';\nimport {connectedCallback} from '../interface/custom-element-registry.js';\n\nimport {nextElementSibling} from './non-document-type-child-node.js';\n\nconst isNode = node => node instanceof Node;\n\nconst insert = (parentNode, child, nodes) => {\n const {ownerDocument} = parentNode;\n for (const node of nodes)\n parentNode.insertBefore(\n isNode(node) ? node : new Text(ownerDocument, node),\n child\n );\n};\n\n/** @typedef { import('../interface/element.js').Element & {\n [typeof NEXT]: NodeStruct,\n [typeof PREV]: NodeStruct,\n [typeof START]: NodeStruct,\n nodeType: typeof ATTRIBUTE_NODE | typeof DOCUMENT_FRAGMENT_NODE | typeof ELEMENT_NODE | typeof TEXT_NODE | typeof NODE_END | typeof COMMENT_NODE | typeof CDATA_SECTION_NODE,\n ownerDocument: Document,\n parentNode: ParentNode,\n}} NodeStruct */\n\nexport class ParentNode extends Node {\n constructor(ownerDocument, localName, nodeType) {\n super(ownerDocument, localName, nodeType);\n this[PRIVATE] = null;\n /** @type {NodeStruct} */\n this[NEXT] = this[END] = {\n [NEXT]: null,\n [PREV]: this,\n [START]: this,\n nodeType: NODE_END,\n ownerDocument: this.ownerDocument,\n parentNode: null\n };\n }\n\n get childNodes() {\n const childNodes = new NodeList;\n let {firstChild} = this;\n while (firstChild) {\n childNodes.push(firstChild);\n firstChild = nextSibling(firstChild);\n }\n return childNodes;\n }\n\n get children() {\n const children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n children.push(firstElementChild);\n firstElementChild = nextElementSibling(firstElementChild);\n }\n return children;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstChild() {\n let {[NEXT]: next, [END]: end} = this;\n while (next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n return next === end ? null : next;\n }\n\n /**\n * @returns {NodeStruct | null}\n */\n get firstElementChild() {\n let {firstChild} = this;\n while (firstChild) {\n if (firstChild.nodeType === ELEMENT_NODE)\n return firstChild;\n firstChild = nextSibling(firstChild);\n }\n return null;\n }\n\n get lastChild() {\n const prev = this[END][PREV];\n switch (prev.nodeType) {\n case NODE_END:\n return prev[START];\n case ATTRIBUTE_NODE:\n return null;\n }\n return prev === this ? null : prev;\n }\n\n get lastElementChild() {\n let {lastChild} = this;\n while (lastChild) {\n if (lastChild.nodeType === ELEMENT_NODE)\n return lastChild;\n lastChild = previousSibling(lastChild);\n }\n return null;\n }\n\n get childElementCount() {\n return this.children.length;\n }\n\n prepend(...nodes) {\n insert(this, this.firstChild, nodes);\n }\n\n append(...nodes) {\n insert(this, this[END], nodes);\n }\n\n replaceChildren(...nodes) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end && next.nodeType === ATTRIBUTE_NODE)\n next = next[NEXT];\n while (next !== end) {\n const after = getEnd(next)[NEXT];\n next.remove();\n next = after;\n }\n if (nodes.length)\n insert(this, end, nodes);\n }\n\n getElementsByClassName(className) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (\n next.nodeType === ELEMENT_NODE &&\n next.hasAttribute('class') &&\n next.classList.has(className)\n )\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n getElementsByTagName(tagName) {\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && (\n next.localName === tagName ||\n localCase(next) === tagName\n ))\n elements.push(next);\n next = next[NEXT];\n }\n return elements;\n }\n\n querySelector(selectors) {\n const matches = prepareMatch(this, selectors);\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n return next;\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return null;\n }\n\n querySelectorAll(selectors) {\n const matches = prepareMatch(this, selectors);\n const elements = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && matches(next))\n elements.push(next);\n next = next.nodeType === ELEMENT_NODE && next.localName === 'template' ? next[END] : next[NEXT];\n }\n return elements;\n }\n\n appendChild(node) {\n return this.insertBefore(node, this[END]);\n }\n\n contains(node) {\n let parentNode = node;\n while (parentNode && parentNode !== this)\n parentNode = parentNode.parentNode;\n return parentNode === this;\n }\n\n insertBefore(node, before = null) {\n if (node === before)\n return node;\n if (node === this)\n throw new Error('unable to append a node to itself');\n const next = before || this[END];\n switch (node.nodeType) {\n case ELEMENT_NODE:\n node.remove();\n node.parentNode = this;\n knownBoundaries(next[PREV], node, next);\n moCallback(node, null);\n connectedCallback(node);\n break;\n case DOCUMENT_FRAGMENT_NODE: {\n let {[PRIVATE]: parentNode, firstChild, lastChild} = node;\n if (firstChild) {\n knownSegment(next[PREV], firstChild, lastChild, next);\n knownAdjacent(node, node[END]);\n if (parentNode)\n parentNode.replaceChildren();\n do {\n firstChild.parentNode = this;\n moCallback(firstChild, null);\n if (firstChild.nodeType === ELEMENT_NODE)\n connectedCallback(firstChild);\n } while (\n firstChild !== lastChild &&\n (firstChild = nextSibling(firstChild))\n );\n }\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n node.remove();\n /* eslint no-fallthrough:0 */\n // this covers DOCUMENT_TYPE_NODE too\n default:\n node.parentNode = this;\n knownSiblings(next[PREV], node, next);\n moCallback(node, null);\n break;\n }\n return node;\n }\n\n normalize() {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const {[NEXT]: $next, [PREV]: $prev, nodeType} = next;\n if (nodeType === TEXT_NODE) {\n if (!next[VALUE])\n next.remove();\n else if ($prev && $prev.nodeType === TEXT_NODE) {\n $prev.textContent += next.textContent;\n next.remove();\n }\n }\n next = $next;\n }\n }\n\n removeChild(node) {\n if (node.parentNode !== this)\n throw new Error('node is not a child');\n node.remove();\n return node;\n }\n\n replaceChild(node, replaced) {\n const next = getEnd(replaced)[NEXT];\n replaced.remove();\n this.insertBefore(node, next);\n return replaced;\n }\n}\n", "// https://dom.spec.whatwg.org/#interface-nonelementparentnode\n// Document, DocumentFragment\n\nimport {ELEMENT_NODE} from '../shared/constants.js';\nimport {END, NEXT} from '../shared/symbols.js';\nimport {nonElementAsJSON} from '../shared/jsdon.js';\n\nimport {ParentNode} from './parent-node.js';\n\nexport class NonElementParentNode extends ParentNode {\n getElementById(id) {\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === ELEMENT_NODE && next.id === id)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n cloneNode(deep) {\n const {ownerDocument, constructor} = this;\n const nonEPN = new constructor(ownerDocument);\n if (deep) {\n const {[END]: end} = nonEPN;\n for (const node of this.childNodes)\n nonEPN.insertBefore(node.cloneNode(deep), end);\n }\n return nonEPN; \n }\n\n toString() {\n const {childNodes, localName} = this;\n return `<${localName}>${childNodes.join('')}</${localName}>`;\n }\n\n toJSON() {\n const json = [];\n nonElementAsJSON(this, json);\n return json;\n }\n}\n", "import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.DocumentFragment\n */\nexport class DocumentFragment extends NonElementParentNode {\n constructor(ownerDocument) {\n super(ownerDocument, '#document-fragment', DOCUMENT_FRAGMENT_NODE);\n }\n}\n", "import {DOCUMENT_TYPE_NODE} from '../shared/constants.js';\nimport {documentTypeAsJSON} from '../shared/jsdon.js';\n\nimport {Node} from './node.js';\n\n/**\n * @implements globalThis.DocumentType\n */\nexport class DocumentType extends Node {\n constructor(ownerDocument, name, publicId = '', systemId = '') {\n super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE);\n this.name = name;\n this.publicId = publicId;\n this.systemId = systemId;\n }\n\n cloneNode() {\n const {ownerDocument, name, publicId, systemId} = this;\n return new DocumentType(ownerDocument, name, publicId, systemId);\n }\n\n toString() {\n const {name, publicId, systemId} = this;\n const hasPublic = 0 < publicId.length;\n const str = [name];\n if (hasPublic)\n str.push('PUBLIC', `\"${publicId}\"`);\n if (systemId.length) {\n if (!hasPublic)\n str.push('SYSTEM');\n str.push(`\"${systemId}\"`);\n }\n return `<!DOCTYPE ${str.join(' ')}>`;\n }\n\n toJSON() {\n const json = [];\n documentTypeAsJSON(this, json);\n return json;\n }\n}\n", "import {ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\nimport {ignoreCase} from '../shared/utils.js';\n\n\n/**\n * @param {Node} node\n * @returns {String}\n */\nexport const getInnerHtml = node => node.childNodes.join('');\n\n/**\n * @param {Node} node\n * @param {String} html\n */\nexport const setInnerHtml = (node, html) => {\n const {ownerDocument} = node;\n const {constructor} = ownerDocument;\n const document = new constructor;\n document[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS];\n const {childNodes} = parseFromString(document, ignoreCase(node), html);\n\n node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument));\n};\n\nfunction setOwnerDocument(node) {\n node.ownerDocument = this;\n switch (node.nodeType) {\n case ELEMENT_NODE:\n case DOCUMENT_FRAGMENT_NODE:\n node.childNodes.forEach(setOwnerDocument, this);\n break;\n }\n return node;\n}\n", "export default camel => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, '$2$5-$3$6')\n .toLowerCase();\n", "import uhyphen from 'uhyphen';\nimport {setPrototypeOf} from '../shared/object.js';\n\nconst refs = new WeakMap;\n\nconst key = name => `data-${uhyphen(name)}`;\nconst prop = name => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase());\n\nconst handler = {\n get(dataset, name) {\n if (name in dataset)\n return refs.get(dataset).getAttribute(key(name));\n },\n\n set(dataset, name, value) {\n dataset[name] = value;\n refs.get(dataset).setAttribute(key(name), value);\n return true;\n },\n\n deleteProperty(dataset, name) {\n if (name in dataset)\n refs.get(dataset).removeAttribute(key(name));\n return delete dataset[name];\n }\n};\n\n/**\n * @implements globalThis.DOMStringMap\n */\nexport class DOMStringMap {\n /**\n * @param {Element} ref\n */\n constructor(ref) {\n for (const {name, value} of ref.attributes) {\n if (/^data-/.test(name))\n this[prop(name)] = value;\n }\n refs.set(this, ref);\n return new Proxy(this, handler);\n }\n}\n\nsetPrototypeOf(DOMStringMap.prototype, null);\n", "import {OWNER_ELEMENT} from '../shared/symbols.js';\nimport {setAttribute} from '../shared/attributes.js';\n\nimport {Attr} from '../interface/attr.js';\n\nconst {add} = Set.prototype;\nconst addTokens = (self, tokens) => {\n for (const token of tokens) {\n if (token)\n add.call(self, token);\n }\n};\n\nconst update = ({[OWNER_ELEMENT]: ownerElement, value}) => {\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n attribute.value = value;\n else\n setAttribute(\n ownerElement,\n new Attr(ownerElement.ownerDocument, 'class', value)\n );\n};\n\n/**\n * @implements globalThis.DOMTokenList\n */\nexport class DOMTokenList extends Set {\n\n constructor(ownerElement) {\n super();\n this[OWNER_ELEMENT] = ownerElement;\n const attribute = ownerElement.getAttributeNode('class');\n if (attribute)\n addTokens(this, attribute.value.split(/\\s+/));\n }\n\n get length() { return this.size; }\n\n get value() { return [...this].join(' '); }\n\n /**\n * @param {...string} tokens\n */\n add(...tokens) {\n addTokens(this, tokens);\n update(this);\n }\n\n /**\n * @param {string} token\n */\n contains(token) { return this.has(token); }\n\n /**\n * @param {...string} tokens\n */\n remove(...tokens) {\n for (const token of tokens)\n this.delete(token);\n update(this);\n }\n\n /**\n * @param {string} token\n * @param {boolean?} force\n */\n toggle(token, force) {\n if (this.has(token)) {\n if (force)\n return true;\n this.delete(token);\n update(this);\n }\n else if (force || arguments.length === 1) {\n super.add(token);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n * @param {string} newToken\n */\n replace(token, newToken) {\n if (this.has(token)) {\n this.delete(token);\n super.add(newToken);\n update(this);\n return true;\n }\n return false;\n }\n\n /**\n * @param {string} token\n */\n supports() { return true; }\n}\n", "import uhyphen from 'uhyphen';\n\nimport {CHANGED, PRIVATE, VALUE} from '../shared/symbols.js';\n\nconst refs = new WeakMap;\n\nconst getKeys = style => [...style.keys()].filter(key => key !== PRIVATE);\n\nconst updateKeys = style => {\n const attr = refs.get(style).getAttributeNode('style');\n if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) {\n style.clear();\n if (attr) {\n style.set(PRIVATE, attr);\n for (const rule of attr[VALUE].split(/\\s*;\\s*/)) {\n let [key, ...rest] = rule.split(':');\n if (rest.length > 0) {\n key = key.trim();\n const value = rest.join(':').trim();\n if (key && value)\n style.set(key, value);\n }\n }\n }\n }\n return attr;\n};\n\nconst handler = {\n get(style, name) {\n if (name in prototype)\n return style[name];\n updateKeys(style);\n if (name === 'length')\n return getKeys(style).length;\n if (/^\\d+$/.test(name))\n return getKeys(style)[name];\n return style.get(uhyphen(name));\n },\n\n set(style, name, value) {\n if (name === 'cssText')\n style[name] = value;\n else {\n let attr = updateKeys(style);\n if (value == null)\n style.delete(uhyphen(name));\n else\n style.set(uhyphen(name), value);\n if (!attr) {\n const element = refs.get(style);\n attr = element.ownerDocument.createAttribute('style');\n element.setAttributeNode(attr);\n style.set(PRIVATE, attr);\n }\n attr[CHANGED] = false;\n attr[VALUE] = style.toString();\n }\n return true;\n }\n};\n\n/**\n * @implements globalThis.CSSStyleDeclaration\n */\nexport class CSSStyleDeclaration extends Map {\n constructor(element) {\n super();\n refs.set(this, element);\n /* c8 ignore start */\n return new Proxy(this, handler);\n /* c8 ignore stop */\n }\n\n get cssText() {\n return this.toString();\n }\n\n set cssText(value) {\n refs.get(this).setAttribute('style', value);\n }\n\n getPropertyValue(name) {\n const self = this[PRIVATE];\n return handler.get(self, name);\n }\n\n setProperty(name, value) {\n const self = this[PRIVATE];\n handler.set(self, name, value);\n }\n\n removeProperty(name) {\n const self = this[PRIVATE];\n handler.set(self, name, null);\n }\n\n [Symbol.iterator]() {\n const self = this[PRIVATE];\n updateKeys(self);\n const keys = getKeys(self);\n const {length} = keys;\n let i = 0;\n return {\n next() {\n const done = i === length;\n return {done, value: done ? null : keys[i++]};\n }\n };\n }\n\n get[PRIVATE]() { return this; }\n\n toString() {\n const self = this[PRIVATE];\n updateKeys(self);\n const cssText = [];\n self.forEach(push, cssText);\n return cssText.join(';');\n }\n}\n\nconst {prototype} = CSSStyleDeclaration;\n\nfunction push(value, key) {\n if (key !== PRIVATE)\n this.push(`${key}:${value}`);\n}\n", "// https://dom.spec.whatwg.org/#interface-event\n\n/* c8 ignore start */\n\n// Node 15 has Event but 14 and 12 don't\nconst BUBBLING_PHASE = 3;\nconst AT_TARGET = 2;\nconst CAPTURING_PHASE = 1;\nconst NONE = 0;\n\nfunction getCurrentTarget(ev) {\n return ev.currentTarget;\n}\n\n/**\n * @implements globalThis.Event\n */\nclass GlobalEvent {\n static get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n static get AT_TARGET() { return AT_TARGET; }\n static get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n static get NONE() { return NONE; }\n\n constructor(type, eventInitDict = {}) {\n this.type = type;\n this.bubbles = !!eventInitDict.bubbles;\n this.cancelBubble = false;\n this._stopImmediatePropagationFlag = false;\n this.cancelable = !!eventInitDict.cancelable;\n this.eventPhase = this.NONE;\n this.timeStamp = Date.now();\n this.defaultPrevented = false;\n this.originalTarget = null;\n this.returnValue = null;\n this.srcElement = null;\n this.target = null;\n this._path = [];\n }\n\n get BUBBLING_PHASE() { return BUBBLING_PHASE; }\n get AT_TARGET() { return AT_TARGET; }\n get CAPTURING_PHASE() { return CAPTURING_PHASE; }\n get NONE() { return NONE; }\n\n preventDefault() { this.defaultPrevented = true; }\n\n // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath\n composedPath() {\n return this._path.map(getCurrentTarget);\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n \n stopImmediatePropagation() {\n this.stopPropagation();\n this._stopImmediatePropagationFlag = true;\n }\n }\n\nexport {GlobalEvent as Event};\n\n/* c8 ignore stop */\n", "/**\n * @implements globalThis.NamedNodeMap\n */\nexport class NamedNodeMap extends Array {\n constructor(ownerElement) {\n super();\n this.ownerElement = ownerElement;\n }\n\n getNamedItem(name) {\n return this.ownerElement.getAttributeNode(name);\n }\n\n setNamedItem(attr) {\n this.ownerElement.setAttributeNode(attr);\n this.unshift(attr);\n }\n\n removeNamedItem(name) {\n const item = this.getNamedItem(name);\n this.ownerElement.removeAttribute(name);\n this.splice(this.indexOf(item), 1);\n }\n\n item(index) {\n return index < this.length ? this[index] : null;\n }\n\n /* c8 ignore start */\n getNamedItemNS(_, name) {\n return this.getNamedItem(name);\n }\n\n setNamedItemNS(_, attr) {\n return this.setNamedItem(attr);\n }\n\n removeNamedItemNS(_, name) {\n return this.removeNamedItem(name);\n }\n /* c8 ignore stop */\n}\n", "import {DOCUMENT_FRAGMENT_NODE} from '../shared/constants.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {NonElementParentNode} from '../mixin/non-element-parent-node.js';\n\n/**\n * @implements globalThis.ShadowRoot\n */\nexport class ShadowRoot extends NonElementParentNode {\n constructor(host) {\n super(host.ownerDocument, '#shadow-root', DOCUMENT_FRAGMENT_NODE);\n this.host = host;\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n}\n", "// https://dom.spec.whatwg.org/#interface-element\n\nimport {\n ATTRIBUTE_NODE,\n BLOCK_ELEMENTS,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n ELEMENT_NODE,\n NODE_END,\n TEXT_NODE,\n SVG_NAMESPACE\n} from '../shared/constants.js';\n\nimport {\n setAttribute, removeAttribute,\n numericAttribute, stringAttribute\n} from '../shared/attributes.js';\n\nimport {\n CLASS_LIST, DATASET, STYLE,\n END, NEXT, PREV, START,\n MIME\n} from '../shared/symbols.js';\n\nimport {\n ignoreCase,\n knownAdjacent,\n localCase,\n String\n} from '../shared/utils.js';\n\nimport {elementAsJSON} from '../shared/jsdon.js';\nimport {matches, prepareMatch} from '../shared/matches.js';\nimport {shadowRoots} from '../shared/shadow-roots.js';\n\nimport {isConnected, parentElement, previousSibling, nextSibling} from '../shared/node.js';\nimport {previousElementSibling, nextElementSibling} from '../mixin/non-document-type-child-node.js';\n\nimport {before, after, replaceWith, remove} from '../mixin/child-node.js';\nimport {getInnerHtml, setInnerHtml} from '../mixin/inner-html.js';\nimport {ParentNode} from '../mixin/parent-node.js';\n\nimport {DOMStringMap} from '../dom/string-map.js';\nimport {DOMTokenList} from '../dom/token-list.js';\n\nimport {CSSStyleDeclaration} from './css-style-declaration.js';\nimport {Event} from './event.js';\nimport {NamedNodeMap} from './named-node-map.js';\nimport {ShadowRoot} from './shadow-root.js';\nimport {NodeList} from './node-list.js';\nimport {Attr} from './attr.js';\nimport {Text} from './text.js';\nimport {escape} from '../shared/text-escaper.js';\n\n// <utils>\nconst attributesHandler = {\n get(target, key) {\n return key in target ? target[key] : target.find(({name}) => name === key);\n }\n};\n\nconst create = (ownerDocument, element, localName) => {\n if ('ownerSVGElement' in element) {\n const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName);\n svg.ownerSVGElement = element.ownerSVGElement;\n return svg;\n }\n return ownerDocument.createElement(localName);\n};\n\nconst isVoid = ({localName, ownerDocument}) => {\n return ownerDocument[MIME].voidElements.test(localName);\n};\n\n// </utils>\n\n/**\n * @implements globalThis.Element\n */\nexport class Element extends ParentNode {\n constructor(ownerDocument, localName) {\n super(ownerDocument, localName, ELEMENT_NODE);\n this[CLASS_LIST] = null;\n this[DATASET] = null;\n this[STYLE] = null;\n }\n\n // <Mixins>\n get isConnected() { return isConnected(this); }\n get parentElement() { return parentElement(this); }\n get previousSibling() { return previousSibling(this); }\n get nextSibling() { return nextSibling(this); }\n get namespaceURI() {\n return 'http://www.w3.org/1999/xhtml';\n }\n\n get previousElementSibling() { return previousElementSibling(this); }\n get nextElementSibling() { return nextElementSibling(this); }\n\n before(...nodes) { before(this, nodes); }\n after(...nodes) { after(this, nodes); }\n replaceWith(...nodes) { replaceWith(this, nodes); }\n remove() { remove(this[PREV], this, this[END][NEXT]); }\n // </Mixins>\n\n // <specialGetters>\n get id() { return stringAttribute.get(this, 'id'); }\n set id(value) { stringAttribute.set(this, 'id', value); }\n\n get className() { return this.classList.value; }\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n\n get nodeName() { return localCase(this); }\n get tagName() { return localCase(this); }\n\n get classList() {\n return this[CLASS_LIST] || (\n this[CLASS_LIST] = new DOMTokenList(this)\n );\n }\n\n get dataset() {\n return this[DATASET] || (\n this[DATASET] = new DOMStringMap(this)\n );\n }\n\n getBoundingClientRect() {\n return {\n x: 0,\n y: 0,\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n };\n }\n\n get nonce() { return stringAttribute.get(this, 'nonce'); }\n set nonce(value) { stringAttribute.set(this, 'nonce', value); }\n\n get style() {\n return this[STYLE] || (\n this[STYLE] = new CSSStyleDeclaration(this)\n );\n }\n\n get tabIndex() { return numericAttribute.get(this, 'tabindex') || -1; }\n set tabIndex(value) { numericAttribute.set(this, 'tabindex', value); }\n\n get slot() { return stringAttribute.get(this, 'slot'); }\n set slot(value) { stringAttribute.set(this, 'slot', value); }\n // </specialGetters>\n\n\n // <contentRelated>\n get innerText() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n if (next.nodeType === TEXT_NODE) {\n text.push(next.textContent.replace(/\\s+/g, ' '));\n } else if(\n text.length && next[NEXT] != end &&\n BLOCK_ELEMENTS.has(next.tagName)\n ) {\n text.push('\\n');\n }\n next = next[NEXT];\n }\n return text.join('');\n }\n\n /**\n * @returns {String}\n */\n get textContent() {\n const text = [];\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n const nodeType = next.nodeType;\n if (nodeType === TEXT_NODE || nodeType === CDATA_SECTION_NODE)\n text.push(next.textContent);\n next = next[NEXT];\n }\n return text.join('');\n }\n\n set textContent(text) {\n this.replaceChildren();\n if (text != null && text !== '')\n this.appendChild(new Text(this.ownerDocument, text));\n }\n\n get innerHTML() {\n return getInnerHtml(this);\n }\n set innerHTML(html) {\n setInnerHtml(this, html);\n }\n\n get outerHTML() { return this.toString(); }\n set outerHTML(html) {\n const template = this.ownerDocument.createElement('');\n template.innerHTML = html;\n this.replaceWith(...template.childNodes);\n }\n // </contentRelated>\n\n // <attributes>\n get attributes() {\n const attributes = new NamedNodeMap(this);\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next);\n next = next[NEXT];\n }\n return new Proxy(attributes, attributesHandler);\n }\n\n focus() { this.dispatchEvent(new Event('focus')); }\n\n getAttribute(name) {\n if (name === 'class')\n return this.className;\n const attribute = this.getAttributeNode(name);\n return attribute && (ignoreCase(this) ? attribute.value : escape(attribute.value));\n }\n\n getAttributeNode(name) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name)\n return next;\n next = next[NEXT];\n }\n return null;\n }\n\n getAttributeNames() {\n const attributes = new NodeList;\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n attributes.push(next.name);\n next = next[NEXT];\n }\n return attributes;\n }\n\n hasAttribute(name) { return !!this.getAttributeNode(name); }\n hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; }\n\n removeAttribute(name) {\n if (name === 'class' && this[CLASS_LIST])\n this[CLASS_LIST].clear();\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next.name === name) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n removeAttributeNode(attribute) {\n let next = this[NEXT];\n while (next.nodeType === ATTRIBUTE_NODE) {\n if (next === attribute) {\n removeAttribute(this, next);\n return;\n }\n next = next[NEXT];\n }\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else {\n const attribute = this.getAttributeNode(name);\n if (attribute)\n attribute.value = value;\n else\n setAttribute(this, new Attr(this.ownerDocument, name, value));\n }\n }\n\n setAttributeNode(attribute) {\n const {name} = attribute;\n const previously = this.getAttributeNode(name);\n if (previously !== attribute) {\n if (previously)\n this.removeAttributeNode(previously);\n const {ownerElement} = attribute;\n if (ownerElement)\n ownerElement.removeAttributeNode(attribute);\n setAttribute(this, attribute);\n }\n return previously;\n }\n\n toggleAttribute(name, force) {\n if (this.hasAttribute(name)) {\n if (!force) {\n this.removeAttribute(name);\n return false;\n }\n return true;\n }\n else if (force || arguments.length === 1) {\n this.setAttribute(name, '');\n return true;\n }\n return false;\n }\n // </attributes>\n\n // <ShadowDOM>\n get shadowRoot() {\n if (shadowRoots.has(this)) {\n const {mode, shadowRoot} = shadowRoots.get(this);\n if (mode === 'open')\n return shadowRoot;\n }\n return null;\n }\n\n attachShadow(init) {\n if (shadowRoots.has(this))\n throw new Error('operation not supported');\n // TODO: shadowRoot should be likely a specialized class that extends DocumentFragment\n // but until DSD is out, I am not sure I should spend time on this.\n const shadowRoot = new ShadowRoot(this);\n shadowRoots.set(this, {\n mode: init.mode,\n shadowRoot\n });\n return shadowRoot;\n }\n // </ShadowDOM>\n\n // <selectors>\n matches(selectors) { return matches(this, selectors); }\n closest(selectors) {\n let parentElement = this;\n const matches = prepareMatch(parentElement, selectors);\n while (parentElement && !matches(parentElement))\n parentElement = parentElement.parentElement;\n return parentElement;\n }\n // </selectors>\n\n // <insertAdjacent>\n insertAdjacentElement(position, element) {\n const {parentElement} = this;\n switch (position) {\n case 'beforebegin':\n if (parentElement) {\n parentElement.insertBefore(element, this);\n break;\n }\n return null;\n case 'afterbegin':\n this.insertBefore(element, this.firstChild);\n break;\n case 'beforeend':\n this.insertBefore(element, null);\n break;\n case 'afterend':\n if (parentElement) {\n parentElement.insertBefore(element, this.nextSibling);\n break;\n }\n return null;\n }\n return element;\n }\n\n insertAdjacentHTML(position, html) {\n const template = this.ownerDocument.createElement('template');\n template.innerHTML = html;\n this.insertAdjacentElement(position, template.content);\n }\n\n insertAdjacentText(position, text) {\n const node = this.ownerDocument.createTextNode(text);\n this.insertAdjacentElement(position, node);\n }\n // </insertAdjacent>\n\n cloneNode(deep = false) {\n const {ownerDocument, localName} = this;\n const addNext = next => {\n next.parentNode = parentNode;\n knownAdjacent($next, next);\n $next = next;\n };\n const clone = create(ownerDocument, this, localName);\n let parentNode = clone, $next = clone;\n let {[NEXT]: next, [END]: prev} = this;\n while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) {\n switch (next.nodeType) {\n case NODE_END:\n knownAdjacent($next, parentNode[END]);\n $next = parentNode[END];\n parentNode = parentNode.parentNode;\n break;\n case ELEMENT_NODE: {\n const node = create(ownerDocument, next, next.localName);\n addNext(node);\n parentNode = node;\n break;\n }\n case ATTRIBUTE_NODE: {\n const attr = next.cloneNode(deep);\n attr.ownerElement = parentNode;\n addNext(attr);\n break;\n }\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n addNext(next.cloneNode(deep));\n break;\n }\n next = next[NEXT];\n }\n knownAdjacent($next, clone[END]);\n return clone;\n }\n\n // <custom>\n toString() {\n const out = [];\n const {[END]: end} = this;\n let next = {[NEXT]: this};\n let isOpened = false;\n do {\n next = next[NEXT];\n switch (next.nodeType) {\n case ATTRIBUTE_NODE: {\n const attr = ' ' + next;\n switch (attr) {\n case ' id':\n case ' class':\n case ' style':\n break;\n default:\n out.push(attr);\n }\n break;\n }\n case NODE_END: {\n const start = next[START];\n if (isOpened) {\n if ('ownerSVGElement' in start)\n out.push(' />');\n else if (isVoid(start))\n out.push(ignoreCase(start) ? '>' : ' />');\n else\n out.push(`></${start.localName}>`);\n isOpened = false;\n }\n else\n out.push(`</${start.localName}>`);\n break;\n }\n case ELEMENT_NODE:\n if (isOpened)\n out.push('>');\n if (next.toString !== this.toString) {\n out.push(next.toString());\n next = next[END];\n isOpened = false;\n }\n else {\n out.push(`<${next.localName}`);\n isOpened = true;\n }\n break;\n case TEXT_NODE:\n case COMMENT_NODE:\n case CDATA_SECTION_NODE:\n out.push((isOpened ? '>' : '') + next);\n isOpened = false;\n break;\n }\n } while (next !== end);\n return out.join('');\n }\n\n toJSON() {\n const json = [];\n elementAsJSON(this, json);\n return json;\n }\n // </custom>\n\n\n /* c8 ignore start */\n getAttributeNS(_, name) { return this.getAttribute(name); }\n getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); }\n hasAttributeNS(_, name) { return this.hasAttribute(name); }\n removeAttributeNS(_, name) { this.removeAttribute(name); }\n setAttributeNS(_, name, value) { this.setAttribute(name, value); }\n setAttributeNodeNS(attr) { return this.setAttributeNode(attr); }\n /* c8 ignore stop */\n}\n", "import {Element} from '../interface/element.js';\nimport {String} from '../shared/utils.js';\n\nconst classNames = new WeakMap;\n\nconst handler = {\n get(target, name) {\n return target[name];\n },\n set(target, name, value) {\n target[name] = value;\n return true;\n }\n};\n\n/**\n * @implements globalThis.SVGElement\n */\nexport class SVGElement extends Element {\n constructor(ownerDocument, localName, ownerSVGElement = null) {\n super(ownerDocument, localName);\n this.ownerSVGElement = ownerSVGElement;\n }\n\n get className() {\n if (!classNames.has(this))\n classNames.set(this, new Proxy({baseVal: '', animVal: ''}, handler));\n return classNames.get(this);\n }\n\n /* c8 ignore start */\n set className(value) {\n const {classList} = this;\n classList.clear();\n classList.add(...(String(value).split(/\\s+/)));\n }\n /* c8 ignore stop */\n\n get namespaceURI() {\n return 'http://www.w3.org/2000/svg';\n }\n\n getAttribute(name) {\n return name === 'class' ?\n [...this.classList].join(' ') :\n super.getAttribute(name);\n }\n\n setAttribute(name, value) {\n if (name === 'class')\n this.className = value;\n else if (name === 'style') {\n const {className} = this;\n className.baseVal = className.animVal = value;\n }\n super.setAttribute(name, value);\n }\n}\n", "import {Attr as _Attr} from '../interface/attr.js';\nimport {CharacterData as _CharacterData} from '../interface/character-data.js';\nimport {CDATASection as _CDATASection} from '../interface/cdata-section.js';\nimport {Comment as _Comment} from '../interface/comment.js';\nimport {DocumentFragment as _DocumentFragment} from '../interface/document-fragment.js';\nimport {DocumentType as _DocumentType} from '../interface/document-type.js';\nimport {Element as _Element} from '../interface/element.js';\nimport {Node as _Node} from '../interface/node.js';\nimport {ShadowRoot as _ShadowRoot} from '../interface/shadow-root.js';\nimport {Text as _Text} from '../interface/text.js';\nimport {SVGElement as _SVGElement} from '../svg/element.js';\n\nimport {setPrototypeOf} from './object.js';\n\n/* c8 ignore start */\nexport const illegalConstructor = () => {\n throw new TypeError('Illegal constructor');\n};\n\nexport function Attr() { illegalConstructor(); }\nsetPrototypeOf(Attr, _Attr);\nAttr.prototype = _Attr.prototype;\n\nexport function CDATASection() { illegalConstructor(); }\nsetPrototypeOf(CDATASection, _CDATASection);\nCDATASection.prototype = _CDATASection.prototype;\n\nexport function CharacterData() { illegalConstructor(); }\nsetPrototypeOf(CharacterData, _CharacterData);\nCharacterData.prototype = _CharacterData.prototype;\n\nexport function Comment() { illegalConstructor(); }\nsetPrototypeOf(Comment, _Comment);\nComment.prototype = _Comment.prototype;\n\nexport function DocumentFragment() { illegalConstructor(); }\nsetPrototypeOf(DocumentFragment, _DocumentFragment);\nDocumentFragment.prototype = _DocumentFragment.prototype;\n\nexport function DocumentType() { illegalConstructor(); }\nsetPrototypeOf(DocumentType, _DocumentType);\nDocumentType.prototype = _DocumentType.prototype;\n\nexport function Element() { illegalConstructor(); }\nsetPrototypeOf(Element, _Element);\nElement.prototype = _Element.prototype;\n\nexport function Node() { illegalConstructor(); }\nsetPrototypeOf(Node, _Node);\nNode.prototype = _Node.prototype;\n\nexport function ShadowRoot() { illegalConstructor(); }\nsetPrototypeOf(ShadowRoot, _ShadowRoot);\nShadowRoot.prototype = _ShadowRoot.prototype;\n\nexport function Text() { illegalConstructor(); }\nsetPrototypeOf(Text, _Text);\nText.prototype = _Text.prototype;\n\nexport function SVGElement() { illegalConstructor(); }\nsetPrototypeOf(SVGElement, _SVGElement);\nSVGElement.prototype = _SVGElement.prototype;\n/* c8 ignore stop */\n\nexport const Facades = {\n Attr,\n CDATASection,\n CharacterData,\n Comment,\n DocumentFragment,\n DocumentType,\n Element,\n Node,\n ShadowRoot,\n Text,\n SVGElement\n};\n", "import {END, UPGRADE} from '../shared/symbols.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {Event} from '../interface/event.js';\nimport {Element} from '../interface/element.js';\nimport {Classes, customElements} from '../interface/custom-element-registry.js';\n\nconst Level0 = new WeakMap;\nconst level0 = {\n get(element, name) {\n return Level0.has(element) && Level0.get(element)[name] || null;\n },\n set(element, name, value) {\n if (!Level0.has(element))\n Level0.set(element, {});\n const handlers = Level0.get(element);\n const type = name.slice(2);\n if (handlers[name])\n element.removeEventListener(type, handlers[name], false);\n if ((handlers[name] = value))\n element.addEventListener(type, value, false);\n }\n};\n\n/**\n * @implements globalThis.HTMLElement\n */\nexport class HTMLElement extends Element {\n\n static get observedAttributes() { return []; }\n\n constructor(ownerDocument = null, localName = '') {\n super(ownerDocument, localName);\n\n const ownerLess = !ownerDocument;\n let options;\n\n if (ownerLess) {\n const {constructor: Class} = this;\n if (!Classes.has(Class))\n throw new Error('unable to initialize this Custom Element');\n ({ownerDocument, localName, options} = Classes.get(Class));\n }\n\n if (ownerDocument[UPGRADE]) {\n const {element, values} = ownerDocument[UPGRADE];\n ownerDocument[UPGRADE] = null;\n for (const [key, value] of values)\n element[key] = value;\n return element;\n }\n\n if (ownerLess) {\n this.ownerDocument = this[END].ownerDocument = ownerDocument;\n this.localName = localName;\n customElements.set(this, {connected: false});\n if (options.is)\n this.setAttribute('is', options.is);\n }\n }\n\n /* c8 ignore start */\n\n /* TODO: what about these?\n offsetHeight\n offsetLeft\n offsetParent\n offsetTop\n offsetWidth\n */\n\n blur() { this.dispatchEvent(new Event('blur')); }\n click() {\n const clickEvent = new Event('click', {bubbles: true, cancelable: true});\n clickEvent.button = 0;\n\n this.dispatchEvent(clickEvent);\n }\n\n // Boolean getters\n get accessKeyLabel() {\n const {accessKey} = this;\n return accessKey && `Alt+Shift+${accessKey}`;\n }\n get isContentEditable() { return this.hasAttribute('contenteditable'); }\n\n // Boolean Accessors\n get contentEditable() { return booleanAttribute.get(this, 'contenteditable'); }\n set contentEditable(value) { booleanAttribute.set(this, 'contenteditable', value); }\n get draggable() { return booleanAttribute.get(this, 'draggable'); }\n set draggable(value) { booleanAttribute.set(this, 'draggable', value); }\n get hidden() { return booleanAttribute.get(this, 'hidden'); }\n set hidden(value) { booleanAttribute.set(this, 'hidden', value); }\n get spellcheck() { return booleanAttribute.get(this, 'spellcheck'); }\n set spellcheck(value) { booleanAttribute.set(this, 'spellcheck', value); }\n\n // String Accessors\n get accessKey() { return stringAttribute.get(this, 'accesskey'); }\n set accessKey(value) { stringAttribute.set(this, 'accesskey', value); }\n get dir() { return stringAttribute.get(this, 'dir'); }\n set dir(value) { stringAttribute.set(this, 'dir', value); }\n get lang() { return stringAttribute.get(this, 'lang'); }\n set lang(value) { stringAttribute.set(this, 'lang', value); }\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n // DOM Level 0\n get onabort() { return level0.get(this, 'onabort'); }\n set onabort(value) { level0.set(this, 'onabort', value); }\n\n get onblur() { return level0.get(this, 'onblur'); }\n set onblur(value) { level0.set(this, 'onblur', value); }\n\n get oncancel() { return level0.get(this, 'oncancel'); }\n set oncancel(value) { level0.set(this, 'oncancel', value); }\n\n get oncanplay() { return level0.get(this, 'oncanplay'); }\n set oncanplay(value) { level0.set(this, 'oncanplay', value); }\n\n get oncanplaythrough() { return level0.get(this, 'oncanplaythrough'); }\n set oncanplaythrough(value) { level0.set(this, 'oncanplaythrough', value); }\n\n get onchange() { return level0.get(this, 'onchange'); }\n set onchange(value) { level0.set(this, 'onchange', value); }\n\n get onclick() { return level0.get(this, 'onclick'); }\n set onclick(value) { level0.set(this, 'onclick', value); }\n\n get onclose() { return level0.get(this, 'onclose'); }\n set onclose(value) { level0.set(this, 'onclose', value); }\n\n get oncontextmenu() { return level0.get(this, 'oncontextmenu'); }\n set oncontextmenu(value) { level0.set(this, 'oncontextmenu', value); }\n\n get oncuechange() { return level0.get(this, 'oncuechange'); }\n set oncuechange(value) { level0.set(this, 'oncuechange', value); }\n\n get ondblclick() { return level0.get(this, 'ondblclick'); }\n set ondblclick(value) { level0.set(this, 'ondblclick', value); }\n\n get ondrag() { return level0.get(this, 'ondrag'); }\n set ondrag(value) { level0.set(this, 'ondrag', value); }\n\n get ondragend() { return level0.get(this, 'ondragend'); }\n set ondragend(value) { level0.set(this, 'ondragend', value); }\n\n get ondragenter() { return level0.get(this, 'ondragenter'); }\n set ondragenter(value) { level0.set(this, 'ondragenter', value); }\n\n get ondragleave() { return level0.get(this, 'ondragleave'); }\n set ondragleave(value) { level0.set(this, 'ondragleave', value); }\n\n get ondragover() { return level0.get(this, 'ondragover'); }\n set ondragover(value) { level0.set(this, 'ondragover', value); }\n\n get ondragstart() { return level0.get(this, 'ondragstart'); }\n set ondragstart(value) { level0.set(this, 'ondragstart', value); }\n\n get ondrop() { return level0.get(this, 'ondrop'); }\n set ondrop(value) { level0.set(this, 'ondrop', value); }\n\n get ondurationchange() { return level0.get(this, 'ondurationchange'); }\n set ondurationchange(value) { level0.set(this, 'ondurationchange', value); }\n\n get onemptied() { return level0.get(this, 'onemptied'); }\n set onemptied(value) { level0.set(this, 'onemptied', value); }\n\n get onended() { return level0.get(this, 'onended'); }\n set onended(value) { level0.set(this, 'onended', value); }\n\n get onerror() { return level0.get(this, 'onerror'); }\n set onerror(value) { level0.set(this, 'onerror', value); }\n\n get onfocus() { return level0.get(this, 'onfocus'); }\n set onfocus(value) { level0.set(this, 'onfocus', value); }\n\n get oninput() { return level0.get(this, 'oninput'); }\n set oninput(value) { level0.set(this, 'oninput', value); }\n\n get oninvalid() { return level0.get(this, 'oninvalid'); }\n set oninvalid(value) { level0.set(this, 'oninvalid', value); }\n\n get onkeydown() { return level0.get(this, 'onkeydown'); }\n set onkeydown(value) { level0.set(this, 'onkeydown', value); }\n\n get onkeypress() { return level0.get(this, 'onkeypress'); }\n set onkeypress(value) { level0.set(this, 'onkeypress', value); }\n\n get onkeyup() { return level0.get(this, 'onkeyup'); }\n set onkeyup(value) { level0.set(this, 'onkeyup', value); }\n\n get onload() { return level0.get(this, 'onload'); }\n set onload(value) { level0.set(this, 'onload', value); }\n\n get onloadeddata() { return level0.get(this, 'onloadeddata'); }\n set onloadeddata(value) { level0.set(this, 'onloadeddata', value); }\n\n get onloadedmetadata() { return level0.get(this, 'onloadedmetadata'); }\n set onloadedmetadata(value) { level0.set(this, 'onloadedmetadata', value); }\n\n get onloadstart() { return level0.get(this, 'onloadstart'); }\n set onloadstart(value) { level0.set(this, 'onloadstart', value); }\n\n get onmousedown() { return level0.get(this, 'onmousedown'); }\n set onmousedown(value) { level0.set(this, 'onmousedown', value); }\n\n get onmouseenter() { return level0.get(this, 'onmouseenter'); }\n set onmouseenter(value) { level0.set(this, 'onmouseenter', value); }\n\n get onmouseleave() { return level0.get(this, 'onmouseleave'); }\n set onmouseleave(value) { level0.set(this, 'onmouseleave', value); }\n\n get onmousemove() { return level0.get(this, 'onmousemove'); }\n set onmousemove(value) { level0.set(this, 'onmousemove', value); }\n\n get onmouseout() { return level0.get(this, 'onmouseout'); }\n set onmouseout(value) { level0.set(this, 'onmouseout', value); }\n\n get onmouseover() { return level0.get(this, 'onmouseover'); }\n set onmouseover(value) { level0.set(this, 'onmouseover', value); }\n\n get onmouseup() { return level0.get(this, 'onmouseup'); }\n set onmouseup(value) { level0.set(this, 'onmouseup', value); }\n\n get onmousewheel() { return level0.get(this, 'onmousewheel'); }\n set onmousewheel(value) { level0.set(this, 'onmousewheel', value); }\n\n get onpause() { return level0.get(this, 'onpause'); }\n set onpause(value) { level0.set(this, 'onpause', value); }\n\n get onplay() { return level0.get(this, 'onplay'); }\n set onplay(value) { level0.set(this, 'onplay', value); }\n\n get onplaying() { return level0.get(this, 'onplaying'); }\n set onplaying(value) { level0.set(this, 'onplaying', value); }\n\n get onprogress() { return level0.get(this, 'onprogress'); }\n set onprogress(value) { level0.set(this, 'onprogress', value); }\n\n get onratechange() { return level0.get(this, 'onratechange'); }\n set onratechange(value) { level0.set(this, 'onratechange', value); }\n\n get onreset() { return level0.get(this, 'onreset'); }\n set onreset(value) { level0.set(this, 'onreset', value); }\n\n get onresize() { return level0.get(this, 'onresize'); }\n set onresize(value) { level0.set(this, 'onresize', value); }\n\n get onscroll() { return level0.get(this, 'onscroll'); }\n set onscroll(value) { level0.set(this, 'onscroll', value); }\n\n get onseeked() { return level0.get(this, 'onseeked'); }\n set onseeked(value) { level0.set(this, 'onseeked', value); }\n\n get onseeking() { return level0.get(this, 'onseeking'); }\n set onseeking(value) { level0.set(this, 'onseeking', value); }\n\n get onselect() { return level0.get(this, 'onselect'); }\n set onselect(value) { level0.set(this, 'onselect', value); }\n\n get onshow() { return level0.get(this, 'onshow'); }\n set onshow(value) { level0.set(this, 'onshow', value); }\n\n get onstalled() { return level0.get(this, 'onstalled'); }\n set onstalled(value) { level0.set(this, 'onstalled', value); }\n\n get onsubmit() { return level0.get(this, 'onsubmit'); }\n set onsubmit(value) { level0.set(this, 'onsubmit', value); }\n\n get onsuspend() { return level0.get(this, 'onsuspend'); }\n set onsuspend(value) { level0.set(this, 'onsuspend', value); }\n\n get ontimeupdate() { return level0.get(this, 'ontimeupdate'); }\n set ontimeupdate(value) { level0.set(this, 'ontimeupdate', value); }\n\n get ontoggle() { return level0.get(this, 'ontoggle'); }\n set ontoggle(value) { level0.set(this, 'ontoggle', value); }\n\n get onvolumechange() { return level0.get(this, 'onvolumechange'); }\n set onvolumechange(value) { level0.set(this, 'onvolumechange', value); }\n\n get onwaiting() { return level0.get(this, 'onwaiting'); }\n set onwaiting(value) { level0.set(this, 'onwaiting', value); }\n\n get onauxclick() { return level0.get(this, 'onauxclick'); }\n set onauxclick(value) { level0.set(this, 'onauxclick', value); }\n\n get ongotpointercapture() { return level0.get(this, 'ongotpointercapture'); }\n set ongotpointercapture(value) { level0.set(this, 'ongotpointercapture', value); }\n\n get onlostpointercapture() { return level0.get(this, 'onlostpointercapture'); }\n set onlostpointercapture(value) { level0.set(this, 'onlostpointercapture', value); }\n\n get onpointercancel() { return level0.get(this, 'onpointercancel'); }\n set onpointercancel(value) { level0.set(this, 'onpointercancel', value); }\n\n get onpointerdown() { return level0.get(this, 'onpointerdown'); }\n set onpointerdown(value) { level0.set(this, 'onpointerdown', value); }\n\n get onpointerenter() { return level0.get(this, 'onpointerenter'); }\n set onpointerenter(value) { level0.set(this, 'onpointerenter', value); }\n\n get onpointerleave() { return level0.get(this, 'onpointerleave'); }\n set onpointerleave(value) { level0.set(this, 'onpointerleave', value); }\n\n get onpointermove() { return level0.get(this, 'onpointermove'); }\n set onpointermove(value) { level0.set(this, 'onpointermove', value); }\n\n get onpointerout() { return level0.get(this, 'onpointerout'); }\n set onpointerout(value) { level0.set(this, 'onpointerout', value); }\n\n get onpointerover() { return level0.get(this, 'onpointerover'); }\n set onpointerover(value) { level0.set(this, 'onpointerover', value); }\n\n get onpointerup() { return level0.get(this, 'onpointerup'); }\n set onpointerup(value) { level0.set(this, 'onpointerup', value); }\n /* c8 ignore stop */\n\n}\n", "import {CONTENT, PRIVATE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'template';\n\n/**\n * @implements globalThis.HTMLTemplateElement\n */\nclass HTMLTemplateElement extends HTMLElement {\n constructor(ownerDocument) {\n super(ownerDocument, tagName);\n const content = this.ownerDocument.createDocumentFragment();\n (this[CONTENT] = content)[PRIVATE] = this;\n }\n\n get content() {\n if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) {\n for (const node of this.childNodes)\n this[CONTENT].appendChild(node.cloneNode(true));\n }\n return this[CONTENT];\n }\n}\n\nregisterHTMLClass(tagName, HTMLTemplateElement);\n\nexport {HTMLTemplateElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHtmlElement\n */\nexport class HTMLHtmlElement extends HTMLElement {\n constructor(ownerDocument, localName = 'html') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\nconst {toString} = HTMLElement.prototype;\n\nexport class TextElement extends HTMLElement {\n\n get innerHTML() { return this.textContent; }\n set innerHTML(html) { this.textContent = html; }\n\n toString() {\n const outerHTML = toString.call(this.cloneNode());\n return outerHTML.replace('><', () => `>${this.textContent}<`);\n }\n}\n", "import { booleanAttribute, stringAttribute } from '../shared/attributes.js';\nimport { registerHTMLClass } from '../shared/register-html-class.js';\n\nimport { TextElement } from './text-element.js';\n\nconst tagName = 'script';\n\n/**\n * @implements globalThis.HTMLScriptElement\n */\nclass HTMLScriptElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get type() {\n return stringAttribute.get(this, 'type');\n }\n set type(value) {\n stringAttribute.set(this, 'type', value);\n }\n\n get src() {\n return stringAttribute.get(this, 'src');\n }\n set src(value) {\n stringAttribute.set(this, 'src', value);\n }\n\n get defer() {\n return booleanAttribute.get(this, 'defer');\n }\n\n set defer(value) {\n booleanAttribute.set(this, 'defer', value);\n }\n\n get crossOrigin() {\n return stringAttribute.get(this, 'crossorigin');\n }\n set crossOrigin(value) {\n stringAttribute.set(this, 'crossorigin', value);\n }\n\n get nomodule() {\n return booleanAttribute.get(this, 'nomodule');\n }\n set nomodule(value) {\n booleanAttribute.set(this, 'nomodule', value);\n }\n\n get referrerPolicy() {\n return stringAttribute.get(this, 'referrerpolicy');\n }\n set referrerPolicy(value) {\n stringAttribute.set(this, 'referrerpolicy', value);\n }\n\n get nonce() {\n return stringAttribute.get(this, 'nonce');\n }\n set nonce(value) {\n stringAttribute.set(this, 'nonce', value);\n }\n\n get async() {\n return booleanAttribute.get(this, 'async');\n }\n set async(value) {\n booleanAttribute.set(this, 'async', value);\n }\n\n get text() { return this.textContent; }\n set text(content) { this.textContent = content; }\n}\n\nregisterHTMLClass(tagName, HTMLScriptElement);\n\nexport { HTMLScriptElement };\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameElement\n */\nexport class HTMLFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frame') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'iframe';\n\n/**\n * @implements globalThis.HTMLIFrameElement\n */\nclass HTMLIFrameElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcdoc() { return stringAttribute.get(this, \"srcdoc\"); }\n set srcdoc(value) { stringAttribute.set(this, \"srcdoc\", value); }\n\n get name() { return stringAttribute.get(this, \"name\"); }\n set name(value) { stringAttribute.set(this, \"name\", value); }\n\n get allow() { return stringAttribute.get(this, \"allow\"); }\n set allow(value) { stringAttribute.set(this, \"allow\", value); }\n\n get allowFullscreen() { return booleanAttribute.get(this, \"allowfullscreen\"); }\n set allowFullscreen(value) { booleanAttribute.set(this, \"allowfullscreen\", value); }\n \n get referrerPolicy() { return stringAttribute.get(this, \"referrerpolicy\"); }\n set referrerPolicy(value) { stringAttribute.set(this, \"referrerpolicy\", value); }\n \n get loading() { return stringAttribute.get(this, \"loading\"); }\n set loading(value) { stringAttribute.set(this, \"loading\", value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLIFrameElement);\n\nexport {HTMLIFrameElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLObjectElement\n */\nexport class HTMLObjectElement extends HTMLElement {\n constructor(ownerDocument, localName = 'object') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHeadElement\n */\nexport class HTMLHeadElement extends HTMLElement {\n constructor(ownerDocument, localName = 'head') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBodyElement\n */\nexport class HTMLBodyElement extends HTMLElement {\n constructor(ownerDocument, localName = 'body') {\n super(ownerDocument, localName);\n }\n}\n", "import {parse} from 'cssom';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {SHEET} from '../shared/symbols.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'style';\n\n/**\n * @implements globalThis.HTMLStyleElement\n */\nclass HTMLStyleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[SHEET] = null;\n }\n\n get sheet() {\n const sheet = this[SHEET];\n if (sheet !== null) {\n return sheet;\n }\n return this[SHEET] = parse(this.textContent);\n }\n\n get innerHTML() {\n return super.innerHTML || '';\n }\n set innerHTML(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get innerText() {\n return super.innerText || '';\n }\n set innerText(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n get textContent() {\n return super.textContent || '';\n }\n set textContent(value) {\n super.textContent = value;\n this[SHEET] = null;\n }\n}\n\nregisterHTMLClass(tagName, HTMLStyleElement);\n\nexport {HTMLStyleElement};\n", "import {stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTimeElement\n */\nclass HTMLTimeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'time') {\n super(ownerDocument, localName);\n }\n\n /**\n * @type {string}\n */\n get dateTime() { return stringAttribute.get(this, 'datetime'); }\n set dateTime(value) { stringAttribute.set(this, 'datetime', value); }\n}\n\nregisterHTMLClass('time', HTMLTimeElement)\n\nexport {HTMLTimeElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFieldSetElement\n */\nexport class HTMLFieldSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'fieldset') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLEmbedElement\n */\nexport class HTMLEmbedElement extends HTMLElement {\n constructor(ownerDocument, localName = 'embed') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLHRElement\n */\nexport class HTMLHRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'hr') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLProgressElement\n */\nexport class HTMLProgressElement extends HTMLElement {\n constructor(ownerDocument, localName = 'progress') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParagraphElement\n */\nexport class HTMLParagraphElement extends HTMLElement {\n constructor(ownerDocument, localName = 'p') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableElement\n */\nexport class HTMLTableElement extends HTMLElement {\n constructor(ownerDocument, localName = 'table') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFrameSetElement\n */\nexport class HTMLFrameSetElement extends HTMLElement {\n constructor(ownerDocument, localName = 'frameset') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLIElement\n */\nexport class HTMLLIElement extends HTMLElement {\n constructor(ownerDocument, localName = 'li') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBaseElement\n */\nexport class HTMLBaseElement extends HTMLElement {\n constructor(ownerDocument, localName = 'base') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataListElement\n */\nexport class HTMLDataListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'datalist') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'input';\n\n/**\n * @implements globalThis.HTMLInputElement\n */\nclass HTMLInputElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get autofocus() { return booleanAttribute.get(this, 'autofocus') || -1; }\n set autofocus(value) { booleanAttribute.set(this, 'autofocus', value); }\n\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLInputElement);\n\nexport {HTMLInputElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLParamElement\n */\nexport class HTMLParamElement extends HTMLElement {\n constructor(ownerDocument, localName = 'param') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMediaElement\n */\nexport class HTMLMediaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'media') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAudioElement\n */\nexport class HTMLAudioElement extends HTMLElement {\n constructor(ownerDocument, localName = 'audio') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'h1';\n\n/**\n * @implements globalThis.HTMLHeadingElement\n */\nclass HTMLHeadingElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass([tagName, 'h2', 'h3', 'h4', 'h5', 'h6'], HTMLHeadingElement);\n\nexport {HTMLHeadingElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDirectoryElement\n */\nexport class HTMLDirectoryElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dir') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLQuoteElement\n */\nexport class HTMLQuoteElement extends HTMLElement {\n constructor(ownerDocument, localName = 'quote') {\n super(ownerDocument, localName);\n }\n}\n", "import {IMAGE} from '../shared/symbols.js';\n\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute} from '../shared/attributes.js';\n\nimport Canvas from '../../commonjs/canvas.cjs';\n\nimport {HTMLElement} from './element.js';\n\nconst {createCanvas} = Canvas;\n\nconst tagName = 'canvas';\n\n/**\n * @implements globalThis.HTMLCanvasElement\n */\nclass HTMLCanvasElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n this[IMAGE] = createCanvas(300, 150);\n }\n\n get width() {\n return this[IMAGE].width;\n }\n\n set width(value) {\n numericAttribute.set(this, 'width', value);\n this[IMAGE].width = value;\n }\n\n get height() {\n return this[IMAGE].height;\n }\n\n set height(value) {\n numericAttribute.set(this, 'height', value);\n this[IMAGE].height = value;\n }\n\n getContext(type) {\n return this[IMAGE].getContext(type);\n }\n\n toDataURL(...args) {\n return this[IMAGE].toDataURL(...args);\n }\n}\n\nregisterHTMLClass(tagName, HTMLCanvasElement);\n\nexport {HTMLCanvasElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLegendElement\n */\nexport class HTMLLegendElement extends HTMLElement {\n constructor(ownerDocument, localName = 'legend') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'option';\n\n/**\n * @implements globalThis.HTMLOptionElement\n */\nclass HTMLOptionElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get value() { return stringAttribute.get(this, 'value'); }\n set value(value) { stringAttribute.set(this, 'value', value); }\n /* c8 ignore stop */\n\n get selected() { return booleanAttribute.get(this, 'selected'); }\n set selected(value) {\n const option = this.parentElement?.querySelector('option[selected]');\n if (option && option !== this)\n option.selected = false;\n booleanAttribute.set(this, 'selected', value);\n }\n}\n\nregisterHTMLClass(tagName, HTMLOptionElement);\n\nexport {HTMLOptionElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLSpanElement\n */\nexport class HTMLSpanElement extends HTMLElement {\n constructor(ownerDocument, localName = 'span') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMeterElement\n */\nexport class HTMLMeterElement extends HTMLElement {\n constructor(ownerDocument, localName = 'meter') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLVideoElement\n */\nexport class HTMLVideoElement extends HTMLElement {\n constructor(ownerDocument, localName = 'video') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCellElement\n */\nexport class HTMLTableCellElement extends HTMLElement {\n constructor(ownerDocument, localName = 'td') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'title';\n\n/**\n * @implements globalThis.HTMLTitleElement\n */\nclass HTMLTitleElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n}\n\nregisterHTMLClass(tagName, HTMLTitleElement);\n\nexport {HTMLTitleElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOutputElement\n */\nexport class HTMLOutputElement extends HTMLElement {\n constructor(ownerDocument, localName = 'output') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableRowElement\n */\nexport class HTMLTableRowElement extends HTMLElement {\n constructor(ownerDocument, localName = 'tr') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDataElement\n */\nexport class HTMLDataElement extends HTMLElement {\n constructor(ownerDocument, localName = 'data') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMenuElement\n */\nexport class HTMLMenuElement extends HTMLElement {\n constructor(ownerDocument, localName = 'menu') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\nimport {NodeList} from '../interface/node-list.js';\n\nconst tagName = 'select';\n\n/**\n * @implements globalThis.HTMLSelectElement\n */\nclass HTMLSelectElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n get options() {\n let children = new NodeList;\n let {firstElementChild} = this;\n while (firstElementChild) {\n if (firstElementChild.tagName === 'OPTGROUP')\n children.push(...firstElementChild.children);\n else\n children.push(firstElementChild);\n firstElementChild = firstElementChild.nextElementSibling;\n }\n return children;\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n /* c8 ignore stop */\n\n get value() { return this.querySelector('option[selected]')?.value; }\n}\n\nregisterHTMLClass(tagName, HTMLSelectElement);\n\nexport {HTMLSelectElement};\n\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLBRElement\n */\nexport class HTMLBRElement extends HTMLElement {\n constructor(ownerDocument, localName = 'br') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'button';\n\n/**\n * @implements globalThis.HTMLButtonElement\n */\nclass HTMLButtonElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLButtonElement);\n\nexport {HTMLButtonElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMapElement\n */\nexport class HTMLMapElement extends HTMLElement {\n constructor(ownerDocument, localName = 'map') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOptGroupElement\n */\nexport class HTMLOptGroupElement extends HTMLElement {\n constructor(ownerDocument, localName = 'optgroup') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDListElement\n */\nexport class HTMLDListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'dl') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute} from '../shared/attributes.js';\n\nimport {TextElement} from './text-element.js';\n\nconst tagName = 'textarea';\n\n/**\n * @implements globalThis.HTMLTextAreaElement\n */\nclass HTMLTextAreaElement extends TextElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n get placeholder() { return this.getAttribute('placeholder'); }\n set placeholder(value) { this.setAttribute('placeholder', value); }\n\n get type() { return this.getAttribute('type'); }\n set type(value) { this.setAttribute('type', value); }\n\n get value() { return this.textContent; }\n set value(content) { this.textContent = content; }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLTextAreaElement);\n\nexport {HTMLTextAreaElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFontElement\n */\nexport class HTMLFontElement extends HTMLElement {\n constructor(ownerDocument, localName = 'font') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDivElement\n */\nexport class HTMLDivElement extends HTMLElement {\n constructor(ownerDocument, localName = 'div') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {booleanAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'link';\n\n/**\n * @implements globalThis.HTMLLinkElement\n */\nclass HTMLLinkElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get disabled() { return booleanAttribute.get(this, 'disabled'); }\n set disabled(value) { booleanAttribute.set(this, 'disabled', value); }\n\n get href() { return stringAttribute.get(this, 'href').trim(); }\n set href(value) { stringAttribute.set(this, 'href', value); }\n\n get hreflang() { return stringAttribute.get(this, 'hreflang'); }\n set hreflang(value) { stringAttribute.set(this, 'hreflang', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLLinkElement);\n\nexport {HTMLLinkElement};\n", "import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\n\nconst tagName = 'slot';\n\n/**\n * @implements globalThis.HTMLSlotElement\n */\nclass HTMLSlotElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return this.getAttribute('name'); }\n set name(value) { this.setAttribute('name', value); }\n\n assign() {}\n\n assignedNodes(options) {\n const isNamedSlot = !!this.name;\n const hostChildNodes = this.getRootNode().host?.childNodes ?? [];\n let slottables;\n\n if (isNamedSlot) {\n slottables = [...hostChildNodes].filter(node => node.slot === this.name);\n } else {\n slottables = [...hostChildNodes].filter(node => !node.slot);\n }\n\n if (options?.flatten) {\n const result = [];\n\n // Element and Text nodes are slottables. A slot can be a slottable.\n for (let slottable of slottables) {\n if (slottable.localName === 'slot') {\n result.push(...slottable.assignedNodes({ flatten: true }));\n } else {\n result.push(slottable);\n }\n }\n\n slottables = result;\n }\n\n // If no assigned nodes are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.childNodes];\n }\n\n assignedElements(options) {\n const slottables = this.assignedNodes(options).filter(n => n.nodeType === 1);\n\n // If no assigned elements are found, it returns the slot's fallback content.\n return slottables.length ? slottables : [...this.children];\n }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSlotElement);\n\nexport {HTMLSlotElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLFormElement\n */\nexport class HTMLFormElement extends HTMLElement {\n constructor(ownerDocument, localName = 'form') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {numericAttribute, stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'img';\n\n/**\n * @implements globalThis.HTMLImageElement\n */\nclass HTMLImageElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get alt() { return stringAttribute.get(this, 'alt'); }\n set alt(value) { stringAttribute.set(this, 'alt', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get title() { return stringAttribute.get(this, 'title'); }\n set title(value) { stringAttribute.set(this, 'title', value); }\n\n get width() { return numericAttribute.get(this, 'width'); }\n set width(value) { numericAttribute.set(this, 'width', value); }\n\n get height() { return numericAttribute.get(this, 'height'); }\n set height(value) { numericAttribute.set(this, 'height', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLImageElement);\n\nexport {HTMLImageElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPreElement\n */\nexport class HTMLPreElement extends HTMLElement {\n constructor(ownerDocument, localName = 'pre') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUListElement\n */\nexport class HTMLUListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ul') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\nimport {registerHTMLClass} from '../shared/register-html-class.js';\nimport { stringAttribute } from '../shared/attributes.js';\n\nconst tagName = 'meta'\n/**\n * @implements globalThis.HTMLMetaElement\n */\nexport class HTMLMetaElement extends HTMLElement {\n constructor(ownerDocument, localName =tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get name() { return stringAttribute.get(this, 'name'); }\n set name(value) { stringAttribute.set(this, 'name', value); }\n\n get httpEquiv() { return stringAttribute.get(this, 'http-equiv'); }\n set httpEquiv(value) { stringAttribute.set(this, 'http-equiv', value); }\n\n get content() { return stringAttribute.get(this, 'content'); }\n set content(value) { stringAttribute.set(this, 'content', value); }\n\n get charset() { return stringAttribute.get(this, 'charset'); }\n set charset(value) { stringAttribute.set(this, 'charset', value); }\n\n get media() { return stringAttribute.get(this, 'media'); }\n set media(value) { stringAttribute.set(this, 'media', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLMetaElement);\n\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLPictureElement\n */\nexport class HTMLPictureElement extends HTMLElement {\n constructor(ownerDocument, localName = 'picture') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLAreaElement\n */\nexport class HTMLAreaElement extends HTMLElement {\n constructor(ownerDocument, localName = 'area') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLOListElement\n */\nexport class HTMLOListElement extends HTMLElement {\n constructor(ownerDocument, localName = 'ol') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTableCaptionElement\n */\nexport class HTMLTableCaptionElement extends HTMLElement {\n constructor(ownerDocument, localName = 'caption') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'a';\n\n/**\n * @implements globalThis.HTMLAnchorElement\n */\nclass HTMLAnchorElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */ // copy paste from img.src, already covered\n get href() { return encodeURI(decodeURI(stringAttribute.get(this, 'href'))).trim(); }\n set href(value) { stringAttribute.set(this, 'href', decodeURI(value)); }\n\n get download() { return encodeURI(decodeURI(stringAttribute.get(this, 'download'))); }\n set download(value) { stringAttribute.set(this, 'download', decodeURI(value)); }\n\n get target() { return stringAttribute.get(this, 'target'); }\n set target(value) { stringAttribute.set(this, 'target', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n\n get rel() { return stringAttribute.get(this, 'rel'); }\n set rel(value) { stringAttribute.set(this, 'rel', value); }\n /* c8 ignore stop */\n\n}\n\nregisterHTMLClass(tagName, HTMLAnchorElement);\n\nexport {HTMLAnchorElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLLabelElement\n */\nexport class HTMLLabelElement extends HTMLElement {\n constructor(ownerDocument, localName = 'label') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLUnknownElement\n */\nexport class HTMLUnknownElement extends HTMLElement {\n constructor(ownerDocument, localName = 'unknown') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLModElement\n */\nexport class HTMLModElement extends HTMLElement {\n constructor(ownerDocument, localName = 'mod') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLDetailsElement\n */\nexport class HTMLDetailsElement extends HTMLElement {\n constructor(ownerDocument, localName = 'details') {\n super(ownerDocument, localName);\n }\n}\n", "import {registerHTMLClass} from '../shared/register-html-class.js';\nimport {stringAttribute} from '../shared/attributes.js';\n\nimport {HTMLElement} from './element.js';\n\nconst tagName = 'source';\n\n/**\n * @implements globalThis.HTMLSourceElement\n */\nclass HTMLSourceElement extends HTMLElement {\n constructor(ownerDocument, localName = tagName) {\n super(ownerDocument, localName);\n }\n\n /* c8 ignore start */\n get src() { return stringAttribute.get(this, 'src'); }\n set src(value) { stringAttribute.set(this, 'src', value); }\n\n get srcset() { return stringAttribute.get(this, 'srcset'); }\n set srcset(value) { stringAttribute.set(this, 'srcset', value); }\n\n get sizes() { return stringAttribute.get(this, 'sizes'); }\n set sizes(value) { stringAttribute.set(this, 'sizes', value); }\n\n get type() { return stringAttribute.get(this, 'type'); }\n set type(value) { stringAttribute.set(this, 'type', value); }\n /* c8 ignore stop */\n}\n\nregisterHTMLClass(tagName, HTMLSourceElement);\n\nexport {HTMLSourceElement};\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLTrackElement\n */\nexport class HTMLTrackElement extends HTMLElement {\n constructor(ownerDocument, localName = 'track') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from './element.js';\n\n/**\n * @implements globalThis.HTMLMarqueeElement\n */\nexport class HTMLMarqueeElement extends HTMLElement {\n constructor(ownerDocument, localName = 'marquee') {\n super(ownerDocument, localName);\n }\n}\n", "import {HTMLElement} from '../html/element.js';\nimport {HTMLTemplateElement} from '../html/template-element.js';\nimport {HTMLHtmlElement} from '../html/html-element.js';\nimport {HTMLScriptElement} from '../html/script-element.js';\nimport {HTMLFrameElement} from '../html/frame-element.js';\nimport {HTMLIFrameElement} from '../html/i-frame-element.js';\nimport {HTMLObjectElement} from '../html/object-element.js';\nimport {HTMLHeadElement} from '../html/head-element.js';\nimport {HTMLBodyElement} from '../html/body-element.js';\nimport {HTMLStyleElement} from '../html/style-element.js';\nimport {HTMLTimeElement} from '../html/time-element.js';\nimport {HTMLFieldSetElement} from '../html/field-set-element.js';\nimport {HTMLEmbedElement} from '../html/embed-element.js';\nimport {HTMLHRElement} from '../html/hr-element.js';\nimport {HTMLProgressElement} from '../html/progress-element.js';\nimport {HTMLParagraphElement} from '../html/paragraph-element.js';\nimport {HTMLTableElement} from '../html/table-element.js';\nimport {HTMLFrameSetElement} from '../html/frame-set-element.js';\nimport {HTMLLIElement} from '../html/li-element.js';\nimport {HTMLBaseElement} from '../html/base-element.js';\nimport {HTMLDataListElement} from '../html/data-list-element.js';\nimport {HTMLInputElement} from '../html/input-element.js';\nimport {HTMLParamElement} from '../html/param-element.js';\nimport {HTMLMediaElement} from '../html/media-element.js';\nimport {HTMLAudioElement} from '../html/audio-element.js';\nimport {HTMLHeadingElement} from '../html/heading-element.js';\nimport {HTMLDirectoryElement} from '../html/directory-element.js';\nimport {HTMLQuoteElement} from '../html/quote-element.js';\nimport {HTMLCanvasElement} from '../html/canvas-element.js';\nimport {HTMLLegendElement} from '../html/legend-element.js';\nimport {HTMLOptionElement} from '../html/option-element.js';\nimport {HTMLSpanElement} from '../html/span-element.js';\nimport {HTMLMeterElement} from '../html/meter-element.js';\nimport {HTMLVideoElement} from '../html/video-element.js';\nimport {HTMLTableCellElement} from '../html/table-cell-element.js';\nimport {HTMLTitleElement} from '../html/title-element.js';\nimport {HTMLOutputElement} from '../html/output-element.js';\nimport {HTMLTableRowElement} from '../html/table-row-element.js';\nimport {HTMLDataElement} from '../html/data-element.js';\nimport {HTMLMenuElement} from '../html/menu-element.js';\nimport {HTMLSelectElement} from '../html/select-element.js';\nimport {HTMLBRElement} from '../html/br-element.js';\nimport {HTMLButtonElement} from '../html/button-element.js';\nimport {HTMLMapElement} from '../html/map-element.js';\nimport {HTMLOptGroupElement} from '../html/opt-group-element.js';\nimport {HTMLDListElement} from '../html/d-list-element.js';\nimport {HTMLTextAreaElement} from '../html/text-area-element.js';\nimport {HTMLFontElement} from '../html/font-element.js';\nimport {HTMLDivElement} from '../html/div-element.js';\nimport {HTMLLinkElement} from '../html/link-element.js';\nimport {HTMLSlotElement} from '../html/slot-element.js';\nimport {HTMLFormElement} from '../html/form-element.js';\nimport {HTMLImageElement} from '../html/image-element.js';\nimport {HTMLPreElement} from '../html/pre-element.js';\nimport {HTMLUListElement} from '../html/u-list-element.js';\nimport {HTMLMetaElement} from '../html/meta-element.js';\nimport {HTMLPictureElement} from '../html/picture-element.js';\nimport {HTMLAreaElement} from '../html/area-element.js';\nimport {HTMLOListElement} from '../html/o-list-element.js';\nimport {HTMLTableCaptionElement} from '../html/table-caption-element.js';\nimport {HTMLAnchorElement} from '../html/anchor-element.js';\nimport {HTMLLabelElement} from '../html/label-element.js';\nimport {HTMLUnknownElement} from '../html/unknown-element.js';\nimport {HTMLModElement} from '../html/mod-element.js';\nimport {HTMLDetailsElement} from '../html/details-element.js';\nimport {HTMLSourceElement} from '../html/source-element.js';\nimport {HTMLTrackElement} from '../html/track-element.js';\nimport {HTMLMarqueeElement} from '../html/marquee-element.js';\n\nexport {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n\nexport const HTMLClasses = {\n HTMLElement,\n HTMLTemplateElement,\n HTMLHtmlElement,\n HTMLScriptElement,\n HTMLFrameElement,\n HTMLIFrameElement,\n HTMLObjectElement,\n HTMLHeadElement,\n HTMLBodyElement,\n HTMLStyleElement,\n HTMLTimeElement,\n HTMLFieldSetElement,\n HTMLEmbedElement,\n HTMLHRElement,\n HTMLProgressElement,\n HTMLParagraphElement,\n HTMLTableElement,\n HTMLFrameSetElement,\n HTMLLIElement,\n HTMLBaseElement,\n HTMLDataListElement,\n HTMLInputElement,\n HTMLParamElement,\n HTMLMediaElement,\n HTMLAudioElement,\n HTMLHeadingElement,\n HTMLDirectoryElement,\n HTMLQuoteElement,\n HTMLCanvasElement,\n HTMLLegendElement,\n HTMLOptionElement,\n HTMLSpanElement,\n HTMLMeterElement,\n HTMLVideoElement,\n HTMLTableCellElement,\n HTMLTitleElement,\n HTMLOutputElement,\n HTMLTableRowElement,\n HTMLDataElement,\n HTMLMenuElement,\n HTMLSelectElement,\n HTMLBRElement,\n HTMLButtonElement,\n HTMLMapElement,\n HTMLOptGroupElement,\n HTMLDListElement,\n HTMLTextAreaElement,\n HTMLFontElement,\n HTMLDivElement,\n HTMLLinkElement,\n HTMLSlotElement,\n HTMLFormElement,\n HTMLImageElement,\n HTMLPreElement,\n HTMLUListElement,\n HTMLMetaElement,\n HTMLPictureElement,\n HTMLAreaElement,\n HTMLOListElement,\n HTMLTableCaptionElement,\n HTMLAnchorElement,\n HTMLLabelElement,\n HTMLUnknownElement,\n HTMLModElement,\n HTMLDetailsElement,\n HTMLSourceElement,\n HTMLTrackElement,\n HTMLMarqueeElement\n};\n", "// TODO: ensure all these are text only\n// /^(?:plaintext|script|style|textarea|title|xmp)$/i\n\nconst voidElements = {test: () => true};\nexport const Mime = {\n 'text/html': {\n docType: '<!DOCTYPE html>',\n ignoreCase: true,\n voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i\n },\n 'image/svg+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'text/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n },\n 'application/xhtml+xml': {\n docType: '<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n ignoreCase: false,\n voidElements\n }\n};\n", "// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.CustomEvent\n */\nexport class CustomEvent extends Event {\n constructor(type, eventInitDict = {}) {\n super(type, eventInitDict);\n this.detail = eventInitDict.detail;\n }\n}\n\n/* c8 ignore stop */\n", "// https://dom.spec.whatwg.org/#interface-customevent\n\n/* c8 ignore start */\n\n// One day Node might have CustomEvent too\n\nimport {Event} from './event.js';\n\n/**\n * @implements globalThis.InputEvent\n */\nexport class InputEvent extends Event {\n constructor(type, inputEventInit = {}) {\n super(type, inputEventInit);\n this.inputType = inputEventInit.inputType;\n this.data = inputEventInit.data;\n this.dataTransfer = inputEventInit.dataTransfer;\n this.isComposing = inputEventInit.isComposing || false;\n this.ranges = inputEventInit.ranges;\n }\n}\n/* c8 ignore stop */\n", "import {HTMLImageElement} from '../html/image-element.js';\n\nexport const ImageClass = ownerDocument =>\n/**\n * @implements globalThis.Image\n */\nclass Image extends HTMLImageElement {\n constructor(width, height) {\n super(ownerDocument);\n switch (arguments.length) {\n case 1:\n this.height = width;\n this.width = width;\n break;\n case 2:\n this.height = height;\n this.width = width;\n break;\n }\n }\n};\n", "// https://dom.spec.whatwg.org/#concept-live-range\n\nimport {END, NEXT, PREV, START} from '../shared/symbols.js';\n\nimport {SVGElement} from '../svg/element.js';\n\nimport {getEnd, setAdjacent} from '../shared/utils.js';\n\nconst deleteContents = ({[START]: start, [END]: end}, fragment = null) => {\n setAdjacent(start[PREV], end[NEXT]);\n do {\n const after = getEnd(start);\n const next = after === end ? after : after[NEXT];\n if (fragment)\n fragment.insertBefore(start, fragment[END]);\n else\n start.remove();\n start = next;\n } while (start !== end);\n};\n\n/**\n * @implements globalThis.Range\n */\nexport class Range {\n constructor() {\n this[START] = null;\n this[END] = null;\n this.commonAncestorContainer = null;\n }\n\n /* TODO: this is more complicated than it looks\n setStart(node, offset) {\n this[START] = node.childNodes[offset];\n }\n\n setEnd(node, offset) {\n this[END] = getEnd(node.childNodes[offset]);\n }\n //*/\n\n insertNode(newNode) {\n this[END].parentNode.insertBefore(newNode, this[START]);\n }\n\n selectNode(node) {\n this[START] = node;\n this[END] = getEnd(node);\n }\n\n // TODO: SVG elements should then create contextual fragments\n // that return SVG nodes\n selectNodeContents(node) {\n this.selectNode(node);\n this.commonAncestorContainer = node;\n }\n\n surroundContents(parentNode) {\n parentNode.replaceChildren(this.extractContents());\n }\n\n setStartBefore(node) {\n this[START] = node;\n }\n\n setStartAfter(node) {\n this[START] = node.nextSibling;\n }\n\n setEndBefore(node) {\n this[END] = getEnd(node.previousSibling);\n }\n\n setEndAfter(node) {\n this[END] = getEnd(node);\n }\n\n cloneContents() {\n let {[START]: start, [END]: end} = this;\n const fragment = start.ownerDocument.createDocumentFragment();\n while (start !== end) {\n fragment.insertBefore(start.cloneNode(true), fragment[END]);\n start = getEnd(start);\n if (start !== end)\n start = start[NEXT];\n }\n return fragment;\n }\n\n deleteContents() {\n deleteContents(this);\n }\n\n extractContents() {\n const fragment = this[START].ownerDocument.createDocumentFragment();\n deleteContents(this, fragment);\n return fragment;\n }\n\n createContextualFragment(html) {\n const { commonAncestorContainer: doc } = this;\n const isSVG = 'ownerSVGElement' in doc;\n const document = isSVG ? doc.ownerDocument : doc;\n const template = document.createElement('template');\n template.innerHTML = html;\n let {content} = template;\n if (isSVG) {\n const childNodes = [...content.childNodes];\n content = document.createDocumentFragment();\n Object.setPrototypeOf(content, SVGElement.prototype);\n content.ownerSVGElement = document;\n for (const child of childNodes) {\n Object.setPrototypeOf(child, SVGElement.prototype);\n child.ownerSVGElement = document;\n content.appendChild(child);\n }\n }\n else\n this.selectNode(content);\n return content;\n }\n\n cloneRange() {\n const range = new Range;\n range[START] = this[START];\n range[END] = this[END];\n return range;\n }\n}\n", "import {\n DOCUMENT_NODE,\n ELEMENT_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_CDATA_SECTION,\n SHOW_COMMENT,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nimport {PRIVATE, END, NEXT} from '../shared/symbols.js';\n\nconst isOK = ({nodeType}, mask) => {\n switch (nodeType) {\n case ELEMENT_NODE:\n return mask & SHOW_ELEMENT;\n case TEXT_NODE:\n return mask & SHOW_TEXT;\n case COMMENT_NODE:\n return mask & SHOW_COMMENT;\n case CDATA_SECTION_NODE:\n return mask & SHOW_CDATA_SECTION;\n }\n return 0;\n};\n\n/**\n * @implements globalThis.TreeWalker\n */\nexport class TreeWalker {\n constructor(root, whatToShow = SHOW_ALL) {\n this.root = root;\n this.currentNode = root;\n this.whatToShow = whatToShow;\n let {[NEXT]: next, [END]: end} = root;\n if (root.nodeType === DOCUMENT_NODE) {\n const {documentElement} = root;\n next = documentElement;\n end = documentElement[END];\n }\n const nodes = [];\n while (next && next !== end) {\n if (isOK(next, whatToShow))\n nodes.push(next);\n next = next[NEXT];\n }\n this[PRIVATE] = {i: 0, nodes};\n }\n\n nextNode() {\n const $ = this[PRIVATE];\n this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null;\n return this.currentNode;\n }\n}\n", "import {ELEMENT_NODE} from '../shared/constants.js';\nimport {CUSTOM_ELEMENTS, END, NEXT} from '../shared/symbols.js';\nimport {htmlClasses} from '../shared/register-html-class.js';\n\nimport {Document} from '../interface/document.js';\nimport {NodeList} from '../interface/node-list.js';\nimport {customElements} from '../interface/custom-element-registry.js';\n\nimport {HTMLElement} from './element.js';\n\nconst createHTMLElement = (ownerDocument, builtin, localName, options) => {\n if (!builtin && htmlClasses.has(localName)) {\n const Class = htmlClasses.get(localName);\n return new Class(ownerDocument, localName);\n }\n const {[CUSTOM_ELEMENTS]: {active, registry}} = ownerDocument;\n if (active) {\n const ce = builtin ? options.is : localName;\n if (registry.has(ce)) {\n const {Class} = registry.get(ce);\n const element = new Class(ownerDocument, localName);\n customElements.set(element, {connected: false});\n return element;\n }\n }\n return new HTMLElement(ownerDocument, localName);\n};\n\n/**\n * @implements globalThis.HTMLDocument\n */\nexport class HTMLDocument extends Document {\n constructor() { super('text/html'); }\n\n get all() {\n const nodeList = new NodeList;\n let {[NEXT]: next, [END]: end} = this;\n while (next !== end) {\n switch (next.nodeType) {\n case ELEMENT_NODE:\n nodeList.push(next);\n break;\n }\n next = next[NEXT];\n }\n return nodeList;\n }\n\n /**\n * @type HTMLHeadElement\n */\n get head() {\n const {documentElement} = this;\n let {firstElementChild} = documentElement;\n if (!firstElementChild || firstElementChild.tagName !== 'HEAD') {\n firstElementChild = this.createElement('head');\n documentElement.prepend(firstElementChild);\n }\n return firstElementChild;\n }\n\n /**\n * @type HTMLBodyElement\n */\n get body() {\n const {head} = this;\n let {nextElementSibling} = head;\n if (!nextElementSibling || nextElementSibling.tagName !== 'BODY') {\n nextElementSibling = this.createElement('body');\n head.after(nextElementSibling);\n }\n return nextElementSibling;\n }\n\n /**\n * @type HTMLTitleElement\n */\n get title() {\n const {head} = this;\n return head.getElementsByTagName('title').at(0)?.textContent || '';\n }\n\n set title(textContent) {\n const {head} = this;\n let title = head.getElementsByTagName('title').at(0);\n if (title)\n title.textContent = textContent;\n else {\n head.insertBefore(\n this.createElement('title'),\n head.firstChild\n ).textContent = textContent;\n }\n }\n\n createElement(localName, options) {\n const builtin = !!(options && options.is);\n const element = createHTMLElement(this, builtin, localName, options);\n if (builtin)\n element.setAttribute('is', options.is);\n return element;\n }\n}\n", "import {MIME} from '../shared/symbols.js';\nimport {Document} from '../interface/document.js';\n\n/**\n * @implements globalThis.Document\n */\nexport class SVGDocument extends Document {\n constructor() { super('image/svg+xml'); }\n toString() {\n return this[MIME].docType + super.toString();\n }\n}\n", "import {MIME} from '../shared/symbols.js';\nimport {Document} from '../interface/document.js';\n\n/**\n * @implements globalThis.XMLDocument\n */\nexport class XMLDocument extends Document {\n constructor() { super('text/xml'); }\n toString() {\n return this[MIME].docType + super.toString();\n }\n}\n", "import {DOM_PARSER, GLOBALS} from '../shared/symbols.js';\nimport {parseFromString} from '../shared/parse-from-string.js';\n\nimport {HTMLDocument} from '../html/document.js';\nimport {SVGDocument} from '../svg/document.js';\nimport {XMLDocument} from '../xml/document.js';\n\n/**\n * @implements globalThis.DOMParser\n */\nexport class DOMParser {\n\n /** @typedef {{ \"text/html\": HTMLDocument, \"image/svg+xml\": SVGDocument, \"text/xml\": XMLDocument }} MimeToDoc */\n /**\n * @template {keyof MimeToDoc} MIME\n * @param {string} markupLanguage\n * @param {MIME} mimeType\n * @returns {MimeToDoc[MIME]}\n */\n parseFromString(markupLanguage, mimeType, globals = null) {\n let isHTML = false, document;\n if (mimeType === 'text/html') {\n isHTML = true;\n document = new HTMLDocument;\n }\n else if (mimeType === 'image/svg+xml')\n document = new SVGDocument;\n else\n document = new XMLDocument;\n document[DOM_PARSER] = DOMParser;\n if (globals)\n document[GLOBALS] = globals;\n if (isHTML && markupLanguage === '...')\n markupLanguage = '<!doctype html><html><head></head><body></body></html>';\n return markupLanguage ?\n parseFromString(document, isHTML, markupLanguage) :\n document;\n }\n}\n", "import {\n NODE_END,\n ELEMENT_NODE,\n ATTRIBUTE_NODE,\n TEXT_NODE,\n CDATA_SECTION_NODE,\n COMMENT_NODE,\n DOCUMENT_NODE,\n DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT_NODE\n} from './constants.js';\n\nimport {END, PREV} from './symbols.js';\n\nimport {htmlClasses} from './register-html-class.js';\nimport {knownBoundaries, knownSiblings} from './utils.js';\n\nimport {Attr} from '../interface/attr.js';\nimport {CDATASection} from '../interface/cdata-section.js';\nimport {Comment} from '../interface/comment.js';\nimport {DocumentType} from '../interface/document-type.js';\nimport {Text} from '../interface/text.js';\n\nimport {HTMLDocument} from '../html/document.js';\nimport {HTMLElement} from '../html/element.js';\nimport {SVGElement} from '../svg/element.js';\n\nconst {parse} = JSON;\n\nconst append = (parentNode, node, end) => {\n node.parentNode = parentNode;\n knownSiblings(end[PREV], node, end);\n};\n\nconst createHTMLElement = (ownerDocument, localName) => {\n if (htmlClasses.has(localName)) {\n const Class = htmlClasses.get(localName);\n return new Class(ownerDocument, localName);\n }\n return new HTMLElement(ownerDocument, localName);\n};\n\n/**\n * @typedef {number|string} jsdonValue - either a node type or its content\n */\n\n/**\n * Given a stringified, or arrayfied DOM element, returns an HTMLDocument\n * that represent the content of such string, or array.\n * @param {string|jsdonValue[]} value\n * @returns {HTMLDocument}\n */\nexport const parseJSON = value => {\n const array = typeof value === 'string' ? parse(value) : value;\n const {length} = array;\n const document = new HTMLDocument;\n let parentNode = document, end = parentNode[END], svg = false, i = 0;\n while (i < length) {\n let nodeType = array[i++];\n switch (nodeType) {\n case ELEMENT_NODE: {\n const localName = array[i++];\n const isSVG = svg || localName === 'svg' || localName === 'SVG';\n const element = isSVG ?\n new SVGElement(document, localName, parentNode.ownerSVGElement || null) :\n createHTMLElement(document, localName);\n knownBoundaries(end[PREV], element, end);\n element.parentNode = parentNode;\n parentNode = element;\n end = parentNode[END];\n svg = isSVG;\n break;\n }\n case ATTRIBUTE_NODE: {\n const name = array[i++];\n const value = typeof array[i] === 'string' ? array[i++] : '';\n const attr = new Attr(document, name, value);\n attr.ownerElement = parentNode;\n knownSiblings(end[PREV], attr, end);\n break;\n }\n case TEXT_NODE:\n append(parentNode, new Text(document, array[i++]), end);\n break;\n case COMMENT_NODE:\n append(parentNode, new Comment(document, array[i++]), end);\n break;\n case CDATA_SECTION_NODE:\n append(parentNode, new CDATASection(document, array[i++]), end);\n break;\n case DOCUMENT_TYPE_NODE: {\n const args = [document];\n while (typeof array[i] === 'string')\n args.push(array[i++]);\n if (args.length === 3 && /\\.dtd$/i.test(args[2]))\n args.splice(2, 0, '');\n append(parentNode, new DocumentType(...args), end);\n break;\n }\n case DOCUMENT_FRAGMENT_NODE:\n parentNode = document.createDocumentFragment();\n end = parentNode[END];\n /* eslint no-fallthrough:0 */\n case DOCUMENT_NODE:\n break;\n default:\n do {\n nodeType -= NODE_END;\n if (svg && !parentNode.ownerSVGElement)\n svg = false;\n parentNode = parentNode.parentNode || parentNode;\n } while (nodeType < 0);\n end = parentNode[END];\n break;\n }\n }\n switch (i && array[0]) {\n case ELEMENT_NODE:\n return document.firstElementChild;\n case DOCUMENT_FRAGMENT_NODE:\n return parentNode;\n }\n return document;\n};\n\n/**\n * \n * @param {Document|Element} node the Document or Element to serialize\n * @returns {jsdonValue[]} the linear jsdon serialized array\n */\nexport const toJSON = node => node.toJSON();\n", "import {\n SHOW_ALL,\n SHOW_ELEMENT,\n SHOW_COMMENT,\n SHOW_CDATA_SECTION,\n SHOW_TEXT\n} from '../shared/constants.js';\n\nexport class NodeFilter {\n static get SHOW_ALL() { return SHOW_ALL; }\n static get SHOW_ELEMENT() { return SHOW_ELEMENT; }\n static get SHOW_COMMENT() { return SHOW_COMMENT; }\n static get SHOW_CDATA_SECTION() { return SHOW_CDATA_SECTION; }\n static get SHOW_TEXT() { return SHOW_TEXT; }\n}\n", "import {DOMParser} from './dom/parser.js';\nimport {Document as _Document} from './interface/document.js';\n\nimport {illegalConstructor} from './shared/facades.js';\nimport {setPrototypeOf} from './shared/object.js';\nexport {parseJSON, toJSON} from './shared/parse-json.js';\n\nexport * from './shared/facades.js';\nexport * from './shared/html-classes.js';\n\nexport {DOMParser};\n\nexport {CustomEvent} from './interface/custom-event.js';\nexport {Event} from './interface/event.js';\nexport {EventTarget} from './interface/event-target.js';\nexport {InputEvent} from './interface/input-event.js';\nexport {NodeList} from './interface/node-list.js';\nexport {NodeFilter} from './interface/node-filter.js';\n\nexport const parseHTML = (html, globals = null) => (new DOMParser).parseFromString(\n html, 'text/html', globals\n).defaultView;\n\nexport function Document() {\n illegalConstructor();\n}\n\nsetPrototypeOf(Document, _Document).prototype = _Document.prototype;\n"], - "mappings": "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CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,aAAa,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,aAAa,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,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AAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,UAAU,G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GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,gBAAgB,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,UAAU,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,SAAS,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,YAAY,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAAW,GAAE,CAAC,GAAE,WAA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OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,OAAO,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,QAAQ,GAAE,CAAC,GAAE,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", - "names": ["performance", "before", "parse", "CSSStyleDeclaration", "Canvas", "esm_exports", "_a", "CharCodes", "BinTrieFlags", "EntityDecoderState", "DecodingMode", "_a", "CharCodes", "State", "QuoteType", "_a", "ElementType", "Text", "Comment", "_a", "CDATA", "isTag", "Text", "Comment", "CDATA", "previousSibling", "esm_exports", "isTag", "decodeMap", "fromCodePoint", "_a", "replaceCodePoint", "CharCodes", "TO_LOWER_BIT", "BinTrieFlags", "isNumber", "isHexadecimalCharacter", "isAsciiAlphaNumeric", "isEntityInAttributeInvalidEnd", "EntityDecoderState", "DecodingMode", "EntityDecoder", "_a", "replaceCodePoint", "determineBranch", "fromCodePoint", "escape", "EntityLevel", "EncodingMode", "attributes", "_a", "key", "node", "isTag", "_a", "isTag", "isTag", "isTag", "key", "tagName", "DocumentPosition", "href", "_a", "tagName", "prop", "handler", "isConnected", "attributes", "key", "Parser", "esm_exports", "append", "attribute", "Parser", "attributes", "create", "append", "name", "attributeChangedCallback", "attributes", "attribute", "attributeChangedCallback", "Node", "node", "escape", "Node", "attributeChangedCallback", "escape", "nextElementSibling", "Node", "nextElementSibling", "Comment", "import_boolbase", "SelectorType", "AttributeAction", "isWhitespace", "subselects", "getName", "ignoreCase", "import_boolbase", "isTraversal", "_a", "adapter", "boolbase", "_a", "parse", "import_boolbase", "boolbase", "parse", "import_boolbase", "adapter", "boolbase", "adapter", "elem", "import_boolbase", "adapter", "boolbase", "compileToken", "isTraversal", "compileToken", "_a", "adapter", "compileToken", "elem", "compile", "adapter", "isTraversal", "_a", "query", "boolbase", "esm_exports", "_a", "compile", "query", "adapter", "boolbase", "is", "isTag", "existsOne", "getChildren", "getAttributeValue", "getName", "getParent", "getSiblings", "getText", "hasAttrib", "removeSubsets", "findAll", "matches", "findOne", "compile", "is", "Text", "previousSibling", "nextSibling", "escape", "Node", "Text", "nextElementSibling", "after", "tagName", "matches", "before", "Node", "esm_default", "esm_default", "attribute", "refs", "key", "handler", "esm_default", "keys", "key", "create", "Element", "nextElementSibling", "Text", "attributes", "attribute", "escape", "parentElement", "matches", "next", "handler", "Element", "Attr", "CDATASection", "CharacterData", "Comment", "DocumentFragment", "DocumentType", "Element", "Node", "ShadowRoot", "Text", "SVGElement", "Element", "key", "tagName", "tagName", "tagName", "tagName", "tagName", "Canvas", "tagName", "tagName", "tagName", "tagName", "tagName", "tagName", "tagName", "tagName", "tagName", "tagName", "tagName", "tagName", "voidElements", "after", "Document", "globalThis", "textContent", "Comment", "Element", "Text", "customElements", "Document", "nextElementSibling", "textContent", "Document", "Document", "parse", "append", "createHTMLElement", "value", "Text", "Comment", "Document"] -} diff --git a/vendor/yomitan/lib/parse5.js b/vendor/yomitan/lib/parse5.js deleted file mode 100644 index 0515ae62..00000000 --- a/vendor/yomitan/lib/parse5.js +++ /dev/null @@ -1,8071 +0,0 @@ -// @ts-nocheck -var __defProp = Object.defineProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; - -// node_modules/parse5/dist/common/unicode.js -var UNDEFINED_CODE_POINTS = /* @__PURE__ */ new Set([ - 65534, - 65535, - 131070, - 131071, - 196606, - 196607, - 262142, - 262143, - 327678, - 327679, - 393214, - 393215, - 458750, - 458751, - 524286, - 524287, - 589822, - 589823, - 655358, - 655359, - 720894, - 720895, - 786430, - 786431, - 851966, - 851967, - 917502, - 917503, - 983038, - 983039, - 1048574, - 1048575, - 1114110, - 1114111 -]); -var REPLACEMENT_CHARACTER = "\uFFFD"; -var CODE_POINTS; -(function(CODE_POINTS2) { - CODE_POINTS2[CODE_POINTS2["EOF"] = -1] = "EOF"; - CODE_POINTS2[CODE_POINTS2["NULL"] = 0] = "NULL"; - CODE_POINTS2[CODE_POINTS2["TABULATION"] = 9] = "TABULATION"; - CODE_POINTS2[CODE_POINTS2["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; - CODE_POINTS2[CODE_POINTS2["LINE_FEED"] = 10] = "LINE_FEED"; - CODE_POINTS2[CODE_POINTS2["FORM_FEED"] = 12] = "FORM_FEED"; - CODE_POINTS2[CODE_POINTS2["SPACE"] = 32] = "SPACE"; - CODE_POINTS2[CODE_POINTS2["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; - CODE_POINTS2[CODE_POINTS2["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; - CODE_POINTS2[CODE_POINTS2["AMPERSAND"] = 38] = "AMPERSAND"; - CODE_POINTS2[CODE_POINTS2["APOSTROPHE"] = 39] = "APOSTROPHE"; - CODE_POINTS2[CODE_POINTS2["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; - CODE_POINTS2[CODE_POINTS2["SOLIDUS"] = 47] = "SOLIDUS"; - CODE_POINTS2[CODE_POINTS2["DIGIT_0"] = 48] = "DIGIT_0"; - CODE_POINTS2[CODE_POINTS2["DIGIT_9"] = 57] = "DIGIT_9"; - CODE_POINTS2[CODE_POINTS2["SEMICOLON"] = 59] = "SEMICOLON"; - CODE_POINTS2[CODE_POINTS2["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; - CODE_POINTS2[CODE_POINTS2["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; - CODE_POINTS2[CODE_POINTS2["QUESTION_MARK"] = 63] = "QUESTION_MARK"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; - CODE_POINTS2[CODE_POINTS2["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; - CODE_POINTS2[CODE_POINTS2["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; - CODE_POINTS2[CODE_POINTS2["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; -})(CODE_POINTS || (CODE_POINTS = {})); -var SEQUENCES = { - DASH_DASH: "--", - CDATA_START: "[CDATA[", - DOCTYPE: "doctype", - SCRIPT: "script", - PUBLIC: "public", - SYSTEM: "system" -}; -function isSurrogate(cp) { - return cp >= 55296 && cp <= 57343; -} -function isSurrogatePair(cp) { - return cp >= 56320 && cp <= 57343; -} -function getSurrogatePairCodePoint(cp1, cp2) { - return (cp1 - 55296) * 1024 + 9216 + cp2; -} -function isControlCodePoint(cp) { - return cp !== 32 && cp !== 10 && cp !== 13 && cp !== 9 && cp !== 12 && cp >= 1 && cp <= 31 || cp >= 127 && cp <= 159; -} -function isUndefinedCodePoint(cp) { - return cp >= 64976 && cp <= 65007 || UNDEFINED_CODE_POINTS.has(cp); -} - -// node_modules/parse5/dist/common/error-codes.js -var ERR; -(function(ERR2) { - ERR2["controlCharacterInInputStream"] = "control-character-in-input-stream"; - ERR2["noncharacterInInputStream"] = "noncharacter-in-input-stream"; - ERR2["surrogateInInputStream"] = "surrogate-in-input-stream"; - ERR2["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; - ERR2["endTagWithAttributes"] = "end-tag-with-attributes"; - ERR2["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; - ERR2["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; - ERR2["unexpectedNullCharacter"] = "unexpected-null-character"; - ERR2["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; - ERR2["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; - ERR2["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; - ERR2["missingEndTagName"] = "missing-end-tag-name"; - ERR2["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; - ERR2["unknownNamedCharacterReference"] = "unknown-named-character-reference"; - ERR2["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; - ERR2["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; - ERR2["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; - ERR2["eofBeforeTagName"] = "eof-before-tag-name"; - ERR2["eofInTag"] = "eof-in-tag"; - ERR2["missingAttributeValue"] = "missing-attribute-value"; - ERR2["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; - ERR2["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; - ERR2["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; - ERR2["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; - ERR2["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; - ERR2["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; - ERR2["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; - ERR2["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; - ERR2["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; - ERR2["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; - ERR2["cdataInHtmlContent"] = "cdata-in-html-content"; - ERR2["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; - ERR2["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; - ERR2["eofInDoctype"] = "eof-in-doctype"; - ERR2["nestedComment"] = "nested-comment"; - ERR2["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; - ERR2["eofInComment"] = "eof-in-comment"; - ERR2["incorrectlyClosedComment"] = "incorrectly-closed-comment"; - ERR2["eofInCdata"] = "eof-in-cdata"; - ERR2["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; - ERR2["nullCharacterReference"] = "null-character-reference"; - ERR2["surrogateCharacterReference"] = "surrogate-character-reference"; - ERR2["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; - ERR2["controlCharacterReference"] = "control-character-reference"; - ERR2["noncharacterCharacterReference"] = "noncharacter-character-reference"; - ERR2["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; - ERR2["missingDoctypeName"] = "missing-doctype-name"; - ERR2["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; - ERR2["duplicateAttribute"] = "duplicate-attribute"; - ERR2["nonConformingDoctype"] = "non-conforming-doctype"; - ERR2["missingDoctype"] = "missing-doctype"; - ERR2["misplacedDoctype"] = "misplaced-doctype"; - ERR2["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; - ERR2["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; - ERR2["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; - ERR2["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; - ERR2["abandonedHeadElementChild"] = "abandoned-head-element-child"; - ERR2["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; - ERR2["nestedNoscriptInHead"] = "nested-noscript-in-head"; - ERR2["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; -})(ERR || (ERR = {})); - -// node_modules/parse5/dist/tokenizer/preprocessor.js -var DEFAULT_BUFFER_WATERLINE = 1 << 16; -var Preprocessor = class { - constructor(handler) { - this.handler = handler; - this.html = ""; - this.pos = -1; - this.lastGapPos = -2; - this.gapStack = []; - this.skipNextNewLine = false; - this.lastChunkWritten = false; - this.endOfChunkHit = false; - this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; - this.isEol = false; - this.lineStartPos = 0; - this.droppedBufferSize = 0; - this.line = 1; - this.lastErrOffset = -1; - } - /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ - get col() { - return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); - } - get offset() { - return this.droppedBufferSize + this.pos; - } - getError(code, cpOffset) { - const { line, col, offset } = this; - const startCol = col + cpOffset; - const startOffset = offset + cpOffset; - return { - code, - startLine: line, - endLine: line, - startCol, - endCol: startCol, - startOffset, - endOffset: startOffset - }; - } - _err(code) { - if (this.handler.onParseError && this.lastErrOffset !== this.offset) { - this.lastErrOffset = this.offset; - this.handler.onParseError(this.getError(code, 0)); - } - } - _addGap() { - this.gapStack.push(this.lastGapPos); - this.lastGapPos = this.pos; - } - _processSurrogate(cp) { - if (this.pos !== this.html.length - 1) { - const nextCp = this.html.charCodeAt(this.pos + 1); - if (isSurrogatePair(nextCp)) { - this.pos++; - this._addGap(); - return getSurrogatePairCodePoint(cp, nextCp); - } - } else if (!this.lastChunkWritten) { - this.endOfChunkHit = true; - return CODE_POINTS.EOF; - } - this._err(ERR.surrogateInInputStream); - return cp; - } - willDropParsedChunk() { - return this.pos > this.bufferWaterline; - } - dropParsedChunk() { - if (this.willDropParsedChunk()) { - this.html = this.html.substring(this.pos); - this.lineStartPos -= this.pos; - this.droppedBufferSize += this.pos; - this.pos = 0; - this.lastGapPos = -2; - this.gapStack.length = 0; - } - } - write(chunk, isLastChunk) { - if (this.html.length > 0) { - this.html += chunk; - } else { - this.html = chunk; - } - this.endOfChunkHit = false; - this.lastChunkWritten = isLastChunk; - } - insertHtmlAtCurrentPos(chunk) { - this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); - this.endOfChunkHit = false; - } - startsWith(pattern, caseSensitive) { - if (this.pos + pattern.length > this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return false; - } - if (caseSensitive) { - return this.html.startsWith(pattern, this.pos); - } - for (let i = 0; i < pattern.length; i++) { - const cp = this.html.charCodeAt(this.pos + i) | 32; - if (cp !== pattern.charCodeAt(i)) { - return false; - } - } - return true; - } - peek(offset) { - const pos = this.pos + offset; - if (pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - const code = this.html.charCodeAt(pos); - return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code; - } - advance() { - this.pos++; - if (this.isEol) { - this.isEol = false; - this.line++; - this.lineStartPos = this.pos; - } - if (this.pos >= this.html.length) { - this.endOfChunkHit = !this.lastChunkWritten; - return CODE_POINTS.EOF; - } - let cp = this.html.charCodeAt(this.pos); - if (cp === CODE_POINTS.CARRIAGE_RETURN) { - this.isEol = true; - this.skipNextNewLine = true; - return CODE_POINTS.LINE_FEED; - } - if (cp === CODE_POINTS.LINE_FEED) { - this.isEol = true; - if (this.skipNextNewLine) { - this.line--; - this.skipNextNewLine = false; - this._addGap(); - return this.advance(); - } - } - this.skipNextNewLine = false; - if (isSurrogate(cp)) { - cp = this._processSurrogate(cp); - } - const isCommonValidRange = this.handler.onParseError === null || cp > 31 && cp < 127 || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.CARRIAGE_RETURN || cp > 159 && cp < 64976; - if (!isCommonValidRange) { - this._checkForProblematicCharacters(cp); - } - return cp; - } - _checkForProblematicCharacters(cp) { - if (isControlCodePoint(cp)) { - this._err(ERR.controlCharacterInInputStream); - } else if (isUndefinedCodePoint(cp)) { - this._err(ERR.noncharacterInInputStream); - } - } - retreat(count) { - this.pos -= count; - while (this.pos < this.lastGapPos) { - this.lastGapPos = this.gapStack.pop(); - this.pos--; - } - this.isEol = false; - } -}; - -// node_modules/parse5/dist/common/token.js -var token_exports = {}; -__export(token_exports, { - TokenType: () => TokenType, - getTokenAttr: () => getTokenAttr -}); -var TokenType; -(function(TokenType2) { - TokenType2[TokenType2["CHARACTER"] = 0] = "CHARACTER"; - TokenType2[TokenType2["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; - TokenType2[TokenType2["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; - TokenType2[TokenType2["START_TAG"] = 3] = "START_TAG"; - TokenType2[TokenType2["END_TAG"] = 4] = "END_TAG"; - TokenType2[TokenType2["COMMENT"] = 5] = "COMMENT"; - TokenType2[TokenType2["DOCTYPE"] = 6] = "DOCTYPE"; - TokenType2[TokenType2["EOF"] = 7] = "EOF"; - TokenType2[TokenType2["HIBERNATION"] = 8] = "HIBERNATION"; -})(TokenType || (TokenType = {})); -function getTokenAttr(token, attrName) { - for (let i = token.attrs.length - 1; i >= 0; i--) { - if (token.attrs[i].name === attrName) { - return token.attrs[i].value; - } - } - return null; -} - -// node_modules/entities/lib/esm/generated/decode-data-html.js -var decode_data_html_default = new Uint16Array( - // prettier-ignore - '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/generated/decode-data-xml.js -var decode_data_xml_default = new Uint16Array( - // prettier-ignore - "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map((c) => c.charCodeAt(0)) -); - -// node_modules/entities/lib/esm/decode_codepoint.js -var _a; -var decodeMap = /* @__PURE__ */ new Map([ - [0, 65533], - // C1 Unicode control character reference replacements - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var fromCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins - (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { - let output = ""; - if (codePoint > 65535) { - codePoint -= 65536; - output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); - codePoint = 56320 | codePoint & 1023; - } - output += String.fromCharCode(codePoint); - return output; - } -); -function replaceCodePoint(codePoint) { - var _a2; - if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { - return 65533; - } - return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint; -} - -// node_modules/entities/lib/esm/decode.js -var CharCodes; -(function(CharCodes2) { - CharCodes2[CharCodes2["NUM"] = 35] = "NUM"; - CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI"; - CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS"; - CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO"; - CharCodes2[CharCodes2["NINE"] = 57] = "NINE"; - CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A"; - CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F"; - CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X"; - CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z"; - CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A"; - CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F"; - CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z"; -})(CharCodes || (CharCodes = {})); -var TO_LOWER_BIT = 32; -var BinTrieFlags; -(function(BinTrieFlags2) { - BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; - BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; - BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE"; -})(BinTrieFlags || (BinTrieFlags = {})); -function isNumber(code) { - return code >= CharCodes.ZERO && code <= CharCodes.NINE; -} -function isHexadecimalCharacter(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; -} -function isAsciiAlphaNumeric(code) { - return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); -} -function isEntityInAttributeInvalidEnd(code) { - return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); -} -var EntityDecoderState; -(function(EntityDecoderState2) { - EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart"; - EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart"; - EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal"; - EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex"; - EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity"; -})(EntityDecoderState || (EntityDecoderState = {})); -var DecodingMode; -(function(DecodingMode2) { - DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy"; - DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict"; - DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute"; -})(DecodingMode || (DecodingMode = {})); -var EntityDecoder = class { - constructor(decodeTree, emitCodePoint, errors) { - this.decodeTree = decodeTree; - this.emitCodePoint = emitCodePoint; - this.errors = errors; - this.state = EntityDecoderState.EntityStart; - this.consumed = 1; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.decodeMode = DecodingMode.Strict; - } - /** Resets the instance to make it reusable. */ - startEntity(decodeMode) { - this.decodeMode = decodeMode; - this.state = EntityDecoderState.EntityStart; - this.result = 0; - this.treeIndex = 0; - this.excess = 1; - this.consumed = 1; - } - /** - * Write an entity to the decoder. This can be called multiple times with partial entities. - * If the entity is incomplete, the decoder will return -1. - * - * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the - * entity is incomplete, and resume when the next string is written. - * - * @param string The string containing the entity (or a continuation of the entity). - * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - write(str, offset) { - switch (this.state) { - case EntityDecoderState.EntityStart: { - if (str.charCodeAt(offset) === CharCodes.NUM) { - this.state = EntityDecoderState.NumericStart; - this.consumed += 1; - return this.stateNumericStart(str, offset + 1); - } - this.state = EntityDecoderState.NamedEntity; - return this.stateNamedEntity(str, offset); - } - case EntityDecoderState.NumericStart: { - return this.stateNumericStart(str, offset); - } - case EntityDecoderState.NumericDecimal: { - return this.stateNumericDecimal(str, offset); - } - case EntityDecoderState.NumericHex: { - return this.stateNumericHex(str, offset); - } - case EntityDecoderState.NamedEntity: { - return this.stateNamedEntity(str, offset); - } - } - } - /** - * Switches between the numeric decimal and hexadecimal states. - * - * Equivalent to the `Numeric character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericStart(str, offset) { - if (offset >= str.length) { - return -1; - } - if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { - this.state = EntityDecoderState.NumericHex; - this.consumed += 1; - return this.stateNumericHex(str, offset + 1); - } - this.state = EntityDecoderState.NumericDecimal; - return this.stateNumericDecimal(str, offset); - } - addToNumericResult(str, start, end, base) { - if (start !== end) { - const digitCount = end - start; - this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base); - this.consumed += digitCount; - } - } - /** - * Parses a hexadecimal numeric entity. - * - * Equivalent to the `Hexademical character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericHex(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char) || isHexadecimalCharacter(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 16); - return this.emitNumericEntity(char, 3); - } - } - this.addToNumericResult(str, startIdx, offset, 16); - return -1; - } - /** - * Parses a decimal numeric entity. - * - * Equivalent to the `Decimal character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNumericDecimal(str, offset) { - const startIdx = offset; - while (offset < str.length) { - const char = str.charCodeAt(offset); - if (isNumber(char)) { - offset += 1; - } else { - this.addToNumericResult(str, startIdx, offset, 10); - return this.emitNumericEntity(char, 2); - } - } - this.addToNumericResult(str, startIdx, offset, 10); - return -1; - } - /** - * Validate and emit a numeric entity. - * - * Implements the logic from the `Hexademical character reference start - * state` and `Numeric character reference end state` in the HTML spec. - * - * @param lastCp The last code point of the entity. Used to see if the - * entity was terminated with a semicolon. - * @param expectedLength The minimum number of characters that should be - * consumed. Used to validate that at least one digit - * was consumed. - * @returns The number of characters that were consumed. - */ - emitNumericEntity(lastCp, expectedLength) { - var _a2; - if (this.consumed <= expectedLength) { - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - if (lastCp === CharCodes.SEMI) { - this.consumed += 1; - } else if (this.decodeMode === DecodingMode.Strict) { - return 0; - } - this.emitCodePoint(replaceCodePoint(this.result), this.consumed); - if (this.errors) { - if (lastCp !== CharCodes.SEMI) { - this.errors.missingSemicolonAfterCharacterReference(); - } - this.errors.validateNumericCharacterReference(this.result); - } - return this.consumed; - } - /** - * Parses a named entity. - * - * Equivalent to the `Named character reference state` in the HTML spec. - * - * @param str The string containing the entity (or a continuation of the entity). - * @param offset The current offset. - * @returns The number of characters that were consumed, or -1 if the entity is incomplete. - */ - stateNamedEntity(str, offset) { - const { decodeTree } = this; - let current = decodeTree[this.treeIndex]; - let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - for (; offset < str.length; offset++, this.excess++) { - const char = str.charCodeAt(offset); - this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); - if (this.treeIndex < 0) { - return this.result === 0 || // If we are parsing an attribute - this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, - (valueLength === 0 || // And there should be no invalid characters. - isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); - } - current = decodeTree[this.treeIndex]; - valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; - if (valueLength !== 0) { - if (char === CharCodes.SEMI) { - return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); - } - if (this.decodeMode !== DecodingMode.Strict) { - this.result = this.treeIndex; - this.consumed += this.excess; - this.excess = 0; - } - } - } - return -1; - } - /** - * Emit a named entity that was not terminated with a semicolon. - * - * @returns The number of characters consumed. - */ - emitNotTerminatedNamedEntity() { - var _a2; - const { result, decodeTree } = this; - const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; - this.emitNamedEntityData(result, valueLength, this.consumed); - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.missingSemicolonAfterCharacterReference(); - return this.consumed; - } - /** - * Emit a named entity. - * - * @param result The index of the entity in the decode tree. - * @param valueLength The number of bytes in the entity. - * @param consumed The number of characters consumed. - * - * @returns The number of characters consumed. - */ - emitNamedEntityData(result, valueLength, consumed) { - const { decodeTree } = this; - this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); - if (valueLength === 3) { - this.emitCodePoint(decodeTree[result + 2], consumed); - } - return consumed; - } - /** - * Signal to the parser that the end of the input was reached. - * - * Remaining data will be emitted and relevant errors will be produced. - * - * @returns The number of characters consumed. - */ - end() { - var _a2; - switch (this.state) { - case EntityDecoderState.NamedEntity: { - return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; - } - // Otherwise, emit a numeric entity if we have one. - case EntityDecoderState.NumericDecimal: { - return this.emitNumericEntity(0, 2); - } - case EntityDecoderState.NumericHex: { - return this.emitNumericEntity(0, 3); - } - case EntityDecoderState.NumericStart: { - (_a2 = this.errors) === null || _a2 === void 0 ? void 0 : _a2.absenceOfDigitsInNumericCharacterReference(this.consumed); - return 0; - } - case EntityDecoderState.EntityStart: { - return 0; - } - } - } -}; -function getDecoder(decodeTree) { - let ret = ""; - const decoder = new EntityDecoder(decodeTree, (str) => ret += fromCodePoint(str)); - return function decodeWithTrie(str, decodeMode) { - let lastIndex = 0; - let offset = 0; - while ((offset = str.indexOf("&", offset)) >= 0) { - ret += str.slice(lastIndex, offset); - decoder.startEntity(decodeMode); - const len = decoder.write( - str, - // Skip the "&" - offset + 1 - ); - if (len < 0) { - lastIndex = offset + decoder.end(); - break; - } - lastIndex = offset + len; - offset = len === 0 ? lastIndex + 1 : lastIndex; - } - const result = ret + str.slice(lastIndex); - ret = ""; - return result; - }; -} -function determineBranch(decodeTree, current, nodeIdx, char) { - const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; - const jumpOffset = current & BinTrieFlags.JUMP_TABLE; - if (branchCount === 0) { - return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; - } - if (jumpOffset) { - const value = char - jumpOffset; - return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1; - } - let lo = nodeIdx; - let hi = lo + branchCount - 1; - while (lo <= hi) { - const mid = lo + hi >>> 1; - const midVal = decodeTree[mid]; - if (midVal < char) { - lo = mid + 1; - } else if (midVal > char) { - hi = mid - 1; - } else { - return decodeTree[mid + branchCount]; - } - } - return -1; -} -var htmlDecoder = getDecoder(decode_data_html_default); -var xmlDecoder = getDecoder(decode_data_xml_default); - -// node_modules/parse5/dist/common/html.js -var html_exports = {}; -__export(html_exports, { - ATTRS: () => ATTRS, - DOCUMENT_MODE: () => DOCUMENT_MODE, - NS: () => NS, - NUMBERED_HEADERS: () => NUMBERED_HEADERS, - SPECIAL_ELEMENTS: () => SPECIAL_ELEMENTS, - TAG_ID: () => TAG_ID, - TAG_NAMES: () => TAG_NAMES, - getTagID: () => getTagID, - hasUnescapedText: () => hasUnescapedText -}); -var NS; -(function(NS2) { - NS2["HTML"] = "http://www.w3.org/1999/xhtml"; - NS2["MATHML"] = "http://www.w3.org/1998/Math/MathML"; - NS2["SVG"] = "http://www.w3.org/2000/svg"; - NS2["XLINK"] = "http://www.w3.org/1999/xlink"; - NS2["XML"] = "http://www.w3.org/XML/1998/namespace"; - NS2["XMLNS"] = "http://www.w3.org/2000/xmlns/"; -})(NS || (NS = {})); -var ATTRS; -(function(ATTRS2) { - ATTRS2["TYPE"] = "type"; - ATTRS2["ACTION"] = "action"; - ATTRS2["ENCODING"] = "encoding"; - ATTRS2["PROMPT"] = "prompt"; - ATTRS2["NAME"] = "name"; - ATTRS2["COLOR"] = "color"; - ATTRS2["FACE"] = "face"; - ATTRS2["SIZE"] = "size"; -})(ATTRS || (ATTRS = {})); -var DOCUMENT_MODE; -(function(DOCUMENT_MODE2) { - DOCUMENT_MODE2["NO_QUIRKS"] = "no-quirks"; - DOCUMENT_MODE2["QUIRKS"] = "quirks"; - DOCUMENT_MODE2["LIMITED_QUIRKS"] = "limited-quirks"; -})(DOCUMENT_MODE || (DOCUMENT_MODE = {})); -var TAG_NAMES; -(function(TAG_NAMES2) { - TAG_NAMES2["A"] = "a"; - TAG_NAMES2["ADDRESS"] = "address"; - TAG_NAMES2["ANNOTATION_XML"] = "annotation-xml"; - TAG_NAMES2["APPLET"] = "applet"; - TAG_NAMES2["AREA"] = "area"; - TAG_NAMES2["ARTICLE"] = "article"; - TAG_NAMES2["ASIDE"] = "aside"; - TAG_NAMES2["B"] = "b"; - TAG_NAMES2["BASE"] = "base"; - TAG_NAMES2["BASEFONT"] = "basefont"; - TAG_NAMES2["BGSOUND"] = "bgsound"; - TAG_NAMES2["BIG"] = "big"; - TAG_NAMES2["BLOCKQUOTE"] = "blockquote"; - TAG_NAMES2["BODY"] = "body"; - TAG_NAMES2["BR"] = "br"; - TAG_NAMES2["BUTTON"] = "button"; - TAG_NAMES2["CAPTION"] = "caption"; - TAG_NAMES2["CENTER"] = "center"; - TAG_NAMES2["CODE"] = "code"; - TAG_NAMES2["COL"] = "col"; - TAG_NAMES2["COLGROUP"] = "colgroup"; - TAG_NAMES2["DD"] = "dd"; - TAG_NAMES2["DESC"] = "desc"; - TAG_NAMES2["DETAILS"] = "details"; - TAG_NAMES2["DIALOG"] = "dialog"; - TAG_NAMES2["DIR"] = "dir"; - TAG_NAMES2["DIV"] = "div"; - TAG_NAMES2["DL"] = "dl"; - TAG_NAMES2["DT"] = "dt"; - TAG_NAMES2["EM"] = "em"; - TAG_NAMES2["EMBED"] = "embed"; - TAG_NAMES2["FIELDSET"] = "fieldset"; - TAG_NAMES2["FIGCAPTION"] = "figcaption"; - TAG_NAMES2["FIGURE"] = "figure"; - TAG_NAMES2["FONT"] = "font"; - TAG_NAMES2["FOOTER"] = "footer"; - TAG_NAMES2["FOREIGN_OBJECT"] = "foreignObject"; - TAG_NAMES2["FORM"] = "form"; - TAG_NAMES2["FRAME"] = "frame"; - TAG_NAMES2["FRAMESET"] = "frameset"; - TAG_NAMES2["H1"] = "h1"; - TAG_NAMES2["H2"] = "h2"; - TAG_NAMES2["H3"] = "h3"; - TAG_NAMES2["H4"] = "h4"; - TAG_NAMES2["H5"] = "h5"; - TAG_NAMES2["H6"] = "h6"; - TAG_NAMES2["HEAD"] = "head"; - TAG_NAMES2["HEADER"] = "header"; - TAG_NAMES2["HGROUP"] = "hgroup"; - TAG_NAMES2["HR"] = "hr"; - TAG_NAMES2["HTML"] = "html"; - TAG_NAMES2["I"] = "i"; - TAG_NAMES2["IMG"] = "img"; - TAG_NAMES2["IMAGE"] = "image"; - TAG_NAMES2["INPUT"] = "input"; - TAG_NAMES2["IFRAME"] = "iframe"; - TAG_NAMES2["KEYGEN"] = "keygen"; - TAG_NAMES2["LABEL"] = "label"; - TAG_NAMES2["LI"] = "li"; - TAG_NAMES2["LINK"] = "link"; - TAG_NAMES2["LISTING"] = "listing"; - TAG_NAMES2["MAIN"] = "main"; - TAG_NAMES2["MALIGNMARK"] = "malignmark"; - TAG_NAMES2["MARQUEE"] = "marquee"; - TAG_NAMES2["MATH"] = "math"; - TAG_NAMES2["MENU"] = "menu"; - TAG_NAMES2["META"] = "meta"; - TAG_NAMES2["MGLYPH"] = "mglyph"; - TAG_NAMES2["MI"] = "mi"; - TAG_NAMES2["MO"] = "mo"; - TAG_NAMES2["MN"] = "mn"; - TAG_NAMES2["MS"] = "ms"; - TAG_NAMES2["MTEXT"] = "mtext"; - TAG_NAMES2["NAV"] = "nav"; - TAG_NAMES2["NOBR"] = "nobr"; - TAG_NAMES2["NOFRAMES"] = "noframes"; - TAG_NAMES2["NOEMBED"] = "noembed"; - TAG_NAMES2["NOSCRIPT"] = "noscript"; - TAG_NAMES2["OBJECT"] = "object"; - TAG_NAMES2["OL"] = "ol"; - TAG_NAMES2["OPTGROUP"] = "optgroup"; - TAG_NAMES2["OPTION"] = "option"; - TAG_NAMES2["P"] = "p"; - TAG_NAMES2["PARAM"] = "param"; - TAG_NAMES2["PLAINTEXT"] = "plaintext"; - TAG_NAMES2["PRE"] = "pre"; - TAG_NAMES2["RB"] = "rb"; - TAG_NAMES2["RP"] = "rp"; - TAG_NAMES2["RT"] = "rt"; - TAG_NAMES2["RTC"] = "rtc"; - TAG_NAMES2["RUBY"] = "ruby"; - TAG_NAMES2["S"] = "s"; - TAG_NAMES2["SCRIPT"] = "script"; - TAG_NAMES2["SEARCH"] = "search"; - TAG_NAMES2["SECTION"] = "section"; - TAG_NAMES2["SELECT"] = "select"; - TAG_NAMES2["SOURCE"] = "source"; - TAG_NAMES2["SMALL"] = "small"; - TAG_NAMES2["SPAN"] = "span"; - TAG_NAMES2["STRIKE"] = "strike"; - TAG_NAMES2["STRONG"] = "strong"; - TAG_NAMES2["STYLE"] = "style"; - TAG_NAMES2["SUB"] = "sub"; - TAG_NAMES2["SUMMARY"] = "summary"; - TAG_NAMES2["SUP"] = "sup"; - TAG_NAMES2["TABLE"] = "table"; - TAG_NAMES2["TBODY"] = "tbody"; - TAG_NAMES2["TEMPLATE"] = "template"; - TAG_NAMES2["TEXTAREA"] = "textarea"; - TAG_NAMES2["TFOOT"] = "tfoot"; - TAG_NAMES2["TD"] = "td"; - TAG_NAMES2["TH"] = "th"; - TAG_NAMES2["THEAD"] = "thead"; - TAG_NAMES2["TITLE"] = "title"; - TAG_NAMES2["TR"] = "tr"; - TAG_NAMES2["TRACK"] = "track"; - TAG_NAMES2["TT"] = "tt"; - TAG_NAMES2["U"] = "u"; - TAG_NAMES2["UL"] = "ul"; - TAG_NAMES2["SVG"] = "svg"; - TAG_NAMES2["VAR"] = "var"; - TAG_NAMES2["WBR"] = "wbr"; - TAG_NAMES2["XMP"] = "xmp"; -})(TAG_NAMES || (TAG_NAMES = {})); -var TAG_ID; -(function(TAG_ID2) { - TAG_ID2[TAG_ID2["UNKNOWN"] = 0] = "UNKNOWN"; - TAG_ID2[TAG_ID2["A"] = 1] = "A"; - TAG_ID2[TAG_ID2["ADDRESS"] = 2] = "ADDRESS"; - TAG_ID2[TAG_ID2["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; - TAG_ID2[TAG_ID2["APPLET"] = 4] = "APPLET"; - TAG_ID2[TAG_ID2["AREA"] = 5] = "AREA"; - TAG_ID2[TAG_ID2["ARTICLE"] = 6] = "ARTICLE"; - TAG_ID2[TAG_ID2["ASIDE"] = 7] = "ASIDE"; - TAG_ID2[TAG_ID2["B"] = 8] = "B"; - TAG_ID2[TAG_ID2["BASE"] = 9] = "BASE"; - TAG_ID2[TAG_ID2["BASEFONT"] = 10] = "BASEFONT"; - TAG_ID2[TAG_ID2["BGSOUND"] = 11] = "BGSOUND"; - TAG_ID2[TAG_ID2["BIG"] = 12] = "BIG"; - TAG_ID2[TAG_ID2["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; - TAG_ID2[TAG_ID2["BODY"] = 14] = "BODY"; - TAG_ID2[TAG_ID2["BR"] = 15] = "BR"; - TAG_ID2[TAG_ID2["BUTTON"] = 16] = "BUTTON"; - TAG_ID2[TAG_ID2["CAPTION"] = 17] = "CAPTION"; - TAG_ID2[TAG_ID2["CENTER"] = 18] = "CENTER"; - TAG_ID2[TAG_ID2["CODE"] = 19] = "CODE"; - TAG_ID2[TAG_ID2["COL"] = 20] = "COL"; - TAG_ID2[TAG_ID2["COLGROUP"] = 21] = "COLGROUP"; - TAG_ID2[TAG_ID2["DD"] = 22] = "DD"; - TAG_ID2[TAG_ID2["DESC"] = 23] = "DESC"; - TAG_ID2[TAG_ID2["DETAILS"] = 24] = "DETAILS"; - TAG_ID2[TAG_ID2["DIALOG"] = 25] = "DIALOG"; - TAG_ID2[TAG_ID2["DIR"] = 26] = "DIR"; - TAG_ID2[TAG_ID2["DIV"] = 27] = "DIV"; - TAG_ID2[TAG_ID2["DL"] = 28] = "DL"; - TAG_ID2[TAG_ID2["DT"] = 29] = "DT"; - TAG_ID2[TAG_ID2["EM"] = 30] = "EM"; - TAG_ID2[TAG_ID2["EMBED"] = 31] = "EMBED"; - TAG_ID2[TAG_ID2["FIELDSET"] = 32] = "FIELDSET"; - TAG_ID2[TAG_ID2["FIGCAPTION"] = 33] = "FIGCAPTION"; - TAG_ID2[TAG_ID2["FIGURE"] = 34] = "FIGURE"; - TAG_ID2[TAG_ID2["FONT"] = 35] = "FONT"; - TAG_ID2[TAG_ID2["FOOTER"] = 36] = "FOOTER"; - TAG_ID2[TAG_ID2["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; - TAG_ID2[TAG_ID2["FORM"] = 38] = "FORM"; - TAG_ID2[TAG_ID2["FRAME"] = 39] = "FRAME"; - TAG_ID2[TAG_ID2["FRAMESET"] = 40] = "FRAMESET"; - TAG_ID2[TAG_ID2["H1"] = 41] = "H1"; - TAG_ID2[TAG_ID2["H2"] = 42] = "H2"; - TAG_ID2[TAG_ID2["H3"] = 43] = "H3"; - TAG_ID2[TAG_ID2["H4"] = 44] = "H4"; - TAG_ID2[TAG_ID2["H5"] = 45] = "H5"; - TAG_ID2[TAG_ID2["H6"] = 46] = "H6"; - TAG_ID2[TAG_ID2["HEAD"] = 47] = "HEAD"; - TAG_ID2[TAG_ID2["HEADER"] = 48] = "HEADER"; - TAG_ID2[TAG_ID2["HGROUP"] = 49] = "HGROUP"; - TAG_ID2[TAG_ID2["HR"] = 50] = "HR"; - TAG_ID2[TAG_ID2["HTML"] = 51] = "HTML"; - TAG_ID2[TAG_ID2["I"] = 52] = "I"; - TAG_ID2[TAG_ID2["IMG"] = 53] = "IMG"; - TAG_ID2[TAG_ID2["IMAGE"] = 54] = "IMAGE"; - TAG_ID2[TAG_ID2["INPUT"] = 55] = "INPUT"; - TAG_ID2[TAG_ID2["IFRAME"] = 56] = "IFRAME"; - TAG_ID2[TAG_ID2["KEYGEN"] = 57] = "KEYGEN"; - TAG_ID2[TAG_ID2["LABEL"] = 58] = "LABEL"; - TAG_ID2[TAG_ID2["LI"] = 59] = "LI"; - TAG_ID2[TAG_ID2["LINK"] = 60] = "LINK"; - TAG_ID2[TAG_ID2["LISTING"] = 61] = "LISTING"; - TAG_ID2[TAG_ID2["MAIN"] = 62] = "MAIN"; - TAG_ID2[TAG_ID2["MALIGNMARK"] = 63] = "MALIGNMARK"; - TAG_ID2[TAG_ID2["MARQUEE"] = 64] = "MARQUEE"; - TAG_ID2[TAG_ID2["MATH"] = 65] = "MATH"; - TAG_ID2[TAG_ID2["MENU"] = 66] = "MENU"; - TAG_ID2[TAG_ID2["META"] = 67] = "META"; - TAG_ID2[TAG_ID2["MGLYPH"] = 68] = "MGLYPH"; - TAG_ID2[TAG_ID2["MI"] = 69] = "MI"; - TAG_ID2[TAG_ID2["MO"] = 70] = "MO"; - TAG_ID2[TAG_ID2["MN"] = 71] = "MN"; - TAG_ID2[TAG_ID2["MS"] = 72] = "MS"; - TAG_ID2[TAG_ID2["MTEXT"] = 73] = "MTEXT"; - TAG_ID2[TAG_ID2["NAV"] = 74] = "NAV"; - TAG_ID2[TAG_ID2["NOBR"] = 75] = "NOBR"; - TAG_ID2[TAG_ID2["NOFRAMES"] = 76] = "NOFRAMES"; - TAG_ID2[TAG_ID2["NOEMBED"] = 77] = "NOEMBED"; - TAG_ID2[TAG_ID2["NOSCRIPT"] = 78] = "NOSCRIPT"; - TAG_ID2[TAG_ID2["OBJECT"] = 79] = "OBJECT"; - TAG_ID2[TAG_ID2["OL"] = 80] = "OL"; - TAG_ID2[TAG_ID2["OPTGROUP"] = 81] = "OPTGROUP"; - TAG_ID2[TAG_ID2["OPTION"] = 82] = "OPTION"; - TAG_ID2[TAG_ID2["P"] = 83] = "P"; - TAG_ID2[TAG_ID2["PARAM"] = 84] = "PARAM"; - TAG_ID2[TAG_ID2["PLAINTEXT"] = 85] = "PLAINTEXT"; - TAG_ID2[TAG_ID2["PRE"] = 86] = "PRE"; - TAG_ID2[TAG_ID2["RB"] = 87] = "RB"; - TAG_ID2[TAG_ID2["RP"] = 88] = "RP"; - TAG_ID2[TAG_ID2["RT"] = 89] = "RT"; - TAG_ID2[TAG_ID2["RTC"] = 90] = "RTC"; - TAG_ID2[TAG_ID2["RUBY"] = 91] = "RUBY"; - TAG_ID2[TAG_ID2["S"] = 92] = "S"; - TAG_ID2[TAG_ID2["SCRIPT"] = 93] = "SCRIPT"; - TAG_ID2[TAG_ID2["SEARCH"] = 94] = "SEARCH"; - TAG_ID2[TAG_ID2["SECTION"] = 95] = "SECTION"; - TAG_ID2[TAG_ID2["SELECT"] = 96] = "SELECT"; - TAG_ID2[TAG_ID2["SOURCE"] = 97] = "SOURCE"; - TAG_ID2[TAG_ID2["SMALL"] = 98] = "SMALL"; - TAG_ID2[TAG_ID2["SPAN"] = 99] = "SPAN"; - TAG_ID2[TAG_ID2["STRIKE"] = 100] = "STRIKE"; - TAG_ID2[TAG_ID2["STRONG"] = 101] = "STRONG"; - TAG_ID2[TAG_ID2["STYLE"] = 102] = "STYLE"; - TAG_ID2[TAG_ID2["SUB"] = 103] = "SUB"; - TAG_ID2[TAG_ID2["SUMMARY"] = 104] = "SUMMARY"; - TAG_ID2[TAG_ID2["SUP"] = 105] = "SUP"; - TAG_ID2[TAG_ID2["TABLE"] = 106] = "TABLE"; - TAG_ID2[TAG_ID2["TBODY"] = 107] = "TBODY"; - TAG_ID2[TAG_ID2["TEMPLATE"] = 108] = "TEMPLATE"; - TAG_ID2[TAG_ID2["TEXTAREA"] = 109] = "TEXTAREA"; - TAG_ID2[TAG_ID2["TFOOT"] = 110] = "TFOOT"; - TAG_ID2[TAG_ID2["TD"] = 111] = "TD"; - TAG_ID2[TAG_ID2["TH"] = 112] = "TH"; - TAG_ID2[TAG_ID2["THEAD"] = 113] = "THEAD"; - TAG_ID2[TAG_ID2["TITLE"] = 114] = "TITLE"; - TAG_ID2[TAG_ID2["TR"] = 115] = "TR"; - TAG_ID2[TAG_ID2["TRACK"] = 116] = "TRACK"; - TAG_ID2[TAG_ID2["TT"] = 117] = "TT"; - TAG_ID2[TAG_ID2["U"] = 118] = "U"; - TAG_ID2[TAG_ID2["UL"] = 119] = "UL"; - TAG_ID2[TAG_ID2["SVG"] = 120] = "SVG"; - TAG_ID2[TAG_ID2["VAR"] = 121] = "VAR"; - TAG_ID2[TAG_ID2["WBR"] = 122] = "WBR"; - TAG_ID2[TAG_ID2["XMP"] = 123] = "XMP"; -})(TAG_ID || (TAG_ID = {})); -var TAG_NAME_TO_ID = /* @__PURE__ */ new Map([ - [TAG_NAMES.A, TAG_ID.A], - [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], - [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], - [TAG_NAMES.APPLET, TAG_ID.APPLET], - [TAG_NAMES.AREA, TAG_ID.AREA], - [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], - [TAG_NAMES.ASIDE, TAG_ID.ASIDE], - [TAG_NAMES.B, TAG_ID.B], - [TAG_NAMES.BASE, TAG_ID.BASE], - [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], - [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], - [TAG_NAMES.BIG, TAG_ID.BIG], - [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], - [TAG_NAMES.BODY, TAG_ID.BODY], - [TAG_NAMES.BR, TAG_ID.BR], - [TAG_NAMES.BUTTON, TAG_ID.BUTTON], - [TAG_NAMES.CAPTION, TAG_ID.CAPTION], - [TAG_NAMES.CENTER, TAG_ID.CENTER], - [TAG_NAMES.CODE, TAG_ID.CODE], - [TAG_NAMES.COL, TAG_ID.COL], - [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], - [TAG_NAMES.DD, TAG_ID.DD], - [TAG_NAMES.DESC, TAG_ID.DESC], - [TAG_NAMES.DETAILS, TAG_ID.DETAILS], - [TAG_NAMES.DIALOG, TAG_ID.DIALOG], - [TAG_NAMES.DIR, TAG_ID.DIR], - [TAG_NAMES.DIV, TAG_ID.DIV], - [TAG_NAMES.DL, TAG_ID.DL], - [TAG_NAMES.DT, TAG_ID.DT], - [TAG_NAMES.EM, TAG_ID.EM], - [TAG_NAMES.EMBED, TAG_ID.EMBED], - [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], - [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], - [TAG_NAMES.FIGURE, TAG_ID.FIGURE], - [TAG_NAMES.FONT, TAG_ID.FONT], - [TAG_NAMES.FOOTER, TAG_ID.FOOTER], - [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], - [TAG_NAMES.FORM, TAG_ID.FORM], - [TAG_NAMES.FRAME, TAG_ID.FRAME], - [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], - [TAG_NAMES.H1, TAG_ID.H1], - [TAG_NAMES.H2, TAG_ID.H2], - [TAG_NAMES.H3, TAG_ID.H3], - [TAG_NAMES.H4, TAG_ID.H4], - [TAG_NAMES.H5, TAG_ID.H5], - [TAG_NAMES.H6, TAG_ID.H6], - [TAG_NAMES.HEAD, TAG_ID.HEAD], - [TAG_NAMES.HEADER, TAG_ID.HEADER], - [TAG_NAMES.HGROUP, TAG_ID.HGROUP], - [TAG_NAMES.HR, TAG_ID.HR], - [TAG_NAMES.HTML, TAG_ID.HTML], - [TAG_NAMES.I, TAG_ID.I], - [TAG_NAMES.IMG, TAG_ID.IMG], - [TAG_NAMES.IMAGE, TAG_ID.IMAGE], - [TAG_NAMES.INPUT, TAG_ID.INPUT], - [TAG_NAMES.IFRAME, TAG_ID.IFRAME], - [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], - [TAG_NAMES.LABEL, TAG_ID.LABEL], - [TAG_NAMES.LI, TAG_ID.LI], - [TAG_NAMES.LINK, TAG_ID.LINK], - [TAG_NAMES.LISTING, TAG_ID.LISTING], - [TAG_NAMES.MAIN, TAG_ID.MAIN], - [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], - [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], - [TAG_NAMES.MATH, TAG_ID.MATH], - [TAG_NAMES.MENU, TAG_ID.MENU], - [TAG_NAMES.META, TAG_ID.META], - [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], - [TAG_NAMES.MI, TAG_ID.MI], - [TAG_NAMES.MO, TAG_ID.MO], - [TAG_NAMES.MN, TAG_ID.MN], - [TAG_NAMES.MS, TAG_ID.MS], - [TAG_NAMES.MTEXT, TAG_ID.MTEXT], - [TAG_NAMES.NAV, TAG_ID.NAV], - [TAG_NAMES.NOBR, TAG_ID.NOBR], - [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], - [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], - [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], - [TAG_NAMES.OBJECT, TAG_ID.OBJECT], - [TAG_NAMES.OL, TAG_ID.OL], - [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], - [TAG_NAMES.OPTION, TAG_ID.OPTION], - [TAG_NAMES.P, TAG_ID.P], - [TAG_NAMES.PARAM, TAG_ID.PARAM], - [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], - [TAG_NAMES.PRE, TAG_ID.PRE], - [TAG_NAMES.RB, TAG_ID.RB], - [TAG_NAMES.RP, TAG_ID.RP], - [TAG_NAMES.RT, TAG_ID.RT], - [TAG_NAMES.RTC, TAG_ID.RTC], - [TAG_NAMES.RUBY, TAG_ID.RUBY], - [TAG_NAMES.S, TAG_ID.S], - [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], - [TAG_NAMES.SEARCH, TAG_ID.SEARCH], - [TAG_NAMES.SECTION, TAG_ID.SECTION], - [TAG_NAMES.SELECT, TAG_ID.SELECT], - [TAG_NAMES.SOURCE, TAG_ID.SOURCE], - [TAG_NAMES.SMALL, TAG_ID.SMALL], - [TAG_NAMES.SPAN, TAG_ID.SPAN], - [TAG_NAMES.STRIKE, TAG_ID.STRIKE], - [TAG_NAMES.STRONG, TAG_ID.STRONG], - [TAG_NAMES.STYLE, TAG_ID.STYLE], - [TAG_NAMES.SUB, TAG_ID.SUB], - [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], - [TAG_NAMES.SUP, TAG_ID.SUP], - [TAG_NAMES.TABLE, TAG_ID.TABLE], - [TAG_NAMES.TBODY, TAG_ID.TBODY], - [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], - [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], - [TAG_NAMES.TFOOT, TAG_ID.TFOOT], - [TAG_NAMES.TD, TAG_ID.TD], - [TAG_NAMES.TH, TAG_ID.TH], - [TAG_NAMES.THEAD, TAG_ID.THEAD], - [TAG_NAMES.TITLE, TAG_ID.TITLE], - [TAG_NAMES.TR, TAG_ID.TR], - [TAG_NAMES.TRACK, TAG_ID.TRACK], - [TAG_NAMES.TT, TAG_ID.TT], - [TAG_NAMES.U, TAG_ID.U], - [TAG_NAMES.UL, TAG_ID.UL], - [TAG_NAMES.SVG, TAG_ID.SVG], - [TAG_NAMES.VAR, TAG_ID.VAR], - [TAG_NAMES.WBR, TAG_ID.WBR], - [TAG_NAMES.XMP, TAG_ID.XMP] -]); -function getTagID(tagName) { - var _a2; - return (_a2 = TAG_NAME_TO_ID.get(tagName)) !== null && _a2 !== void 0 ? _a2 : TAG_ID.UNKNOWN; -} -var $ = TAG_ID; -var SPECIAL_ELEMENTS = { - [NS.HTML]: /* @__PURE__ */ new Set([ - $.ADDRESS, - $.APPLET, - $.AREA, - $.ARTICLE, - $.ASIDE, - $.BASE, - $.BASEFONT, - $.BGSOUND, - $.BLOCKQUOTE, - $.BODY, - $.BR, - $.BUTTON, - $.CAPTION, - $.CENTER, - $.COL, - $.COLGROUP, - $.DD, - $.DETAILS, - $.DIR, - $.DIV, - $.DL, - $.DT, - $.EMBED, - $.FIELDSET, - $.FIGCAPTION, - $.FIGURE, - $.FOOTER, - $.FORM, - $.FRAME, - $.FRAMESET, - $.H1, - $.H2, - $.H3, - $.H4, - $.H5, - $.H6, - $.HEAD, - $.HEADER, - $.HGROUP, - $.HR, - $.HTML, - $.IFRAME, - $.IMG, - $.INPUT, - $.LI, - $.LINK, - $.LISTING, - $.MAIN, - $.MARQUEE, - $.MENU, - $.META, - $.NAV, - $.NOEMBED, - $.NOFRAMES, - $.NOSCRIPT, - $.OBJECT, - $.OL, - $.P, - $.PARAM, - $.PLAINTEXT, - $.PRE, - $.SCRIPT, - $.SECTION, - $.SELECT, - $.SOURCE, - $.STYLE, - $.SUMMARY, - $.TABLE, - $.TBODY, - $.TD, - $.TEMPLATE, - $.TEXTAREA, - $.TFOOT, - $.TH, - $.THEAD, - $.TITLE, - $.TR, - $.TRACK, - $.UL, - $.WBR, - $.XMP - ]), - [NS.MATHML]: /* @__PURE__ */ new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), - [NS.SVG]: /* @__PURE__ */ new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), - [NS.XLINK]: /* @__PURE__ */ new Set(), - [NS.XML]: /* @__PURE__ */ new Set(), - [NS.XMLNS]: /* @__PURE__ */ new Set() -}; -var NUMBERED_HEADERS = /* @__PURE__ */ new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]); -var UNESCAPED_TEXT = /* @__PURE__ */ new Set([ - TAG_NAMES.STYLE, - TAG_NAMES.SCRIPT, - TAG_NAMES.XMP, - TAG_NAMES.IFRAME, - TAG_NAMES.NOEMBED, - TAG_NAMES.NOFRAMES, - TAG_NAMES.PLAINTEXT -]); -function hasUnescapedText(tn, scriptingEnabled) { - return UNESCAPED_TEXT.has(tn) || scriptingEnabled && tn === TAG_NAMES.NOSCRIPT; -} - -// node_modules/parse5/dist/tokenizer/index.js -var State; -(function(State2) { - State2[State2["DATA"] = 0] = "DATA"; - State2[State2["RCDATA"] = 1] = "RCDATA"; - State2[State2["RAWTEXT"] = 2] = "RAWTEXT"; - State2[State2["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; - State2[State2["PLAINTEXT"] = 4] = "PLAINTEXT"; - State2[State2["TAG_OPEN"] = 5] = "TAG_OPEN"; - State2[State2["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; - State2[State2["TAG_NAME"] = 7] = "TAG_NAME"; - State2[State2["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; - State2[State2["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; - State2[State2["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; - State2[State2["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; - State2[State2["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; - State2[State2["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; - State2[State2["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; - State2[State2["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; - State2[State2["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; - State2[State2["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; - State2[State2["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; - State2[State2["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; - State2[State2["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; - State2[State2["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; - State2[State2["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; - State2[State2["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; - State2[State2["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; - State2[State2["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; - State2[State2["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; - State2[State2["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; - State2[State2["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; - State2[State2["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; - State2[State2["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; - State2[State2["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; - State2[State2["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; - State2[State2["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; - State2[State2["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; - State2[State2["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; - State2[State2["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; - State2[State2["COMMENT_START"] = 42] = "COMMENT_START"; - State2[State2["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; - State2[State2["COMMENT"] = 44] = "COMMENT"; - State2[State2["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; - State2[State2["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; - State2[State2["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; - State2[State2["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; - State2[State2["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; - State2[State2["COMMENT_END"] = 50] = "COMMENT_END"; - State2[State2["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; - State2[State2["DOCTYPE"] = 52] = "DOCTYPE"; - State2[State2["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; - State2[State2["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; - State2[State2["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; - State2[State2["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; - State2[State2["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; - State2[State2["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; - State2[State2["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; - State2[State2["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; - State2[State2["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; - State2[State2["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; - State2[State2["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; - State2[State2["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; - State2[State2["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; - State2[State2["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; - State2[State2["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; - State2[State2["CDATA_SECTION"] = 68] = "CDATA_SECTION"; - State2[State2["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; - State2[State2["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; - State2[State2["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; - State2[State2["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND"; -})(State || (State = {})); -var TokenizerMode = { - DATA: State.DATA, - RCDATA: State.RCDATA, - RAWTEXT: State.RAWTEXT, - SCRIPT_DATA: State.SCRIPT_DATA, - PLAINTEXT: State.PLAINTEXT, - CDATA_SECTION: State.CDATA_SECTION -}; -function isAsciiDigit(cp) { - return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9; -} -function isAsciiUpper(cp) { - return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z; -} -function isAsciiLower(cp) { - return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z; -} -function isAsciiLetter(cp) { - return isAsciiLower(cp) || isAsciiUpper(cp); -} -function isAsciiAlphaNumeric2(cp) { - return isAsciiLetter(cp) || isAsciiDigit(cp); -} -function toAsciiLower(cp) { - return cp + 32; -} -function isWhitespace(cp) { - return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED; -} -function isScriptDataDoubleEscapeSequenceEnd(cp) { - return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN; -} -function getErrorForNumericCharacterReference(code) { - if (code === CODE_POINTS.NULL) { - return ERR.nullCharacterReference; - } else if (code > 1114111) { - return ERR.characterReferenceOutsideUnicodeRange; - } else if (isSurrogate(code)) { - return ERR.surrogateCharacterReference; - } else if (isUndefinedCodePoint(code)) { - return ERR.noncharacterCharacterReference; - } else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) { - return ERR.controlCharacterReference; - } - return null; -} -var Tokenizer = class { - constructor(options, handler) { - this.options = options; - this.handler = handler; - this.paused = false; - this.inLoop = false; - this.inForeignNode = false; - this.lastStartTagName = ""; - this.active = false; - this.state = State.DATA; - this.returnState = State.DATA; - this.entityStartPos = 0; - this.consumedAfterSnapshot = -1; - this.currentCharacterToken = null; - this.currentToken = null; - this.currentAttr = { name: "", value: "" }; - this.preprocessor = new Preprocessor(handler); - this.currentLocation = this.getCurrentLocation(-1); - this.entityDecoder = new EntityDecoder(decode_data_html_default, (cp, consumed) => { - this.preprocessor.pos = this.entityStartPos + consumed - 1; - this._flushCodePointConsumedAsCharacterReference(cp); - }, handler.onParseError ? { - missingSemicolonAfterCharacterReference: () => { - this._err(ERR.missingSemicolonAfterCharacterReference, 1); - }, - absenceOfDigitsInNumericCharacterReference: (consumed) => { - this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed); - }, - validateNumericCharacterReference: (code) => { - const error = getErrorForNumericCharacterReference(code); - if (error) - this._err(error, 1); - } - } : void 0); - } - //Errors - _err(code, cpOffset = 0) { - var _a2, _b; - (_b = (_a2 = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a2, this.preprocessor.getError(code, cpOffset)); - } - // NOTE: `offset` may never run across line boundaries. - getCurrentLocation(offset) { - if (!this.options.sourceCodeLocationInfo) { - return null; - } - return { - startLine: this.preprocessor.line, - startCol: this.preprocessor.col - offset, - startOffset: this.preprocessor.offset - offset, - endLine: -1, - endCol: -1, - endOffset: -1 - }; - } - _runParsingLoop() { - if (this.inLoop) - return; - this.inLoop = true; - while (this.active && !this.paused) { - this.consumedAfterSnapshot = 0; - const cp = this._consume(); - if (!this._ensureHibernation()) { - this._callState(cp); - } - } - this.inLoop = false; - } - //API - pause() { - this.paused = true; - } - resume(writeCallback) { - if (!this.paused) { - throw new Error("Parser was already resumed"); - } - this.paused = false; - if (this.inLoop) - return; - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - write(chunk, isLastChunk, writeCallback) { - this.active = true; - this.preprocessor.write(chunk, isLastChunk); - this._runParsingLoop(); - if (!this.paused) { - writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); - } - } - insertHtmlAtCurrentPos(chunk) { - this.active = true; - this.preprocessor.insertHtmlAtCurrentPos(chunk); - this._runParsingLoop(); - } - //Hibernation - _ensureHibernation() { - if (this.preprocessor.endOfChunkHit) { - this.preprocessor.retreat(this.consumedAfterSnapshot); - this.consumedAfterSnapshot = 0; - this.active = false; - return true; - } - return false; - } - //Consumption - _consume() { - this.consumedAfterSnapshot++; - return this.preprocessor.advance(); - } - _advanceBy(count) { - this.consumedAfterSnapshot += count; - for (let i = 0; i < count; i++) { - this.preprocessor.advance(); - } - } - _consumeSequenceIfMatch(pattern, caseSensitive) { - if (this.preprocessor.startsWith(pattern, caseSensitive)) { - this._advanceBy(pattern.length - 1); - return true; - } - return false; - } - //Token creation - _createStartTagToken() { - this.currentToken = { - type: TokenType.START_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(1) - }; - } - _createEndTagToken() { - this.currentToken = { - type: TokenType.END_TAG, - tagName: "", - tagID: TAG_ID.UNKNOWN, - selfClosing: false, - ackSelfClosing: false, - attrs: [], - location: this.getCurrentLocation(2) - }; - } - _createCommentToken(offset) { - this.currentToken = { - type: TokenType.COMMENT, - data: "", - location: this.getCurrentLocation(offset) - }; - } - _createDoctypeToken(initialName) { - this.currentToken = { - type: TokenType.DOCTYPE, - name: initialName, - forceQuirks: false, - publicId: null, - systemId: null, - location: this.currentLocation - }; - } - _createCharacterToken(type, chars) { - this.currentCharacterToken = { - type, - chars, - location: this.currentLocation - }; - } - //Tag attributes - _createAttr(attrNameFirstCh) { - this.currentAttr = { - name: attrNameFirstCh, - value: "" - }; - this.currentLocation = this.getCurrentLocation(0); - } - _leaveAttrName() { - var _a2; - var _b; - const token = this.currentToken; - if (getTokenAttr(token, this.currentAttr.name) === null) { - token.attrs.push(this.currentAttr); - if (token.location && this.currentLocation) { - const attrLocations = (_a2 = (_b = token.location).attrs) !== null && _a2 !== void 0 ? _a2 : _b.attrs = /* @__PURE__ */ Object.create(null); - attrLocations[this.currentAttr.name] = this.currentLocation; - this._leaveAttrValue(); - } - } else { - this._err(ERR.duplicateAttribute); - } - } - _leaveAttrValue() { - if (this.currentLocation) { - this.currentLocation.endLine = this.preprocessor.line; - this.currentLocation.endCol = this.preprocessor.col; - this.currentLocation.endOffset = this.preprocessor.offset; - } - } - //Token emission - prepareToken(ct) { - this._emitCurrentCharacterToken(ct.location); - this.currentToken = null; - if (ct.location) { - ct.location.endLine = this.preprocessor.line; - ct.location.endCol = this.preprocessor.col + 1; - ct.location.endOffset = this.preprocessor.offset + 1; - } - this.currentLocation = this.getCurrentLocation(-1); - } - emitCurrentTagToken() { - const ct = this.currentToken; - this.prepareToken(ct); - ct.tagID = getTagID(ct.tagName); - if (ct.type === TokenType.START_TAG) { - this.lastStartTagName = ct.tagName; - this.handler.onStartTag(ct); - } else { - if (ct.attrs.length > 0) { - this._err(ERR.endTagWithAttributes); - } - if (ct.selfClosing) { - this._err(ERR.endTagWithTrailingSolidus); - } - this.handler.onEndTag(ct); - } - this.preprocessor.dropParsedChunk(); - } - emitCurrentComment(ct) { - this.prepareToken(ct); - this.handler.onComment(ct); - this.preprocessor.dropParsedChunk(); - } - emitCurrentDoctype(ct) { - this.prepareToken(ct); - this.handler.onDoctype(ct); - this.preprocessor.dropParsedChunk(); - } - _emitCurrentCharacterToken(nextLocation) { - if (this.currentCharacterToken) { - if (nextLocation && this.currentCharacterToken.location) { - this.currentCharacterToken.location.endLine = nextLocation.startLine; - this.currentCharacterToken.location.endCol = nextLocation.startCol; - this.currentCharacterToken.location.endOffset = nextLocation.startOffset; - } - switch (this.currentCharacterToken.type) { - case TokenType.CHARACTER: { - this.handler.onCharacter(this.currentCharacterToken); - break; - } - case TokenType.NULL_CHARACTER: { - this.handler.onNullCharacter(this.currentCharacterToken); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.handler.onWhitespaceCharacter(this.currentCharacterToken); - break; - } - } - this.currentCharacterToken = null; - } - } - _emitEOFToken() { - const location = this.getCurrentLocation(0); - if (location) { - location.endLine = location.startLine; - location.endCol = location.startCol; - location.endOffset = location.startOffset; - } - this._emitCurrentCharacterToken(location); - this.handler.onEof({ type: TokenType.EOF, location }); - this.active = false; - } - //Characters emission - //OPTIMIZATION: The specification uses only one type of character token (one token per character). - //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters. - //If we have a sequence of characters that belong to the same group, the parser can process it - //as a single solid character token. - //So, there are 3 types of character tokens in parse5: - //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000') - //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f') - //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^') - _appendCharToCurrentCharacterToken(type, ch) { - if (this.currentCharacterToken) { - if (this.currentCharacterToken.type === type) { - this.currentCharacterToken.chars += ch; - return; - } else { - this.currentLocation = this.getCurrentLocation(0); - this._emitCurrentCharacterToken(this.currentLocation); - this.preprocessor.dropParsedChunk(); - } - } - this._createCharacterToken(type, ch); - } - _emitCodePoint(cp) { - const type = isWhitespace(cp) ? TokenType.WHITESPACE_CHARACTER : cp === CODE_POINTS.NULL ? TokenType.NULL_CHARACTER : TokenType.CHARACTER; - this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp)); - } - //NOTE: used when we emit characters explicitly. - //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks. - _emitChars(ch) { - this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch); - } - // Character reference helpers - _startCharacterReference() { - this.returnState = this.state; - this.state = State.CHARACTER_REFERENCE; - this.entityStartPos = this.preprocessor.pos; - this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy); - } - _isCharacterReferenceInAttribute() { - return this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED; - } - _flushCodePointConsumedAsCharacterReference(cp) { - if (this._isCharacterReferenceInAttribute()) { - this.currentAttr.value += String.fromCodePoint(cp); - } else { - this._emitCodePoint(cp); - } - } - // Calling states this way turns out to be much faster than any other approach. - _callState(cp) { - switch (this.state) { - case State.DATA: { - this._stateData(cp); - break; - } - case State.RCDATA: { - this._stateRcdata(cp); - break; - } - case State.RAWTEXT: { - this._stateRawtext(cp); - break; - } - case State.SCRIPT_DATA: { - this._stateScriptData(cp); - break; - } - case State.PLAINTEXT: { - this._statePlaintext(cp); - break; - } - case State.TAG_OPEN: { - this._stateTagOpen(cp); - break; - } - case State.END_TAG_OPEN: { - this._stateEndTagOpen(cp); - break; - } - case State.TAG_NAME: { - this._stateTagName(cp); - break; - } - case State.RCDATA_LESS_THAN_SIGN: { - this._stateRcdataLessThanSign(cp); - break; - } - case State.RCDATA_END_TAG_OPEN: { - this._stateRcdataEndTagOpen(cp); - break; - } - case State.RCDATA_END_TAG_NAME: { - this._stateRcdataEndTagName(cp); - break; - } - case State.RAWTEXT_LESS_THAN_SIGN: { - this._stateRawtextLessThanSign(cp); - break; - } - case State.RAWTEXT_END_TAG_OPEN: { - this._stateRawtextEndTagOpen(cp); - break; - } - case State.RAWTEXT_END_TAG_NAME: { - this._stateRawtextEndTagName(cp); - break; - } - case State.SCRIPT_DATA_LESS_THAN_SIGN: { - this._stateScriptDataLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_END_TAG_OPEN: { - this._stateScriptDataEndTagOpen(cp); - break; - } - case State.SCRIPT_DATA_END_TAG_NAME: { - this._stateScriptDataEndTagName(cp); - break; - } - case State.SCRIPT_DATA_ESCAPE_START: { - this._stateScriptDataEscapeStart(cp); - break; - } - case State.SCRIPT_DATA_ESCAPE_START_DASH: { - this._stateScriptDataEscapeStartDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED: { - this._stateScriptDataEscaped(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_DASH: { - this._stateScriptDataEscapedDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_DASH_DASH: { - this._stateScriptDataEscapedDashDash(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataEscapedLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: { - this._stateScriptDataEscapedEndTagOpen(cp); - break; - } - case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: { - this._stateScriptDataEscapedEndTagName(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: { - this._stateScriptDataDoubleEscapeStart(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED: { - this._stateScriptDataDoubleEscaped(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { - this._stateScriptDataDoubleEscapedDash(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { - this._stateScriptDataDoubleEscapedDashDash(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { - this._stateScriptDataDoubleEscapedLessThanSign(cp); - break; - } - case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: { - this._stateScriptDataDoubleEscapeEnd(cp); - break; - } - case State.BEFORE_ATTRIBUTE_NAME: { - this._stateBeforeAttributeName(cp); - break; - } - case State.ATTRIBUTE_NAME: { - this._stateAttributeName(cp); - break; - } - case State.AFTER_ATTRIBUTE_NAME: { - this._stateAfterAttributeName(cp); - break; - } - case State.BEFORE_ATTRIBUTE_VALUE: { - this._stateBeforeAttributeValue(cp); - break; - } - case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: { - this._stateAttributeValueDoubleQuoted(cp); - break; - } - case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: { - this._stateAttributeValueSingleQuoted(cp); - break; - } - case State.ATTRIBUTE_VALUE_UNQUOTED: { - this._stateAttributeValueUnquoted(cp); - break; - } - case State.AFTER_ATTRIBUTE_VALUE_QUOTED: { - this._stateAfterAttributeValueQuoted(cp); - break; - } - case State.SELF_CLOSING_START_TAG: { - this._stateSelfClosingStartTag(cp); - break; - } - case State.BOGUS_COMMENT: { - this._stateBogusComment(cp); - break; - } - case State.MARKUP_DECLARATION_OPEN: { - this._stateMarkupDeclarationOpen(cp); - break; - } - case State.COMMENT_START: { - this._stateCommentStart(cp); - break; - } - case State.COMMENT_START_DASH: { - this._stateCommentStartDash(cp); - break; - } - case State.COMMENT: { - this._stateComment(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN: { - this._stateCommentLessThanSign(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG: { - this._stateCommentLessThanSignBang(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: { - this._stateCommentLessThanSignBangDash(cp); - break; - } - case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: { - this._stateCommentLessThanSignBangDashDash(cp); - break; - } - case State.COMMENT_END_DASH: { - this._stateCommentEndDash(cp); - break; - } - case State.COMMENT_END: { - this._stateCommentEnd(cp); - break; - } - case State.COMMENT_END_BANG: { - this._stateCommentEndBang(cp); - break; - } - case State.DOCTYPE: { - this._stateDoctype(cp); - break; - } - case State.BEFORE_DOCTYPE_NAME: { - this._stateBeforeDoctypeName(cp); - break; - } - case State.DOCTYPE_NAME: { - this._stateDoctypeName(cp); - break; - } - case State.AFTER_DOCTYPE_NAME: { - this._stateAfterDoctypeName(cp); - break; - } - case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: { - this._stateAfterDoctypePublicKeyword(cp); - break; - } - case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateBeforeDoctypePublicIdentifier(cp); - break; - } - case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypePublicIdentifierDoubleQuoted(cp); - break; - } - case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypePublicIdentifierSingleQuoted(cp); - break; - } - case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { - this._stateAfterDoctypePublicIdentifier(cp); - break; - } - case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { - this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); - break; - } - case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: { - this._stateAfterDoctypeSystemKeyword(cp); - break; - } - case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateBeforeDoctypeSystemIdentifier(cp); - break; - } - case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { - this._stateDoctypeSystemIdentifierDoubleQuoted(cp); - break; - } - case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { - this._stateDoctypeSystemIdentifierSingleQuoted(cp); - break; - } - case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { - this._stateAfterDoctypeSystemIdentifier(cp); - break; - } - case State.BOGUS_DOCTYPE: { - this._stateBogusDoctype(cp); - break; - } - case State.CDATA_SECTION: { - this._stateCdataSection(cp); - break; - } - case State.CDATA_SECTION_BRACKET: { - this._stateCdataSectionBracket(cp); - break; - } - case State.CDATA_SECTION_END: { - this._stateCdataSectionEnd(cp); - break; - } - case State.CHARACTER_REFERENCE: { - this._stateCharacterReference(); - break; - } - case State.AMBIGUOUS_AMPERSAND: { - this._stateAmbiguousAmpersand(cp); - break; - } - default: { - throw new Error("Unknown state"); - } - } - } - // State machine - // Data state - //------------------------------------------------------------------ - _stateData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.TAG_OPEN; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RCDATA state - //------------------------------------------------------------------ - _stateRcdata(cp) { - switch (cp) { - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.RCDATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // RAWTEXT state - //------------------------------------------------------------------ - _stateRawtext(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.RAWTEXT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data state - //------------------------------------------------------------------ - _stateScriptData(cp) { - switch (cp) { - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // PLAINTEXT state - //------------------------------------------------------------------ - _statePlaintext(cp) { - switch (cp) { - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Tag open state - //------------------------------------------------------------------ - _stateTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createStartTagToken(); - this.state = State.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.MARKUP_DECLARATION_OPEN; - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.END_TAG_OPEN; - break; - } - case CODE_POINTS.QUESTION_MARK: { - this._err(ERR.unexpectedQuestionMarkInsteadOfTagName); - this._createCommentToken(1); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars("<"); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.invalidFirstCharacterOfTagName); - this._emitChars("<"); - this.state = State.DATA; - this._stateData(cp); - } - } - } - // End tag open state - //------------------------------------------------------------------ - _stateEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this._createEndTagToken(); - this.state = State.TAG_NAME; - this._stateTagName(cp); - } else - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingEndTagName); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofBeforeTagName); - this._emitChars("</"); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.invalidFirstCharacterOfTagName); - this._createCommentToken(2); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - } - } - } - // Tag name state - //------------------------------------------------------------------ - _stateTagName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.tagName += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // RCDATA less-than sign state - //------------------------------------------------------------------ - _stateRcdataLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.RCDATA_END_TAG_OPEN; - } else { - this._emitChars("<"); - this.state = State.RCDATA; - this._stateRcdata(cp); - } - } - // RCDATA end tag open state - //------------------------------------------------------------------ - _stateRcdataEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.RCDATA_END_TAG_NAME; - this._stateRcdataEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.RCDATA; - this._stateRcdata(cp); - } - } - handleSpecialEndTag(_cp) { - if (!this.preprocessor.startsWith(this.lastStartTagName, false)) { - return !this._ensureHibernation(); - } - this._createEndTagToken(); - const token = this.currentToken; - token.tagName = this.lastStartTagName; - const cp = this.preprocessor.peek(this.lastStartTagName.length); - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._advanceBy(this.lastStartTagName.length); - this.state = State.BEFORE_ATTRIBUTE_NAME; - return false; - } - case CODE_POINTS.SOLIDUS: { - this._advanceBy(this.lastStartTagName.length); - this.state = State.SELF_CLOSING_START_TAG; - return false; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._advanceBy(this.lastStartTagName.length); - this.emitCurrentTagToken(); - this.state = State.DATA; - return false; - } - default: { - return !this._ensureHibernation(); - } - } - } - // RCDATA end tag name state - //------------------------------------------------------------------ - _stateRcdataEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.RCDATA; - this._stateRcdata(cp); - } - } - // RAWTEXT less-than sign state - //------------------------------------------------------------------ - _stateRawtextLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.RAWTEXT_END_TAG_OPEN; - } else { - this._emitChars("<"); - this.state = State.RAWTEXT; - this._stateRawtext(cp); - } - } - // RAWTEXT end tag open state - //------------------------------------------------------------------ - _stateRawtextEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.RAWTEXT_END_TAG_NAME; - this._stateRawtextEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.RAWTEXT; - this._stateRawtext(cp); - } - } - // RAWTEXT end tag name state - //------------------------------------------------------------------ - _stateRawtextEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.RAWTEXT; - this._stateRawtext(cp); - } - } - // Script data less-than sign state - //------------------------------------------------------------------ - _stateScriptDataLessThanSign(cp) { - switch (cp) { - case CODE_POINTS.SOLIDUS: { - this.state = State.SCRIPT_DATA_END_TAG_OPEN; - break; - } - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.SCRIPT_DATA_ESCAPE_START; - this._emitChars("<!"); - break; - } - default: { - this._emitChars("<"); - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - } - // Script data end tag open state - //------------------------------------------------------------------ - _stateScriptDataEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.SCRIPT_DATA_END_TAG_NAME; - this._stateScriptDataEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data end tag name state - //------------------------------------------------------------------ - _stateScriptDataEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escape start state - //------------------------------------------------------------------ - _stateScriptDataEscapeStart(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.SCRIPT_DATA_ESCAPE_START_DASH; - this._emitChars("-"); - } else { - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escape start dash state - //------------------------------------------------------------------ - _stateScriptDataEscapeStartDash(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; - this._emitChars("-"); - } else { - this.state = State.SCRIPT_DATA; - this._stateScriptData(cp); - } - } - // Script data escaped state - //------------------------------------------------------------------ - _stateScriptDataEscaped(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_ESCAPED_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data escaped dash state - //------------------------------------------------------------------ - _stateScriptDataEscapedDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data escaped dash dash state - //------------------------------------------------------------------ - _stateScriptDataEscapedDashDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.SCRIPT_DATA; - this._emitChars(">"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; - } else if (isAsciiLetter(cp)) { - this._emitChars("<"); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START; - this._stateScriptDataDoubleEscapeStart(cp); - } else { - this._emitChars("<"); - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data escaped end tag open state - //------------------------------------------------------------------ - _stateScriptDataEscapedEndTagOpen(cp) { - if (isAsciiLetter(cp)) { - this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME; - this._stateScriptDataEscapedEndTagName(cp); - } else { - this._emitChars("</"); - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data escaped end tag name state - //------------------------------------------------------------------ - _stateScriptDataEscapedEndTagName(cp) { - if (this.handleSpecialEndTag(cp)) { - this._emitChars("</"); - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data double escape start state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapeStart(cp) { - if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { - this._emitCodePoint(cp); - for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { - this._emitCodePoint(this._consume()); - } - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - } else if (!this._ensureHibernation()) { - this.state = State.SCRIPT_DATA_ESCAPED; - this._stateScriptDataEscaped(cp); - } - } - // Script data double escaped state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscaped(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // Script data double escaped dash state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH; - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data double escaped dash dash state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedDashDash(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this._emitChars("-"); - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; - this._emitChars("<"); - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.SCRIPT_DATA; - this._emitChars(">"); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitChars(REPLACEMENT_CHARACTER); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInScriptHtmlCommentLikeText); - this._emitEOFToken(); - break; - } - default: { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._emitCodePoint(cp); - } - } - } - // Script data double escaped less-than sign state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapedLessThanSign(cp) { - if (cp === CODE_POINTS.SOLIDUS) { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END; - this._emitChars("/"); - } else { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Script data double escape end state - //------------------------------------------------------------------ - _stateScriptDataDoubleEscapeEnd(cp) { - if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) && isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) { - this._emitCodePoint(cp); - for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) { - this._emitCodePoint(this._consume()); - } - this.state = State.SCRIPT_DATA_ESCAPED; - } else if (!this._ensureHibernation()) { - this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; - this._stateScriptDataDoubleEscaped(cp); - } - } - // Before attribute name state - //------------------------------------------------------------------ - _stateBeforeAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this.state = State.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._err(ERR.unexpectedEqualsSignBeforeAttributeName); - this._createAttr("="); - this.state = State.ATTRIBUTE_NAME; - break; - } - default: { - this._createAttr(""); - this.state = State.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Attribute name state - //------------------------------------------------------------------ - _stateAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: - case CODE_POINTS.SOLIDUS: - case CODE_POINTS.GREATER_THAN_SIGN: - case CODE_POINTS.EOF: { - this._leaveAttrName(); - this.state = State.AFTER_ATTRIBUTE_NAME; - this._stateAfterAttributeName(cp); - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this._leaveAttrName(); - this.state = State.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: { - this._err(ERR.unexpectedCharacterInAttributeName); - this.currentAttr.name += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.name += REPLACEMENT_CHARACTER; - break; - } - default: { - this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After attribute name state - //------------------------------------------------------------------ - _stateAfterAttributeName(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.SOLIDUS: { - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.EQUALS_SIGN: { - this.state = State.BEFORE_ATTRIBUTE_VALUE; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._createAttr(""); - this.state = State.ATTRIBUTE_NAME; - this._stateAttributeName(cp); - } - } - } - // Before attribute value state - //------------------------------------------------------------------ - _stateBeforeAttributeValue(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingAttributeValue); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - default: { - this.state = State.ATTRIBUTE_VALUE_UNQUOTED; - this._stateAttributeValueUnquoted(cp); - } - } - } - // Attribute value (double-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueDoubleQuoted(cp) { - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (single-quoted) state - //------------------------------------------------------------------ - _stateAttributeValueSingleQuoted(cp) { - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // Attribute value (unquoted) state - //------------------------------------------------------------------ - _stateAttributeValueUnquoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.AMPERSAND: { - this._startCharacterReference(); - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this.currentAttr.value += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.QUOTATION_MARK: - case CODE_POINTS.APOSTROPHE: - case CODE_POINTS.LESS_THAN_SIGN: - case CODE_POINTS.EQUALS_SIGN: - case CODE_POINTS.GRAVE_ACCENT: { - this._err(ERR.unexpectedCharacterInUnquotedAttributeValue); - this.currentAttr.value += String.fromCodePoint(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this.currentAttr.value += String.fromCodePoint(cp); - } - } - } - // After attribute value (quoted) state - //------------------------------------------------------------------ - _stateAfterAttributeValueQuoted(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this._leaveAttrValue(); - this.state = State.BEFORE_ATTRIBUTE_NAME; - break; - } - case CODE_POINTS.SOLIDUS: { - this._leaveAttrValue(); - this.state = State.SELF_CLOSING_START_TAG; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._leaveAttrValue(); - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBetweenAttributes); - this.state = State.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Self-closing start tag state - //------------------------------------------------------------------ - _stateSelfClosingStartTag(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - const token = this.currentToken; - token.selfClosing = true; - this.state = State.DATA; - this.emitCurrentTagToken(); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInTag); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedSolidusInTag); - this.state = State.BEFORE_ATTRIBUTE_NAME; - this._stateBeforeAttributeName(cp); - } - } - } - // Bogus comment state - //------------------------------------------------------------------ - _stateBogusComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Markup declaration open state - //------------------------------------------------------------------ - _stateMarkupDeclarationOpen(cp) { - if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) { - this._createCommentToken(SEQUENCES.DASH_DASH.length + 1); - this.state = State.COMMENT_START; - } else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) { - this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1); - this.state = State.DOCTYPE; - } else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) { - if (this.inForeignNode) { - this.state = State.CDATA_SECTION; - } else { - this._err(ERR.cdataInHtmlContent); - this._createCommentToken(SEQUENCES.CDATA_START.length + 1); - this.currentToken.data = "[CDATA["; - this.state = State.BOGUS_COMMENT; - } - } else if (!this._ensureHibernation()) { - this._err(ERR.incorrectlyOpenedComment); - this._createCommentToken(2); - this.state = State.BOGUS_COMMENT; - this._stateBogusComment(cp); - } - } - // Comment start state - //------------------------------------------------------------------ - _stateCommentStart(cp) { - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_START_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State.DATA; - const token = this.currentToken; - this.emitCurrentComment(token); - break; - } - default: { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment start dash state - //------------------------------------------------------------------ - _stateCommentStartDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptClosingOfEmptyComment); - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment state - //------------------------------------------------------------------ - _stateComment(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END_DASH; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - this.state = State.COMMENT_LESS_THAN_SIGN; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.data += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += String.fromCodePoint(cp); - } - } - } - // Comment less-than sign state - //------------------------------------------------------------------ - _stateCommentLessThanSign(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.EXCLAMATION_MARK: { - token.data += "!"; - this.state = State.COMMENT_LESS_THAN_SIGN_BANG; - break; - } - case CODE_POINTS.LESS_THAN_SIGN: { - token.data += "<"; - break; - } - default: { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment less-than sign bang state - //------------------------------------------------------------------ - _stateCommentLessThanSignBang(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH; - } else { - this.state = State.COMMENT; - this._stateComment(cp); - } - } - // Comment less-than sign bang dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDash(cp) { - if (cp === CODE_POINTS.HYPHEN_MINUS) { - this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; - } else { - this.state = State.COMMENT_END_DASH; - this._stateCommentEndDash(cp); - } - } - // Comment less-than sign bang dash dash state - //------------------------------------------------------------------ - _stateCommentLessThanSignBangDashDash(cp) { - if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) { - this._err(ERR.nestedComment); - } - this.state = State.COMMENT_END; - this._stateCommentEnd(cp); - } - // Comment end dash state - //------------------------------------------------------------------ - _stateCommentEndDash(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - this.state = State.COMMENT_END; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "-"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end state - //------------------------------------------------------------------ - _stateCommentEnd(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EXCLAMATION_MARK: { - this.state = State.COMMENT_END_BANG; - break; - } - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "-"; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // Comment end bang state - //------------------------------------------------------------------ - _stateCommentEndBang(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.HYPHEN_MINUS: { - token.data += "--!"; - this.state = State.COMMENT_END_DASH; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.incorrectlyClosedComment); - this.state = State.DATA; - this.emitCurrentComment(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInComment); - this.emitCurrentComment(token); - this._emitEOFToken(); - break; - } - default: { - token.data += "--!"; - this.state = State.COMMENT; - this._stateComment(cp); - } - } - } - // DOCTYPE state - //------------------------------------------------------------------ - _stateDoctype(cp) { - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingWhitespaceBeforeDoctypeName); - this.state = State.BEFORE_DOCTYPE_NAME; - this._stateBeforeDoctypeName(cp); - } - } - } - // Before DOCTYPE name state - //------------------------------------------------------------------ - _stateBeforeDoctypeName(cp) { - if (isAsciiUpper(cp)) { - this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); - this.state = State.DOCTYPE_NAME; - } else - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - this._createDoctypeToken(REPLACEMENT_CHARACTER); - this.state = State.DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeName); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - this._createDoctypeToken(null); - const token = this.currentToken; - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._createDoctypeToken(String.fromCodePoint(cp)); - this.state = State.DOCTYPE_NAME; - } - } - } - // DOCTYPE name state - //------------------------------------------------------------------ - _stateDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.AFTER_DOCTYPE_NAME; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.name += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); - } - } - } - // After DOCTYPE name state - //------------------------------------------------------------------ - _stateAfterDoctypeName(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) { - this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD; - } else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) { - this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD; - } else if (!this._ensureHibernation()) { - this._err(ERR.invalidCharacterSequenceAfterDoctypeName); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - } - // After DOCTYPE public keyword state - //------------------------------------------------------------------ - _stateAfterDoctypePublicKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword); - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.publicId = ""; - this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE public identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE public identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypePublicIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.publicId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypePublicIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.publicId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE public identifier state - //------------------------------------------------------------------ - _stateAfterDoctypePublicIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Between DOCTYPE public and system identifiers state - //------------------------------------------------------------------ - _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // After DOCTYPE system keyword state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemKeyword(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.QUOTATION_MARK: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword); - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Before DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateBeforeDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.QUOTATION_MARK: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - } - case CODE_POINTS.APOSTROPHE: { - token.systemId = ""; - this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.missingDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.DATA; - this.emitCurrentDoctype(token); - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier); - token.forceQuirks = true; - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // DOCTYPE system identifier (double-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierDoubleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.QUOTATION_MARK: { - this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // DOCTYPE system identifier (single-quoted) state - //------------------------------------------------------------------ - _stateDoctypeSystemIdentifierSingleQuoted(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.APOSTROPHE: { - this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - token.systemId += REPLACEMENT_CHARACTER; - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this._err(ERR.abruptDoctypeSystemIdentifier); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - token.systemId += String.fromCodePoint(cp); - } - } - } - // After DOCTYPE system identifier state - //------------------------------------------------------------------ - _stateAfterDoctypeSystemIdentifier(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.SPACE: - case CODE_POINTS.LINE_FEED: - case CODE_POINTS.TABULATION: - case CODE_POINTS.FORM_FEED: { - break; - } - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInDoctype); - token.forceQuirks = true; - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: { - this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); - this.state = State.BOGUS_DOCTYPE; - this._stateBogusDoctype(cp); - } - } - } - // Bogus DOCTYPE state - //------------------------------------------------------------------ - _stateBogusDoctype(cp) { - const token = this.currentToken; - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.emitCurrentDoctype(token); - this.state = State.DATA; - break; - } - case CODE_POINTS.NULL: { - this._err(ERR.unexpectedNullCharacter); - break; - } - case CODE_POINTS.EOF: { - this.emitCurrentDoctype(token); - this._emitEOFToken(); - break; - } - default: - } - } - // CDATA section state - //------------------------------------------------------------------ - _stateCdataSection(cp) { - switch (cp) { - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this.state = State.CDATA_SECTION_BRACKET; - break; - } - case CODE_POINTS.EOF: { - this._err(ERR.eofInCdata); - this._emitEOFToken(); - break; - } - default: { - this._emitCodePoint(cp); - } - } - } - // CDATA section bracket state - //------------------------------------------------------------------ - _stateCdataSectionBracket(cp) { - if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) { - this.state = State.CDATA_SECTION_END; - } else { - this._emitChars("]"); - this.state = State.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - // CDATA section end state - //------------------------------------------------------------------ - _stateCdataSectionEnd(cp) { - switch (cp) { - case CODE_POINTS.GREATER_THAN_SIGN: { - this.state = State.DATA; - break; - } - case CODE_POINTS.RIGHT_SQUARE_BRACKET: { - this._emitChars("]"); - break; - } - default: { - this._emitChars("]]"); - this.state = State.CDATA_SECTION; - this._stateCdataSection(cp); - } - } - } - // Character reference state - //------------------------------------------------------------------ - _stateCharacterReference() { - let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos); - if (length < 0) { - if (this.preprocessor.lastChunkWritten) { - length = this.entityDecoder.end(); - } else { - this.active = false; - this.preprocessor.pos = this.preprocessor.html.length - 1; - this.consumedAfterSnapshot = 0; - this.preprocessor.endOfChunkHit = true; - return; - } - } - if (length === 0) { - this.preprocessor.pos = this.entityStartPos; - this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND); - this.state = !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric2(this.preprocessor.peek(1)) ? State.AMBIGUOUS_AMPERSAND : this.returnState; - } else { - this.state = this.returnState; - } - } - // Ambiguos ampersand state - //------------------------------------------------------------------ - _stateAmbiguousAmpersand(cp) { - if (isAsciiAlphaNumeric2(cp)) { - this._flushCodePointConsumedAsCharacterReference(cp); - } else { - if (cp === CODE_POINTS.SEMICOLON) { - this._err(ERR.unknownNamedCharacterReference); - } - this.state = this.returnState; - this._callState(cp); - } - } -}; - -// node_modules/parse5/dist/parser/open-element-stack.js -var IMPLICIT_END_TAG_REQUIRED = /* @__PURE__ */ new Set([TAG_ID.DD, TAG_ID.DT, TAG_ID.LI, TAG_ID.OPTGROUP, TAG_ID.OPTION, TAG_ID.P, TAG_ID.RB, TAG_ID.RP, TAG_ID.RT, TAG_ID.RTC]); -var IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = /* @__PURE__ */ new Set([ - ...IMPLICIT_END_TAG_REQUIRED, - TAG_ID.CAPTION, - TAG_ID.COLGROUP, - TAG_ID.TBODY, - TAG_ID.TD, - TAG_ID.TFOOT, - TAG_ID.TH, - TAG_ID.THEAD, - TAG_ID.TR -]); -var SCOPING_ELEMENTS_HTML = /* @__PURE__ */ new Set([ - TAG_ID.APPLET, - TAG_ID.CAPTION, - TAG_ID.HTML, - TAG_ID.MARQUEE, - TAG_ID.OBJECT, - TAG_ID.TABLE, - TAG_ID.TD, - TAG_ID.TEMPLATE, - TAG_ID.TH -]); -var SCOPING_ELEMENTS_HTML_LIST = /* @__PURE__ */ new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.OL, TAG_ID.UL]); -var SCOPING_ELEMENTS_HTML_BUTTON = /* @__PURE__ */ new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.BUTTON]); -var SCOPING_ELEMENTS_MATHML = /* @__PURE__ */ new Set([TAG_ID.ANNOTATION_XML, TAG_ID.MI, TAG_ID.MN, TAG_ID.MO, TAG_ID.MS, TAG_ID.MTEXT]); -var SCOPING_ELEMENTS_SVG = /* @__PURE__ */ new Set([TAG_ID.DESC, TAG_ID.FOREIGN_OBJECT, TAG_ID.TITLE]); -var TABLE_ROW_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]); -var TABLE_BODY_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]); -var TABLE_CONTEXT = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]); -var TABLE_CELLS = /* @__PURE__ */ new Set([TAG_ID.TD, TAG_ID.TH]); -var OpenElementStack = class { - get currentTmplContentOrNode() { - return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; - } - constructor(document, treeAdapter, handler) { - this.treeAdapter = treeAdapter; - this.handler = handler; - this.items = []; - this.tagIDs = []; - this.stackTop = -1; - this.tmplCount = 0; - this.currentTagId = TAG_ID.UNKNOWN; - this.current = document; - } - //Index of element - _indexOf(element) { - return this.items.lastIndexOf(element, this.stackTop); - } - //Update current element - _isInTemplate() { - return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML; - } - _updateCurrentElement() { - this.current = this.items[this.stackTop]; - this.currentTagId = this.tagIDs[this.stackTop]; - } - //Mutations - push(element, tagID) { - this.stackTop++; - this.items[this.stackTop] = element; - this.current = element; - this.tagIDs[this.stackTop] = tagID; - this.currentTagId = tagID; - if (this._isInTemplate()) { - this.tmplCount++; - } - this.handler.onItemPush(element, tagID, true); - } - pop() { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount--; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, true); - } - replace(oldElement, newElement) { - const idx = this._indexOf(oldElement); - this.items[idx] = newElement; - if (idx === this.stackTop) { - this.current = newElement; - } - } - insertAfter(referenceElement, newElement, newElementID) { - const insertionIdx = this._indexOf(referenceElement) + 1; - this.items.splice(insertionIdx, 0, newElement); - this.tagIDs.splice(insertionIdx, 0, newElementID); - this.stackTop++; - if (insertionIdx === this.stackTop) { - this._updateCurrentElement(); - } - this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); - } - popUntilTagNamePopped(tagName) { - let targetIdx = this.stackTop + 1; - do { - targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); - } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML); - this.shortenToLength(targetIdx < 0 ? 0 : targetIdx); - } - shortenToLength(idx) { - while (this.stackTop >= idx) { - const popped = this.current; - if (this.tmplCount > 0 && this._isInTemplate()) { - this.tmplCount -= 1; - } - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(popped, this.stackTop < idx); - } - } - popUntilElementPopped(element) { - const idx = this._indexOf(element); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilPopped(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx < 0 ? 0 : idx); - } - popUntilNumberedHeaderPopped() { - this.popUntilPopped(NUMBERED_HEADERS, NS.HTML); - } - popUntilTableCellPopped() { - this.popUntilPopped(TABLE_CELLS, NS.HTML); - } - popAllUpToHtmlElement() { - this.tmplCount = 0; - this.shortenToLength(1); - } - _indexOfTagNames(tagNames, namespace) { - for (let i = this.stackTop; i >= 0; i--) { - if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { - return i; - } - } - return -1; - } - clearBackTo(tagNames, targetNS) { - const idx = this._indexOfTagNames(tagNames, targetNS); - this.shortenToLength(idx + 1); - } - clearBackToTableContext() { - this.clearBackTo(TABLE_CONTEXT, NS.HTML); - } - clearBackToTableBodyContext() { - this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML); - } - clearBackToTableRowContext() { - this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML); - } - remove(element) { - const idx = this._indexOf(element); - if (idx >= 0) { - if (idx === this.stackTop) { - this.pop(); - } else { - this.items.splice(idx, 1); - this.tagIDs.splice(idx, 1); - this.stackTop--; - this._updateCurrentElement(); - this.handler.onItemPop(element, false); - } - } - } - //Search - tryPeekProperlyNestedBodyElement() { - return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null; - } - contains(element) { - return this._indexOf(element) > -1; - } - getCommonAncestor(element) { - const elementIdx = this._indexOf(element) - 1; - return elementIdx >= 0 ? this.items[elementIdx] : null; - } - isRootHtmlElementCurrent() { - return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML; - } - //Element in scope - hasInDynamicScope(tagName, htmlScope) { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - switch (this.treeAdapter.getNamespaceURI(this.items[i])) { - case NS.HTML: { - if (tn === tagName) - return true; - if (htmlScope.has(tn)) - return false; - break; - } - case NS.SVG: { - if (SCOPING_ELEMENTS_SVG.has(tn)) - return false; - break; - } - case NS.MATHML: { - if (SCOPING_ELEMENTS_MATHML.has(tn)) - return false; - break; - } - } - } - return true; - } - hasInScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML); - } - hasInListItemScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST); - } - hasInButtonScope(tagName) { - return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON); - } - hasNumberedHeaderInScope() { - for (let i = this.stackTop; i >= 0; i--) { - const tn = this.tagIDs[i]; - switch (this.treeAdapter.getNamespaceURI(this.items[i])) { - case NS.HTML: { - if (NUMBERED_HEADERS.has(tn)) - return true; - if (SCOPING_ELEMENTS_HTML.has(tn)) - return false; - break; - } - case NS.SVG: { - if (SCOPING_ELEMENTS_SVG.has(tn)) - return false; - break; - } - case NS.MATHML: { - if (SCOPING_ELEMENTS_MATHML.has(tn)) - return false; - break; - } - } - } - return true; - } - hasInTableScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case tagName: { - return true; - } - case TAG_ID.TABLE: - case TAG_ID.HTML: { - return false; - } - } - } - return true; - } - hasTableBodyContextInTableScope() { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case TAG_ID.TBODY: - case TAG_ID.THEAD: - case TAG_ID.TFOOT: { - return true; - } - case TAG_ID.TABLE: - case TAG_ID.HTML: { - return false; - } - } - } - return true; - } - hasInSelectScope(tagName) { - for (let i = this.stackTop; i >= 0; i--) { - if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) { - continue; - } - switch (this.tagIDs[i]) { - case tagName: { - return true; - } - case TAG_ID.OPTION: - case TAG_ID.OPTGROUP: { - break; - } - default: { - return false; - } - } - } - return true; - } - //Implied end tags - generateImpliedEndTags() { - while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsThoroughly() { - while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } - generateImpliedEndTagsWithExclusion(exclusionId) { - while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { - this.pop(); - } - } -}; - -// node_modules/parse5/dist/parser/formatting-element-list.js -var NOAH_ARK_CAPACITY = 3; -var EntryType; -(function(EntryType2) { - EntryType2[EntryType2["Marker"] = 0] = "Marker"; - EntryType2[EntryType2["Element"] = 1] = "Element"; -})(EntryType || (EntryType = {})); -var MARKER = { type: EntryType.Marker }; -var FormattingElementList = class { - constructor(treeAdapter) { - this.treeAdapter = treeAdapter; - this.entries = []; - this.bookmark = null; - } - //Noah Ark's condition - //OPTIMIZATION: at first we try to find possible candidates for exclusion using - //lightweight heuristics without thorough attributes check. - _getNoahArkConditionCandidates(newElement, neAttrs) { - const candidates = []; - const neAttrsLength = neAttrs.length; - const neTagName = this.treeAdapter.getTagName(newElement); - const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); - for (let i = 0; i < this.entries.length; i++) { - const entry = this.entries[i]; - if (entry.type === EntryType.Marker) { - break; - } - const { element } = entry; - if (this.treeAdapter.getTagName(element) === neTagName && this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { - const elementAttrs = this.treeAdapter.getAttrList(element); - if (elementAttrs.length === neAttrsLength) { - candidates.push({ idx: i, attrs: elementAttrs }); - } - } - } - return candidates; - } - _ensureNoahArkCondition(newElement) { - if (this.entries.length < NOAH_ARK_CAPACITY) - return; - const neAttrs = this.treeAdapter.getAttrList(newElement); - const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); - if (candidates.length < NOAH_ARK_CAPACITY) - return; - const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); - let validCandidates = 0; - for (let i = 0; i < candidates.length; i++) { - const candidate = candidates[i]; - if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { - validCandidates += 1; - if (validCandidates >= NOAH_ARK_CAPACITY) { - this.entries.splice(candidate.idx, 1); - } - } - } - } - //Mutations - insertMarker() { - this.entries.unshift(MARKER); - } - pushElement(element, token) { - this._ensureNoahArkCondition(element); - this.entries.unshift({ - type: EntryType.Element, - element, - token - }); - } - insertElementAfterBookmark(element, token) { - const bookmarkIdx = this.entries.indexOf(this.bookmark); - this.entries.splice(bookmarkIdx, 0, { - type: EntryType.Element, - element, - token - }); - } - removeEntry(entry) { - const entryIndex = this.entries.indexOf(entry); - if (entryIndex >= 0) { - this.entries.splice(entryIndex, 1); - } - } - /** - * Clears the list of formatting elements up to the last marker. - * - * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker - */ - clearToLastMarker() { - const markerIdx = this.entries.indexOf(MARKER); - if (markerIdx >= 0) { - this.entries.splice(0, markerIdx + 1); - } else { - this.entries.length = 0; - } - } - //Search - getElementEntryInScopeWithTagName(tagName) { - const entry = this.entries.find((entry2) => entry2.type === EntryType.Marker || this.treeAdapter.getTagName(entry2.element) === tagName); - return entry && entry.type === EntryType.Element ? entry : null; - } - getElementEntry(element) { - return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); - } -}; - -// node_modules/parse5/dist/tree-adapters/default.js -var defaultTreeAdapter = { - //Node construction - createDocument() { - return { - nodeName: "#document", - mode: DOCUMENT_MODE.NO_QUIRKS, - childNodes: [] - }; - }, - createDocumentFragment() { - return { - nodeName: "#document-fragment", - childNodes: [] - }; - }, - createElement(tagName, namespaceURI, attrs) { - return { - nodeName: tagName, - tagName, - attrs, - namespaceURI, - childNodes: [], - parentNode: null - }; - }, - createCommentNode(data) { - return { - nodeName: "#comment", - data, - parentNode: null - }; - }, - createTextNode(value) { - return { - nodeName: "#text", - value, - parentNode: null - }; - }, - //Tree mutation - appendChild(parentNode, newNode) { - parentNode.childNodes.push(newNode); - newNode.parentNode = parentNode; - }, - insertBefore(parentNode, newNode, referenceNode) { - const insertionIdx = parentNode.childNodes.indexOf(referenceNode); - parentNode.childNodes.splice(insertionIdx, 0, newNode); - newNode.parentNode = parentNode; - }, - setTemplateContent(templateElement, contentElement) { - templateElement.content = contentElement; - }, - getTemplateContent(templateElement) { - return templateElement.content; - }, - setDocumentType(document, name, publicId, systemId) { - const doctypeNode = document.childNodes.find((node) => node.nodeName === "#documentType"); - if (doctypeNode) { - doctypeNode.name = name; - doctypeNode.publicId = publicId; - doctypeNode.systemId = systemId; - } else { - const node = { - nodeName: "#documentType", - name, - publicId, - systemId, - parentNode: null - }; - defaultTreeAdapter.appendChild(document, node); - } - }, - setDocumentMode(document, mode) { - document.mode = mode; - }, - getDocumentMode(document) { - return document.mode; - }, - detachNode(node) { - if (node.parentNode) { - const idx = node.parentNode.childNodes.indexOf(node); - node.parentNode.childNodes.splice(idx, 1); - node.parentNode = null; - } - }, - insertText(parentNode, text) { - if (parentNode.childNodes.length > 0) { - const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; - if (defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text; - return; - } - } - defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text)); - }, - insertTextBefore(parentNode, text, referenceNode) { - const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; - if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) { - prevNode.value += text; - } else { - defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode); - } - }, - adoptAttributes(recipient, attrs) { - const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name)); - for (let j = 0; j < attrs.length; j++) { - if (!recipientAttrsMap.has(attrs[j].name)) { - recipient.attrs.push(attrs[j]); - } - } - }, - //Tree traversing - getFirstChild(node) { - return node.childNodes[0]; - }, - getChildNodes(node) { - return node.childNodes; - }, - getParentNode(node) { - return node.parentNode; - }, - getAttrList(element) { - return element.attrs; - }, - //Node data - getTagName(element) { - return element.tagName; - }, - getNamespaceURI(element) { - return element.namespaceURI; - }, - getTextNodeContent(textNode) { - return textNode.value; - }, - getCommentNodeContent(commentNode) { - return commentNode.data; - }, - getDocumentTypeNodeName(doctypeNode) { - return doctypeNode.name; - }, - getDocumentTypeNodePublicId(doctypeNode) { - return doctypeNode.publicId; - }, - getDocumentTypeNodeSystemId(doctypeNode) { - return doctypeNode.systemId; - }, - //Node types - isTextNode(node) { - return node.nodeName === "#text"; - }, - isCommentNode(node) { - return node.nodeName === "#comment"; - }, - isDocumentTypeNode(node) { - return node.nodeName === "#documentType"; - }, - isElementNode(node) { - return Object.prototype.hasOwnProperty.call(node, "tagName"); - }, - // Source code location - setNodeSourceCodeLocation(node, location) { - node.sourceCodeLocation = location; - }, - getNodeSourceCodeLocation(node) { - return node.sourceCodeLocation; - }, - updateNodeSourceCodeLocation(node, endLocation) { - node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation }; - } -}; - -// node_modules/parse5/dist/common/doctype.js -var VALID_DOCTYPE_NAME = "html"; -var VALID_SYSTEM_ID = "about:legacy-compat"; -var QUIRKS_MODE_SYSTEM_ID = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"; -var QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ - "+//silmaril//dtd html pro v0r11 19970101//", - "-//as//dtd html 3.0 aswedit + extensions//", - "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", - "-//ietf//dtd html 2.0 level 1//", - "-//ietf//dtd html 2.0 level 2//", - "-//ietf//dtd html 2.0 strict level 1//", - "-//ietf//dtd html 2.0 strict level 2//", - "-//ietf//dtd html 2.0 strict//", - "-//ietf//dtd html 2.0//", - "-//ietf//dtd html 2.1e//", - "-//ietf//dtd html 3.0//", - "-//ietf//dtd html 3.2 final//", - "-//ietf//dtd html 3.2//", - "-//ietf//dtd html 3//", - "-//ietf//dtd html level 0//", - "-//ietf//dtd html level 1//", - "-//ietf//dtd html level 2//", - "-//ietf//dtd html level 3//", - "-//ietf//dtd html strict level 0//", - "-//ietf//dtd html strict level 1//", - "-//ietf//dtd html strict level 2//", - "-//ietf//dtd html strict level 3//", - "-//ietf//dtd html strict//", - "-//ietf//dtd html//", - "-//metrius//dtd metrius presentational//", - "-//microsoft//dtd internet explorer 2.0 html strict//", - "-//microsoft//dtd internet explorer 2.0 html//", - "-//microsoft//dtd internet explorer 2.0 tables//", - "-//microsoft//dtd internet explorer 3.0 html strict//", - "-//microsoft//dtd internet explorer 3.0 html//", - "-//microsoft//dtd internet explorer 3.0 tables//", - "-//netscape comm. corp.//dtd html//", - "-//netscape comm. corp.//dtd strict html//", - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - "-//sq//dtd html 2.0 hotmetal + extensions//", - "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", - "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", - "-//spyglass//dtd html 2.0 extended//", - "-//sun microsystems corp.//dtd hotjava html//", - "-//sun microsystems corp.//dtd hotjava strict html//", - "-//w3c//dtd html 3 1995-03-24//", - "-//w3c//dtd html 3.2 draft//", - "-//w3c//dtd html 3.2 final//", - "-//w3c//dtd html 3.2//", - "-//w3c//dtd html 3.2s draft//", - "-//w3c//dtd html 4.0 frameset//", - "-//w3c//dtd html 4.0 transitional//", - "-//w3c//dtd html experimental 19960712//", - "-//w3c//dtd html experimental 970421//", - "-//w3c//dtd w3 html//", - "-//w3o//dtd w3 html 3.0//", - "-//webtechs//dtd mozilla html 2.0//", - "-//webtechs//dtd mozilla html//" -]; -var QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" -]; -var QUIRKS_MODE_PUBLIC_IDS = /* @__PURE__ */ new Set([ - "-//w3o//dtd w3 html strict 3.0//en//", - "-/w3c/dtd html 4.0 transitional/en", - "html" -]); -var LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"]; -var LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ - ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, - "-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//" -]; -function hasPrefix(publicId, prefixes) { - return prefixes.some((prefix) => publicId.startsWith(prefix)); -} -function isConforming(token) { - return token.name === VALID_DOCTYPE_NAME && token.publicId === null && (token.systemId === null || token.systemId === VALID_SYSTEM_ID); -} -function getDocumentMode(token) { - if (token.name !== VALID_DOCTYPE_NAME) { - return DOCUMENT_MODE.QUIRKS; - } - const { systemId } = token; - if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { - return DOCUMENT_MODE.QUIRKS; - } - let { publicId } = token; - if (publicId !== null) { - publicId = publicId.toLowerCase(); - if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { - return DOCUMENT_MODE.QUIRKS; - } - let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.QUIRKS; - } - prefixes = systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; - if (hasPrefix(publicId, prefixes)) { - return DOCUMENT_MODE.LIMITED_QUIRKS; - } - } - return DOCUMENT_MODE.NO_QUIRKS; -} - -// node_modules/parse5/dist/common/foreign-content.js -var foreign_content_exports = {}; -__export(foreign_content_exports, { - SVG_TAG_NAMES_ADJUSTMENT_MAP: () => SVG_TAG_NAMES_ADJUSTMENT_MAP, - adjustTokenMathMLAttrs: () => adjustTokenMathMLAttrs, - adjustTokenSVGAttrs: () => adjustTokenSVGAttrs, - adjustTokenSVGTagName: () => adjustTokenSVGTagName, - adjustTokenXMLAttrs: () => adjustTokenXMLAttrs, - causesExit: () => causesExit, - isIntegrationPoint: () => isIntegrationPoint -}); -var MIME_TYPES = { - TEXT_HTML: "text/html", - APPLICATION_XML: "application/xhtml+xml" -}; -var DEFINITION_URL_ATTR = "definitionurl"; -var ADJUSTED_DEFINITION_URL_ATTR = "definitionURL"; -var SVG_ATTRS_ADJUSTMENT_MAP = new Map([ - "attributeName", - "attributeType", - "baseFrequency", - "baseProfile", - "calcMode", - "clipPathUnits", - "diffuseConstant", - "edgeMode", - "filterUnits", - "glyphRef", - "gradientTransform", - "gradientUnits", - "kernelMatrix", - "kernelUnitLength", - "keyPoints", - "keySplines", - "keyTimes", - "lengthAdjust", - "limitingConeAngle", - "markerHeight", - "markerUnits", - "markerWidth", - "maskContentUnits", - "maskUnits", - "numOctaves", - "pathLength", - "patternContentUnits", - "patternTransform", - "patternUnits", - "pointsAtX", - "pointsAtY", - "pointsAtZ", - "preserveAlpha", - "preserveAspectRatio", - "primitiveUnits", - "refX", - "refY", - "repeatCount", - "repeatDur", - "requiredExtensions", - "requiredFeatures", - "specularConstant", - "specularExponent", - "spreadMethod", - "startOffset", - "stdDeviation", - "stitchTiles", - "surfaceScale", - "systemLanguage", - "tableValues", - "targetX", - "targetY", - "textLength", - "viewBox", - "viewTarget", - "xChannelSelector", - "yChannelSelector", - "zoomAndPan" -].map((attr) => [attr.toLowerCase(), attr])); -var XML_ATTRS_ADJUSTMENT_MAP = /* @__PURE__ */ new Map([ - ["xlink:actuate", { prefix: "xlink", name: "actuate", namespace: NS.XLINK }], - ["xlink:arcrole", { prefix: "xlink", name: "arcrole", namespace: NS.XLINK }], - ["xlink:href", { prefix: "xlink", name: "href", namespace: NS.XLINK }], - ["xlink:role", { prefix: "xlink", name: "role", namespace: NS.XLINK }], - ["xlink:show", { prefix: "xlink", name: "show", namespace: NS.XLINK }], - ["xlink:title", { prefix: "xlink", name: "title", namespace: NS.XLINK }], - ["xlink:type", { prefix: "xlink", name: "type", namespace: NS.XLINK }], - ["xml:lang", { prefix: "xml", name: "lang", namespace: NS.XML }], - ["xml:space", { prefix: "xml", name: "space", namespace: NS.XML }], - ["xmlns", { prefix: "", name: "xmlns", namespace: NS.XMLNS }], - ["xmlns:xlink", { prefix: "xmlns", name: "xlink", namespace: NS.XMLNS }] -]); -var SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ - "altGlyph", - "altGlyphDef", - "altGlyphItem", - "animateColor", - "animateMotion", - "animateTransform", - "clipPath", - "feBlend", - "feColorMatrix", - "feComponentTransfer", - "feComposite", - "feConvolveMatrix", - "feDiffuseLighting", - "feDisplacementMap", - "feDistantLight", - "feFlood", - "feFuncA", - "feFuncB", - "feFuncG", - "feFuncR", - "feGaussianBlur", - "feImage", - "feMerge", - "feMergeNode", - "feMorphology", - "feOffset", - "fePointLight", - "feSpecularLighting", - "feSpotLight", - "feTile", - "feTurbulence", - "foreignObject", - "glyphRef", - "linearGradient", - "radialGradient", - "textPath" -].map((tn) => [tn.toLowerCase(), tn])); -var EXITS_FOREIGN_CONTENT = /* @__PURE__ */ new Set([ - TAG_ID.B, - TAG_ID.BIG, - TAG_ID.BLOCKQUOTE, - TAG_ID.BODY, - TAG_ID.BR, - TAG_ID.CENTER, - TAG_ID.CODE, - TAG_ID.DD, - TAG_ID.DIV, - TAG_ID.DL, - TAG_ID.DT, - TAG_ID.EM, - TAG_ID.EMBED, - TAG_ID.H1, - TAG_ID.H2, - TAG_ID.H3, - TAG_ID.H4, - TAG_ID.H5, - TAG_ID.H6, - TAG_ID.HEAD, - TAG_ID.HR, - TAG_ID.I, - TAG_ID.IMG, - TAG_ID.LI, - TAG_ID.LISTING, - TAG_ID.MENU, - TAG_ID.META, - TAG_ID.NOBR, - TAG_ID.OL, - TAG_ID.P, - TAG_ID.PRE, - TAG_ID.RUBY, - TAG_ID.S, - TAG_ID.SMALL, - TAG_ID.SPAN, - TAG_ID.STRONG, - TAG_ID.STRIKE, - TAG_ID.SUB, - TAG_ID.SUP, - TAG_ID.TABLE, - TAG_ID.TT, - TAG_ID.U, - TAG_ID.UL, - TAG_ID.VAR -]); -function causesExit(startTagToken) { - const tn = startTagToken.tagID; - const isFontWithAttrs = tn === TAG_ID.FONT && startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE); - return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); -} -function adjustTokenMathMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - if (token.attrs[i].name === DEFINITION_URL_ATTR) { - token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; - break; - } - } -} -function adjustTokenSVGAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrName != null) { - token.attrs[i].name = adjustedAttrName; - } - } -} -function adjustTokenXMLAttrs(token) { - for (let i = 0; i < token.attrs.length; i++) { - const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); - if (adjustedAttrEntry) { - token.attrs[i].prefix = adjustedAttrEntry.prefix; - token.attrs[i].name = adjustedAttrEntry.name; - token.attrs[i].namespace = adjustedAttrEntry.namespace; - } - } -} -function adjustTokenSVGTagName(token) { - const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); - if (adjustedTagName != null) { - token.tagName = adjustedTagName; - token.tagID = getTagID(token.tagName); - } -} -function isMathMLTextIntegrationPoint(tn, ns) { - return ns === NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT); -} -function isHtmlIntegrationPoint(tn, ns, attrs) { - if (ns === NS.MATHML && tn === TAG_ID.ANNOTATION_XML) { - for (let i = 0; i < attrs.length; i++) { - if (attrs[i].name === ATTRS.ENCODING) { - const value = attrs[i].value.toLowerCase(); - return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; - } - } - } - return ns === NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE); -} -function isIntegrationPoint(tn, ns, attrs, foreignNS) { - return (!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs) || (!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns); -} - -// node_modules/parse5/dist/parser/index.js -var HIDDEN_INPUT_TYPE = "hidden"; -var AA_OUTER_LOOP_ITER = 8; -var AA_INNER_LOOP_ITER = 3; -var InsertionMode; -(function(InsertionMode2) { - InsertionMode2[InsertionMode2["INITIAL"] = 0] = "INITIAL"; - InsertionMode2[InsertionMode2["BEFORE_HTML"] = 1] = "BEFORE_HTML"; - InsertionMode2[InsertionMode2["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD"] = 3] = "IN_HEAD"; - InsertionMode2[InsertionMode2["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; - InsertionMode2[InsertionMode2["AFTER_HEAD"] = 5] = "AFTER_HEAD"; - InsertionMode2[InsertionMode2["IN_BODY"] = 6] = "IN_BODY"; - InsertionMode2[InsertionMode2["TEXT"] = 7] = "TEXT"; - InsertionMode2[InsertionMode2["IN_TABLE"] = 8] = "IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; - InsertionMode2[InsertionMode2["IN_CAPTION"] = 10] = "IN_CAPTION"; - InsertionMode2[InsertionMode2["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; - InsertionMode2[InsertionMode2["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; - InsertionMode2[InsertionMode2["IN_ROW"] = 13] = "IN_ROW"; - InsertionMode2[InsertionMode2["IN_CELL"] = 14] = "IN_CELL"; - InsertionMode2[InsertionMode2["IN_SELECT"] = 15] = "IN_SELECT"; - InsertionMode2[InsertionMode2["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; - InsertionMode2[InsertionMode2["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; - InsertionMode2[InsertionMode2["AFTER_BODY"] = 18] = "AFTER_BODY"; - InsertionMode2[InsertionMode2["IN_FRAMESET"] = 19] = "IN_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; - InsertionMode2[InsertionMode2["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; - InsertionMode2[InsertionMode2["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; -})(InsertionMode || (InsertionMode = {})); -var BASE_LOC = { - startLine: -1, - startCol: -1, - startOffset: -1, - endLine: -1, - endCol: -1, - endOffset: -1 -}; -var TABLE_STRUCTURE_TAGS = /* @__PURE__ */ new Set([TAG_ID.TABLE, TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TR]); -var defaultParserOptions = { - scriptingEnabled: true, - sourceCodeLocationInfo: false, - treeAdapter: defaultTreeAdapter, - onParseError: null -}; -var Parser = class { - constructor(options, document, fragmentContext = null, scriptHandler = null) { - this.fragmentContext = fragmentContext; - this.scriptHandler = scriptHandler; - this.currentToken = null; - this.stopped = false; - this.insertionMode = InsertionMode.INITIAL; - this.originalInsertionMode = InsertionMode.INITIAL; - this.headElement = null; - this.formElement = null; - this.currentNotInHTML = false; - this.tmplInsertionModeStack = []; - this.pendingCharacterTokens = []; - this.hasNonWhitespacePendingCharacterToken = false; - this.framesetOk = true; - this.skipNextNewLine = false; - this.fosterParentingEnabled = false; - this.options = { - ...defaultParserOptions, - ...options - }; - this.treeAdapter = this.options.treeAdapter; - this.onParseError = this.options.onParseError; - if (this.onParseError) { - this.options.sourceCodeLocationInfo = true; - } - this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); - this.tokenizer = new Tokenizer(this.options, this); - this.activeFormattingElements = new FormattingElementList(this.treeAdapter); - this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN; - this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); - this.openElements = new OpenElementStack(this.document, this.treeAdapter, this); - } - // API - static parse(html, options) { - const parser = new this(options); - parser.tokenizer.write(html, true); - return parser.document; - } - static getFragmentParser(fragmentContext, options) { - const opts = { - ...defaultParserOptions, - ...options - }; - fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : fragmentContext = opts.treeAdapter.createElement(TAG_NAMES.TEMPLATE, NS.HTML, []); - const documentMock = opts.treeAdapter.createElement("documentmock", NS.HTML, []); - const parser = new this(opts, documentMock, fragmentContext); - if (parser.fragmentContextID === TAG_ID.TEMPLATE) { - parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - } - parser._initTokenizerForFragmentParsing(); - parser._insertFakeRootElement(); - parser._resetInsertionMode(); - parser._findFormInFragmentContext(); - return parser; - } - getFragment() { - const rootElement = this.treeAdapter.getFirstChild(this.document); - const fragment = this.treeAdapter.createDocumentFragment(); - this._adoptNodes(rootElement, fragment); - return fragment; - } - //Errors - /** @internal */ - _err(token, code, beforeToken) { - var _a2; - if (!this.onParseError) - return; - const loc = (_a2 = token.location) !== null && _a2 !== void 0 ? _a2 : BASE_LOC; - const err = { - code, - startLine: loc.startLine, - startCol: loc.startCol, - startOffset: loc.startOffset, - endLine: beforeToken ? loc.startLine : loc.endLine, - endCol: beforeToken ? loc.startCol : loc.endCol, - endOffset: beforeToken ? loc.startOffset : loc.endOffset - }; - this.onParseError(err); - } - //Stack events - /** @internal */ - onItemPush(node, tid, isTop) { - var _a2, _b; - (_b = (_a2 = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a2, node); - if (isTop && this.openElements.stackTop > 0) - this._setContextModes(node, tid); - } - /** @internal */ - onItemPop(node, isTop) { - var _a2, _b; - if (this.options.sourceCodeLocationInfo) { - this._setEndLocation(node, this.currentToken); - } - (_b = (_a2 = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a2, node, this.openElements.current); - if (isTop) { - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - this._setContextModes(current, currentTagId); - } - } - _setContextModes(current, tid) { - const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML; - this.currentNotInHTML = !isHTML; - this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current); - } - /** @protected */ - _switchToTextParsing(currentToken, nextTokenizerState) { - this._insertElement(currentToken, NS.HTML); - this.tokenizer.state = nextTokenizerState; - this.originalInsertionMode = this.insertionMode; - this.insertionMode = InsertionMode.TEXT; - } - switchToPlaintextParsing() { - this.insertionMode = InsertionMode.TEXT; - this.originalInsertionMode = InsertionMode.IN_BODY; - this.tokenizer.state = TokenizerMode.PLAINTEXT; - } - //Fragment parsing - /** @protected */ - _getAdjustedCurrentElement() { - return this.openElements.stackTop === 0 && this.fragmentContext ? this.fragmentContext : this.openElements.current; - } - /** @protected */ - _findFormInFragmentContext() { - let node = this.fragmentContext; - while (node) { - if (this.treeAdapter.getTagName(node) === TAG_NAMES.FORM) { - this.formElement = node; - break; - } - node = this.treeAdapter.getParentNode(node); - } - } - _initTokenizerForFragmentParsing() { - if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) { - return; - } - switch (this.fragmentContextID) { - case TAG_ID.TITLE: - case TAG_ID.TEXTAREA: { - this.tokenizer.state = TokenizerMode.RCDATA; - break; - } - case TAG_ID.STYLE: - case TAG_ID.XMP: - case TAG_ID.IFRAME: - case TAG_ID.NOEMBED: - case TAG_ID.NOFRAMES: - case TAG_ID.NOSCRIPT: { - this.tokenizer.state = TokenizerMode.RAWTEXT; - break; - } - case TAG_ID.SCRIPT: { - this.tokenizer.state = TokenizerMode.SCRIPT_DATA; - break; - } - case TAG_ID.PLAINTEXT: { - this.tokenizer.state = TokenizerMode.PLAINTEXT; - break; - } - default: - } - } - //Tree mutation - /** @protected */ - _setDocumentType(token) { - const name = token.name || ""; - const publicId = token.publicId || ""; - const systemId = token.systemId || ""; - this.treeAdapter.setDocumentType(this.document, name, publicId, systemId); - if (token.location) { - const documentChildren = this.treeAdapter.getChildNodes(this.document); - const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node)); - if (docTypeNode) { - this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location); - } - } - } - /** @protected */ - _attachElementToTree(element, location) { - if (this.options.sourceCodeLocationInfo) { - const loc = location && { - ...location, - startTag: location - }; - this.treeAdapter.setNodeSourceCodeLocation(element, loc); - } - if (this._shouldFosterParentOnInsertion()) { - this._fosterParentElement(element); - } else { - const parent = this.openElements.currentTmplContentOrNode; - this.treeAdapter.appendChild(parent, element); - } - } - /** - * For self-closing tags. Add an element to the tree, but skip adding it - * to the stack. - */ - /** @protected */ - _appendElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - } - /** @protected */ - _insertElement(token, namespaceURI) { - const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); - this._attachElementToTree(element, token.location); - this.openElements.push(element, token.tagID); - } - /** @protected */ - _insertFakeElement(tagName, tagID) { - const element = this.treeAdapter.createElement(tagName, NS.HTML, []); - this._attachElementToTree(element, null); - this.openElements.push(element, tagID); - } - /** @protected */ - _insertTemplate(token) { - const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs); - const content = this.treeAdapter.createDocumentFragment(); - this.treeAdapter.setTemplateContent(tmpl, content); - this._attachElementToTree(tmpl, token.location); - this.openElements.push(tmpl, token.tagID); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(content, null); - } - /** @protected */ - _insertFakeRootElement() { - const element = this.treeAdapter.createElement(TAG_NAMES.HTML, NS.HTML, []); - if (this.options.sourceCodeLocationInfo) - this.treeAdapter.setNodeSourceCodeLocation(element, null); - this.treeAdapter.appendChild(this.openElements.current, element); - this.openElements.push(element, TAG_ID.HTML); - } - /** @protected */ - _appendCommentNode(token, parent) { - const commentNode = this.treeAdapter.createCommentNode(token.data); - this.treeAdapter.appendChild(parent, commentNode); - if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location); - } - } - /** @protected */ - _insertCharacters(token) { - let parent; - let beforeElement; - if (this._shouldFosterParentOnInsertion()) { - ({ parent, beforeElement } = this._findFosterParentingLocation()); - if (beforeElement) { - this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement); - } else { - this.treeAdapter.insertText(parent, token.chars); - } - } else { - parent = this.openElements.currentTmplContentOrNode; - this.treeAdapter.insertText(parent, token.chars); - } - if (!token.location) - return; - const siblings = this.treeAdapter.getChildNodes(parent); - const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length; - const textNode = siblings[textNodeIdx - 1]; - const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode); - if (tnLoc) { - const { endLine, endCol, endOffset } = token.location; - this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset }); - } else if (this.options.sourceCodeLocationInfo) { - this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location); - } - } - /** @protected */ - _adoptNodes(donor, recipient) { - for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) { - this.treeAdapter.detachNode(child); - this.treeAdapter.appendChild(recipient, child); - } - } - /** @protected */ - _setEndLocation(element, closingToken) { - if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) { - const ctLoc = closingToken.location; - const tn = this.treeAdapter.getTagName(element); - const endLoc = ( - // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing - // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag. - closingToken.type === TokenType.END_TAG && tn === closingToken.tagName ? { - endTag: { ...ctLoc }, - endLine: ctLoc.endLine, - endCol: ctLoc.endCol, - endOffset: ctLoc.endOffset - } : { - endLine: ctLoc.startLine, - endCol: ctLoc.startCol, - endOffset: ctLoc.startOffset - } - ); - this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc); - } - } - //Token processing - shouldProcessStartTagTokenInForeignContent(token) { - if (!this.currentNotInHTML) - return false; - let current; - let currentTagId; - if (this.openElements.stackTop === 0 && this.fragmentContext) { - current = this.fragmentContext; - currentTagId = this.fragmentContextID; - } else { - ({ current, currentTagId } = this.openElements); - } - if (token.tagID === TAG_ID.SVG && this.treeAdapter.getTagName(current) === TAG_NAMES.ANNOTATION_XML && this.treeAdapter.getNamespaceURI(current) === NS.MATHML) { - return false; - } - return ( - // Check that `current` is not an integration point for HTML or MathML elements. - this.tokenizer.inForeignNode || // If it _is_ an integration point, then we might have to check that it is not an HTML - // integration point. - (token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) && !this._isIntegrationPoint(currentTagId, current, NS.HTML) - ); - } - /** @protected */ - _processToken(token) { - switch (token.type) { - case TokenType.CHARACTER: { - this.onCharacter(token); - break; - } - case TokenType.NULL_CHARACTER: { - this.onNullCharacter(token); - break; - } - case TokenType.COMMENT: { - this.onComment(token); - break; - } - case TokenType.DOCTYPE: { - this.onDoctype(token); - break; - } - case TokenType.START_TAG: { - this._processStartTag(token); - break; - } - case TokenType.END_TAG: { - this.onEndTag(token); - break; - } - case TokenType.EOF: { - this.onEof(token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - this.onWhitespaceCharacter(token); - break; - } - } - } - //Integration points - /** @protected */ - _isIntegrationPoint(tid, element, foreignNS) { - const ns = this.treeAdapter.getNamespaceURI(element); - const attrs = this.treeAdapter.getAttrList(element); - return isIntegrationPoint(tid, ns, attrs, foreignNS); - } - //Active formatting elements reconstruction - /** @protected */ - _reconstructActiveFormattingElements() { - const listLength = this.activeFormattingElements.entries.length; - if (listLength) { - const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element)); - const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1; - for (let i = unopenIdx; i >= 0; i--) { - const entry = this.activeFormattingElements.entries[i]; - this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element)); - entry.element = this.openElements.current; - } - } - } - //Close elements - /** @protected */ - _closeTableCell() { - this.openElements.generateImpliedEndTags(); - this.openElements.popUntilTableCellPopped(); - this.activeFormattingElements.clearToLastMarker(); - this.insertionMode = InsertionMode.IN_ROW; - } - /** @protected */ - _closePElement() { - this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P); - this.openElements.popUntilTagNamePopped(TAG_ID.P); - } - //Insertion modes - /** @protected */ - _resetInsertionMode() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) { - case TAG_ID.TR: { - this.insertionMode = InsertionMode.IN_ROW; - return; - } - case TAG_ID.TBODY: - case TAG_ID.THEAD: - case TAG_ID.TFOOT: { - this.insertionMode = InsertionMode.IN_TABLE_BODY; - return; - } - case TAG_ID.CAPTION: { - this.insertionMode = InsertionMode.IN_CAPTION; - return; - } - case TAG_ID.COLGROUP: { - this.insertionMode = InsertionMode.IN_COLUMN_GROUP; - return; - } - case TAG_ID.TABLE: { - this.insertionMode = InsertionMode.IN_TABLE; - return; - } - case TAG_ID.BODY: { - this.insertionMode = InsertionMode.IN_BODY; - return; - } - case TAG_ID.FRAMESET: { - this.insertionMode = InsertionMode.IN_FRAMESET; - return; - } - case TAG_ID.SELECT: { - this._resetInsertionModeForSelect(i); - return; - } - case TAG_ID.TEMPLATE: { - this.insertionMode = this.tmplInsertionModeStack[0]; - return; - } - case TAG_ID.HTML: { - this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD; - return; - } - case TAG_ID.TD: - case TAG_ID.TH: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_CELL; - return; - } - break; - } - case TAG_ID.HEAD: { - if (i > 0) { - this.insertionMode = InsertionMode.IN_HEAD; - return; - } - break; - } - } - } - this.insertionMode = InsertionMode.IN_BODY; - } - /** @protected */ - _resetInsertionModeForSelect(selectIdx) { - if (selectIdx > 0) { - for (let i = selectIdx - 1; i > 0; i--) { - const tn = this.openElements.tagIDs[i]; - if (tn === TAG_ID.TEMPLATE) { - break; - } else if (tn === TAG_ID.TABLE) { - this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE; - return; - } - } - } - this.insertionMode = InsertionMode.IN_SELECT; - } - //Foster parenting - /** @protected */ - _isElementCausesFosterParenting(tn) { - return TABLE_STRUCTURE_TAGS.has(tn); - } - /** @protected */ - _shouldFosterParentOnInsertion() { - return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId); - } - /** @protected */ - _findFosterParentingLocation() { - for (let i = this.openElements.stackTop; i >= 0; i--) { - const openElement = this.openElements.items[i]; - switch (this.openElements.tagIDs[i]) { - case TAG_ID.TEMPLATE: { - if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) { - return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null }; - } - break; - } - case TAG_ID.TABLE: { - const parent = this.treeAdapter.getParentNode(openElement); - if (parent) { - return { parent, beforeElement: openElement }; - } - return { parent: this.openElements.items[i - 1], beforeElement: null }; - } - default: - } - } - return { parent: this.openElements.items[0], beforeElement: null }; - } - /** @protected */ - _fosterParentElement(element) { - const location = this._findFosterParentingLocation(); - if (location.beforeElement) { - this.treeAdapter.insertBefore(location.parent, element, location.beforeElement); - } else { - this.treeAdapter.appendChild(location.parent, element); - } - } - //Special elements - /** @protected */ - _isSpecialElement(element, id) { - const ns = this.treeAdapter.getNamespaceURI(element); - return SPECIAL_ELEMENTS[ns].has(id); - } - /** @internal */ - onCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - characterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: { - characterInBody(this, token); - break; - } - case InsertionMode.TEXT: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - characterInTableText(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onNullCharacter(token) { - this.skipNextNewLine = false; - if (this.tokenizer.inForeignNode) { - nullCharacterInForeignContent(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.TEXT: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - tokenInColumnGroup(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - tokenAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onComment(token) { - this.skipNextNewLine = false; - if (this.currentNotInHTML) { - appendComment(this, token); - return; - } - switch (this.insertionMode) { - case InsertionMode.INITIAL: - case InsertionMode.BEFORE_HTML: - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - appendComment(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - appendCommentToRootHtmlElement(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - appendCommentToDocument(this, token); - break; - } - default: - } - } - /** @internal */ - onDoctype(token) { - this.skipNextNewLine = false; - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - doctypeInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: { - this._err(token, ERR.misplacedDoctype); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - default: - } - } - /** @internal */ - onStartTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - this._processStartTag(token); - if (token.selfClosing && !token.ackSelfClosing) { - this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus); - } - } - /** - * Processes a given start tag. - * - * `onStartTag` checks if a self-closing tag was recognized. When a token - * is moved inbetween multiple insertion modes, this check for self-closing - * could lead to false positives. To avoid this, `_processStartTag` is used - * for nested calls. - * - * @param token The token to process. - * @protected - */ - _processStartTag(token) { - if (this.shouldProcessStartTagTokenInForeignContent(token)) { - startTagInForeignContent(this, token); - } else { - this._startTagOutsideForeignContent(token); - } - } - /** @protected */ - _startTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - startTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - startTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - startTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - startTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - startTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - startTagInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: { - startTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - startTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - startTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - startTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - startTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - startTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - startTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - startTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - startTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - startTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - startTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - startTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - startTagAfterAfterBody(this, token); - break; - } - case InsertionMode.AFTER_AFTER_FRAMESET: { - startTagAfterAfterFrameset(this, token); - break; - } - default: - } - } - /** @internal */ - onEndTag(token) { - this.skipNextNewLine = false; - this.currentToken = token; - if (this.currentNotInHTML) { - endTagInForeignContent(this, token); - } else { - this._endTagOutsideForeignContent(token); - } - } - /** @protected */ - _endTagOutsideForeignContent(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - endTagBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - endTagBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - endTagInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - endTagInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - endTagAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: { - endTagInBody(this, token); - break; - } - case InsertionMode.TEXT: { - endTagInText(this, token); - break; - } - case InsertionMode.IN_TABLE: { - endTagInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_CAPTION: { - endTagInCaption(this, token); - break; - } - case InsertionMode.IN_COLUMN_GROUP: { - endTagInColumnGroup(this, token); - break; - } - case InsertionMode.IN_TABLE_BODY: { - endTagInTableBody(this, token); - break; - } - case InsertionMode.IN_ROW: { - endTagInRow(this, token); - break; - } - case InsertionMode.IN_CELL: { - endTagInCell(this, token); - break; - } - case InsertionMode.IN_SELECT: { - endTagInSelect(this, token); - break; - } - case InsertionMode.IN_SELECT_IN_TABLE: { - endTagInSelectInTable(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - endTagInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: { - endTagAfterBody(this, token); - break; - } - case InsertionMode.IN_FRAMESET: { - endTagInFrameset(this, token); - break; - } - case InsertionMode.AFTER_FRAMESET: { - endTagAfterFrameset(this, token); - break; - } - case InsertionMode.AFTER_AFTER_BODY: { - tokenAfterAfterBody(this, token); - break; - } - default: - } - } - /** @internal */ - onEof(token) { - switch (this.insertionMode) { - case InsertionMode.INITIAL: { - tokenInInitialMode(this, token); - break; - } - case InsertionMode.BEFORE_HTML: { - tokenBeforeHtml(this, token); - break; - } - case InsertionMode.BEFORE_HEAD: { - tokenBeforeHead(this, token); - break; - } - case InsertionMode.IN_HEAD: { - tokenInHead(this, token); - break; - } - case InsertionMode.IN_HEAD_NO_SCRIPT: { - tokenInHeadNoScript(this, token); - break; - } - case InsertionMode.AFTER_HEAD: { - tokenAfterHead(this, token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_TABLE: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: - case InsertionMode.IN_CELL: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: { - eofInBody(this, token); - break; - } - case InsertionMode.TEXT: { - eofInText(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - tokenInTableText(this, token); - break; - } - case InsertionMode.IN_TEMPLATE: { - eofInTemplate(this, token); - break; - } - case InsertionMode.AFTER_BODY: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - stopParsing(this, token); - break; - } - default: - } - } - /** @internal */ - onWhitespaceCharacter(token) { - if (this.skipNextNewLine) { - this.skipNextNewLine = false; - if (token.chars.charCodeAt(0) === CODE_POINTS.LINE_FEED) { - if (token.chars.length === 1) { - return; - } - token.chars = token.chars.substr(1); - } - } - if (this.tokenizer.inForeignNode) { - this._insertCharacters(token); - return; - } - switch (this.insertionMode) { - case InsertionMode.IN_HEAD: - case InsertionMode.IN_HEAD_NO_SCRIPT: - case InsertionMode.AFTER_HEAD: - case InsertionMode.TEXT: - case InsertionMode.IN_COLUMN_GROUP: - case InsertionMode.IN_SELECT: - case InsertionMode.IN_SELECT_IN_TABLE: - case InsertionMode.IN_FRAMESET: - case InsertionMode.AFTER_FRAMESET: { - this._insertCharacters(token); - break; - } - case InsertionMode.IN_BODY: - case InsertionMode.IN_CAPTION: - case InsertionMode.IN_CELL: - case InsertionMode.IN_TEMPLATE: - case InsertionMode.AFTER_BODY: - case InsertionMode.AFTER_AFTER_BODY: - case InsertionMode.AFTER_AFTER_FRAMESET: { - whitespaceCharacterInBody(this, token); - break; - } - case InsertionMode.IN_TABLE: - case InsertionMode.IN_TABLE_BODY: - case InsertionMode.IN_ROW: { - characterInTable(this, token); - break; - } - case InsertionMode.IN_TABLE_TEXT: { - whitespaceCharacterInTableText(this, token); - break; - } - default: - } - } -}; -function aaObtainFormattingElementEntry(p, token) { - let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName); - if (formattingElementEntry) { - if (!p.openElements.contains(formattingElementEntry.element)) { - p.activeFormattingElements.removeEntry(formattingElementEntry); - formattingElementEntry = null; - } else if (!p.openElements.hasInScope(token.tagID)) { - formattingElementEntry = null; - } - } else { - genericEndTagInBody(p, token); - } - return formattingElementEntry; -} -function aaObtainFurthestBlock(p, formattingElementEntry) { - let furthestBlock = null; - let idx = p.openElements.stackTop; - for (; idx >= 0; idx--) { - const element = p.openElements.items[idx]; - if (element === formattingElementEntry.element) { - break; - } - if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) { - furthestBlock = element; - } - } - if (!furthestBlock) { - p.openElements.shortenToLength(idx < 0 ? 0 : idx); - p.activeFormattingElements.removeEntry(formattingElementEntry); - } - return furthestBlock; -} -function aaInnerLoop(p, furthestBlock, formattingElement) { - let lastElement = furthestBlock; - let nextElement = p.openElements.getCommonAncestor(furthestBlock); - for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) { - nextElement = p.openElements.getCommonAncestor(element); - const elementEntry = p.activeFormattingElements.getElementEntry(element); - const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER; - const shouldRemoveFromOpenElements = !elementEntry || counterOverflow; - if (shouldRemoveFromOpenElements) { - if (counterOverflow) { - p.activeFormattingElements.removeEntry(elementEntry); - } - p.openElements.remove(element); - } else { - element = aaRecreateElementFromEntry(p, elementEntry); - if (lastElement === furthestBlock) { - p.activeFormattingElements.bookmark = elementEntry; - } - p.treeAdapter.detachNode(lastElement); - p.treeAdapter.appendChild(element, lastElement); - lastElement = element; - } - } - return lastElement; -} -function aaRecreateElementFromEntry(p, elementEntry) { - const ns = p.treeAdapter.getNamespaceURI(elementEntry.element); - const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs); - p.openElements.replace(elementEntry.element, newElement); - elementEntry.element = newElement; - return newElement; -} -function aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) { - const tn = p.treeAdapter.getTagName(commonAncestor); - const tid = getTagID(tn); - if (p._isElementCausesFosterParenting(tid)) { - p._fosterParentElement(lastElement); - } else { - const ns = p.treeAdapter.getNamespaceURI(commonAncestor); - if (tid === TAG_ID.TEMPLATE && ns === NS.HTML) { - commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor); - } - p.treeAdapter.appendChild(commonAncestor, lastElement); - } -} -function aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) { - const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element); - const { token } = formattingElementEntry; - const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs); - p._adoptNodes(furthestBlock, newElement); - p.treeAdapter.appendChild(furthestBlock, newElement); - p.activeFormattingElements.insertElementAfterBookmark(newElement, token); - p.activeFormattingElements.removeEntry(formattingElementEntry); - p.openElements.remove(formattingElementEntry.element); - p.openElements.insertAfter(furthestBlock, newElement, token.tagID); -} -function callAdoptionAgency(p, token) { - for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) { - const formattingElementEntry = aaObtainFormattingElementEntry(p, token); - if (!formattingElementEntry) { - break; - } - const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry); - if (!furthestBlock) { - break; - } - p.activeFormattingElements.bookmark = formattingElementEntry; - const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element); - const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element); - p.treeAdapter.detachNode(lastElement); - if (commonAncestor) - aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement); - aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry); - } -} -function appendComment(p, token) { - p._appendCommentNode(token, p.openElements.currentTmplContentOrNode); -} -function appendCommentToRootHtmlElement(p, token) { - p._appendCommentNode(token, p.openElements.items[0]); -} -function appendCommentToDocument(p, token) { - p._appendCommentNode(token, p.document); -} -function stopParsing(p, token) { - p.stopped = true; - if (token.location) { - const target = p.fragmentContext ? 0 : 2; - for (let i = p.openElements.stackTop; i >= target; i--) { - p._setEndLocation(p.openElements.items[i], token); - } - if (!p.fragmentContext && p.openElements.stackTop >= 0) { - const htmlElement = p.openElements.items[0]; - const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement); - if (htmlLocation && !htmlLocation.endTag) { - p._setEndLocation(htmlElement, token); - if (p.openElements.stackTop >= 1) { - const bodyElement = p.openElements.items[1]; - const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement); - if (bodyLocation && !bodyLocation.endTag) { - p._setEndLocation(bodyElement, token); - } - } - } - } - } -} -function doctypeInInitialMode(p, token) { - p._setDocumentType(token); - const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : getDocumentMode(token); - if (!isConforming(token)) { - p._err(token, ERR.nonConformingDoctype); - } - p.treeAdapter.setDocumentMode(p.document, mode); - p.insertionMode = InsertionMode.BEFORE_HTML; -} -function tokenInInitialMode(p, token) { - p._err(token, ERR.missingDoctype, true); - p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS); - p.insertionMode = InsertionMode.BEFORE_HTML; - p._processToken(token); -} -function startTagBeforeHtml(p, token) { - if (token.tagID === TAG_ID.HTML) { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.BEFORE_HEAD; - } else { - tokenBeforeHtml(p, token); - } -} -function endTagBeforeHtml(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HTML || tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.BR) { - tokenBeforeHtml(p, token); - } -} -function tokenBeforeHtml(p, token) { - p._insertFakeRootElement(); - p.insertionMode = InsertionMode.BEFORE_HEAD; - p._processToken(token); -} -function startTagBeforeHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.HEAD: { - p._insertElement(token, NS.HTML); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - default: { - tokenBeforeHead(p, token); - } - } -} -function endTagBeforeHead(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.HTML || tn === TAG_ID.BR) { - tokenBeforeHead(p, token); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } -} -function tokenBeforeHead(p, token) { - p._insertFakeElement(TAG_NAMES.HEAD, TAG_ID.HEAD); - p.headElement = p.openElements.current; - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); -} -function startTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TITLE: { - p._switchToTextParsing(token, TokenizerMode.RCDATA); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - } else { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT; - } - break; - } - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); - break; - } - case TAG_ID.SCRIPT: { - p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA); - break; - } - case TAG_ID.TEMPLATE: { - p._insertTemplate(token); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TEMPLATE; - p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenInHead(p, token); - } - } -} -function endTagInHead(p, token) { - switch (token.tagID) { - case TAG_ID.HEAD: { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - break; - } - case TAG_ID.BODY: - case TAG_ID.BR: - case TAG_ID.HTML: { - tokenInHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function templateEndTagInHead(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.generateImpliedEndTagsThoroughly(); - if (p.openElements.currentTagId !== TAG_ID.TEMPLATE) { - p._err(token, ERR.closingOfElementWithOpenChildElements); - } - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - } else { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } -} -function tokenInHead(p, token) { - p.openElements.pop(); - p.insertionMode = InsertionMode.AFTER_HEAD; - p._processToken(token); -} -function startTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.HEAD: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.STYLE: { - startTagInHead(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - p._err(token, ERR.nestedNoscriptInHead); - break; - } - default: { - tokenInHeadNoScript(p, token); - } - } -} -function endTagInHeadNoScript(p, token) { - switch (token.tagID) { - case TAG_ID.NOSCRIPT: { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - break; - } - case TAG_ID.BR: { - tokenInHeadNoScript(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function tokenInHeadNoScript(p, token) { - const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead; - p._err(token, errCode); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_HEAD; - p._processToken(token); -} -function startTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.BODY: { - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_BODY; - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - break; - } - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - p._err(token, ERR.abandonedHeadElementChild); - p.openElements.push(p.headElement, TAG_ID.HEAD); - startTagInHead(p, token); - p.openElements.remove(p.headElement); - break; - } - case TAG_ID.HEAD: { - p._err(token, ERR.misplacedStartTagForHeadElement); - break; - } - default: { - tokenAfterHead(p, token); - } - } -} -function endTagAfterHead(p, token) { - switch (token.tagID) { - case TAG_ID.BODY: - case TAG_ID.HTML: - case TAG_ID.BR: { - tokenAfterHead(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - p._err(token, ERR.endTagWithoutMatchingOpenElement); - } - } -} -function tokenAfterHead(p, token) { - p._insertFakeElement(TAG_NAMES.BODY, TAG_ID.BODY); - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function modeInBody(p, token) { - switch (token.type) { - case TokenType.CHARACTER: { - characterInBody(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInBody(p, token); - break; - } - case TokenType.COMMENT: { - appendComment(p, token); - break; - } - case TokenType.START_TAG: { - startTagInBody(p, token); - break; - } - case TokenType.END_TAG: { - endTagInBody(p, token); - break; - } - case TokenType.EOF: { - eofInBody(p, token); - break; - } - default: - } -} -function whitespaceCharacterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); -} -function characterInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertCharacters(token); - p.framesetOk = false; -} -function htmlStartTagInBody(p, token) { - if (p.openElements.tmplCount === 0) { - p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs); - } -} -function bodyStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement && p.openElements.tmplCount === 0) { - p.framesetOk = false; - p.treeAdapter.adoptAttributes(bodyElement, token.attrs); - } -} -function framesetStartTagInBody(p, token) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (p.framesetOk && bodyElement) { - p.treeAdapter.detachNode(bodyElement); - p.openElements.popAllUpToHtmlElement(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_FRAMESET; - } -} -function addressStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); -} -function numberedHeaderStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - if (NUMBERED_HEADERS.has(p.openElements.currentTagId)) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); -} -function preStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.framesetOk = false; -} -function formStartTagInBody(p, token) { - const inTemplate = p.openElements.tmplCount > 0; - if (!p.formElement || inTemplate) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - if (!inTemplate) { - p.formElement = p.openElements.current; - } - } -} -function listItemStartTagInBody(p, token) { - p.framesetOk = false; - const tn = token.tagID; - for (let i = p.openElements.stackTop; i >= 0; i--) { - const elementId = p.openElements.tagIDs[i]; - if (tn === TAG_ID.LI && elementId === TAG_ID.LI || (tn === TAG_ID.DD || tn === TAG_ID.DT) && (elementId === TAG_ID.DD || elementId === TAG_ID.DT)) { - p.openElements.generateImpliedEndTagsWithExclusion(elementId); - p.openElements.popUntilTagNamePopped(elementId); - break; - } - if (elementId !== TAG_ID.ADDRESS && elementId !== TAG_ID.DIV && elementId !== TAG_ID.P && p._isSpecialElement(p.openElements.items[i], elementId)) { - break; - } - } - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); -} -function plaintextStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.tokenizer.state = TokenizerMode.PLAINTEXT; -} -function buttonStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BUTTON)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.BUTTON); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; -} -function aStartTagInBody(p, token) { - const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TAG_NAMES.A); - if (activeElementEntry) { - callAdoptionAgency(p, token); - p.openElements.remove(activeElementEntry.element); - p.activeFormattingElements.removeEntry(activeElementEntry); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function bStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function nobrStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - if (p.openElements.hasInScope(TAG_ID.NOBR)) { - callAdoptionAgency(p, token); - p._reconstructActiveFormattingElements(); - } - p._insertElement(token, NS.HTML); - p.activeFormattingElements.pushElement(p.openElements.current, token); -} -function appletStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.activeFormattingElements.insertMarker(); - p.framesetOk = false; -} -function tableStartTagInBody(p, token) { - if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = InsertionMode.IN_TABLE; -} -function areaStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; -} -function isHiddenInput(token) { - const inputType = getTokenAttr(token, ATTRS.TYPE); - return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE; -} -function inputStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._appendElement(token, NS.HTML); - if (!isHiddenInput(token)) { - p.framesetOk = false; - } - token.ackSelfClosing = true; -} -function paramStartTagInBody(p, token) { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; -} -function hrStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._appendElement(token, NS.HTML); - p.framesetOk = false; - token.ackSelfClosing = true; -} -function imageStartTagInBody(p, token) { - token.tagName = TAG_NAMES.IMG; - token.tagID = TAG_ID.IMG; - areaStartTagInBody(p, token); -} -function textareaStartTagInBody(p, token) { - p._insertElement(token, NS.HTML); - p.skipNextNewLine = true; - p.tokenizer.state = TokenizerMode.RCDATA; - p.originalInsertionMode = p.insertionMode; - p.framesetOk = false; - p.insertionMode = InsertionMode.TEXT; -} -function xmpStartTagInBody(p, token) { - if (p.openElements.hasInButtonScope(TAG_ID.P)) { - p._closePElement(); - } - p._reconstructActiveFormattingElements(); - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function iframeStartTagInBody(p, token) { - p.framesetOk = false; - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function rawTextStartTagInBody(p, token) { - p._switchToTextParsing(token, TokenizerMode.RAWTEXT); -} -function selectStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); - p.framesetOk = false; - p.insertionMode = p.insertionMode === InsertionMode.IN_TABLE || p.insertionMode === InsertionMode.IN_CAPTION || p.insertionMode === InsertionMode.IN_TABLE_BODY || p.insertionMode === InsertionMode.IN_ROW || p.insertionMode === InsertionMode.IN_CELL ? InsertionMode.IN_SELECT_IN_TABLE : InsertionMode.IN_SELECT; -} -function optgroupStartTagInBody(p, token) { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); -} -function rbStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTags(); - } - p._insertElement(token, NS.HTML); -} -function rtStartTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.RUBY)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.RTC); - } - p._insertElement(token, NS.HTML); -} -function mathStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenMathMLAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.MATHML); - } else { - p._insertElement(token, NS.MATHML); - } - token.ackSelfClosing = true; -} -function svgStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - adjustTokenSVGAttrs(token); - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, NS.SVG); - } else { - p._insertElement(token, NS.SVG); - } - token.ackSelfClosing = true; -} -function genericStartTagInBody(p, token) { - p._reconstructActiveFormattingElements(); - p._insertElement(token, NS.HTML); -} -function startTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.B: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - bStartTagInBody(p, token); - break; - } - case TAG_ID.A: { - aStartTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderStartTagInBody(p, token); - break; - } - case TAG_ID.P: - case TAG_ID.DL: - case TAG_ID.OL: - case TAG_ID.UL: - case TAG_ID.DIV: - case TAG_ID.DIR: - case TAG_ID.NAV: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.DETAILS: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.SEARCH: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressStartTagInBody(p, token); - break; - } - case TAG_ID.LI: - case TAG_ID.DD: - case TAG_ID.DT: { - listItemStartTagInBody(p, token); - break; - } - case TAG_ID.BR: - case TAG_ID.IMG: - case TAG_ID.WBR: - case TAG_ID.AREA: - case TAG_ID.EMBED: - case TAG_ID.KEYGEN: { - areaStartTagInBody(p, token); - break; - } - case TAG_ID.HR: { - hrStartTagInBody(p, token); - break; - } - case TAG_ID.RB: - case TAG_ID.RTC: { - rbStartTagInBody(p, token); - break; - } - case TAG_ID.RT: - case TAG_ID.RP: { - rtStartTagInBody(p, token); - break; - } - case TAG_ID.PRE: - case TAG_ID.LISTING: { - preStartTagInBody(p, token); - break; - } - case TAG_ID.XMP: { - xmpStartTagInBody(p, token); - break; - } - case TAG_ID.SVG: { - svgStartTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlStartTagInBody(p, token); - break; - } - case TAG_ID.BASE: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.STYLE: - case TAG_ID.TITLE: - case TAG_ID.SCRIPT: - case TAG_ID.BGSOUND: - case TAG_ID.BASEFONT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.BODY: { - bodyStartTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInBody(p, token); - break; - } - case TAG_ID.NOBR: { - nobrStartTagInBody(p, token); - break; - } - case TAG_ID.MATH: { - mathStartTagInBody(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInBody(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInBody(p, token); - break; - } - case TAG_ID.PARAM: - case TAG_ID.TRACK: - case TAG_ID.SOURCE: { - paramStartTagInBody(p, token); - break; - } - case TAG_ID.IMAGE: { - imageStartTagInBody(p, token); - break; - } - case TAG_ID.BUTTON: { - buttonStartTagInBody(p, token); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletStartTagInBody(p, token); - break; - } - case TAG_ID.IFRAME: { - iframeStartTagInBody(p, token); - break; - } - case TAG_ID.SELECT: { - selectStartTagInBody(p, token); - break; - } - case TAG_ID.OPTION: - case TAG_ID.OPTGROUP: { - optgroupStartTagInBody(p, token); - break; - } - case TAG_ID.NOEMBED: - case TAG_ID.NOFRAMES: { - rawTextStartTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - framesetStartTagInBody(p, token); - break; - } - case TAG_ID.TEXTAREA: { - textareaStartTagInBody(p, token); - break; - } - case TAG_ID.NOSCRIPT: { - if (p.options.scriptingEnabled) { - rawTextStartTagInBody(p, token); - } else { - genericStartTagInBody(p, token); - } - break; - } - case TAG_ID.PLAINTEXT: { - plaintextStartTagInBody(p, token); - break; - } - case TAG_ID.COL: - case TAG_ID.TH: - case TAG_ID.TD: - case TAG_ID.TR: - case TAG_ID.HEAD: - case TAG_ID.FRAME: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: { - break; - } - default: { - genericStartTagInBody(p, token); - } - } -} -function bodyEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - if (p.options.sourceCodeLocationInfo) { - const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); - if (bodyElement) { - p._setEndLocation(bodyElement, token); - } - } - } -} -function htmlEndTagInBody(p, token) { - if (p.openElements.hasInScope(TAG_ID.BODY)) { - p.insertionMode = InsertionMode.AFTER_BODY; - endTagAfterBody(p, token); - } -} -function addressEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - } -} -function formEndTagInBody(p) { - const inTemplate = p.openElements.tmplCount > 0; - const { formElement } = p; - if (!inTemplate) { - p.formElement = null; - } - if ((formElement || inTemplate) && p.openElements.hasInScope(TAG_ID.FORM)) { - p.openElements.generateImpliedEndTags(); - if (inTemplate) { - p.openElements.popUntilTagNamePopped(TAG_ID.FORM); - } else if (formElement) { - p.openElements.remove(formElement); - } - } -} -function pEndTagInBody(p) { - if (!p.openElements.hasInButtonScope(TAG_ID.P)) { - p._insertFakeElement(TAG_NAMES.P, TAG_ID.P); - } - p._closePElement(); -} -function liEndTagInBody(p) { - if (p.openElements.hasInListItemScope(TAG_ID.LI)) { - p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.LI); - p.openElements.popUntilTagNamePopped(TAG_ID.LI); - } -} -function ddEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tn); - p.openElements.popUntilTagNamePopped(tn); - } -} -function numberedHeaderEndTagInBody(p) { - if (p.openElements.hasNumberedHeaderInScope()) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilNumberedHeaderPopped(); - } -} -function appletEndTagInBody(p, token) { - const tn = token.tagID; - if (p.openElements.hasInScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - } -} -function brEndTagInBody(p) { - p._reconstructActiveFormattingElements(); - p._insertFakeElement(TAG_NAMES.BR, TAG_ID.BR); - p.openElements.pop(); - p.framesetOk = false; -} -function genericEndTagInBody(p, token) { - const tn = token.tagName; - const tid = token.tagID; - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - const elementId = p.openElements.tagIDs[i]; - if (tid === elementId && (tid !== TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) { - p.openElements.generateImpliedEndTagsWithExclusion(tid); - if (p.openElements.stackTop >= i) - p.openElements.shortenToLength(i); - break; - } - if (p._isSpecialElement(element, elementId)) { - break; - } - } -} -function endTagInBody(p, token) { - switch (token.tagID) { - case TAG_ID.A: - case TAG_ID.B: - case TAG_ID.I: - case TAG_ID.S: - case TAG_ID.U: - case TAG_ID.EM: - case TAG_ID.TT: - case TAG_ID.BIG: - case TAG_ID.CODE: - case TAG_ID.FONT: - case TAG_ID.NOBR: - case TAG_ID.SMALL: - case TAG_ID.STRIKE: - case TAG_ID.STRONG: { - callAdoptionAgency(p, token); - break; - } - case TAG_ID.P: { - pEndTagInBody(p); - break; - } - case TAG_ID.DL: - case TAG_ID.UL: - case TAG_ID.OL: - case TAG_ID.DIR: - case TAG_ID.DIV: - case TAG_ID.NAV: - case TAG_ID.PRE: - case TAG_ID.MAIN: - case TAG_ID.MENU: - case TAG_ID.ASIDE: - case TAG_ID.BUTTON: - case TAG_ID.CENTER: - case TAG_ID.FIGURE: - case TAG_ID.FOOTER: - case TAG_ID.HEADER: - case TAG_ID.HGROUP: - case TAG_ID.DIALOG: - case TAG_ID.ADDRESS: - case TAG_ID.ARTICLE: - case TAG_ID.DETAILS: - case TAG_ID.SEARCH: - case TAG_ID.SECTION: - case TAG_ID.SUMMARY: - case TAG_ID.LISTING: - case TAG_ID.FIELDSET: - case TAG_ID.BLOCKQUOTE: - case TAG_ID.FIGCAPTION: { - addressEndTagInBody(p, token); - break; - } - case TAG_ID.LI: { - liEndTagInBody(p); - break; - } - case TAG_ID.DD: - case TAG_ID.DT: { - ddEndTagInBody(p, token); - break; - } - case TAG_ID.H1: - case TAG_ID.H2: - case TAG_ID.H3: - case TAG_ID.H4: - case TAG_ID.H5: - case TAG_ID.H6: { - numberedHeaderEndTagInBody(p); - break; - } - case TAG_ID.BR: { - brEndTagInBody(p); - break; - } - case TAG_ID.BODY: { - bodyEndTagInBody(p, token); - break; - } - case TAG_ID.HTML: { - htmlEndTagInBody(p, token); - break; - } - case TAG_ID.FORM: { - formEndTagInBody(p); - break; - } - case TAG_ID.APPLET: - case TAG_ID.OBJECT: - case TAG_ID.MARQUEE: { - appletEndTagInBody(p, token); - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: { - genericEndTagInBody(p, token); - } - } -} -function eofInBody(p, token) { - if (p.tmplInsertionModeStack.length > 0) { - eofInTemplate(p, token); - } else { - stopParsing(p, token); - } -} -function endTagInText(p, token) { - var _a2; - if (token.tagID === TAG_ID.SCRIPT) { - (_a2 = p.scriptHandler) === null || _a2 === void 0 ? void 0 : _a2.call(p, p.openElements.current); - } - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; -} -function eofInText(p, token) { - p._err(token, ERR.eofInElementThatCanContainOnlyText); - p.openElements.pop(); - p.insertionMode = p.originalInsertionMode; - p.onEof(token); -} -function characterInTable(p, token) { - if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) { - p.pendingCharacterTokens.length = 0; - p.hasNonWhitespacePendingCharacterToken = false; - p.originalInsertionMode = p.insertionMode; - p.insertionMode = InsertionMode.IN_TABLE_TEXT; - switch (token.type) { - case TokenType.CHARACTER: { - characterInTableText(p, token); - break; - } - case TokenType.WHITESPACE_CHARACTER: { - whitespaceCharacterInTableText(p, token); - break; - } - } - } else { - tokenInTable(p, token); - } -} -function captionStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p.activeFormattingElements.insertMarker(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CAPTION; -} -function colgroupStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; -} -function colStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.COLGROUP, TAG_ID.COLGROUP); - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); -} -function tbodyStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_TABLE_BODY; -} -function tdStartTagInTable(p, token) { - p.openElements.clearBackToTableContext(); - p._insertFakeElement(TAG_NAMES.TBODY, TAG_ID.TBODY); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); -} -function tableStartTagInTable(p, token) { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - p._processStartTag(token); - } -} -function inputStartTagInTable(p, token) { - if (isHiddenInput(token)) { - p._appendElement(token, NS.HTML); - } else { - tokenInTable(p, token); - } - token.ackSelfClosing = true; -} -function formStartTagInTable(p, token) { - if (!p.formElement && p.openElements.tmplCount === 0) { - p._insertElement(token, NS.HTML); - p.formElement = p.openElements.current; - p.openElements.pop(); - } -} -function startTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - tdStartTagInTable(p, token); - break; - } - case TAG_ID.STYLE: - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - case TAG_ID.COL: { - colStartTagInTable(p, token); - break; - } - case TAG_ID.FORM: { - formStartTagInTable(p, token); - break; - } - case TAG_ID.TABLE: { - tableStartTagInTable(p, token); - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - tbodyStartTagInTable(p, token); - break; - } - case TAG_ID.INPUT: { - inputStartTagInTable(p, token); - break; - } - case TAG_ID.CAPTION: { - captionStartTagInTable(p, token); - break; - } - case TAG_ID.COLGROUP: { - colgroupStartTagInTable(p, token); - break; - } - default: { - tokenInTable(p, token); - } - } -} -function endTagInTable(p, token) { - switch (token.tagID) { - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TABLE)) { - p.openElements.popUntilTagNamePopped(TAG_ID.TABLE); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - tokenInTable(p, token); - } - } -} -function tokenInTable(p, token) { - const savedFosterParentingState = p.fosterParentingEnabled; - p.fosterParentingEnabled = true; - modeInBody(p, token); - p.fosterParentingEnabled = savedFosterParentingState; -} -function whitespaceCharacterInTableText(p, token) { - p.pendingCharacterTokens.push(token); -} -function characterInTableText(p, token) { - p.pendingCharacterTokens.push(token); - p.hasNonWhitespacePendingCharacterToken = true; -} -function tokenInTableText(p, token) { - let i = 0; - if (p.hasNonWhitespacePendingCharacterToken) { - for (; i < p.pendingCharacterTokens.length; i++) { - tokenInTable(p, p.pendingCharacterTokens[i]); - } - } else { - for (; i < p.pendingCharacterTokens.length; i++) { - p._insertCharacters(p.pendingCharacterTokens[i]); - } - } - p.insertionMode = p.originalInsertionMode; - p._processToken(token); -} -var TABLE_VOID_ELEMENTS = /* @__PURE__ */ new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]); -function startTagInCaption(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - } else { - startTagInBody(p, token); - } -} -function endTagInCaption(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.CAPTION: - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_TABLE; - if (tn === TAG_ID.TABLE) { - endTagInTable(p, token); - } - } - break; - } - case TAG_ID.BODY: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TBODY: - case TAG_ID.TD: - case TAG_ID.TFOOT: - case TAG_ID.TH: - case TAG_ID.THEAD: - case TAG_ID.TR: { - break; - } - default: { - endTagInBody(p, token); - } - } -} -function startTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.COL: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: { - tokenInColumnGroup(p, token); - } - } -} -function endTagInColumnGroup(p, token) { - switch (token.tagID) { - case TAG_ID.COLGROUP: { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - case TAG_ID.COL: { - break; - } - default: { - tokenInColumnGroup(p, token); - } - } -} -function tokenInColumnGroup(p, token) { - if (p.openElements.currentTagId === TAG_ID.COLGROUP) { - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - p._processToken(token); - } -} -function startTagInTableBody(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - p.openElements.clearBackToTableBodyContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_ROW; - break; - } - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableBodyContext(); - p._insertFakeElement(TAG_NAMES.TR, TAG_ID.TR); - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } -} -function endTagInTableBody(p, token) { - const tn = token.tagID; - switch (token.tagID) { - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasTableBodyContextInTableScope()) { - p.openElements.clearBackToTableBodyContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE; - endTagInTable(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: - case TAG_ID.TR: { - break; - } - default: { - endTagInTable(p, token); - } - } -} -function startTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TH: - case TAG_ID.TD: { - p.openElements.clearBackToTableRowContext(); - p._insertElement(token, NS.HTML); - p.insertionMode = InsertionMode.IN_CELL; - p.activeFormattingElements.insertMarker(); - break; - } - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - } - break; - } - default: { - startTagInTable(p, token); - } - } -} -function endTagInRow(p, token) { - switch (token.tagID) { - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - } - break; - } - case TAG_ID.TABLE: { - if (p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(TAG_ID.TR)) { - p.openElements.clearBackToTableRowContext(); - p.openElements.pop(); - p.insertionMode = InsertionMode.IN_TABLE_BODY; - endTagInTableBody(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: - case TAG_ID.TD: - case TAG_ID.TH: { - break; - } - default: { - endTagInTable(p, token); - } - } -} -function startTagInCell(p, token) { - const tn = token.tagID; - if (TABLE_VOID_ELEMENTS.has(tn)) { - if (p.openElements.hasInTableScope(TAG_ID.TD) || p.openElements.hasInTableScope(TAG_ID.TH)) { - p._closeTableCell(); - startTagInRow(p, token); - } - } else { - startTagInBody(p, token); - } -} -function endTagInCell(p, token) { - const tn = token.tagID; - switch (tn) { - case TAG_ID.TD: - case TAG_ID.TH: { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.generateImpliedEndTags(); - p.openElements.popUntilTagNamePopped(tn); - p.activeFormattingElements.clearToLastMarker(); - p.insertionMode = InsertionMode.IN_ROW; - } - break; - } - case TAG_ID.TABLE: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: - case TAG_ID.TR: { - if (p.openElements.hasInTableScope(tn)) { - p._closeTableCell(); - endTagInRow(p, token); - } - break; - } - case TAG_ID.BODY: - case TAG_ID.CAPTION: - case TAG_ID.COL: - case TAG_ID.COLGROUP: - case TAG_ID.HTML: { - break; - } - default: { - endTagInBody(p, token); - } - } -} -function startTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.OPTGROUP: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.HR: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.INPUT: - case TAG_ID.KEYGEN: - case TAG_ID.TEXTAREA: - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - if (token.tagID !== TAG_ID.SELECT) { - p._processStartTag(token); - } - } - break; - } - case TAG_ID.SCRIPT: - case TAG_ID.TEMPLATE: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagInSelect(p, token) { - switch (token.tagID) { - case TAG_ID.OPTGROUP: { - if (p.openElements.stackTop > 0 && p.openElements.currentTagId === TAG_ID.OPTION && p.openElements.tagIDs[p.openElements.stackTop - 1] === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - if (p.openElements.currentTagId === TAG_ID.OPTGROUP) { - p.openElements.pop(); - } - break; - } - case TAG_ID.OPTION: { - if (p.openElements.currentTagId === TAG_ID.OPTION) { - p.openElements.pop(); - } - break; - } - case TAG_ID.SELECT: { - if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - } - break; - } - case TAG_ID.TEMPLATE: { - templateEndTagInHead(p, token); - break; - } - default: - } -} -function startTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p._processStartTag(token); - } else { - startTagInSelect(p, token); - } -} -function endTagInSelectInTable(p, token) { - const tn = token.tagID; - if (tn === TAG_ID.CAPTION || tn === TAG_ID.TABLE || tn === TAG_ID.TBODY || tn === TAG_ID.TFOOT || tn === TAG_ID.THEAD || tn === TAG_ID.TR || tn === TAG_ID.TD || tn === TAG_ID.TH) { - if (p.openElements.hasInTableScope(tn)) { - p.openElements.popUntilTagNamePopped(TAG_ID.SELECT); - p._resetInsertionMode(); - p.onEndTag(token); - } - } else { - endTagInSelect(p, token); - } -} -function startTagInTemplate(p, token) { - switch (token.tagID) { - // First, handle tags that can start without a mode change - case TAG_ID.BASE: - case TAG_ID.BASEFONT: - case TAG_ID.BGSOUND: - case TAG_ID.LINK: - case TAG_ID.META: - case TAG_ID.NOFRAMES: - case TAG_ID.SCRIPT: - case TAG_ID.STYLE: - case TAG_ID.TEMPLATE: - case TAG_ID.TITLE: { - startTagInHead(p, token); - break; - } - // Re-process the token in the appropriate mode - case TAG_ID.CAPTION: - case TAG_ID.COLGROUP: - case TAG_ID.TBODY: - case TAG_ID.TFOOT: - case TAG_ID.THEAD: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE; - p.insertionMode = InsertionMode.IN_TABLE; - startTagInTable(p, token); - break; - } - case TAG_ID.COL: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP; - p.insertionMode = InsertionMode.IN_COLUMN_GROUP; - startTagInColumnGroup(p, token); - break; - } - case TAG_ID.TR: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY; - p.insertionMode = InsertionMode.IN_TABLE_BODY; - startTagInTableBody(p, token); - break; - } - case TAG_ID.TD: - case TAG_ID.TH: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW; - p.insertionMode = InsertionMode.IN_ROW; - startTagInRow(p, token); - break; - } - default: { - p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY; - p.insertionMode = InsertionMode.IN_BODY; - startTagInBody(p, token); - } - } -} -function endTagInTemplate(p, token) { - if (token.tagID === TAG_ID.TEMPLATE) { - templateEndTagInHead(p, token); - } -} -function eofInTemplate(p, token) { - if (p.openElements.tmplCount > 0) { - p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE); - p.activeFormattingElements.clearToLastMarker(); - p.tmplInsertionModeStack.shift(); - p._resetInsertionMode(); - p.onEof(token); - } else { - stopParsing(p, token); - } -} -function startTagAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterBody(p, token); - } -} -function endTagAfterBody(p, token) { - var _a2; - if (token.tagID === TAG_ID.HTML) { - if (!p.fragmentContext) { - p.insertionMode = InsertionMode.AFTER_AFTER_BODY; - } - if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === TAG_ID.HTML) { - p._setEndLocation(p.openElements.items[0], token); - const bodyElement = p.openElements.items[1]; - if (bodyElement && !((_a2 = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a2 === void 0 ? void 0 : _a2.endTag)) { - p._setEndLocation(bodyElement, token); - } - } - } else { - tokenAfterBody(p, token); - } -} -function tokenAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function startTagInFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.FRAMESET: { - p._insertElement(token, NS.HTML); - break; - } - case TAG_ID.FRAME: { - p._appendElement(token, NS.HTML); - token.ackSelfClosing = true; - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagInFrameset(p, token) { - if (token.tagID === TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) { - p.openElements.pop(); - if (!p.fragmentContext && p.openElements.currentTagId !== TAG_ID.FRAMESET) { - p.insertionMode = InsertionMode.AFTER_FRAMESET; - } - } -} -function startTagAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function endTagAfterFrameset(p, token) { - if (token.tagID === TAG_ID.HTML) { - p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET; - } -} -function startTagAfterAfterBody(p, token) { - if (token.tagID === TAG_ID.HTML) { - startTagInBody(p, token); - } else { - tokenAfterAfterBody(p, token); - } -} -function tokenAfterAfterBody(p, token) { - p.insertionMode = InsertionMode.IN_BODY; - modeInBody(p, token); -} -function startTagAfterAfterFrameset(p, token) { - switch (token.tagID) { - case TAG_ID.HTML: { - startTagInBody(p, token); - break; - } - case TAG_ID.NOFRAMES: { - startTagInHead(p, token); - break; - } - default: - } -} -function nullCharacterInForeignContent(p, token) { - token.chars = REPLACEMENT_CHARACTER; - p._insertCharacters(token); -} -function characterInForeignContent(p, token) { - p._insertCharacters(token); - p.framesetOk = false; -} -function popUntilHtmlOrIntegrationPoint(p) { - while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML && !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) { - p.openElements.pop(); - } -} -function startTagInForeignContent(p, token) { - if (causesExit(token)) { - popUntilHtmlOrIntegrationPoint(p); - p._startTagOutsideForeignContent(token); - } else { - const current = p._getAdjustedCurrentElement(); - const currentNs = p.treeAdapter.getNamespaceURI(current); - if (currentNs === NS.MATHML) { - adjustTokenMathMLAttrs(token); - } else if (currentNs === NS.SVG) { - adjustTokenSVGTagName(token); - adjustTokenSVGAttrs(token); - } - adjustTokenXMLAttrs(token); - if (token.selfClosing) { - p._appendElement(token, currentNs); - } else { - p._insertElement(token, currentNs); - } - token.ackSelfClosing = true; - } -} -function endTagInForeignContent(p, token) { - if (token.tagID === TAG_ID.P || token.tagID === TAG_ID.BR) { - popUntilHtmlOrIntegrationPoint(p); - p._endTagOutsideForeignContent(token); - return; - } - for (let i = p.openElements.stackTop; i > 0; i--) { - const element = p.openElements.items[i]; - if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) { - p._endTagOutsideForeignContent(token); - break; - } - const tagName = p.treeAdapter.getTagName(element); - if (tagName.toLowerCase() === token.tagName) { - token.tagName = tagName; - p.openElements.shortenToLength(i); - break; - } - } -} - -// node_modules/entities/lib/esm/escape.js -var xmlCodeMap = /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"] -]); -var getCodePoint = ( - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - String.prototype.codePointAt != null ? (str, index) => str.codePointAt(index) : ( - // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - (c, index) => (c.charCodeAt(index) & 64512) === 55296 ? (c.charCodeAt(index) - 55296) * 1024 + c.charCodeAt(index + 1) - 56320 + 65536 : c.charCodeAt(index) - ) -); -function getEscaper(regex, map) { - return function escape(data) { - let match; - let lastIdx = 0; - let result = ""; - while (match = regex.exec(data)) { - if (lastIdx !== match.index) { - result += data.substring(lastIdx, match.index); - } - result += map.get(match[0].charCodeAt(0)); - lastIdx = match.index + 1; - } - return result + data.substring(lastIdx); - }; -} -var escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); -var escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([ - [34, """], - [38, "&"], - [160, " "] -])); -var escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] -])); - -// node_modules/parse5/dist/serializer/index.js -var VOID_ELEMENTS = /* @__PURE__ */ new Set([ - TAG_NAMES.AREA, - TAG_NAMES.BASE, - TAG_NAMES.BASEFONT, - TAG_NAMES.BGSOUND, - TAG_NAMES.BR, - TAG_NAMES.COL, - TAG_NAMES.EMBED, - TAG_NAMES.FRAME, - TAG_NAMES.HR, - TAG_NAMES.IMG, - TAG_NAMES.INPUT, - TAG_NAMES.KEYGEN, - TAG_NAMES.LINK, - TAG_NAMES.META, - TAG_NAMES.PARAM, - TAG_NAMES.SOURCE, - TAG_NAMES.TRACK, - TAG_NAMES.WBR -]); -function isVoidElement(node, options) { - return options.treeAdapter.isElementNode(node) && options.treeAdapter.getNamespaceURI(node) === NS.HTML && VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)); -} -var defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true }; -function serialize(node, options) { - const opts = { ...defaultOpts, ...options }; - if (isVoidElement(node, opts)) { - return ""; - } - return serializeChildNodes(node, opts); -} -function serializeOuter(node, options) { - const opts = { ...defaultOpts, ...options }; - return serializeNode(node, opts); -} -function serializeChildNodes(parentNode, options) { - let html = ""; - const container = options.treeAdapter.isElementNode(parentNode) && options.treeAdapter.getTagName(parentNode) === TAG_NAMES.TEMPLATE && options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML ? options.treeAdapter.getTemplateContent(parentNode) : parentNode; - const childNodes = options.treeAdapter.getChildNodes(container); - if (childNodes) { - for (const currentNode of childNodes) { - html += serializeNode(currentNode, options); - } - } - return html; -} -function serializeNode(node, options) { - if (options.treeAdapter.isElementNode(node)) { - return serializeElement(node, options); - } - if (options.treeAdapter.isTextNode(node)) { - return serializeTextNode(node, options); - } - if (options.treeAdapter.isCommentNode(node)) { - return serializeCommentNode(node, options); - } - if (options.treeAdapter.isDocumentTypeNode(node)) { - return serializeDocumentTypeNode(node, options); - } - return ""; -} -function serializeElement(node, options) { - const tn = options.treeAdapter.getTagName(node); - return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? "" : `${serializeChildNodes(node, options)}</${tn}>`}`; -} -function serializeAttributes(node, { treeAdapter }) { - let html = ""; - for (const attr of treeAdapter.getAttrList(node)) { - html += " "; - if (attr.namespace) { - switch (attr.namespace) { - case NS.XML: { - html += `xml:${attr.name}`; - break; - } - case NS.XMLNS: { - if (attr.name !== "xmlns") { - html += "xmlns:"; - } - html += attr.name; - break; - } - case NS.XLINK: { - html += `xlink:${attr.name}`; - break; - } - default: { - html += `${attr.prefix}:${attr.name}`; - } - } - } else { - html += attr.name; - } - html += `="${escapeAttribute(attr.value)}"`; - } - return html; -} -function serializeTextNode(node, options) { - const { treeAdapter } = options; - const content = treeAdapter.getTextNodeContent(node); - const parent = treeAdapter.getParentNode(node); - const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent); - return parentTn && treeAdapter.getNamespaceURI(parent) === NS.HTML && hasUnescapedText(parentTn, options.scriptingEnabled) ? content : escapeText(content); -} -function serializeCommentNode(node, { treeAdapter }) { - return `<!--${treeAdapter.getCommentNodeContent(node)}-->`; -} -function serializeDocumentTypeNode(node, { treeAdapter }) { - return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`; -} - -// node_modules/parse5/dist/index.js -function parse(html, options) { - return Parser.parse(html, options); -} -function parseFragment(fragmentContext, html, options) { - if (typeof fragmentContext === "string") { - options = html; - html = fragmentContext; - fragmentContext = null; - } - const parser = Parser.getFragmentParser(fragmentContext, options); - parser.tokenizer.write(html, true); - return parser.getFragment(); -} -export { - ERR as ErrorCodes, - Parser, - token_exports as Token, - Tokenizer, - TokenizerMode, - defaultTreeAdapter, - foreign_content_exports as foreignContent, - html_exports as html, - parse, - parseFragment, - serialize, - serializeOuter -}; -//# sourceMappingURL=parse5.js.map diff --git a/vendor/yomitan/lib/parse5.js.map b/vendor/yomitan/lib/parse5.js.map deleted file mode 100644 index 09aa20a0..00000000 --- a/vendor/yomitan/lib/parse5.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/parse5/dist/common/unicode.js", "../../node_modules/parse5/dist/common/error-codes.js", "../../node_modules/parse5/dist/tokenizer/preprocessor.js", "../../node_modules/parse5/dist/common/token.js", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts", "../../node_modules/parse5/dist/common/html.js", "../../node_modules/parse5/dist/tokenizer/index.js", "../../node_modules/parse5/dist/parser/open-element-stack.js", "../../node_modules/parse5/dist/parser/formatting-element-list.js", "../../node_modules/parse5/dist/tree-adapters/default.js", "../../node_modules/parse5/dist/common/doctype.js", "../../node_modules/parse5/dist/common/foreign-content.js", "../../node_modules/parse5/dist/parser/index.js", "https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/escape.ts", "../../node_modules/parse5/dist/serializer/index.js", "../../node_modules/parse5/dist/index.js"], - "sourcesContent": ["const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n})(CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n", "export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR || (ERR = {}));\n", "import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code, cpOffset) {\n const { line, col, offset } = this;\n const startCol = col + cpOffset;\n const startOffset = offset + cpOffset;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol,\n endCol: startCol,\n startOffset,\n endOffset: startOffset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code, 0));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n", "export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n", null, null, null, null, "/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SEARCH\"] = \"search\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SEARCH\"] = 94] = \"SEARCH\";\n TAG_ID[TAG_ID[\"SECTION\"] = 95] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 96] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 97] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 98] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 99] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 100] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 101] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 102] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 103] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 104] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 105] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 106] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 107] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 108] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 109] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 110] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 111] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 112] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 113] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 114] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 115] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 116] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 117] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 118] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 119] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 120] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 121] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 122] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 123] = \"XMP\";\n})(TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SEARCH, TAG_ID.SEARCH],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport const NUMBERED_HEADERS = new Set([$.H1, $.H2, $.H3, $.H4, $.H5, $.H6]);\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n", "import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, EntityDecoder, DecodingMode } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 72] = \"AMBIGUOUS_AMPERSAND\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\nfunction getErrorForNumericCharacterReference(code) {\n if (code === $.NULL) {\n return ERR.nullCharacterReference;\n }\n else if (code > 1114111) {\n return ERR.characterReferenceOutsideUnicodeRange;\n }\n else if (isSurrogate(code)) {\n return ERR.surrogateCharacterReference;\n }\n else if (isUndefinedCodePoint(code)) {\n return ERR.noncharacterCharacterReference;\n }\n else if (isControlCodePoint(code) || code === $.CARRIAGE_RETURN) {\n return ERR.controlCharacterReference;\n }\n return null;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.entityStartPos = 0;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n this.entityDecoder = new EntityDecoder(htmlDecodeTree, (cp, consumed) => {\n // Note: Set `pos` _before_ flushing, as flushing might drop\n // the current chunk and invalidate `entityStartPos`.\n this.preprocessor.pos = this.entityStartPos + consumed - 1;\n this._flushCodePointConsumedAsCharacterReference(cp);\n }, handler.onParseError\n ? {\n missingSemicolonAfterCharacterReference: () => {\n this._err(ERR.missingSemicolonAfterCharacterReference, 1);\n },\n absenceOfDigitsInNumericCharacterReference: (consumed) => {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);\n },\n validateNumericCharacterReference: (code) => {\n const error = getErrorForNumericCharacterReference(code);\n if (error)\n this._err(error, 1);\n },\n }\n : undefined);\n }\n //Errors\n _err(code, cpOffset = 0) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this.preprocessor.retreat(this.consumedAfterSnapshot);\n this.consumedAfterSnapshot = 0;\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: The specification uses only one type of character token (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type === type) {\n this.currentCharacterToken.chars += ch;\n return;\n }\n else {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _startCharacterReference() {\n this.returnState = this.state;\n this.state = State.CHARACTER_REFERENCE;\n this.entityStartPos = this.preprocessor.pos;\n this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? DecodingMode.Attribute : DecodingMode.Legacy);\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference();\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this._startCharacterReference();\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference() {\n let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);\n if (length < 0) {\n if (this.preprocessor.lastChunkWritten) {\n length = this.entityDecoder.end();\n }\n else {\n // Wait for the rest of the entity.\n this.active = false;\n // Mark the entire buffer as read.\n this.preprocessor.pos = this.preprocessor.html.length - 1;\n this.consumedAfterSnapshot = 0;\n this.preprocessor.endOfChunkHit = true;\n return;\n }\n }\n if (length === 0) {\n // This was not a valid entity. Go back to the beginning, and\n // figure out what to do.\n this.preprocessor.pos = this.entityStartPos;\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state =\n !this._isCharacterReferenceInAttribute() && isAsciiAlphaNumeric(this.preprocessor.peek(1))\n ? State.AMBIGUOUS_AMPERSAND\n : this.returnState;\n }\n else {\n // We successfully parsed an entity. Switch to the return state.\n this.state = this.returnState;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this.state = this.returnState;\n this._callState(cp);\n }\n }\n}\n", "import { TAG_ID as $, NS, NUMBERED_HEADERS } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENTS_HTML = new Set([\n $.APPLET,\n $.CAPTION,\n $.HTML,\n $.MARQUEE,\n $.OBJECT,\n $.TABLE,\n $.TD,\n $.TEMPLATE,\n $.TH,\n]);\nconst SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, $.OL, $.UL]);\nconst SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, $.BUTTON]);\nconst SCOPING_ELEMENTS_MATHML = new Set([$.ANNOTATION_XML, $.MI, $.MN, $.MO, $.MS, $.MTEXT]);\nconst SCOPING_ELEMENTS_SVG = new Set([$.DESC, $.FOREIGN_OBJECT, $.TITLE]);\nconst TABLE_ROW_CONTEXT = new Set([$.TR, $.TEMPLATE, $.HTML]);\nconst TABLE_BODY_CONTEXT = new Set([$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML]);\nconst TABLE_CONTEXT = new Set([$.TABLE, $.TEMPLATE, $.HTML]);\nconst TABLE_CELLS = new Set([$.TD, $.TH]);\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NUMBERED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInDynamicScope(tagName, htmlScope) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (tn === tagName)\n return true;\n if (htmlScope.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);\n }\n hasInListItemScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);\n }\n hasInButtonScope(tagName) {\n return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n switch (this.treeAdapter.getNamespaceURI(this.items[i])) {\n case NS.HTML: {\n if (NUMBERED_HEADERS.has(tn))\n return true;\n if (SCOPING_ELEMENTS_HTML.has(tn))\n return false;\n break;\n }\n case NS.SVG: {\n if (SCOPING_ELEMENTS_SVG.has(tn))\n return false;\n break;\n }\n case NS.MATHML: {\n if (SCOPING_ELEMENTS_MATHML.has(tn))\n return false;\n break;\n }\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n return true;\n }\n case $.TABLE:\n case $.HTML: {\n return false;\n }\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (this.treeAdapter.getNamespaceURI(this.items[i]) !== NS.HTML) {\n continue;\n }\n switch (this.tagIDs[i]) {\n case tagName: {\n return true;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n break;\n }\n default: {\n return false;\n }\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n", "//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex >= 0) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx >= 0) {\n this.entries.splice(0, markerIdx + 1);\n }\n else {\n this.entries.length = 0;\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n", "import { DOCUMENT_MODE } from '../common/html.js';\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n", "import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n", "import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n", "import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, NUMBERED_HEADERS, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, \n /** @internal */\n fragmentContext = null, \n /** @internal */\n scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n /** @internal */\n this.insertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.originalInsertionMode = InsertionMode.INITIAL;\n /** @internal */\n this.headElement = null;\n /** @internal */\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n *\n * @internal\n */\n this.tmplInsertionModeStack = [];\n /** @internal */\n this.pendingCharacterTokens = [];\n /** @internal */\n this.hasNonWhitespacePendingCharacterToken = false;\n /** @internal */\n this.framesetOk = true;\n /** @internal */\n this.skipNextNewLine = false;\n /** @internal */\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n /** @internal */\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n /** @internal */\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n /** @internal */\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML;\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n }\n /** @protected */\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n /** @protected */\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n /** @protected */\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n /** @protected */\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n /** @protected */\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent, element);\n }\n }\n /**\n * For self-closing tags. Add an element to the tree, but skip adding it\n * to the stack.\n */\n /** @protected */\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n /** @protected */\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n /** @protected */\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n /** @protected */\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n /** @protected */\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n /** @protected */\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n /** @protected */\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n /** @protected */\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n /** @protected */\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n /** @protected */\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n /** @protected */\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n /** @protected */\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n /** @protected */\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n /** @protected */\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n /** @protected */\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n /** @protected */\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n /** @protected */\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n /** @protected */\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n }\n /** @protected */\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n /** @protected */\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n /** @protected */\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n /** @internal */\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n * @protected\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n /** @protected */\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n /** @internal */\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (NUMBERED_HEADERS.has(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse\n//<noembed>/<noframes> as rawtext.\nfunction rawTextStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED:\n case $.NOFRAMES: {\n rawTextStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n rawTextStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SEARCH:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.HR: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n", null, "import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/lib/escape.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const str = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (attr.namespace) {\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n }\n else {\n html += attr.name;\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n", "import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\nexport * as html from './common/html.js';\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n"], - "mappings": "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", - "names": ["CODE_POINTS", "ERR", "TokenType", "_a", "CharCodes", "BinTrieFlags", "EntityDecoderState", "DecodingMode", "_a", "NS", "ATTRS", "DOCUMENT_MODE", "TAG_NAMES", "TAG_ID", "_a", "State", "isAsciiAlphaNumeric", "_a", "EntryType", "entry", "InsertionMode", "_a"] -} diff --git a/vendor/yomitan/lib/resvg-wasm.js b/vendor/yomitan/lib/resvg-wasm.js deleted file mode 100644 index 78f54532..00000000 --- a/vendor/yomitan/lib/resvg-wasm.js +++ /dev/null @@ -1,585 +0,0 @@ -// @ts-nocheck - -// node_modules/@resvg/resvg-wasm/index.mjs -var wasm; -var heap = new Array(128).fill(void 0); -heap.push(void 0, null, true, false); -var heap_next = heap.length; -function addHeapObject(obj) { - if (heap_next === heap.length) - heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - heap[idx] = obj; - return idx; -} -function getObject(idx) { - return heap[idx]; -} -function dropObject(idx) { - if (idx < 132) - return; - heap[idx] = heap_next; - heap_next = idx; -} -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} -var WASM_VECTOR_LEN = 0; -var cachedUint8Memory0 = null; -function getUint8Memory0() { - if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} -var cachedTextEncoder = typeof TextEncoder !== "undefined" ? new TextEncoder("utf-8") : { encode: () => { - throw Error("TextEncoder not available"); -} }; -var encodeString = typeof cachedTextEncoder.encodeInto === "function" ? function(arg, view) { - return cachedTextEncoder.encodeInto(arg, view); -} : function(arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; -}; -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === void 0) { - const buf = cachedTextEncoder.encode(arg); - const ptr2 = malloc(buf.length, 1) >>> 0; - getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr2; - } - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - const mem = getUint8Memory0(); - let offset = 0; - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 127) - break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; - } - WASM_VECTOR_LEN = offset; - return ptr; -} -function isLikeNone(x) { - return x === void 0 || x === null; -} -var cachedInt32Memory0 = null; -function getInt32Memory0() { - if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { - cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachedInt32Memory0; -} -var cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => { - throw Error("TextDecoder not available"); -} }; -if (typeof TextDecoder !== "undefined") { - cachedTextDecoder.decode(); -} -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} -function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } - return instance.ptr; -} -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - wasm.__wbindgen_exn_store(addHeapObject(e)); - } -} -var BBoxFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { -}, unregister: () => { -} } : new FinalizationRegistry((ptr) => wasm.__wbg_bbox_free(ptr >>> 0)); -var BBox = class _BBox { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_BBox.prototype); - obj.__wbg_ptr = ptr; - BBoxFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - BBoxFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_bbox_free(ptr); - } - /** - * @returns {number} - */ - get x() { - const ret = wasm.__wbg_get_bbox_x(this.__wbg_ptr); - return ret; - } - /** - * @param {number} arg0 - */ - set x(arg0) { - wasm.__wbg_set_bbox_x(this.__wbg_ptr, arg0); - } - /** - * @returns {number} - */ - get y() { - const ret = wasm.__wbg_get_bbox_y(this.__wbg_ptr); - return ret; - } - /** - * @param {number} arg0 - */ - set y(arg0) { - wasm.__wbg_set_bbox_y(this.__wbg_ptr, arg0); - } - /** - * @returns {number} - */ - get width() { - const ret = wasm.__wbg_get_bbox_width(this.__wbg_ptr); - return ret; - } - /** - * @param {number} arg0 - */ - set width(arg0) { - wasm.__wbg_set_bbox_width(this.__wbg_ptr, arg0); - } - /** - * @returns {number} - */ - get height() { - const ret = wasm.__wbg_get_bbox_height(this.__wbg_ptr); - return ret; - } - /** - * @param {number} arg0 - */ - set height(arg0) { - wasm.__wbg_set_bbox_height(this.__wbg_ptr, arg0); - } -}; -var RenderedImageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { -}, unregister: () => { -} } : new FinalizationRegistry((ptr) => wasm.__wbg_renderedimage_free(ptr >>> 0)); -var RenderedImage = class _RenderedImage { - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(_RenderedImage.prototype); - obj.__wbg_ptr = ptr; - RenderedImageFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - RenderedImageFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_renderedimage_free(ptr); - } - /** - * Get the PNG width - * @returns {number} - */ - get width() { - const ret = wasm.renderedimage_width(this.__wbg_ptr); - return ret >>> 0; - } - /** - * Get the PNG height - * @returns {number} - */ - get height() { - const ret = wasm.renderedimage_height(this.__wbg_ptr); - return ret >>> 0; - } - /** - * Write the image data to Uint8Array - * @returns {Uint8Array} - */ - asPng() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.renderedimage_asPng(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Get the RGBA pixels of the image - * @returns {Uint8Array} - */ - get pixels() { - const ret = wasm.renderedimage_pixels(this.__wbg_ptr); - return takeObject(ret); - } -}; -var ResvgFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => { -}, unregister: () => { -} } : new FinalizationRegistry((ptr) => wasm.__wbg_resvg_free(ptr >>> 0)); -var Resvg = class { - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - ResvgFinalization.unregister(this); - return ptr; - } - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_resvg_free(ptr); - } - /** - * @param {Uint8Array | string} svg - * @param {string | undefined} [options] - * @param {Array<any> | undefined} [custom_font_buffers] - */ - constructor(svg, options, custom_font_buffers) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - var ptr0 = isLikeNone(options) ? 0 : passStringToWasm0(options, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - wasm.resvg_new(retptr, addHeapObject(svg), ptr0, len0, isLikeNone(custom_font_buffers) ? 0 : addHeapObject(custom_font_buffers)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - this.__wbg_ptr = r0 >>> 0; - return this; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Get the SVG width - * @returns {number} - */ - get width() { - const ret = wasm.resvg_width(this.__wbg_ptr); - return ret; - } - /** - * Get the SVG height - * @returns {number} - */ - get height() { - const ret = wasm.resvg_height(this.__wbg_ptr); - return ret; - } - /** - * Renders an SVG in Wasm - * @returns {RenderedImage} - */ - render() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.resvg_render(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return RenderedImage.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Output usvg-simplified SVG string - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.resvg_toString(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - deferred1_0 = r0; - deferred1_1 = r1; - return getStringFromWasm0(r0, r1); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * Calculate a maximum bounding box of all visible elements in this SVG. - * - * Note: path bounding box are approx values. - * @returns {BBox | undefined} - */ - innerBBox() { - const ret = wasm.resvg_innerBBox(this.__wbg_ptr); - return ret === 0 ? void 0 : BBox.__wrap(ret); - } - /** - * Calculate a maximum bounding box of all visible elements in this SVG. - * This will first apply transform. - * Similar to `SVGGraphicsElement.getBBox()` DOM API. - * @returns {BBox | undefined} - */ - getBBox() { - const ret = wasm.resvg_getBBox(this.__wbg_ptr); - return ret === 0 ? void 0 : BBox.__wrap(ret); - } - /** - * Use a given `BBox` to crop the svg. Currently this method simply changes - * the viewbox/size of the svg and do not move the elements for simplicity - * @param {BBox} bbox - */ - cropByBBox(bbox) { - _assertClass(bbox, BBox); - wasm.resvg_cropByBBox(this.__wbg_ptr, bbox.__wbg_ptr); - } - /** - * @returns {Array<any>} - */ - imagesToResolve() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.resvg_imagesToResolve(retptr, this.__wbg_ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return takeObject(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @param {string} href - * @param {Uint8Array} buffer - */ - resolveImage(href, buffer) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passStringToWasm0(href, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.resvg_resolveImage(retptr, this.__wbg_ptr, ptr0, len0, addHeapObject(buffer)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - if (r1) { - throw takeObject(r0); - } - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } -}; -async function __wbg_load(module, imports) { - if (typeof Response === "function" && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === "function") { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - if (module.headers.get("Content-Type") != "application/wasm") { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } else { - throw e; - } - } - } - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module, imports); - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } else { - return instance; - } - } -} -function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbg_new_28c511d9baebfa89 = function(arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_memory = function() { - const ret = wasm.memory; - return addHeapObject(ret); - }; - imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); - }; - imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }; - imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_values_839f3396d5aac002 = function(arg0) { - const ret = getObject(arg0).values(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_next_196c84450b364254 = function() { - return handleError(function(arg0) { - const ret = getObject(arg0).next(); - return addHeapObject(ret); - }, arguments); - }; - imports.wbg.__wbg_done_298b57d23c0fc80c = function(arg0) { - const ret = getObject(arg0).done; - return ret; - }; - imports.wbg.__wbg_value_d93c65011f51a456 = function(arg0) { - const ret = getObject(arg0).value; - return addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Uint8Array; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbindgen_string_get = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof obj === "string" ? obj : void 0; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len1; - getInt32Memory0()[arg0 / 4 + 0] = ptr1; - }; - imports.wbg.__wbg_new_16b304a2cfa7ff4a = function() { - const ret = new Array(); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_push_a5b05aedc7234f9f = function(arg0, arg1) { - const ret = getObject(arg0).push(getObject(arg1)); - return ret; - }; - imports.wbg.__wbg_length_c20a40f15020d68a = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); - }; - imports.wbg.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - return imports; -} -function __wbg_init_memory(imports, maybe_memory) { -} -function __wbg_finalize_init(instance, module) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module; - cachedInt32Memory0 = null; - cachedUint8Memory0 = null; - return wasm; -} -async function __wbg_init(input) { - if (wasm !== void 0) - return wasm; - if (typeof input === "undefined") { - input = new URL("index_bg.wasm", void 0); - } - const imports = __wbg_get_imports(); - if (typeof input === "string" || typeof Request === "function" && input instanceof Request || typeof URL === "function" && input instanceof URL) { - input = fetch(input); - } - __wbg_init_memory(imports); - const { instance, module } = await __wbg_load(await input, imports); - return __wbg_finalize_init(instance, module); -} -var dist_default = __wbg_init; -var initialized = false; -var initWasm = async (module_or_path) => { - if (initialized) { - throw new Error("Already initialized. The `initWasm()` function can be used only once."); - } - await dist_default(await module_or_path); - initialized = true; -}; -var Resvg2 = class extends Resvg { - /** - * @param {Uint8Array | string} svg - * @param {ResvgRenderOptions | undefined} options - */ - constructor(svg, options) { - if (!initialized) - throw new Error("Wasm has not been initialized. Call `initWasm()` function."); - const font = options?.font; - if (!!font && isCustomFontsOptions(font)) { - const serializableOptions = { - ...options, - font: { - ...font, - fontBuffers: void 0 - } - }; - super(svg, JSON.stringify(serializableOptions), font.fontBuffers); - } else { - super(svg, JSON.stringify(options)); - } - } -}; -function isCustomFontsOptions(value) { - return Object.prototype.hasOwnProperty.call(value, "fontBuffers"); -} -export { - Resvg2 as Resvg, - initWasm -}; -//# sourceMappingURL=resvg-wasm.js.map diff --git a/vendor/yomitan/lib/resvg-wasm.js.map b/vendor/yomitan/lib/resvg-wasm.js.map deleted file mode 100644 index 9722d76a..00000000 --- a/vendor/yomitan/lib/resvg-wasm.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/@resvg/resvg-wasm/index.mjs"], - "sourcesContent": ["// wasm/dist/index.js\nvar wasm;\nvar heap = new Array(128).fill(void 0);\nheap.push(void 0, null, true, false);\nvar heap_next = heap.length;\nfunction addHeapObject(obj) {\n if (heap_next === heap.length)\n heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\nfunction getObject(idx) {\n return heap[idx];\n}\nfunction dropObject(idx) {\n if (idx < 132)\n return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\nvar WASM_VECTOR_LEN = 0;\nvar cachedUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\nvar cachedTextEncoder = typeof TextEncoder !== \"undefined\" ? new TextEncoder(\"utf-8\") : { encode: () => {\n throw Error(\"TextEncoder not available\");\n} };\nvar encodeString = typeof cachedTextEncoder.encodeInto === \"function\" ? function(arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n} : function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length, 1) >>> 0;\n getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8Memory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127)\n break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\nfunction isLikeNone(x) {\n return x === void 0 || x === null;\n}\nvar cachedInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\nvar cachedTextDecoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true }) : { decode: () => {\n throw Error(\"TextDecoder not available\");\n} };\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\nvar BBoxFinalization = typeof FinalizationRegistry === \"undefined\" ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((ptr) => wasm.__wbg_bbox_free(ptr >>> 0));\nvar BBox = class _BBox {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(_BBox.prototype);\n obj.__wbg_ptr = ptr;\n BBoxFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n BBoxFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_bbox_free(ptr);\n }\n /**\n * @returns {number}\n */\n get x() {\n const ret = wasm.__wbg_get_bbox_x(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set x(arg0) {\n wasm.__wbg_set_bbox_x(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get y() {\n const ret = wasm.__wbg_get_bbox_y(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set y(arg0) {\n wasm.__wbg_set_bbox_y(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get width() {\n const ret = wasm.__wbg_get_bbox_width(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set width(arg0) {\n wasm.__wbg_set_bbox_width(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get height() {\n const ret = wasm.__wbg_get_bbox_height(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set height(arg0) {\n wasm.__wbg_set_bbox_height(this.__wbg_ptr, arg0);\n }\n};\nvar RenderedImageFinalization = typeof FinalizationRegistry === \"undefined\" ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((ptr) => wasm.__wbg_renderedimage_free(ptr >>> 0));\nvar RenderedImage = class _RenderedImage {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(_RenderedImage.prototype);\n obj.__wbg_ptr = ptr;\n RenderedImageFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RenderedImageFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_renderedimage_free(ptr);\n }\n /**\n * Get the PNG width\n * @returns {number}\n */\n get width() {\n const ret = wasm.renderedimage_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Get the PNG height\n * @returns {number}\n */\n get height() {\n const ret = wasm.renderedimage_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Write the image data to Uint8Array\n * @returns {Uint8Array}\n */\n asPng() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.renderedimage_asPng(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Get the RGBA pixels of the image\n * @returns {Uint8Array}\n */\n get pixels() {\n const ret = wasm.renderedimage_pixels(this.__wbg_ptr);\n return takeObject(ret);\n }\n};\nvar ResvgFinalization = typeof FinalizationRegistry === \"undefined\" ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((ptr) => wasm.__wbg_resvg_free(ptr >>> 0));\nvar Resvg = class {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ResvgFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_resvg_free(ptr);\n }\n /**\n * @param {Uint8Array | string} svg\n * @param {string | undefined} [options]\n * @param {Array<any> | undefined} [custom_font_buffers]\n */\n constructor(svg, options, custom_font_buffers) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = isLikeNone(options) ? 0 : passStringToWasm0(options, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.resvg_new(retptr, addHeapObject(svg), ptr0, len0, isLikeNone(custom_font_buffers) ? 0 : addHeapObject(custom_font_buffers));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Get the SVG width\n * @returns {number}\n */\n get width() {\n const ret = wasm.resvg_width(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the SVG height\n * @returns {number}\n */\n get height() {\n const ret = wasm.resvg_height(this.__wbg_ptr);\n return ret;\n }\n /**\n * Renders an SVG in Wasm\n * @returns {RenderedImage}\n */\n render() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.resvg_render(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return RenderedImage.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Output usvg-simplified SVG string\n * @returns {string}\n */\n toString() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.resvg_toString(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Calculate a maximum bounding box of all visible elements in this SVG.\n *\n * Note: path bounding box are approx values.\n * @returns {BBox | undefined}\n */\n innerBBox() {\n const ret = wasm.resvg_innerBBox(this.__wbg_ptr);\n return ret === 0 ? void 0 : BBox.__wrap(ret);\n }\n /**\n * Calculate a maximum bounding box of all visible elements in this SVG.\n * This will first apply transform.\n * Similar to `SVGGraphicsElement.getBBox()` DOM API.\n * @returns {BBox | undefined}\n */\n getBBox() {\n const ret = wasm.resvg_getBBox(this.__wbg_ptr);\n return ret === 0 ? void 0 : BBox.__wrap(ret);\n }\n /**\n * Use a given `BBox` to crop the svg. Currently this method simply changes\n * the viewbox/size of the svg and do not move the elements for simplicity\n * @param {BBox} bbox\n */\n cropByBBox(bbox) {\n _assertClass(bbox, BBox);\n wasm.resvg_cropByBBox(this.__wbg_ptr, bbox.__wbg_ptr);\n }\n /**\n * @returns {Array<any>}\n */\n imagesToResolve() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.resvg_imagesToResolve(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} href\n * @param {Uint8Array} buffer\n */\n resolveImage(href, buffer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(href, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.resvg_resolveImage(retptr, this.__wbg_ptr, ptr0, len0, addHeapObject(buffer));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n};\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_new_28c511d9baebfa89 = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_12d079cc21e14bdb = function(arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbg_new_63b92bc8671ed464 = function(arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_values_839f3396d5aac002 = function(arg0) {\n const ret = getObject(arg0).values();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_196c84450b364254 = function() {\n return handleError(function(arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_298b57d23c0fc80c = function(arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_d93c65011f51a456 = function(arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6 = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : void 0;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_new_16b304a2cfa7ff4a = function() {\n const ret = new Array();\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_push_a5b05aedc7234f9f = function(arg0, arg1) {\n const ret = getObject(arg0).push(getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_length_c20a40f15020d68a = function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_set_a47bac70306a19a7 = function(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n return imports;\n}\nfunction __wbg_init_memory(imports, maybe_memory) {\n}\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedInt32Memory0 = null;\n cachedUint8Memory0 = null;\n return wasm;\n}\nasync function __wbg_init(input) {\n if (wasm !== void 0)\n return wasm;\n if (typeof input === \"undefined\") {\n input = new URL(\"index_bg.wasm\", void 0);\n }\n const imports = __wbg_get_imports();\n if (typeof input === \"string\" || typeof Request === \"function\" && input instanceof Request || typeof URL === \"function\" && input instanceof URL) {\n input = fetch(input);\n }\n __wbg_init_memory(imports);\n const { instance, module } = await __wbg_load(await input, imports);\n return __wbg_finalize_init(instance, module);\n}\nvar dist_default = __wbg_init;\n\n// wasm-binding.ts\nvar initialized = false;\nvar initWasm = async (module_or_path) => {\n if (initialized) {\n throw new Error(\"Already initialized. The `initWasm()` function can be used only once.\");\n }\n await dist_default(await module_or_path);\n initialized = true;\n};\nvar Resvg2 = class extends Resvg {\n /**\n * @param {Uint8Array | string} svg\n * @param {ResvgRenderOptions | undefined} options\n */\n constructor(svg, options) {\n if (!initialized)\n throw new Error(\"Wasm has not been initialized. Call `initWasm()` function.\");\n const font = options?.font;\n if (!!font && isCustomFontsOptions(font)) {\n const serializableOptions = {\n ...options,\n font: {\n ...font,\n fontBuffers: void 0\n }\n };\n super(svg, JSON.stringify(serializableOptions), font.fontBuffers);\n } else {\n super(svg, JSON.stringify(options));\n }\n }\n};\nfunction isCustomFontsOptions(value) {\n return Object.prototype.hasOwnProperty.call(value, \"fontBuffers\");\n}\nexport {\n Resvg2 as Resvg,\n initWasm\n};\n"], - "mappings": "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", - "names": [] -} diff --git a/vendor/yomitan/lib/resvg.wasm b/vendor/yomitan/lib/resvg.wasm deleted file mode 100644 index 61332307..00000000 Binary files a/vendor/yomitan/lib/resvg.wasm and /dev/null differ diff --git a/vendor/yomitan/lib/ucs2length.js b/vendor/yomitan/lib/ucs2length.js deleted file mode 100644 index 2718d6a6..00000000 --- a/vendor/yomitan/lib/ucs2length.js +++ /dev/null @@ -1,60 +0,0 @@ -// @ts-nocheck -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// node_modules/ajv/dist/runtime/ucs2length.js -var require_ucs2length = __commonJS({ - "node_modules/ajv/dist/runtime/ucs2length.js"(exports) { - "use strict"; - Object.defineProperty(exports, "__esModule", { value: true }); - function ucs2length3(str) { - const len = str.length; - let length = 0; - let pos = 0; - let value; - while (pos < len) { - length++; - value = str.charCodeAt(pos++); - if (value >= 55296 && value <= 56319 && pos < len) { - value = str.charCodeAt(pos); - if ((value & 64512) === 56320) - pos++; - } - } - return length; - } - exports.default = ucs2length3; - ucs2length3.code = 'require("ajv/dist/runtime/ucs2length").default'; - } -}); - -// dev/lib/ucs2length.js -var import_ucs2length = __toESM(require_ucs2length(), 1); -var ucs2length2 = import_ucs2length.default.default; -export { - ucs2length2 as ucs2length -}; -//# sourceMappingURL=ucs2length.js.map diff --git a/vendor/yomitan/lib/ucs2length.js.map b/vendor/yomitan/lib/ucs2length.js.map deleted file mode 100644 index c3f26663..00000000 --- a/vendor/yomitan/lib/ucs2length.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/ajv/lib/runtime/ucs2length.ts", "../../dev/lib/ucs2length.js"], - "sourcesContent": ["// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "/*\n * Copyright (C) 2023-2025 Yomitan Authors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <https://www.gnu.org/licenses/>.\n */\n\nimport ucs2length from 'ajv/dist/runtime/ucs2length.js';\n\nconst ucs2length2 = ucs2length.default;\n\nexport {ucs2length2 as ucs2length};\n"], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,aAAwBA,YAAW,KAAW;AAC5C,YAAM,MAAM,IAAI;AAChB,UAAI,SAAS;AACb,UAAI,MAAM;AACV,UAAI;AACJ,aAAO,MAAM,KAAK;AAChB;AACA,gBAAQ,IAAI,WAAW,KAAK;AAC5B,YAAI,SAAS,SAAU,SAAS,SAAU,MAAM,KAAK;AAEnD,kBAAQ,IAAI,WAAW,GAAG;AAC1B,eAAK,QAAQ,WAAY;AAAQ;QACnC;MACF;AACA,aAAO;IACT;AAfA,YAAA,UAAAA;AAiBA,IAAAA,YAAW,OAAO;;;;;ACFlB,wBAAuB;AAEvB,IAAM,cAAc,kBAAAC,QAAW;", - "names": ["ucs2length", "ucs2length"] -} diff --git a/vendor/yomitan/lib/validate-schemas.js b/vendor/yomitan/lib/validate-schemas.js deleted file mode 100644 index ba5c78d5..00000000 --- a/vendor/yomitan/lib/validate-schemas.js +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-nocheck -import {ucs2length} from './ucs2length.js';"use strict";export const customAudioList = validate10;const schema11 = {"$id":"customAudioList","$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["type","audioSources"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"audioSourceList"},"audioSources":{"type":"array","items":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"name":{"type":"string"},"url":{"type":"string"}}}}}};function validate10(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="customAudioList" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if(((data.type === undefined) && (missing0 = "type")) || ((data.audioSources === undefined) && (missing0 = "audioSources"))){validate10.errors = [{instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"}];return false;}else {const _errs1 = errors;for(const key0 in data){if(!((key0 === "type") || (key0 === "audioSources"))){validate10.errors = [{instancePath,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"}];return false;break;}}if(_errs1 === errors){if(data.type !== undefined){let data0 = data.type;const _errs2 = errors;if(typeof data0 !== "string"){validate10.errors = [{instancePath:instancePath+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if("audioSourceList" !== data0){validate10.errors = [{instancePath:instancePath+"/type",schemaPath:"#/properties/type/const",keyword:"const",params:{allowedValue: "audioSourceList"},message:"must be equal to constant"}];return false;}var valid0 = _errs2 === errors;}else {var valid0 = true;}if(valid0){if(data.audioSources !== undefined){let data1 = data.audioSources;const _errs4 = errors;if(errors === _errs4){if(Array.isArray(data1)){var valid1 = true;const len0 = data1.length;for(let i0=0; i0<len0; i0++){let data2 = data1[i0];const _errs6 = errors;if(errors === _errs6){if(data2 && typeof data2 == "object" && !Array.isArray(data2)){let missing1;if((data2.url === undefined) && (missing1 = "url")){validate10.errors = [{instancePath:instancePath+"/audioSources/" + i0,schemaPath:"#/properties/audioSources/items/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"}];return false;}else {const _errs8 = errors;for(const key1 in data2){if(!((key1 === "name") || (key1 === "url"))){validate10.errors = [{instancePath:instancePath+"/audioSources/" + i0,schemaPath:"#/properties/audioSources/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"}];return false;break;}}if(_errs8 === errors){if(data2.name !== undefined){const _errs9 = errors;if(typeof data2.name !== "string"){validate10.errors = [{instancePath:instancePath+"/audioSources/" + i0+"/name",schemaPath:"#/properties/audioSources/items/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs9 === errors;}else {var valid2 = true;}if(valid2){if(data2.url !== undefined){const _errs11 = errors;if(typeof data2.url !== "string"){validate10.errors = [{instancePath:instancePath+"/audioSources/" + i0+"/url",schemaPath:"#/properties/audioSources/items/properties/url/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs11 === errors;}else {var valid2 = true;}}}}}else {validate10.errors = [{instancePath:instancePath+"/audioSources/" + i0,schemaPath:"#/properties/audioSources/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid1 = _errs6 === errors;if(!valid1){break;}}}else {validate10.errors = [{instancePath:instancePath+"/audioSources",schemaPath:"#/properties/audioSources/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs4 === errors;}else {var valid0 = true;}}}}}else {validate10.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate10.errors = vErrors;return errors === 0;}export const dictionaryIndex = validate11;const schema12 = {"$id":"dictionaryIndex","$schema":"http://json-schema.org/draft-07/schema#","definitions":{"isoLanguageCode":{"type":"string","description":"ISO language code (ISO 639-1 where possible, ISO 639-3 otherwise).","pattern":"^[a-z]{2,3}$"}},"type":"object","description":"Index file containing information about the data contained in the dictionary.","required":["title","revision"],"properties":{"title":{"type":"string","description":"Title of the dictionary."},"revision":{"type":"string","description":"Revision of the dictionary. This value is displayed, and used to check for dictionary updates."},"minimumYomitanVersion":{"type":"string","description":"Minimum version of Yomitan that is compatible with this dictionary."},"sequenced":{"type":"boolean","default":false,"description":"Whether or not this dictionary contains sequencing information for related terms."},"format":{"type":"integer","description":"Format of data found in the JSON data files.","enum":[1,2,3]},"version":{"type":"integer","description":"Alias for format.","enum":[1,2,3]},"author":{"type":"string","description":"Creator of the dictionary."},"isUpdatable":{"type":"boolean","const":true,"description":"Whether this dictionary contains links to its latest version."},"indexUrl":{"type":"string","description":"URL for the index file of the latest revision of the dictionary, used to check for updates."},"downloadUrl":{"type":"string","description":"URL for the download of the latest revision of the dictionary."},"url":{"type":"string","description":"URL for the source of the dictionary, displayed in the dictionary details."},"description":{"type":"string","description":"Description of the dictionary data."},"attribution":{"type":"string","description":"Attribution information for the dictionary data."},"sourceLanguage":{"$ref":"#/definitions/isoLanguageCode","description":"Language of the terms in the dictionary."},"targetLanguage":{"$ref":"#/definitions/isoLanguageCode","description":"Main language of the definitions in the dictionary."},"frequencyMode":{"type":"string","enum":["occurrence-based","rank-based"]},"tagMeta":{"type":"object","description":"Tag information for terms and kanji. This object is obsolete and individual tag files should be used instead.","additionalProperties":{"type":"object","description":"Information about a single tag. The object key is the name of the tag.","properties":{"category":{"type":"string","description":"Category for the tag."},"order":{"type":"number","description":"Sorting order for the tag."},"notes":{"type":"string","description":"Notes for the tag."},"score":{"type":"number","description":"Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."}},"additionalProperties":false}}},"anyOf":[{"required":["format"]},{"required":["version"]}],"dependencies":{"isUpdatable":["indexUrl","downloadUrl"]}};const schema13 = {"type":"string","description":"ISO language code (ISO 639-1 where possible, ISO 639-3 otherwise).","pattern":"^[a-z]{2,3}$"};const pattern0 = new RegExp("^[a-z]{2,3}$", "u");function validate11(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryIndex" */;let vErrors = null;let errors = 0;const _errs1 = errors;let valid0 = false;const _errs2 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if((data.format === undefined) && (missing0 = "format")){const err0 = {instancePath,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}var _valid0 = _errs2 === errors;valid0 = valid0 || _valid0;if(!valid0){const _errs3 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing1;if((data.version === undefined) && (missing1 = "version")){const err1 = {instancePath,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}var _valid0 = _errs3 === errors;valid0 = valid0 || _valid0;}if(!valid0){const err2 = {instancePath,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;validate11.errors = vErrors;return false;}else {errors = _errs1;if(vErrors !== null){if(_errs1){vErrors.length = _errs1;}else {vErrors = null;}}}if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){let missing2;if(((data.title === undefined) && (missing2 = "title")) || ((data.revision === undefined) && (missing2 = "revision"))){validate11.errors = [{instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: missing2},message:"must have required property '"+missing2+"'"}];return false;}else {let missing3;if(data.isUpdatable !== undefined && (((data.indexUrl === undefined) && (missing3 = "indexUrl")) || ((data.downloadUrl === undefined) && (missing3 = "downloadUrl")))){validate11.errors = [{instancePath,schemaPath:"#/dependencies",keyword:"dependencies",params:{property: "isUpdatable", - missingProperty: missing3, - depsCount: 2, - deps: "indexUrl, downloadUrl"},message:"must have properties indexUrl, downloadUrl when property isUpdatable is present"}];return false;}else {if(data.title !== undefined){const _errs4 = errors;if(typeof data.title !== "string"){validate11.errors = [{instancePath:instancePath+"/title",schemaPath:"#/properties/title/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs4 === errors;}else {var valid2 = true;}if(valid2){if(data.revision !== undefined){const _errs6 = errors;if(typeof data.revision !== "string"){validate11.errors = [{instancePath:instancePath+"/revision",schemaPath:"#/properties/revision/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs6 === errors;}else {var valid2 = true;}if(valid2){if(data.minimumYomitanVersion !== undefined){const _errs8 = errors;if(typeof data.minimumYomitanVersion !== "string"){validate11.errors = [{instancePath:instancePath+"/minimumYomitanVersion",schemaPath:"#/properties/minimumYomitanVersion/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs8 === errors;}else {var valid2 = true;}if(valid2){if(data.sequenced !== undefined){const _errs10 = errors;if(typeof data.sequenced !== "boolean"){validate11.errors = [{instancePath:instancePath+"/sequenced",schemaPath:"#/properties/sequenced/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid2 = _errs10 === errors;}else {var valid2 = true;}if(valid2){if(data.format !== undefined){let data4 = data.format;const _errs12 = errors;if(!(((typeof data4 == "number") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))){validate11.errors = [{instancePath:instancePath+"/format",schemaPath:"#/properties/format/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(!(((data4 === 1) || (data4 === 2)) || (data4 === 3))){validate11.errors = [{instancePath:instancePath+"/format",schemaPath:"#/properties/format/enum",keyword:"enum",params:{allowedValues: schema12.properties.format.enum},message:"must be equal to one of the allowed values"}];return false;}var valid2 = _errs12 === errors;}else {var valid2 = true;}if(valid2){if(data.version !== undefined){let data5 = data.version;const _errs14 = errors;if(!(((typeof data5 == "number") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))){validate11.errors = [{instancePath:instancePath+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(!(((data5 === 1) || (data5 === 2)) || (data5 === 3))){validate11.errors = [{instancePath:instancePath+"/version",schemaPath:"#/properties/version/enum",keyword:"enum",params:{allowedValues: schema12.properties.version.enum},message:"must be equal to one of the allowed values"}];return false;}var valid2 = _errs14 === errors;}else {var valid2 = true;}if(valid2){if(data.author !== undefined){const _errs16 = errors;if(typeof data.author !== "string"){validate11.errors = [{instancePath:instancePath+"/author",schemaPath:"#/properties/author/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs16 === errors;}else {var valid2 = true;}if(valid2){if(data.isUpdatable !== undefined){let data7 = data.isUpdatable;const _errs18 = errors;if(typeof data7 !== "boolean"){validate11.errors = [{instancePath:instancePath+"/isUpdatable",schemaPath:"#/properties/isUpdatable/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}if(true !== data7){validate11.errors = [{instancePath:instancePath+"/isUpdatable",schemaPath:"#/properties/isUpdatable/const",keyword:"const",params:{allowedValue: true},message:"must be equal to constant"}];return false;}var valid2 = _errs18 === errors;}else {var valid2 = true;}if(valid2){if(data.indexUrl !== undefined){const _errs20 = errors;if(typeof data.indexUrl !== "string"){validate11.errors = [{instancePath:instancePath+"/indexUrl",schemaPath:"#/properties/indexUrl/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs20 === errors;}else {var valid2 = true;}if(valid2){if(data.downloadUrl !== undefined){const _errs22 = errors;if(typeof data.downloadUrl !== "string"){validate11.errors = [{instancePath:instancePath+"/downloadUrl",schemaPath:"#/properties/downloadUrl/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs22 === errors;}else {var valid2 = true;}if(valid2){if(data.url !== undefined){const _errs24 = errors;if(typeof data.url !== "string"){validate11.errors = [{instancePath:instancePath+"/url",schemaPath:"#/properties/url/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs24 === errors;}else {var valid2 = true;}if(valid2){if(data.description !== undefined){const _errs26 = errors;if(typeof data.description !== "string"){validate11.errors = [{instancePath:instancePath+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs26 === errors;}else {var valid2 = true;}if(valid2){if(data.attribution !== undefined){const _errs28 = errors;if(typeof data.attribution !== "string"){validate11.errors = [{instancePath:instancePath+"/attribution",schemaPath:"#/properties/attribution/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs28 === errors;}else {var valid2 = true;}if(valid2){if(data.sourceLanguage !== undefined){let data13 = data.sourceLanguage;const _errs30 = errors;const _errs31 = errors;if(errors === _errs31){if(typeof data13 === "string"){if(!pattern0.test(data13)){validate11.errors = [{instancePath:instancePath+"/sourceLanguage",schemaPath:"#/definitions/isoLanguageCode/pattern",keyword:"pattern",params:{pattern: "^[a-z]{2,3}$"},message:"must match pattern \""+"^[a-z]{2,3}$"+"\""}];return false;}}else {validate11.errors = [{instancePath:instancePath+"/sourceLanguage",schemaPath:"#/definitions/isoLanguageCode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid2 = _errs30 === errors;}else {var valid2 = true;}if(valid2){if(data.targetLanguage !== undefined){let data14 = data.targetLanguage;const _errs33 = errors;const _errs34 = errors;if(errors === _errs34){if(typeof data14 === "string"){if(!pattern0.test(data14)){validate11.errors = [{instancePath:instancePath+"/targetLanguage",schemaPath:"#/definitions/isoLanguageCode/pattern",keyword:"pattern",params:{pattern: "^[a-z]{2,3}$"},message:"must match pattern \""+"^[a-z]{2,3}$"+"\""}];return false;}}else {validate11.errors = [{instancePath:instancePath+"/targetLanguage",schemaPath:"#/definitions/isoLanguageCode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid2 = _errs33 === errors;}else {var valid2 = true;}if(valid2){if(data.frequencyMode !== undefined){let data15 = data.frequencyMode;const _errs36 = errors;if(typeof data15 !== "string"){validate11.errors = [{instancePath:instancePath+"/frequencyMode",schemaPath:"#/properties/frequencyMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data15 === "occurrence-based") || (data15 === "rank-based"))){validate11.errors = [{instancePath:instancePath+"/frequencyMode",schemaPath:"#/properties/frequencyMode/enum",keyword:"enum",params:{allowedValues: schema12.properties.frequencyMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid2 = _errs36 === errors;}else {var valid2 = true;}if(valid2){if(data.tagMeta !== undefined){let data16 = data.tagMeta;const _errs38 = errors;if(errors === _errs38){if(data16 && typeof data16 == "object" && !Array.isArray(data16)){for(const key0 in data16){let data17 = data16[key0];const _errs41 = errors;if(errors === _errs41){if(data17 && typeof data17 == "object" && !Array.isArray(data17)){const _errs43 = errors;for(const key1 in data17){if(!((((key1 === "category") || (key1 === "order")) || (key1 === "notes")) || (key1 === "score"))){validate11.errors = [{instancePath:instancePath+"/tagMeta/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/properties/tagMeta/additionalProperties/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"}];return false;break;}}if(_errs43 === errors){if(data17.category !== undefined){const _errs44 = errors;if(typeof data17.category !== "string"){validate11.errors = [{instancePath:instancePath+"/tagMeta/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/category",schemaPath:"#/properties/tagMeta/additionalProperties/properties/category/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid6 = _errs44 === errors;}else {var valid6 = true;}if(valid6){if(data17.order !== undefined){let data19 = data17.order;const _errs46 = errors;if(!((typeof data19 == "number") && (isFinite(data19)))){validate11.errors = [{instancePath:instancePath+"/tagMeta/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/order",schemaPath:"#/properties/tagMeta/additionalProperties/properties/order/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid6 = _errs46 === errors;}else {var valid6 = true;}if(valid6){if(data17.notes !== undefined){const _errs48 = errors;if(typeof data17.notes !== "string"){validate11.errors = [{instancePath:instancePath+"/tagMeta/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/notes",schemaPath:"#/properties/tagMeta/additionalProperties/properties/notes/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid6 = _errs48 === errors;}else {var valid6 = true;}if(valid6){if(data17.score !== undefined){let data21 = data17.score;const _errs50 = errors;if(!((typeof data21 == "number") && (isFinite(data21)))){validate11.errors = [{instancePath:instancePath+"/tagMeta/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/score",schemaPath:"#/properties/tagMeta/additionalProperties/properties/score/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid6 = _errs50 === errors;}else {var valid6 = true;}}}}}}else {validate11.errors = [{instancePath:instancePath+"/tagMeta/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/properties/tagMeta/additionalProperties/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid5 = _errs41 === errors;if(!valid5){break;}}}else {validate11.errors = [{instancePath:instancePath+"/tagMeta",schemaPath:"#/properties/tagMeta/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid2 = _errs38 === errors;}else {var valid2 = true;}}}}}}}}}}}}}}}}}}}}else {validate11.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate11.errors = vErrors;return errors === 0;}export const dictionaryKanjiBankV1 = validate12;const schema15 = {"$id":"dictionaryKanjiBankV1","$schema":"http://json-schema.org/draft-07/schema#","type":"array","description":"Data file containing kanji information.","items":{"type":"array","description":"Information about a single kanji character.","minItems":4,"maxItems":4,"items":[{"type":"string","description":"Kanji character.","minLength":1},{"type":"string","description":"String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings."},{"type":"string","description":"String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings."},{"type":"string","description":"String of space-separated tags for the kanji character. An empty string is treated as no tags."}],"additionalItems":{"type":"string","description":"A meaning for the kanji character."}}};const func2 = ucs2length;function validate12(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryKanjiBankV1" */;let vErrors = null;let errors = 0;if(errors === 0){if(Array.isArray(data)){var valid0 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){let data0 = data[i0];const _errs1 = errors;if(errors === _errs1){if(Array.isArray(data0)){if(data0.length > 4){validate12.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/maxItems",keyword:"maxItems",params:{limit: 4},message:"must NOT have more than 4 items"}];return false;}else {if(data0.length < 4){validate12.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/minItems",keyword:"minItems",params:{limit: 4},message:"must NOT have fewer than 4 items"}];return false;}else {const len1 = data0.length;var valid1 = len1 <= 4;if(!valid1){for(let i1=4; i1<len1; i1++){const _errs3 = errors;if(typeof data0[i1] !== "string"){validate12.errors = [{instancePath:instancePath+"/" + i0+"/" + i1,schemaPath:"#/items/additionalItems/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs3 === errors;if(!valid1){break;}}}if(valid1){const len2 = data0.length;if(len2 > 0){let data2 = data0[0];const _errs5 = errors;if(errors === _errs5){if(typeof data2 === "string"){if(func2(data2) < 1){validate12.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate12.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid2 = _errs5 === errors;}if(valid2){if(len2 > 1){const _errs7 = errors;if(typeof data0[1] !== "string"){validate12.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs7 === errors;}if(valid2){if(len2 > 2){const _errs9 = errors;if(typeof data0[2] !== "string"){validate12.errors = [{instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/items/2/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs9 === errors;}if(valid2){if(len2 > 3){const _errs11 = errors;if(typeof data0[3] !== "string"){validate12.errors = [{instancePath:instancePath+"/" + i0+"/3",schemaPath:"#/items/items/3/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs11 === errors;}}}}}}}}else {validate12.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}else {validate12.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}validate12.errors = vErrors;return errors === 0;}export const dictionaryKanjiBankV3 = validate13;const schema16 = {"$id":"dictionaryKanjiBankV3","$schema":"http://json-schema.org/draft-07/schema#","type":"array","description":"Data file containing kanji information.","items":{"type":"array","description":"Information about a single kanji character.","minItems":6,"maxItems":6,"additionalItems":false,"items":[{"type":"string","description":"Kanji character.","minLength":1},{"type":"string","description":"String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings."},{"type":"string","description":"String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings."},{"type":"string","description":"String of space-separated tags for the kanji character. An empty string is treated as no tags."},{"type":"array","description":"Array of meanings for the kanji character.","items":{"type":"string","description":"A meaning for the kanji character."}},{"type":"object","description":"Various stats for the kanji character.","additionalProperties":{"type":"string"}}]}};function validate13(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryKanjiBankV3" */;let vErrors = null;let errors = 0;if(errors === 0){if(Array.isArray(data)){var valid0 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){let data0 = data[i0];const _errs1 = errors;if(errors === _errs1){if(Array.isArray(data0)){if(data0.length > 6){validate13.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/maxItems",keyword:"maxItems",params:{limit: 6},message:"must NOT have more than 6 items"}];return false;}else {if(data0.length < 6){validate13.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/minItems",keyword:"minItems",params:{limit: 6},message:"must NOT have fewer than 6 items"}];return false;}else {const len1 = data0.length;if(!(len1 <= 6)){validate13.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/additionalItems",keyword:"additionalItems",params:{limit: 6},message:"must NOT have more than 6 items"}];return false;}else {const len2 = data0.length;if(len2 > 0){let data1 = data0[0];const _errs3 = errors;if(errors === _errs3){if(typeof data1 === "string"){if(func2(data1) < 1){validate13.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate13.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid1 = _errs3 === errors;}if(valid1){if(len2 > 1){const _errs5 = errors;if(typeof data0[1] !== "string"){validate13.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs5 === errors;}if(valid1){if(len2 > 2){const _errs7 = errors;if(typeof data0[2] !== "string"){validate13.errors = [{instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/items/2/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs7 === errors;}if(valid1){if(len2 > 3){const _errs9 = errors;if(typeof data0[3] !== "string"){validate13.errors = [{instancePath:instancePath+"/" + i0+"/3",schemaPath:"#/items/items/3/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs9 === errors;}if(valid1){if(len2 > 4){let data5 = data0[4];const _errs11 = errors;if(errors === _errs11){if(Array.isArray(data5)){var valid2 = true;const len3 = data5.length;for(let i1=0; i1<len3; i1++){const _errs13 = errors;if(typeof data5[i1] !== "string"){validate13.errors = [{instancePath:instancePath+"/" + i0+"/4/" + i1,schemaPath:"#/items/items/4/items/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs13 === errors;if(!valid2){break;}}}else {validate13.errors = [{instancePath:instancePath+"/" + i0+"/4",schemaPath:"#/items/items/4/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid1 = _errs11 === errors;}if(valid1){if(len2 > 5){let data7 = data0[5];const _errs15 = errors;if(errors === _errs15){if(data7 && typeof data7 == "object" && !Array.isArray(data7)){for(const key0 in data7){const _errs18 = errors;if(typeof data7[key0] !== "string"){validate13.errors = [{instancePath:instancePath+"/" + i0+"/5/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/items/items/5/additionalProperties/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid3 = _errs18 === errors;if(!valid3){break;}}}else {validate13.errors = [{instancePath:instancePath+"/" + i0+"/5",schemaPath:"#/items/items/5/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid1 = _errs15 === errors;}}}}}}}}}}else {validate13.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}else {validate13.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}validate13.errors = vErrors;return errors === 0;}export const dictionaryKanjiMetaBankV3 = validate14;const schema17 = {"$id":"dictionaryKanjiMetaBankV3","$schema":"http://json-schema.org/draft-07/schema#","definitions":{"frequency":{"oneOf":[{"type":["string","number"]},{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"number"},"displayValue":{"type":"string"}}}]}},"type":"array","description":"Custom metadata for kanji characters.","items":{"type":"array","description":"Metadata about a single kanji character.","minItems":3,"maxItems":3,"additionalItems":false,"items":[{"type":"string","minLength":1},{"type":"string","const":"freq","description":"Type of data. \"freq\" corresponds to frequency information."},{"$ref":"#/definitions/frequency","description":"Data for the character."}]}};const schema18 = {"oneOf":[{"type":["string","number"]},{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"number"},"displayValue":{"type":"string"}}}]};function validate14(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryKanjiMetaBankV3" */;let vErrors = null;let errors = 0;if(errors === 0){if(Array.isArray(data)){var valid0 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){let data0 = data[i0];const _errs1 = errors;if(errors === _errs1){if(Array.isArray(data0)){if(data0.length > 3){validate14.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/maxItems",keyword:"maxItems",params:{limit: 3},message:"must NOT have more than 3 items"}];return false;}else {if(data0.length < 3){validate14.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/minItems",keyword:"minItems",params:{limit: 3},message:"must NOT have fewer than 3 items"}];return false;}else {const len1 = data0.length;if(!(len1 <= 3)){validate14.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/additionalItems",keyword:"additionalItems",params:{limit: 3},message:"must NOT have more than 3 items"}];return false;}else {const len2 = data0.length;if(len2 > 0){let data1 = data0[0];const _errs3 = errors;if(errors === _errs3){if(typeof data1 === "string"){if(func2(data1) < 1){validate14.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}else {validate14.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid1 = _errs3 === errors;}if(valid1){if(len2 > 1){let data2 = data0[1];const _errs5 = errors;if(typeof data2 !== "string"){validate14.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if("freq" !== data2){validate14.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/const",keyword:"const",params:{allowedValue: "freq"},message:"must be equal to constant"}];return false;}var valid1 = _errs5 === errors;}if(valid1){if(len2 > 2){let data3 = data0[2];const _errs7 = errors;const _errs9 = errors;let valid3 = false;let passing0 = null;const _errs10 = errors;if((typeof data3 !== "string") && (!((typeof data3 == "number") && (isFinite(data3))))){const err0 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/0/type",keyword:"type",params:{type: schema18.oneOf[0].type},message:"must be string,number"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}var _valid0 = _errs10 === errors;if(_valid0){valid3 = true;passing0 = 0;}const _errs12 = errors;if(errors === _errs12){if(data3 && typeof data3 == "object" && !Array.isArray(data3)){let missing0;if((data3.value === undefined) && (missing0 = "value")){const err1 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/1/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}else {const _errs14 = errors;for(const key0 in data3){if(!((key0 === "value") || (key0 === "displayValue"))){const err2 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;break;}}if(_errs14 === errors){if(data3.value !== undefined){let data4 = data3.value;const _errs15 = errors;if(!((typeof data4 == "number") && (isFinite(data4)))){const err3 = {instancePath:instancePath+"/" + i0+"/2/value",schemaPath:"#/definitions/frequency/oneOf/1/properties/value/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}var valid4 = _errs15 === errors;}else {var valid4 = true;}if(valid4){if(data3.displayValue !== undefined){const _errs17 = errors;if(typeof data3.displayValue !== "string"){const err4 = {instancePath:instancePath+"/" + i0+"/2/displayValue",schemaPath:"#/definitions/frequency/oneOf/1/properties/displayValue/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}var valid4 = _errs17 === errors;}else {var valid4 = true;}}}}}else {const err5 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}var _valid0 = _errs12 === errors;if(_valid0 && valid3){valid3 = false;passing0 = [passing0, 1];}else {if(_valid0){valid3 = true;passing0 = 1;}}if(!valid3){const err6 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;validate14.errors = vErrors;return false;}else {errors = _errs9;if(vErrors !== null){if(_errs9){vErrors.length = _errs9;}else {vErrors = null;}}}var valid1 = _errs7 === errors;}}}}}}}else {validate14.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}else {validate14.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}validate14.errors = vErrors;return errors === 0;}export const dictionaryTagBankV3 = validate15;const schema19 = {"$id":"dictionaryTagBankV3","$schema":"http://json-schema.org/draft-07/schema#","type":"array","description":"Data file containing tag information for terms and kanji.","items":{"type":"array","description":"Information about a single tag.","minItems":5,"maxItems":5,"additionalItems":false,"items":[{"type":"string","description":"Tag name."},{"type":"string","description":"Category for the tag."},{"type":"number","description":"Sorting order for the tag."},{"type":"string","description":"Notes for the tag."},{"type":"number","description":"Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."}]}};function validate15(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryTagBankV3" */;let vErrors = null;let errors = 0;if(errors === 0){if(Array.isArray(data)){var valid0 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){let data0 = data[i0];const _errs1 = errors;if(errors === _errs1){if(Array.isArray(data0)){if(data0.length > 5){validate15.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/maxItems",keyword:"maxItems",params:{limit: 5},message:"must NOT have more than 5 items"}];return false;}else {if(data0.length < 5){validate15.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/minItems",keyword:"minItems",params:{limit: 5},message:"must NOT have fewer than 5 items"}];return false;}else {const len1 = data0.length;if(!(len1 <= 5)){validate15.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/additionalItems",keyword:"additionalItems",params:{limit: 5},message:"must NOT have more than 5 items"}];return false;}else {const len2 = data0.length;if(len2 > 0){const _errs3 = errors;if(typeof data0[0] !== "string"){validate15.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs3 === errors;}if(valid1){if(len2 > 1){const _errs5 = errors;if(typeof data0[1] !== "string"){validate15.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs5 === errors;}if(valid1){if(len2 > 2){let data3 = data0[2];const _errs7 = errors;if(!((typeof data3 == "number") && (isFinite(data3)))){validate15.errors = [{instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/items/2/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid1 = _errs7 === errors;}if(valid1){if(len2 > 3){const _errs9 = errors;if(typeof data0[3] !== "string"){validate15.errors = [{instancePath:instancePath+"/" + i0+"/3",schemaPath:"#/items/items/3/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs9 === errors;}if(valid1){if(len2 > 4){let data5 = data0[4];const _errs11 = errors;if(!((typeof data5 == "number") && (isFinite(data5)))){validate15.errors = [{instancePath:instancePath+"/" + i0+"/4",schemaPath:"#/items/items/4/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid1 = _errs11 === errors;}}}}}}}}}else {validate15.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}else {validate15.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}validate15.errors = vErrors;return errors === 0;}export const dictionaryTermBankV1 = validate16;const schema20 = {"$id":"dictionaryTermBankV1","$schema":"http://json-schema.org/draft-07/schema#","type":"array","description":"Data file containing term information.","items":{"type":"array","description":"Information about a single term.","minItems":5,"maxItems":5,"items":[{"type":"string","description":"The text for the term."},{"type":"string","description":"Reading of the term, or an empty string if the reading is the same as the term."},{"type":["string","null"],"description":"String of space-separated tags for the definition. An empty string is treated as no tags."},{"type":"string","description":"String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vz: zuru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns."},{"type":"number","description":"Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."}],"additionalItems":{"type":"string","description":"Single definition for the term."}}};function validate16(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryTermBankV1" */;let vErrors = null;let errors = 0;if(errors === 0){if(Array.isArray(data)){var valid0 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){let data0 = data[i0];const _errs1 = errors;if(errors === _errs1){if(Array.isArray(data0)){if(data0.length > 5){validate16.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/maxItems",keyword:"maxItems",params:{limit: 5},message:"must NOT have more than 5 items"}];return false;}else {if(data0.length < 5){validate16.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/minItems",keyword:"minItems",params:{limit: 5},message:"must NOT have fewer than 5 items"}];return false;}else {const len1 = data0.length;var valid1 = len1 <= 5;if(!valid1){for(let i1=5; i1<len1; i1++){const _errs3 = errors;if(typeof data0[i1] !== "string"){validate16.errors = [{instancePath:instancePath+"/" + i0+"/" + i1,schemaPath:"#/items/additionalItems/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs3 === errors;if(!valid1){break;}}}if(valid1){const len2 = data0.length;if(len2 > 0){const _errs5 = errors;if(typeof data0[0] !== "string"){validate16.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs5 === errors;}if(valid2){if(len2 > 1){const _errs7 = errors;if(typeof data0[1] !== "string"){validate16.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs7 === errors;}if(valid2){if(len2 > 2){let data4 = data0[2];const _errs9 = errors;if((typeof data4 !== "string") && (data4 !== null)){validate16.errors = [{instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/items/2/type",keyword:"type",params:{type: schema20.items.items[2].type},message:"must be string,null"}];return false;}var valid2 = _errs9 === errors;}if(valid2){if(len2 > 3){const _errs11 = errors;if(typeof data0[3] !== "string"){validate16.errors = [{instancePath:instancePath+"/" + i0+"/3",schemaPath:"#/items/items/3/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs11 === errors;}if(valid2){if(len2 > 4){let data6 = data0[4];const _errs13 = errors;if(!((typeof data6 == "number") && (isFinite(data6)))){validate16.errors = [{instancePath:instancePath+"/" + i0+"/4",schemaPath:"#/items/items/4/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid2 = _errs13 === errors;}}}}}}}}}else {validate16.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}else {validate16.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}validate16.errors = vErrors;return errors === 0;}export const dictionaryTermBankV3 = validate17;const schema21 = {"$id":"dictionaryTermBankV3","$schema":"http://json-schema.org/draft-07/schema#","definitions":{"structuredContent":{"oneOf":[{"type":"string","description":"Represents a text node."},{"type":"array","items":{"$ref":"#/definitions/structuredContent","description":"An array of child content."}},{"type":"object","oneOf":[{"type":"object","description":"Empty tags.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","const":"br"},"data":{"$ref":"#/definitions/structuredContentData"}}},{"type":"object","description":"Generic container tags.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","enum":["ruby","rt","rp","table","thead","tbody","tfoot","tr"]},"content":{"$ref":"#/definitions/structuredContent"},"data":{"$ref":"#/definitions/structuredContentData"},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}},{"type":"object","description":"Table tags.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","enum":["td","th"]},"content":{"$ref":"#/definitions/structuredContent"},"data":{"$ref":"#/definitions/structuredContentData"},"colSpan":{"type":"integer","minimum":1},"rowSpan":{"type":"integer","minimum":1},"style":{"$ref":"#/definitions/structuredContentStyle"},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}},{"type":"object","description":"Container tags supporting configurable styles.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","enum":["span","div","ol","ul","li","details","summary"]},"content":{"$ref":"#/definitions/structuredContent"},"data":{"$ref":"#/definitions/structuredContentData"},"style":{"$ref":"#/definitions/structuredContentStyle"},"title":{"type":"string","description":"Hover text for the element."},"open":{"type":"boolean","description":"Whether or not the details element is open by default."},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}},{"type":"object","description":"Image tag.","required":["tag","path"],"additionalProperties":false,"properties":{"tag":{"type":"string","const":"img"},"data":{"$ref":"#/definitions/structuredContentData"},"path":{"type":"string","description":"Path to the image file in the archive."},"width":{"type":"number","description":"Preferred width of the image.","minimum":0},"height":{"type":"number","description":"Preferred height of the image.","minimum":0},"title":{"type":"string","description":"Hover text for the image."},"alt":{"type":"string","description":"Alt text for the image."},"description":{"type":"string","description":"Description of the image."},"pixelated":{"type":"boolean","description":"Whether or not the image should appear pixelated at sizes larger than the image's native resolution.","default":false},"imageRendering":{"type":"string","description":"Controls how the image is rendered. The value of this field supersedes the pixelated field.","enum":["auto","pixelated","crisp-edges"],"default":"auto"},"appearance":{"type":"string","description":"Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.","enum":["auto","monochrome"],"default":"auto"},"background":{"type":"boolean","description":"Whether or not a background color is displayed behind the image.","default":true},"collapsed":{"type":"boolean","description":"Whether or not the image is collapsed by default.","default":false},"collapsible":{"type":"boolean","description":"Whether or not the image can be collapsed.","default":false},"verticalAlign":{"type":"string","description":"The vertical alignment of the image.","enum":["baseline","sub","super","text-top","text-bottom","middle","top","bottom"]},"border":{"type":"string","description":"Shorthand for border width, style, and color."},"borderRadius":{"type":"string","description":"Roundness of the corners of the image's outer border edge."},"sizeUnits":{"type":"string","description":"The units for the width and height.","enum":["px","em"]}}},{"type":"object","description":"Link tag.","required":["tag","href"],"additionalProperties":false,"properties":{"tag":{"type":"string","const":"a"},"content":{"$ref":"#/definitions/structuredContent"},"href":{"type":"string","description":"The URL for the link. URLs starting with a ? are treated as internal links to other dictionary content.","pattern":"^(?:https?:|\\?)[\\w\\W]*"},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}}]}]},"structuredContentData":{"type":"object","description":"Generic data attributes that should be added to the element.","additionalProperties":{"type":"string"}},"structuredContentStyle":{"type":"object","additionalProperties":false,"properties":{"fontStyle":{"type":"string","enum":["normal","italic"],"default":"normal"},"fontWeight":{"type":"string","enum":["normal","bold"],"default":"normal"},"fontSize":{"type":"string","default":"medium"},"color":{"type":"string"},"background":{"type":"string"},"backgroundColor":{"type":"string"},"textDecorationLine":{"oneOf":[{"type":"string","enum":["none","underline","overline","line-through"],"default":"none"},{"type":"array","items":{"type":"string","enum":["underline","overline","line-through"],"default":"none"}}]},"textDecorationStyle":{"type":"string","enum":["solid","double","dotted","dashed","wavy"],"default":"solid"},"textDecorationColor":{"type":"string"},"borderColor":{"type":"string"},"borderStyle":{"type":"string"},"borderRadius":{"type":"string"},"borderWidth":{"type":"string"},"clipPath":{"type":"string"},"verticalAlign":{"type":"string","enum":["baseline","sub","super","text-top","text-bottom","middle","top","bottom"],"default":"baseline"},"textAlign":{"type":"string","enum":["start","end","left","right","center","justify","justify-all","match-parent"],"default":"start"},"textEmphasis":{"type":"string"},"textShadow":{"type":"string"},"margin":{"type":"string"},"marginTop":{"type":["number","string"],"default":0},"marginLeft":{"type":["number","string"],"default":0},"marginRight":{"type":["number","string"],"default":0},"marginBottom":{"type":["number","string"],"default":0},"padding":{"type":"string"},"paddingTop":{"type":"string"},"paddingLeft":{"type":"string"},"paddingRight":{"type":"string"},"paddingBottom":{"type":"string"},"wordBreak":{"type":"string","enum":["normal","break-all","keep-all"],"default":"normal"},"whiteSpace":{"type":"string","default":"normal"},"cursor":{"type":"string","default":"auto"},"listStyleType":{"type":"string","default":"disc"}}}},"type":"array","description":"Data file containing term information.","items":{"type":"array","description":"Information about a single term.","minItems":8,"maxItems":8,"additionalItems":false,"items":[{"type":"string","description":"The text for the term."},{"type":"string","description":"Reading of the term, or an empty string if the reading is the same as the term."},{"type":["string","null"],"description":"String of space-separated tags for the definition. An empty string is treated as no tags."},{"type":"string","description":"String of space-separated rule identifiers for the definition which is used to validate deinflection. An empty string should be used for words which aren't inflected."},{"type":"number","description":"Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."},{"type":"array","description":"Array of definitions for the term.","items":{"oneOf":[{"type":"string","description":"Single definition for the term."},{"type":"object","description":"Single detailed definition for the term.","required":["type"],"properties":{"type":{"type":"string","description":"The type of the data for this definition.","enum":["text","image","structured-content"]}},"oneOf":[{"required":["type","text"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"text"},"text":{"type":"string","description":"Single definition for the term."}}},{"required":["type","content"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"structured-content"},"content":{"$ref":"#/definitions/structuredContent","description":"Single definition for the term using a structured content object."}}},{"required":["type","path"],"additionalProperties":false,"properties":{"type":{"type":"string","const":"image"},"path":{"type":"string","description":"Path to the image file in the archive."},"width":{"type":"integer","description":"Preferred width of the image.","minimum":1},"height":{"type":"integer","description":"Preferred height of the image.","minimum":1},"title":{"type":"string","description":"Hover text for the image."},"alt":{"type":"string","description":"Alt text for the image."},"description":{"type":"string","description":"Description of the image."},"pixelated":{"type":"boolean","description":"Whether or not the image should appear pixelated at sizes larger than the image's native resolution.","default":false},"imageRendering":{"type":"string","description":"Controls how the image is rendered. The value of this field supersedes the pixelated field.","enum":["auto","pixelated","crisp-edges"],"default":"auto"},"appearance":{"type":"string","description":"Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.","enum":["auto","monochrome"],"default":"auto"},"background":{"type":"boolean","description":"Whether or not a background color is displayed behind the image.","default":true},"collapsed":{"type":"boolean","description":"Whether or not the image is collapsed by default.","default":false},"collapsible":{"type":"boolean","description":"Whether or not the image can be collapsed.","default":true}}}]},{"type":"array","description":"Deinflection of the term to an uninflected term.","minItems":2,"maxItems":2,"items":[{"type":"string","description":"The uninflected term."},{"type":"array","description":"A chain of inflection rules that produced the inflected term","items":{"type":"string","description":"A single inflection rule."}}]}]}},{"type":"integer","description":"Sequence number for the term. Terms with the same sequence number can be shown together when the \"resultOutputMode\" option is set to \"merge\"."},{"type":"string","description":"String of space-separated tags for the term. An empty string is treated as no tags."}]}};const schema22 = {"oneOf":[{"type":"string","description":"Represents a text node."},{"type":"array","items":{"$ref":"#/definitions/structuredContent","description":"An array of child content."}},{"type":"object","oneOf":[{"type":"object","description":"Empty tags.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","const":"br"},"data":{"$ref":"#/definitions/structuredContentData"}}},{"type":"object","description":"Generic container tags.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","enum":["ruby","rt","rp","table","thead","tbody","tfoot","tr"]},"content":{"$ref":"#/definitions/structuredContent"},"data":{"$ref":"#/definitions/structuredContentData"},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}},{"type":"object","description":"Table tags.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","enum":["td","th"]},"content":{"$ref":"#/definitions/structuredContent"},"data":{"$ref":"#/definitions/structuredContentData"},"colSpan":{"type":"integer","minimum":1},"rowSpan":{"type":"integer","minimum":1},"style":{"$ref":"#/definitions/structuredContentStyle"},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}},{"type":"object","description":"Container tags supporting configurable styles.","required":["tag"],"additionalProperties":false,"properties":{"tag":{"type":"string","enum":["span","div","ol","ul","li","details","summary"]},"content":{"$ref":"#/definitions/structuredContent"},"data":{"$ref":"#/definitions/structuredContentData"},"style":{"$ref":"#/definitions/structuredContentStyle"},"title":{"type":"string","description":"Hover text for the element."},"open":{"type":"boolean","description":"Whether or not the details element is open by default."},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}},{"type":"object","description":"Image tag.","required":["tag","path"],"additionalProperties":false,"properties":{"tag":{"type":"string","const":"img"},"data":{"$ref":"#/definitions/structuredContentData"},"path":{"type":"string","description":"Path to the image file in the archive."},"width":{"type":"number","description":"Preferred width of the image.","minimum":0},"height":{"type":"number","description":"Preferred height of the image.","minimum":0},"title":{"type":"string","description":"Hover text for the image."},"alt":{"type":"string","description":"Alt text for the image."},"description":{"type":"string","description":"Description of the image."},"pixelated":{"type":"boolean","description":"Whether or not the image should appear pixelated at sizes larger than the image's native resolution.","default":false},"imageRendering":{"type":"string","description":"Controls how the image is rendered. The value of this field supersedes the pixelated field.","enum":["auto","pixelated","crisp-edges"],"default":"auto"},"appearance":{"type":"string","description":"Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.","enum":["auto","monochrome"],"default":"auto"},"background":{"type":"boolean","description":"Whether or not a background color is displayed behind the image.","default":true},"collapsed":{"type":"boolean","description":"Whether or not the image is collapsed by default.","default":false},"collapsible":{"type":"boolean","description":"Whether or not the image can be collapsed.","default":false},"verticalAlign":{"type":"string","description":"The vertical alignment of the image.","enum":["baseline","sub","super","text-top","text-bottom","middle","top","bottom"]},"border":{"type":"string","description":"Shorthand for border width, style, and color."},"borderRadius":{"type":"string","description":"Roundness of the corners of the image's outer border edge."},"sizeUnits":{"type":"string","description":"The units for the width and height.","enum":["px","em"]}}},{"type":"object","description":"Link tag.","required":["tag","href"],"additionalProperties":false,"properties":{"tag":{"type":"string","const":"a"},"content":{"$ref":"#/definitions/structuredContent"},"href":{"type":"string","description":"The URL for the link. URLs starting with a ? are treated as internal links to other dictionary content.","pattern":"^(?:https?:|\\?)[\\w\\W]*"},"lang":{"type":"string","description":"Defines the language of an element in the format defined by RFC 5646."}}}]}]};const schema23 = {"type":"object","description":"Generic data attributes that should be added to the element.","additionalProperties":{"type":"string"}};const schema26 = {"type":"object","additionalProperties":false,"properties":{"fontStyle":{"type":"string","enum":["normal","italic"],"default":"normal"},"fontWeight":{"type":"string","enum":["normal","bold"],"default":"normal"},"fontSize":{"type":"string","default":"medium"},"color":{"type":"string"},"background":{"type":"string"},"backgroundColor":{"type":"string"},"textDecorationLine":{"oneOf":[{"type":"string","enum":["none","underline","overline","line-through"],"default":"none"},{"type":"array","items":{"type":"string","enum":["underline","overline","line-through"],"default":"none"}}]},"textDecorationStyle":{"type":"string","enum":["solid","double","dotted","dashed","wavy"],"default":"solid"},"textDecorationColor":{"type":"string"},"borderColor":{"type":"string"},"borderStyle":{"type":"string"},"borderRadius":{"type":"string"},"borderWidth":{"type":"string"},"clipPath":{"type":"string"},"verticalAlign":{"type":"string","enum":["baseline","sub","super","text-top","text-bottom","middle","top","bottom"],"default":"baseline"},"textAlign":{"type":"string","enum":["start","end","left","right","center","justify","justify-all","match-parent"],"default":"start"},"textEmphasis":{"type":"string"},"textShadow":{"type":"string"},"margin":{"type":"string"},"marginTop":{"type":["number","string"],"default":0},"marginLeft":{"type":["number","string"],"default":0},"marginRight":{"type":["number","string"],"default":0},"marginBottom":{"type":["number","string"],"default":0},"padding":{"type":"string"},"paddingTop":{"type":"string"},"paddingLeft":{"type":"string"},"paddingRight":{"type":"string"},"paddingBottom":{"type":"string"},"wordBreak":{"type":"string","enum":["normal","break-all","keep-all"],"default":"normal"},"whiteSpace":{"type":"string","default":"normal"},"cursor":{"type":"string","default":"auto"},"listStyleType":{"type":"string","default":"disc"}}};const wrapper0 = {validate: validate18};const func5 = Object.prototype.hasOwnProperty;const pattern2 = new RegExp("^(?:https?:|\\?)[\\w\\W]*", "u");function validate18(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;const _errs0 = errors;let valid0 = false;let passing0 = null;const _errs1 = errors;if(typeof data !== "string"){const err0 = {instancePath,schemaPath:"#/oneOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}var _valid0 = _errs1 === errors;if(_valid0){valid0 = true;passing0 = 0;}const _errs3 = errors;if(errors === _errs3){if(Array.isArray(data)){var valid1 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){const _errs5 = errors;if(!(wrapper0.validate(data[i0], {instancePath:instancePath+"/" + i0,parentData:data,parentDataProperty:i0,rootData}))){vErrors = vErrors === null ? wrapper0.validate.errors : vErrors.concat(wrapper0.validate.errors);errors = vErrors.length;}var valid1 = _errs5 === errors;if(!valid1){break;}}}else {const err1 = {instancePath,schemaPath:"#/oneOf/1/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}var _valid0 = _errs3 === errors;if(_valid0 && valid0){valid0 = false;passing0 = [passing0, 1];}else {if(_valid0){valid0 = true;passing0 = 1;}const _errs6 = errors;if(!(data && typeof data == "object" && !Array.isArray(data))){const err2 = {instancePath,schemaPath:"#/oneOf/2/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}const _errs8 = errors;let valid2 = false;let passing1 = null;const _errs9 = errors;if(errors === _errs9){if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if((data.tag === undefined) && (missing0 = "tag")){const err3 = {instancePath,schemaPath:"#/oneOf/2/oneOf/0/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}else {const _errs11 = errors;for(const key0 in data){if(!((key0 === "tag") || (key0 === "data"))){const err4 = {instancePath,schemaPath:"#/oneOf/2/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;break;}}if(_errs11 === errors){if(data.tag !== undefined){let data1 = data.tag;const _errs12 = errors;if(typeof data1 !== "string"){const err5 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/0/properties/tag/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if("br" !== data1){const err6 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/0/properties/tag/const",keyword:"const",params:{allowedValue: "br"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid3 = _errs12 === errors;}else {var valid3 = true;}if(valid3){if(data.data !== undefined){let data2 = data.data;const _errs14 = errors;const _errs15 = errors;if(errors === _errs15){if(data2 && typeof data2 == "object" && !Array.isArray(data2)){for(const key1 in data2){const _errs18 = errors;if(typeof data2[key1] !== "string"){const err7 = {instancePath:instancePath+"/data/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/definitions/structuredContentData/additionalProperties/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}var valid5 = _errs18 === errors;if(!valid5){break;}}}else {const err8 = {instancePath:instancePath+"/data",schemaPath:"#/definitions/structuredContentData/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}var valid3 = _errs14 === errors;}else {var valid3 = true;}}}}}else {const err9 = {instancePath,schemaPath:"#/oneOf/2/oneOf/0/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}var _valid1 = _errs9 === errors;if(_valid1){valid2 = true;passing1 = 0;}const _errs20 = errors;if(errors === _errs20){if(data && typeof data == "object" && !Array.isArray(data)){let missing1;if((data.tag === undefined) && (missing1 = "tag")){const err10 = {instancePath,schemaPath:"#/oneOf/2/oneOf/1/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}else {const _errs22 = errors;for(const key2 in data){if(!((((key2 === "tag") || (key2 === "content")) || (key2 === "data")) || (key2 === "lang"))){const err11 = {instancePath,schemaPath:"#/oneOf/2/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key2},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;break;}}if(_errs22 === errors){if(data.tag !== undefined){let data4 = data.tag;const _errs23 = errors;if(typeof data4 !== "string"){const err12 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/1/properties/tag/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(!((((((((data4 === "ruby") || (data4 === "rt")) || (data4 === "rp")) || (data4 === "table")) || (data4 === "thead")) || (data4 === "tbody")) || (data4 === "tfoot")) || (data4 === "tr"))){const err13 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/1/properties/tag/enum",keyword:"enum",params:{allowedValues: schema22.oneOf[2].oneOf[1].properties.tag.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var valid6 = _errs23 === errors;}else {var valid6 = true;}if(valid6){if(data.content !== undefined){const _errs25 = errors;if(!(wrapper0.validate(data.content, {instancePath:instancePath+"/content",parentData:data,parentDataProperty:"content",rootData}))){vErrors = vErrors === null ? wrapper0.validate.errors : vErrors.concat(wrapper0.validate.errors);errors = vErrors.length;}var valid6 = _errs25 === errors;}else {var valid6 = true;}if(valid6){if(data.data !== undefined){let data6 = data.data;const _errs26 = errors;const _errs27 = errors;if(errors === _errs27){if(data6 && typeof data6 == "object" && !Array.isArray(data6)){for(const key3 in data6){const _errs30 = errors;if(typeof data6[key3] !== "string"){const err14 = {instancePath:instancePath+"/data/" + key3.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/definitions/structuredContentData/additionalProperties/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}var valid8 = _errs30 === errors;if(!valid8){break;}}}else {const err15 = {instancePath:instancePath+"/data",schemaPath:"#/definitions/structuredContentData/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}var valid6 = _errs26 === errors;}else {var valid6 = true;}if(valid6){if(data.lang !== undefined){const _errs32 = errors;if(typeof data.lang !== "string"){const err16 = {instancePath:instancePath+"/lang",schemaPath:"#/oneOf/2/oneOf/1/properties/lang/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}var valid6 = _errs32 === errors;}else {var valid6 = true;}}}}}}}else {const err17 = {instancePath,schemaPath:"#/oneOf/2/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}var _valid1 = _errs20 === errors;if(_valid1 && valid2){valid2 = false;passing1 = [passing1, 1];}else {if(_valid1){valid2 = true;passing1 = 1;}const _errs34 = errors;if(errors === _errs34){if(data && typeof data == "object" && !Array.isArray(data)){let missing2;if((data.tag === undefined) && (missing2 = "tag")){const err18 = {instancePath,schemaPath:"#/oneOf/2/oneOf/2/required",keyword:"required",params:{missingProperty: missing2},message:"must have required property '"+missing2+"'"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}else {const _errs36 = errors;for(const key4 in data){if(!(((((((key4 === "tag") || (key4 === "content")) || (key4 === "data")) || (key4 === "colSpan")) || (key4 === "rowSpan")) || (key4 === "style")) || (key4 === "lang"))){const err19 = {instancePath,schemaPath:"#/oneOf/2/oneOf/2/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key4},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;break;}}if(_errs36 === errors){if(data.tag !== undefined){let data9 = data.tag;const _errs37 = errors;if(typeof data9 !== "string"){const err20 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/2/properties/tag/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if(!((data9 === "td") || (data9 === "th"))){const err21 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/2/properties/tag/enum",keyword:"enum",params:{allowedValues: schema22.oneOf[2].oneOf[2].properties.tag.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}var valid9 = _errs37 === errors;}else {var valid9 = true;}if(valid9){if(data.content !== undefined){const _errs39 = errors;if(!(wrapper0.validate(data.content, {instancePath:instancePath+"/content",parentData:data,parentDataProperty:"content",rootData}))){vErrors = vErrors === null ? wrapper0.validate.errors : vErrors.concat(wrapper0.validate.errors);errors = vErrors.length;}var valid9 = _errs39 === errors;}else {var valid9 = true;}if(valid9){if(data.data !== undefined){let data11 = data.data;const _errs40 = errors;const _errs41 = errors;if(errors === _errs41){if(data11 && typeof data11 == "object" && !Array.isArray(data11)){for(const key5 in data11){const _errs44 = errors;if(typeof data11[key5] !== "string"){const err22 = {instancePath:instancePath+"/data/" + key5.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/definitions/structuredContentData/additionalProperties/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}var valid11 = _errs44 === errors;if(!valid11){break;}}}else {const err23 = {instancePath:instancePath+"/data",schemaPath:"#/definitions/structuredContentData/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}var valid9 = _errs40 === errors;}else {var valid9 = true;}if(valid9){if(data.colSpan !== undefined){let data13 = data.colSpan;const _errs46 = errors;if(!(((typeof data13 == "number") && (!(data13 % 1) && !isNaN(data13))) && (isFinite(data13)))){const err24 = {instancePath:instancePath+"/colSpan",schemaPath:"#/oneOf/2/oneOf/2/properties/colSpan/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}if(errors === _errs46){if((typeof data13 == "number") && (isFinite(data13))){if(data13 < 1 || isNaN(data13)){const err25 = {instancePath:instancePath+"/colSpan",schemaPath:"#/oneOf/2/oneOf/2/properties/colSpan/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}}var valid9 = _errs46 === errors;}else {var valid9 = true;}if(valid9){if(data.rowSpan !== undefined){let data14 = data.rowSpan;const _errs48 = errors;if(!(((typeof data14 == "number") && (!(data14 % 1) && !isNaN(data14))) && (isFinite(data14)))){const err26 = {instancePath:instancePath+"/rowSpan",schemaPath:"#/oneOf/2/oneOf/2/properties/rowSpan/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}if(errors === _errs48){if((typeof data14 == "number") && (isFinite(data14))){if(data14 < 1 || isNaN(data14)){const err27 = {instancePath:instancePath+"/rowSpan",schemaPath:"#/oneOf/2/oneOf/2/properties/rowSpan/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}}var valid9 = _errs48 === errors;}else {var valid9 = true;}if(valid9){if(data.style !== undefined){let data15 = data.style;const _errs50 = errors;const _errs51 = errors;if(errors === _errs51){if(data15 && typeof data15 == "object" && !Array.isArray(data15)){const _errs53 = errors;for(const key6 in data15){if(!(func5.call(schema26.properties, key6))){const err28 = {instancePath:instancePath+"/style",schemaPath:"#/definitions/structuredContentStyle/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key6},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;break;}}if(_errs53 === errors){if(data15.fontStyle !== undefined){let data16 = data15.fontStyle;const _errs54 = errors;if(typeof data16 !== "string"){const err29 = {instancePath:instancePath+"/style/fontStyle",schemaPath:"#/definitions/structuredContentStyle/properties/fontStyle/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}if(!((data16 === "normal") || (data16 === "italic"))){const err30 = {instancePath:instancePath+"/style/fontStyle",schemaPath:"#/definitions/structuredContentStyle/properties/fontStyle/enum",keyword:"enum",params:{allowedValues: schema26.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}var valid13 = _errs54 === errors;}else {var valid13 = true;}if(valid13){if(data15.fontWeight !== undefined){let data17 = data15.fontWeight;const _errs56 = errors;if(typeof data17 !== "string"){const err31 = {instancePath:instancePath+"/style/fontWeight",schemaPath:"#/definitions/structuredContentStyle/properties/fontWeight/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}if(!((data17 === "normal") || (data17 === "bold"))){const err32 = {instancePath:instancePath+"/style/fontWeight",schemaPath:"#/definitions/structuredContentStyle/properties/fontWeight/enum",keyword:"enum",params:{allowedValues: schema26.properties.fontWeight.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}var valid13 = _errs56 === errors;}else {var valid13 = true;}if(valid13){if(data15.fontSize !== undefined){const _errs58 = errors;if(typeof data15.fontSize !== "string"){const err33 = {instancePath:instancePath+"/style/fontSize",schemaPath:"#/definitions/structuredContentStyle/properties/fontSize/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}var valid13 = _errs58 === errors;}else {var valid13 = true;}if(valid13){if(data15.color !== undefined){const _errs60 = errors;if(typeof data15.color !== "string"){const err34 = {instancePath:instancePath+"/style/color",schemaPath:"#/definitions/structuredContentStyle/properties/color/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}var valid13 = _errs60 === errors;}else {var valid13 = true;}if(valid13){if(data15.background !== undefined){const _errs62 = errors;if(typeof data15.background !== "string"){const err35 = {instancePath:instancePath+"/style/background",schemaPath:"#/definitions/structuredContentStyle/properties/background/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}var valid13 = _errs62 === errors;}else {var valid13 = true;}if(valid13){if(data15.backgroundColor !== undefined){const _errs64 = errors;if(typeof data15.backgroundColor !== "string"){const err36 = {instancePath:instancePath+"/style/backgroundColor",schemaPath:"#/definitions/structuredContentStyle/properties/backgroundColor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}var valid13 = _errs64 === errors;}else {var valid13 = true;}if(valid13){if(data15.textDecorationLine !== undefined){let data22 = data15.textDecorationLine;const _errs66 = errors;const _errs67 = errors;let valid14 = false;let passing2 = null;const _errs68 = errors;if(typeof data22 !== "string"){const err37 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}if(!((((data22 === "none") || (data22 === "underline")) || (data22 === "overline")) || (data22 === "line-through"))){const err38 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/0/enum",keyword:"enum",params:{allowedValues: schema26.properties.textDecorationLine.oneOf[0].enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}var _valid2 = _errs68 === errors;if(_valid2){valid14 = true;passing2 = 0;}const _errs70 = errors;if(errors === _errs70){if(Array.isArray(data22)){var valid15 = true;const len1 = data22.length;for(let i1=0; i1<len1; i1++){let data23 = data22[i1];const _errs72 = errors;if(typeof data23 !== "string"){const err39 = {instancePath:instancePath+"/style/textDecorationLine/" + i1,schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/1/items/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}if(!(((data23 === "underline") || (data23 === "overline")) || (data23 === "line-through"))){const err40 = {instancePath:instancePath+"/style/textDecorationLine/" + i1,schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/1/items/enum",keyword:"enum",params:{allowedValues: schema26.properties.textDecorationLine.oneOf[1].items.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}var valid15 = _errs72 === errors;if(!valid15){break;}}}else {const err41 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/1/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}var _valid2 = _errs70 === errors;if(_valid2 && valid14){valid14 = false;passing2 = [passing2, 1];}else {if(_valid2){valid14 = true;passing2 = 1;}}if(!valid14){const err42 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf",keyword:"oneOf",params:{passingSchemas: passing2},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}else {errors = _errs67;if(vErrors !== null){if(_errs67){vErrors.length = _errs67;}else {vErrors = null;}}}var valid13 = _errs66 === errors;}else {var valid13 = true;}if(valid13){if(data15.textDecorationStyle !== undefined){let data24 = data15.textDecorationStyle;const _errs74 = errors;if(typeof data24 !== "string"){const err43 = {instancePath:instancePath+"/style/textDecorationStyle",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationStyle/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}if(!(((((data24 === "solid") || (data24 === "double")) || (data24 === "dotted")) || (data24 === "dashed")) || (data24 === "wavy"))){const err44 = {instancePath:instancePath+"/style/textDecorationStyle",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationStyle/enum",keyword:"enum",params:{allowedValues: schema26.properties.textDecorationStyle.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}var valid13 = _errs74 === errors;}else {var valid13 = true;}if(valid13){if(data15.textDecorationColor !== undefined){const _errs76 = errors;if(typeof data15.textDecorationColor !== "string"){const err45 = {instancePath:instancePath+"/style/textDecorationColor",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationColor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}var valid13 = _errs76 === errors;}else {var valid13 = true;}if(valid13){if(data15.borderColor !== undefined){const _errs78 = errors;if(typeof data15.borderColor !== "string"){const err46 = {instancePath:instancePath+"/style/borderColor",schemaPath:"#/definitions/structuredContentStyle/properties/borderColor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}var valid13 = _errs78 === errors;}else {var valid13 = true;}if(valid13){if(data15.borderStyle !== undefined){const _errs80 = errors;if(typeof data15.borderStyle !== "string"){const err47 = {instancePath:instancePath+"/style/borderStyle",schemaPath:"#/definitions/structuredContentStyle/properties/borderStyle/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}var valid13 = _errs80 === errors;}else {var valid13 = true;}if(valid13){if(data15.borderRadius !== undefined){const _errs82 = errors;if(typeof data15.borderRadius !== "string"){const err48 = {instancePath:instancePath+"/style/borderRadius",schemaPath:"#/definitions/structuredContentStyle/properties/borderRadius/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}var valid13 = _errs82 === errors;}else {var valid13 = true;}if(valid13){if(data15.borderWidth !== undefined){const _errs84 = errors;if(typeof data15.borderWidth !== "string"){const err49 = {instancePath:instancePath+"/style/borderWidth",schemaPath:"#/definitions/structuredContentStyle/properties/borderWidth/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}var valid13 = _errs84 === errors;}else {var valid13 = true;}if(valid13){if(data15.clipPath !== undefined){const _errs86 = errors;if(typeof data15.clipPath !== "string"){const err50 = {instancePath:instancePath+"/style/clipPath",schemaPath:"#/definitions/structuredContentStyle/properties/clipPath/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}var valid13 = _errs86 === errors;}else {var valid13 = true;}if(valid13){if(data15.verticalAlign !== undefined){let data31 = data15.verticalAlign;const _errs88 = errors;if(typeof data31 !== "string"){const err51 = {instancePath:instancePath+"/style/verticalAlign",schemaPath:"#/definitions/structuredContentStyle/properties/verticalAlign/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}if(!((((((((data31 === "baseline") || (data31 === "sub")) || (data31 === "super")) || (data31 === "text-top")) || (data31 === "text-bottom")) || (data31 === "middle")) || (data31 === "top")) || (data31 === "bottom"))){const err52 = {instancePath:instancePath+"/style/verticalAlign",schemaPath:"#/definitions/structuredContentStyle/properties/verticalAlign/enum",keyword:"enum",params:{allowedValues: schema26.properties.verticalAlign.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}var valid13 = _errs88 === errors;}else {var valid13 = true;}if(valid13){if(data15.textAlign !== undefined){let data32 = data15.textAlign;const _errs90 = errors;if(typeof data32 !== "string"){const err53 = {instancePath:instancePath+"/style/textAlign",schemaPath:"#/definitions/structuredContentStyle/properties/textAlign/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}if(!((((((((data32 === "start") || (data32 === "end")) || (data32 === "left")) || (data32 === "right")) || (data32 === "center")) || (data32 === "justify")) || (data32 === "justify-all")) || (data32 === "match-parent"))){const err54 = {instancePath:instancePath+"/style/textAlign",schemaPath:"#/definitions/structuredContentStyle/properties/textAlign/enum",keyword:"enum",params:{allowedValues: schema26.properties.textAlign.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}var valid13 = _errs90 === errors;}else {var valid13 = true;}if(valid13){if(data15.textEmphasis !== undefined){const _errs92 = errors;if(typeof data15.textEmphasis !== "string"){const err55 = {instancePath:instancePath+"/style/textEmphasis",schemaPath:"#/definitions/structuredContentStyle/properties/textEmphasis/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err55];}else {vErrors.push(err55);}errors++;}var valid13 = _errs92 === errors;}else {var valid13 = true;}if(valid13){if(data15.textShadow !== undefined){const _errs94 = errors;if(typeof data15.textShadow !== "string"){const err56 = {instancePath:instancePath+"/style/textShadow",schemaPath:"#/definitions/structuredContentStyle/properties/textShadow/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err56];}else {vErrors.push(err56);}errors++;}var valid13 = _errs94 === errors;}else {var valid13 = true;}if(valid13){if(data15.margin !== undefined){const _errs96 = errors;if(typeof data15.margin !== "string"){const err57 = {instancePath:instancePath+"/style/margin",schemaPath:"#/definitions/structuredContentStyle/properties/margin/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err57];}else {vErrors.push(err57);}errors++;}var valid13 = _errs96 === errors;}else {var valid13 = true;}if(valid13){if(data15.marginTop !== undefined){let data36 = data15.marginTop;const _errs98 = errors;if((!((typeof data36 == "number") && (isFinite(data36)))) && (typeof data36 !== "string")){const err58 = {instancePath:instancePath+"/style/marginTop",schemaPath:"#/definitions/structuredContentStyle/properties/marginTop/type",keyword:"type",params:{type: schema26.properties.marginTop.type},message:"must be number,string"};if(vErrors === null){vErrors = [err58];}else {vErrors.push(err58);}errors++;}var valid13 = _errs98 === errors;}else {var valid13 = true;}if(valid13){if(data15.marginLeft !== undefined){let data37 = data15.marginLeft;const _errs100 = errors;if((!((typeof data37 == "number") && (isFinite(data37)))) && (typeof data37 !== "string")){const err59 = {instancePath:instancePath+"/style/marginLeft",schemaPath:"#/definitions/structuredContentStyle/properties/marginLeft/type",keyword:"type",params:{type: schema26.properties.marginLeft.type},message:"must be number,string"};if(vErrors === null){vErrors = [err59];}else {vErrors.push(err59);}errors++;}var valid13 = _errs100 === errors;}else {var valid13 = true;}if(valid13){if(data15.marginRight !== undefined){let data38 = data15.marginRight;const _errs102 = errors;if((!((typeof data38 == "number") && (isFinite(data38)))) && (typeof data38 !== "string")){const err60 = {instancePath:instancePath+"/style/marginRight",schemaPath:"#/definitions/structuredContentStyle/properties/marginRight/type",keyword:"type",params:{type: schema26.properties.marginRight.type},message:"must be number,string"};if(vErrors === null){vErrors = [err60];}else {vErrors.push(err60);}errors++;}var valid13 = _errs102 === errors;}else {var valid13 = true;}if(valid13){if(data15.marginBottom !== undefined){let data39 = data15.marginBottom;const _errs104 = errors;if((!((typeof data39 == "number") && (isFinite(data39)))) && (typeof data39 !== "string")){const err61 = {instancePath:instancePath+"/style/marginBottom",schemaPath:"#/definitions/structuredContentStyle/properties/marginBottom/type",keyword:"type",params:{type: schema26.properties.marginBottom.type},message:"must be number,string"};if(vErrors === null){vErrors = [err61];}else {vErrors.push(err61);}errors++;}var valid13 = _errs104 === errors;}else {var valid13 = true;}if(valid13){if(data15.padding !== undefined){const _errs106 = errors;if(typeof data15.padding !== "string"){const err62 = {instancePath:instancePath+"/style/padding",schemaPath:"#/definitions/structuredContentStyle/properties/padding/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err62];}else {vErrors.push(err62);}errors++;}var valid13 = _errs106 === errors;}else {var valid13 = true;}if(valid13){if(data15.paddingTop !== undefined){const _errs108 = errors;if(typeof data15.paddingTop !== "string"){const err63 = {instancePath:instancePath+"/style/paddingTop",schemaPath:"#/definitions/structuredContentStyle/properties/paddingTop/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err63];}else {vErrors.push(err63);}errors++;}var valid13 = _errs108 === errors;}else {var valid13 = true;}if(valid13){if(data15.paddingLeft !== undefined){const _errs110 = errors;if(typeof data15.paddingLeft !== "string"){const err64 = {instancePath:instancePath+"/style/paddingLeft",schemaPath:"#/definitions/structuredContentStyle/properties/paddingLeft/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err64];}else {vErrors.push(err64);}errors++;}var valid13 = _errs110 === errors;}else {var valid13 = true;}if(valid13){if(data15.paddingRight !== undefined){const _errs112 = errors;if(typeof data15.paddingRight !== "string"){const err65 = {instancePath:instancePath+"/style/paddingRight",schemaPath:"#/definitions/structuredContentStyle/properties/paddingRight/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err65];}else {vErrors.push(err65);}errors++;}var valid13 = _errs112 === errors;}else {var valid13 = true;}if(valid13){if(data15.paddingBottom !== undefined){const _errs114 = errors;if(typeof data15.paddingBottom !== "string"){const err66 = {instancePath:instancePath+"/style/paddingBottom",schemaPath:"#/definitions/structuredContentStyle/properties/paddingBottom/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err66];}else {vErrors.push(err66);}errors++;}var valid13 = _errs114 === errors;}else {var valid13 = true;}if(valid13){if(data15.wordBreak !== undefined){let data45 = data15.wordBreak;const _errs116 = errors;if(typeof data45 !== "string"){const err67 = {instancePath:instancePath+"/style/wordBreak",schemaPath:"#/definitions/structuredContentStyle/properties/wordBreak/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err67];}else {vErrors.push(err67);}errors++;}if(!(((data45 === "normal") || (data45 === "break-all")) || (data45 === "keep-all"))){const err68 = {instancePath:instancePath+"/style/wordBreak",schemaPath:"#/definitions/structuredContentStyle/properties/wordBreak/enum",keyword:"enum",params:{allowedValues: schema26.properties.wordBreak.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err68];}else {vErrors.push(err68);}errors++;}var valid13 = _errs116 === errors;}else {var valid13 = true;}if(valid13){if(data15.whiteSpace !== undefined){const _errs118 = errors;if(typeof data15.whiteSpace !== "string"){const err69 = {instancePath:instancePath+"/style/whiteSpace",schemaPath:"#/definitions/structuredContentStyle/properties/whiteSpace/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err69];}else {vErrors.push(err69);}errors++;}var valid13 = _errs118 === errors;}else {var valid13 = true;}if(valid13){if(data15.cursor !== undefined){const _errs120 = errors;if(typeof data15.cursor !== "string"){const err70 = {instancePath:instancePath+"/style/cursor",schemaPath:"#/definitions/structuredContentStyle/properties/cursor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err70];}else {vErrors.push(err70);}errors++;}var valid13 = _errs120 === errors;}else {var valid13 = true;}if(valid13){if(data15.listStyleType !== undefined){const _errs122 = errors;if(typeof data15.listStyleType !== "string"){const err71 = {instancePath:instancePath+"/style/listStyleType",schemaPath:"#/definitions/structuredContentStyle/properties/listStyleType/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err71];}else {vErrors.push(err71);}errors++;}var valid13 = _errs122 === errors;}else {var valid13 = true;}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}else {const err72 = {instancePath:instancePath+"/style",schemaPath:"#/definitions/structuredContentStyle/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err72];}else {vErrors.push(err72);}errors++;}}var valid9 = _errs50 === errors;}else {var valid9 = true;}if(valid9){if(data.lang !== undefined){const _errs124 = errors;if(typeof data.lang !== "string"){const err73 = {instancePath:instancePath+"/lang",schemaPath:"#/oneOf/2/oneOf/2/properties/lang/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err73];}else {vErrors.push(err73);}errors++;}var valid9 = _errs124 === errors;}else {var valid9 = true;}}}}}}}}}}else {const err74 = {instancePath,schemaPath:"#/oneOf/2/oneOf/2/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err74];}else {vErrors.push(err74);}errors++;}}var _valid1 = _errs34 === errors;if(_valid1 && valid2){valid2 = false;passing1 = [passing1, 2];}else {if(_valid1){valid2 = true;passing1 = 2;}const _errs126 = errors;if(errors === _errs126){if(data && typeof data == "object" && !Array.isArray(data)){let missing3;if((data.tag === undefined) && (missing3 = "tag")){const err75 = {instancePath,schemaPath:"#/oneOf/2/oneOf/3/required",keyword:"required",params:{missingProperty: missing3},message:"must have required property '"+missing3+"'"};if(vErrors === null){vErrors = [err75];}else {vErrors.push(err75);}errors++;}else {const _errs128 = errors;for(const key7 in data){if(!(((((((key7 === "tag") || (key7 === "content")) || (key7 === "data")) || (key7 === "style")) || (key7 === "title")) || (key7 === "open")) || (key7 === "lang"))){const err76 = {instancePath,schemaPath:"#/oneOf/2/oneOf/3/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key7},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err76];}else {vErrors.push(err76);}errors++;break;}}if(_errs128 === errors){if(data.tag !== undefined){let data50 = data.tag;const _errs129 = errors;if(typeof data50 !== "string"){const err77 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/3/properties/tag/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err77];}else {vErrors.push(err77);}errors++;}if(!(((((((data50 === "span") || (data50 === "div")) || (data50 === "ol")) || (data50 === "ul")) || (data50 === "li")) || (data50 === "details")) || (data50 === "summary"))){const err78 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/3/properties/tag/enum",keyword:"enum",params:{allowedValues: schema22.oneOf[2].oneOf[3].properties.tag.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err78];}else {vErrors.push(err78);}errors++;}var valid16 = _errs129 === errors;}else {var valid16 = true;}if(valid16){if(data.content !== undefined){const _errs131 = errors;if(!(wrapper0.validate(data.content, {instancePath:instancePath+"/content",parentData:data,parentDataProperty:"content",rootData}))){vErrors = vErrors === null ? wrapper0.validate.errors : vErrors.concat(wrapper0.validate.errors);errors = vErrors.length;}var valid16 = _errs131 === errors;}else {var valid16 = true;}if(valid16){if(data.data !== undefined){let data52 = data.data;const _errs132 = errors;const _errs133 = errors;if(errors === _errs133){if(data52 && typeof data52 == "object" && !Array.isArray(data52)){for(const key8 in data52){const _errs136 = errors;if(typeof data52[key8] !== "string"){const err79 = {instancePath:instancePath+"/data/" + key8.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/definitions/structuredContentData/additionalProperties/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err79];}else {vErrors.push(err79);}errors++;}var valid18 = _errs136 === errors;if(!valid18){break;}}}else {const err80 = {instancePath:instancePath+"/data",schemaPath:"#/definitions/structuredContentData/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err80];}else {vErrors.push(err80);}errors++;}}var valid16 = _errs132 === errors;}else {var valid16 = true;}if(valid16){if(data.style !== undefined){let data54 = data.style;const _errs138 = errors;const _errs139 = errors;if(errors === _errs139){if(data54 && typeof data54 == "object" && !Array.isArray(data54)){const _errs141 = errors;for(const key9 in data54){if(!(func5.call(schema26.properties, key9))){const err81 = {instancePath:instancePath+"/style",schemaPath:"#/definitions/structuredContentStyle/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key9},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err81];}else {vErrors.push(err81);}errors++;break;}}if(_errs141 === errors){if(data54.fontStyle !== undefined){let data55 = data54.fontStyle;const _errs142 = errors;if(typeof data55 !== "string"){const err82 = {instancePath:instancePath+"/style/fontStyle",schemaPath:"#/definitions/structuredContentStyle/properties/fontStyle/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err82];}else {vErrors.push(err82);}errors++;}if(!((data55 === "normal") || (data55 === "italic"))){const err83 = {instancePath:instancePath+"/style/fontStyle",schemaPath:"#/definitions/structuredContentStyle/properties/fontStyle/enum",keyword:"enum",params:{allowedValues: schema26.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err83];}else {vErrors.push(err83);}errors++;}var valid20 = _errs142 === errors;}else {var valid20 = true;}if(valid20){if(data54.fontWeight !== undefined){let data56 = data54.fontWeight;const _errs144 = errors;if(typeof data56 !== "string"){const err84 = {instancePath:instancePath+"/style/fontWeight",schemaPath:"#/definitions/structuredContentStyle/properties/fontWeight/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err84];}else {vErrors.push(err84);}errors++;}if(!((data56 === "normal") || (data56 === "bold"))){const err85 = {instancePath:instancePath+"/style/fontWeight",schemaPath:"#/definitions/structuredContentStyle/properties/fontWeight/enum",keyword:"enum",params:{allowedValues: schema26.properties.fontWeight.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err85];}else {vErrors.push(err85);}errors++;}var valid20 = _errs144 === errors;}else {var valid20 = true;}if(valid20){if(data54.fontSize !== undefined){const _errs146 = errors;if(typeof data54.fontSize !== "string"){const err86 = {instancePath:instancePath+"/style/fontSize",schemaPath:"#/definitions/structuredContentStyle/properties/fontSize/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err86];}else {vErrors.push(err86);}errors++;}var valid20 = _errs146 === errors;}else {var valid20 = true;}if(valid20){if(data54.color !== undefined){const _errs148 = errors;if(typeof data54.color !== "string"){const err87 = {instancePath:instancePath+"/style/color",schemaPath:"#/definitions/structuredContentStyle/properties/color/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err87];}else {vErrors.push(err87);}errors++;}var valid20 = _errs148 === errors;}else {var valid20 = true;}if(valid20){if(data54.background !== undefined){const _errs150 = errors;if(typeof data54.background !== "string"){const err88 = {instancePath:instancePath+"/style/background",schemaPath:"#/definitions/structuredContentStyle/properties/background/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err88];}else {vErrors.push(err88);}errors++;}var valid20 = _errs150 === errors;}else {var valid20 = true;}if(valid20){if(data54.backgroundColor !== undefined){const _errs152 = errors;if(typeof data54.backgroundColor !== "string"){const err89 = {instancePath:instancePath+"/style/backgroundColor",schemaPath:"#/definitions/structuredContentStyle/properties/backgroundColor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err89];}else {vErrors.push(err89);}errors++;}var valid20 = _errs152 === errors;}else {var valid20 = true;}if(valid20){if(data54.textDecorationLine !== undefined){let data61 = data54.textDecorationLine;const _errs154 = errors;const _errs155 = errors;let valid21 = false;let passing3 = null;const _errs156 = errors;if(typeof data61 !== "string"){const err90 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err90];}else {vErrors.push(err90);}errors++;}if(!((((data61 === "none") || (data61 === "underline")) || (data61 === "overline")) || (data61 === "line-through"))){const err91 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/0/enum",keyword:"enum",params:{allowedValues: schema26.properties.textDecorationLine.oneOf[0].enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err91];}else {vErrors.push(err91);}errors++;}var _valid3 = _errs156 === errors;if(_valid3){valid21 = true;passing3 = 0;}const _errs158 = errors;if(errors === _errs158){if(Array.isArray(data61)){var valid22 = true;const len2 = data61.length;for(let i2=0; i2<len2; i2++){let data62 = data61[i2];const _errs160 = errors;if(typeof data62 !== "string"){const err92 = {instancePath:instancePath+"/style/textDecorationLine/" + i2,schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/1/items/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err92];}else {vErrors.push(err92);}errors++;}if(!(((data62 === "underline") || (data62 === "overline")) || (data62 === "line-through"))){const err93 = {instancePath:instancePath+"/style/textDecorationLine/" + i2,schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/1/items/enum",keyword:"enum",params:{allowedValues: schema26.properties.textDecorationLine.oneOf[1].items.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err93];}else {vErrors.push(err93);}errors++;}var valid22 = _errs160 === errors;if(!valid22){break;}}}else {const err94 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf/1/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err94];}else {vErrors.push(err94);}errors++;}}var _valid3 = _errs158 === errors;if(_valid3 && valid21){valid21 = false;passing3 = [passing3, 1];}else {if(_valid3){valid21 = true;passing3 = 1;}}if(!valid21){const err95 = {instancePath:instancePath+"/style/textDecorationLine",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationLine/oneOf",keyword:"oneOf",params:{passingSchemas: passing3},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err95];}else {vErrors.push(err95);}errors++;}else {errors = _errs155;if(vErrors !== null){if(_errs155){vErrors.length = _errs155;}else {vErrors = null;}}}var valid20 = _errs154 === errors;}else {var valid20 = true;}if(valid20){if(data54.textDecorationStyle !== undefined){let data63 = data54.textDecorationStyle;const _errs162 = errors;if(typeof data63 !== "string"){const err96 = {instancePath:instancePath+"/style/textDecorationStyle",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationStyle/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err96];}else {vErrors.push(err96);}errors++;}if(!(((((data63 === "solid") || (data63 === "double")) || (data63 === "dotted")) || (data63 === "dashed")) || (data63 === "wavy"))){const err97 = {instancePath:instancePath+"/style/textDecorationStyle",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationStyle/enum",keyword:"enum",params:{allowedValues: schema26.properties.textDecorationStyle.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err97];}else {vErrors.push(err97);}errors++;}var valid20 = _errs162 === errors;}else {var valid20 = true;}if(valid20){if(data54.textDecorationColor !== undefined){const _errs164 = errors;if(typeof data54.textDecorationColor !== "string"){const err98 = {instancePath:instancePath+"/style/textDecorationColor",schemaPath:"#/definitions/structuredContentStyle/properties/textDecorationColor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err98];}else {vErrors.push(err98);}errors++;}var valid20 = _errs164 === errors;}else {var valid20 = true;}if(valid20){if(data54.borderColor !== undefined){const _errs166 = errors;if(typeof data54.borderColor !== "string"){const err99 = {instancePath:instancePath+"/style/borderColor",schemaPath:"#/definitions/structuredContentStyle/properties/borderColor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err99];}else {vErrors.push(err99);}errors++;}var valid20 = _errs166 === errors;}else {var valid20 = true;}if(valid20){if(data54.borderStyle !== undefined){const _errs168 = errors;if(typeof data54.borderStyle !== "string"){const err100 = {instancePath:instancePath+"/style/borderStyle",schemaPath:"#/definitions/structuredContentStyle/properties/borderStyle/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err100];}else {vErrors.push(err100);}errors++;}var valid20 = _errs168 === errors;}else {var valid20 = true;}if(valid20){if(data54.borderRadius !== undefined){const _errs170 = errors;if(typeof data54.borderRadius !== "string"){const err101 = {instancePath:instancePath+"/style/borderRadius",schemaPath:"#/definitions/structuredContentStyle/properties/borderRadius/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err101];}else {vErrors.push(err101);}errors++;}var valid20 = _errs170 === errors;}else {var valid20 = true;}if(valid20){if(data54.borderWidth !== undefined){const _errs172 = errors;if(typeof data54.borderWidth !== "string"){const err102 = {instancePath:instancePath+"/style/borderWidth",schemaPath:"#/definitions/structuredContentStyle/properties/borderWidth/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err102];}else {vErrors.push(err102);}errors++;}var valid20 = _errs172 === errors;}else {var valid20 = true;}if(valid20){if(data54.clipPath !== undefined){const _errs174 = errors;if(typeof data54.clipPath !== "string"){const err103 = {instancePath:instancePath+"/style/clipPath",schemaPath:"#/definitions/structuredContentStyle/properties/clipPath/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err103];}else {vErrors.push(err103);}errors++;}var valid20 = _errs174 === errors;}else {var valid20 = true;}if(valid20){if(data54.verticalAlign !== undefined){let data70 = data54.verticalAlign;const _errs176 = errors;if(typeof data70 !== "string"){const err104 = {instancePath:instancePath+"/style/verticalAlign",schemaPath:"#/definitions/structuredContentStyle/properties/verticalAlign/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err104];}else {vErrors.push(err104);}errors++;}if(!((((((((data70 === "baseline") || (data70 === "sub")) || (data70 === "super")) || (data70 === "text-top")) || (data70 === "text-bottom")) || (data70 === "middle")) || (data70 === "top")) || (data70 === "bottom"))){const err105 = {instancePath:instancePath+"/style/verticalAlign",schemaPath:"#/definitions/structuredContentStyle/properties/verticalAlign/enum",keyword:"enum",params:{allowedValues: schema26.properties.verticalAlign.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err105];}else {vErrors.push(err105);}errors++;}var valid20 = _errs176 === errors;}else {var valid20 = true;}if(valid20){if(data54.textAlign !== undefined){let data71 = data54.textAlign;const _errs178 = errors;if(typeof data71 !== "string"){const err106 = {instancePath:instancePath+"/style/textAlign",schemaPath:"#/definitions/structuredContentStyle/properties/textAlign/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err106];}else {vErrors.push(err106);}errors++;}if(!((((((((data71 === "start") || (data71 === "end")) || (data71 === "left")) || (data71 === "right")) || (data71 === "center")) || (data71 === "justify")) || (data71 === "justify-all")) || (data71 === "match-parent"))){const err107 = {instancePath:instancePath+"/style/textAlign",schemaPath:"#/definitions/structuredContentStyle/properties/textAlign/enum",keyword:"enum",params:{allowedValues: schema26.properties.textAlign.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err107];}else {vErrors.push(err107);}errors++;}var valid20 = _errs178 === errors;}else {var valid20 = true;}if(valid20){if(data54.textEmphasis !== undefined){const _errs180 = errors;if(typeof data54.textEmphasis !== "string"){const err108 = {instancePath:instancePath+"/style/textEmphasis",schemaPath:"#/definitions/structuredContentStyle/properties/textEmphasis/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err108];}else {vErrors.push(err108);}errors++;}var valid20 = _errs180 === errors;}else {var valid20 = true;}if(valid20){if(data54.textShadow !== undefined){const _errs182 = errors;if(typeof data54.textShadow !== "string"){const err109 = {instancePath:instancePath+"/style/textShadow",schemaPath:"#/definitions/structuredContentStyle/properties/textShadow/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err109];}else {vErrors.push(err109);}errors++;}var valid20 = _errs182 === errors;}else {var valid20 = true;}if(valid20){if(data54.margin !== undefined){const _errs184 = errors;if(typeof data54.margin !== "string"){const err110 = {instancePath:instancePath+"/style/margin",schemaPath:"#/definitions/structuredContentStyle/properties/margin/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err110];}else {vErrors.push(err110);}errors++;}var valid20 = _errs184 === errors;}else {var valid20 = true;}if(valid20){if(data54.marginTop !== undefined){let data75 = data54.marginTop;const _errs186 = errors;if((!((typeof data75 == "number") && (isFinite(data75)))) && (typeof data75 !== "string")){const err111 = {instancePath:instancePath+"/style/marginTop",schemaPath:"#/definitions/structuredContentStyle/properties/marginTop/type",keyword:"type",params:{type: schema26.properties.marginTop.type},message:"must be number,string"};if(vErrors === null){vErrors = [err111];}else {vErrors.push(err111);}errors++;}var valid20 = _errs186 === errors;}else {var valid20 = true;}if(valid20){if(data54.marginLeft !== undefined){let data76 = data54.marginLeft;const _errs188 = errors;if((!((typeof data76 == "number") && (isFinite(data76)))) && (typeof data76 !== "string")){const err112 = {instancePath:instancePath+"/style/marginLeft",schemaPath:"#/definitions/structuredContentStyle/properties/marginLeft/type",keyword:"type",params:{type: schema26.properties.marginLeft.type},message:"must be number,string"};if(vErrors === null){vErrors = [err112];}else {vErrors.push(err112);}errors++;}var valid20 = _errs188 === errors;}else {var valid20 = true;}if(valid20){if(data54.marginRight !== undefined){let data77 = data54.marginRight;const _errs190 = errors;if((!((typeof data77 == "number") && (isFinite(data77)))) && (typeof data77 !== "string")){const err113 = {instancePath:instancePath+"/style/marginRight",schemaPath:"#/definitions/structuredContentStyle/properties/marginRight/type",keyword:"type",params:{type: schema26.properties.marginRight.type},message:"must be number,string"};if(vErrors === null){vErrors = [err113];}else {vErrors.push(err113);}errors++;}var valid20 = _errs190 === errors;}else {var valid20 = true;}if(valid20){if(data54.marginBottom !== undefined){let data78 = data54.marginBottom;const _errs192 = errors;if((!((typeof data78 == "number") && (isFinite(data78)))) && (typeof data78 !== "string")){const err114 = {instancePath:instancePath+"/style/marginBottom",schemaPath:"#/definitions/structuredContentStyle/properties/marginBottom/type",keyword:"type",params:{type: schema26.properties.marginBottom.type},message:"must be number,string"};if(vErrors === null){vErrors = [err114];}else {vErrors.push(err114);}errors++;}var valid20 = _errs192 === errors;}else {var valid20 = true;}if(valid20){if(data54.padding !== undefined){const _errs194 = errors;if(typeof data54.padding !== "string"){const err115 = {instancePath:instancePath+"/style/padding",schemaPath:"#/definitions/structuredContentStyle/properties/padding/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err115];}else {vErrors.push(err115);}errors++;}var valid20 = _errs194 === errors;}else {var valid20 = true;}if(valid20){if(data54.paddingTop !== undefined){const _errs196 = errors;if(typeof data54.paddingTop !== "string"){const err116 = {instancePath:instancePath+"/style/paddingTop",schemaPath:"#/definitions/structuredContentStyle/properties/paddingTop/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err116];}else {vErrors.push(err116);}errors++;}var valid20 = _errs196 === errors;}else {var valid20 = true;}if(valid20){if(data54.paddingLeft !== undefined){const _errs198 = errors;if(typeof data54.paddingLeft !== "string"){const err117 = {instancePath:instancePath+"/style/paddingLeft",schemaPath:"#/definitions/structuredContentStyle/properties/paddingLeft/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err117];}else {vErrors.push(err117);}errors++;}var valid20 = _errs198 === errors;}else {var valid20 = true;}if(valid20){if(data54.paddingRight !== undefined){const _errs200 = errors;if(typeof data54.paddingRight !== "string"){const err118 = {instancePath:instancePath+"/style/paddingRight",schemaPath:"#/definitions/structuredContentStyle/properties/paddingRight/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err118];}else {vErrors.push(err118);}errors++;}var valid20 = _errs200 === errors;}else {var valid20 = true;}if(valid20){if(data54.paddingBottom !== undefined){const _errs202 = errors;if(typeof data54.paddingBottom !== "string"){const err119 = {instancePath:instancePath+"/style/paddingBottom",schemaPath:"#/definitions/structuredContentStyle/properties/paddingBottom/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err119];}else {vErrors.push(err119);}errors++;}var valid20 = _errs202 === errors;}else {var valid20 = true;}if(valid20){if(data54.wordBreak !== undefined){let data84 = data54.wordBreak;const _errs204 = errors;if(typeof data84 !== "string"){const err120 = {instancePath:instancePath+"/style/wordBreak",schemaPath:"#/definitions/structuredContentStyle/properties/wordBreak/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err120];}else {vErrors.push(err120);}errors++;}if(!(((data84 === "normal") || (data84 === "break-all")) || (data84 === "keep-all"))){const err121 = {instancePath:instancePath+"/style/wordBreak",schemaPath:"#/definitions/structuredContentStyle/properties/wordBreak/enum",keyword:"enum",params:{allowedValues: schema26.properties.wordBreak.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err121];}else {vErrors.push(err121);}errors++;}var valid20 = _errs204 === errors;}else {var valid20 = true;}if(valid20){if(data54.whiteSpace !== undefined){const _errs206 = errors;if(typeof data54.whiteSpace !== "string"){const err122 = {instancePath:instancePath+"/style/whiteSpace",schemaPath:"#/definitions/structuredContentStyle/properties/whiteSpace/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err122];}else {vErrors.push(err122);}errors++;}var valid20 = _errs206 === errors;}else {var valid20 = true;}if(valid20){if(data54.cursor !== undefined){const _errs208 = errors;if(typeof data54.cursor !== "string"){const err123 = {instancePath:instancePath+"/style/cursor",schemaPath:"#/definitions/structuredContentStyle/properties/cursor/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err123];}else {vErrors.push(err123);}errors++;}var valid20 = _errs208 === errors;}else {var valid20 = true;}if(valid20){if(data54.listStyleType !== undefined){const _errs210 = errors;if(typeof data54.listStyleType !== "string"){const err124 = {instancePath:instancePath+"/style/listStyleType",schemaPath:"#/definitions/structuredContentStyle/properties/listStyleType/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err124];}else {vErrors.push(err124);}errors++;}var valid20 = _errs210 === errors;}else {var valid20 = true;}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}else {const err125 = {instancePath:instancePath+"/style",schemaPath:"#/definitions/structuredContentStyle/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err125];}else {vErrors.push(err125);}errors++;}}var valid16 = _errs138 === errors;}else {var valid16 = true;}if(valid16){if(data.title !== undefined){const _errs212 = errors;if(typeof data.title !== "string"){const err126 = {instancePath:instancePath+"/title",schemaPath:"#/oneOf/2/oneOf/3/properties/title/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err126];}else {vErrors.push(err126);}errors++;}var valid16 = _errs212 === errors;}else {var valid16 = true;}if(valid16){if(data.open !== undefined){const _errs214 = errors;if(typeof data.open !== "boolean"){const err127 = {instancePath:instancePath+"/open",schemaPath:"#/oneOf/2/oneOf/3/properties/open/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err127];}else {vErrors.push(err127);}errors++;}var valid16 = _errs214 === errors;}else {var valid16 = true;}if(valid16){if(data.lang !== undefined){const _errs216 = errors;if(typeof data.lang !== "string"){const err128 = {instancePath:instancePath+"/lang",schemaPath:"#/oneOf/2/oneOf/3/properties/lang/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err128];}else {vErrors.push(err128);}errors++;}var valid16 = _errs216 === errors;}else {var valid16 = true;}}}}}}}}}}else {const err129 = {instancePath,schemaPath:"#/oneOf/2/oneOf/3/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err129];}else {vErrors.push(err129);}errors++;}}var _valid1 = _errs126 === errors;if(_valid1 && valid2){valid2 = false;passing1 = [passing1, 3];}else {if(_valid1){valid2 = true;passing1 = 3;}const _errs218 = errors;if(errors === _errs218){if(data && typeof data == "object" && !Array.isArray(data)){let missing4;if(((data.tag === undefined) && (missing4 = "tag")) || ((data.path === undefined) && (missing4 = "path"))){const err130 = {instancePath,schemaPath:"#/oneOf/2/oneOf/4/required",keyword:"required",params:{missingProperty: missing4},message:"must have required property '"+missing4+"'"};if(vErrors === null){vErrors = [err130];}else {vErrors.push(err130);}errors++;}else {const _errs220 = errors;for(const key10 in data){if(!(func5.call(schema22.oneOf[2].oneOf[4].properties, key10))){const err131 = {instancePath,schemaPath:"#/oneOf/2/oneOf/4/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key10},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err131];}else {vErrors.push(err131);}errors++;break;}}if(_errs220 === errors){if(data.tag !== undefined){let data91 = data.tag;const _errs221 = errors;if(typeof data91 !== "string"){const err132 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/4/properties/tag/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err132];}else {vErrors.push(err132);}errors++;}if("img" !== data91){const err133 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/4/properties/tag/const",keyword:"const",params:{allowedValue: "img"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err133];}else {vErrors.push(err133);}errors++;}var valid23 = _errs221 === errors;}else {var valid23 = true;}if(valid23){if(data.data !== undefined){let data92 = data.data;const _errs223 = errors;const _errs224 = errors;if(errors === _errs224){if(data92 && typeof data92 == "object" && !Array.isArray(data92)){for(const key11 in data92){const _errs227 = errors;if(typeof data92[key11] !== "string"){const err134 = {instancePath:instancePath+"/data/" + key11.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/definitions/structuredContentData/additionalProperties/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err134];}else {vErrors.push(err134);}errors++;}var valid25 = _errs227 === errors;if(!valid25){break;}}}else {const err135 = {instancePath:instancePath+"/data",schemaPath:"#/definitions/structuredContentData/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err135];}else {vErrors.push(err135);}errors++;}}var valid23 = _errs223 === errors;}else {var valid23 = true;}if(valid23){if(data.path !== undefined){const _errs229 = errors;if(typeof data.path !== "string"){const err136 = {instancePath:instancePath+"/path",schemaPath:"#/oneOf/2/oneOf/4/properties/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err136];}else {vErrors.push(err136);}errors++;}var valid23 = _errs229 === errors;}else {var valid23 = true;}if(valid23){if(data.width !== undefined){let data95 = data.width;const _errs231 = errors;if(errors === _errs231){if((typeof data95 == "number") && (isFinite(data95))){if(data95 < 0 || isNaN(data95)){const err137 = {instancePath:instancePath+"/width",schemaPath:"#/oneOf/2/oneOf/4/properties/width/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err137];}else {vErrors.push(err137);}errors++;}}else {const err138 = {instancePath:instancePath+"/width",schemaPath:"#/oneOf/2/oneOf/4/properties/width/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err138];}else {vErrors.push(err138);}errors++;}}var valid23 = _errs231 === errors;}else {var valid23 = true;}if(valid23){if(data.height !== undefined){let data96 = data.height;const _errs233 = errors;if(errors === _errs233){if((typeof data96 == "number") && (isFinite(data96))){if(data96 < 0 || isNaN(data96)){const err139 = {instancePath:instancePath+"/height",schemaPath:"#/oneOf/2/oneOf/4/properties/height/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err139];}else {vErrors.push(err139);}errors++;}}else {const err140 = {instancePath:instancePath+"/height",schemaPath:"#/oneOf/2/oneOf/4/properties/height/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err140];}else {vErrors.push(err140);}errors++;}}var valid23 = _errs233 === errors;}else {var valid23 = true;}if(valid23){if(data.title !== undefined){const _errs235 = errors;if(typeof data.title !== "string"){const err141 = {instancePath:instancePath+"/title",schemaPath:"#/oneOf/2/oneOf/4/properties/title/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err141];}else {vErrors.push(err141);}errors++;}var valid23 = _errs235 === errors;}else {var valid23 = true;}if(valid23){if(data.alt !== undefined){const _errs237 = errors;if(typeof data.alt !== "string"){const err142 = {instancePath:instancePath+"/alt",schemaPath:"#/oneOf/2/oneOf/4/properties/alt/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err142];}else {vErrors.push(err142);}errors++;}var valid23 = _errs237 === errors;}else {var valid23 = true;}if(valid23){if(data.description !== undefined){const _errs239 = errors;if(typeof data.description !== "string"){const err143 = {instancePath:instancePath+"/description",schemaPath:"#/oneOf/2/oneOf/4/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err143];}else {vErrors.push(err143);}errors++;}var valid23 = _errs239 === errors;}else {var valid23 = true;}if(valid23){if(data.pixelated !== undefined){const _errs241 = errors;if(typeof data.pixelated !== "boolean"){const err144 = {instancePath:instancePath+"/pixelated",schemaPath:"#/oneOf/2/oneOf/4/properties/pixelated/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err144];}else {vErrors.push(err144);}errors++;}var valid23 = _errs241 === errors;}else {var valid23 = true;}if(valid23){if(data.imageRendering !== undefined){let data101 = data.imageRendering;const _errs243 = errors;if(typeof data101 !== "string"){const err145 = {instancePath:instancePath+"/imageRendering",schemaPath:"#/oneOf/2/oneOf/4/properties/imageRendering/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err145];}else {vErrors.push(err145);}errors++;}if(!(((data101 === "auto") || (data101 === "pixelated")) || (data101 === "crisp-edges"))){const err146 = {instancePath:instancePath+"/imageRendering",schemaPath:"#/oneOf/2/oneOf/4/properties/imageRendering/enum",keyword:"enum",params:{allowedValues: schema22.oneOf[2].oneOf[4].properties.imageRendering.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err146];}else {vErrors.push(err146);}errors++;}var valid23 = _errs243 === errors;}else {var valid23 = true;}if(valid23){if(data.appearance !== undefined){let data102 = data.appearance;const _errs245 = errors;if(typeof data102 !== "string"){const err147 = {instancePath:instancePath+"/appearance",schemaPath:"#/oneOf/2/oneOf/4/properties/appearance/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err147];}else {vErrors.push(err147);}errors++;}if(!((data102 === "auto") || (data102 === "monochrome"))){const err148 = {instancePath:instancePath+"/appearance",schemaPath:"#/oneOf/2/oneOf/4/properties/appearance/enum",keyword:"enum",params:{allowedValues: schema22.oneOf[2].oneOf[4].properties.appearance.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err148];}else {vErrors.push(err148);}errors++;}var valid23 = _errs245 === errors;}else {var valid23 = true;}if(valid23){if(data.background !== undefined){const _errs247 = errors;if(typeof data.background !== "boolean"){const err149 = {instancePath:instancePath+"/background",schemaPath:"#/oneOf/2/oneOf/4/properties/background/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err149];}else {vErrors.push(err149);}errors++;}var valid23 = _errs247 === errors;}else {var valid23 = true;}if(valid23){if(data.collapsed !== undefined){const _errs249 = errors;if(typeof data.collapsed !== "boolean"){const err150 = {instancePath:instancePath+"/collapsed",schemaPath:"#/oneOf/2/oneOf/4/properties/collapsed/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err150];}else {vErrors.push(err150);}errors++;}var valid23 = _errs249 === errors;}else {var valid23 = true;}if(valid23){if(data.collapsible !== undefined){const _errs251 = errors;if(typeof data.collapsible !== "boolean"){const err151 = {instancePath:instancePath+"/collapsible",schemaPath:"#/oneOf/2/oneOf/4/properties/collapsible/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err151];}else {vErrors.push(err151);}errors++;}var valid23 = _errs251 === errors;}else {var valid23 = true;}if(valid23){if(data.verticalAlign !== undefined){let data106 = data.verticalAlign;const _errs253 = errors;if(typeof data106 !== "string"){const err152 = {instancePath:instancePath+"/verticalAlign",schemaPath:"#/oneOf/2/oneOf/4/properties/verticalAlign/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err152];}else {vErrors.push(err152);}errors++;}if(!((((((((data106 === "baseline") || (data106 === "sub")) || (data106 === "super")) || (data106 === "text-top")) || (data106 === "text-bottom")) || (data106 === "middle")) || (data106 === "top")) || (data106 === "bottom"))){const err153 = {instancePath:instancePath+"/verticalAlign",schemaPath:"#/oneOf/2/oneOf/4/properties/verticalAlign/enum",keyword:"enum",params:{allowedValues: schema22.oneOf[2].oneOf[4].properties.verticalAlign.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err153];}else {vErrors.push(err153);}errors++;}var valid23 = _errs253 === errors;}else {var valid23 = true;}if(valid23){if(data.border !== undefined){const _errs255 = errors;if(typeof data.border !== "string"){const err154 = {instancePath:instancePath+"/border",schemaPath:"#/oneOf/2/oneOf/4/properties/border/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err154];}else {vErrors.push(err154);}errors++;}var valid23 = _errs255 === errors;}else {var valid23 = true;}if(valid23){if(data.borderRadius !== undefined){const _errs257 = errors;if(typeof data.borderRadius !== "string"){const err155 = {instancePath:instancePath+"/borderRadius",schemaPath:"#/oneOf/2/oneOf/4/properties/borderRadius/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err155];}else {vErrors.push(err155);}errors++;}var valid23 = _errs257 === errors;}else {var valid23 = true;}if(valid23){if(data.sizeUnits !== undefined){let data109 = data.sizeUnits;const _errs259 = errors;if(typeof data109 !== "string"){const err156 = {instancePath:instancePath+"/sizeUnits",schemaPath:"#/oneOf/2/oneOf/4/properties/sizeUnits/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err156];}else {vErrors.push(err156);}errors++;}if(!((data109 === "px") || (data109 === "em"))){const err157 = {instancePath:instancePath+"/sizeUnits",schemaPath:"#/oneOf/2/oneOf/4/properties/sizeUnits/enum",keyword:"enum",params:{allowedValues: schema22.oneOf[2].oneOf[4].properties.sizeUnits.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err157];}else {vErrors.push(err157);}errors++;}var valid23 = _errs259 === errors;}else {var valid23 = true;}}}}}}}}}}}}}}}}}}}}}else {const err158 = {instancePath,schemaPath:"#/oneOf/2/oneOf/4/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err158];}else {vErrors.push(err158);}errors++;}}var _valid1 = _errs218 === errors;if(_valid1 && valid2){valid2 = false;passing1 = [passing1, 4];}else {if(_valid1){valid2 = true;passing1 = 4;}const _errs261 = errors;if(errors === _errs261){if(data && typeof data == "object" && !Array.isArray(data)){let missing5;if(((data.tag === undefined) && (missing5 = "tag")) || ((data.href === undefined) && (missing5 = "href"))){const err159 = {instancePath,schemaPath:"#/oneOf/2/oneOf/5/required",keyword:"required",params:{missingProperty: missing5},message:"must have required property '"+missing5+"'"};if(vErrors === null){vErrors = [err159];}else {vErrors.push(err159);}errors++;}else {const _errs263 = errors;for(const key12 in data){if(!((((key12 === "tag") || (key12 === "content")) || (key12 === "href")) || (key12 === "lang"))){const err160 = {instancePath,schemaPath:"#/oneOf/2/oneOf/5/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key12},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err160];}else {vErrors.push(err160);}errors++;break;}}if(_errs263 === errors){if(data.tag !== undefined){let data110 = data.tag;const _errs264 = errors;if(typeof data110 !== "string"){const err161 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/5/properties/tag/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err161];}else {vErrors.push(err161);}errors++;}if("a" !== data110){const err162 = {instancePath:instancePath+"/tag",schemaPath:"#/oneOf/2/oneOf/5/properties/tag/const",keyword:"const",params:{allowedValue: "a"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err162];}else {vErrors.push(err162);}errors++;}var valid26 = _errs264 === errors;}else {var valid26 = true;}if(valid26){if(data.content !== undefined){const _errs266 = errors;if(!(wrapper0.validate(data.content, {instancePath:instancePath+"/content",parentData:data,parentDataProperty:"content",rootData}))){vErrors = vErrors === null ? wrapper0.validate.errors : vErrors.concat(wrapper0.validate.errors);errors = vErrors.length;}var valid26 = _errs266 === errors;}else {var valid26 = true;}if(valid26){if(data.href !== undefined){let data112 = data.href;const _errs267 = errors;if(errors === _errs267){if(typeof data112 === "string"){if(!pattern2.test(data112)){const err163 = {instancePath:instancePath+"/href",schemaPath:"#/oneOf/2/oneOf/5/properties/href/pattern",keyword:"pattern",params:{pattern: "^(?:https?:|\\?)[\\w\\W]*"},message:"must match pattern \""+"^(?:https?:|\\?)[\\w\\W]*"+"\""};if(vErrors === null){vErrors = [err163];}else {vErrors.push(err163);}errors++;}}else {const err164 = {instancePath:instancePath+"/href",schemaPath:"#/oneOf/2/oneOf/5/properties/href/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err164];}else {vErrors.push(err164);}errors++;}}var valid26 = _errs267 === errors;}else {var valid26 = true;}if(valid26){if(data.lang !== undefined){const _errs269 = errors;if(typeof data.lang !== "string"){const err165 = {instancePath:instancePath+"/lang",schemaPath:"#/oneOf/2/oneOf/5/properties/lang/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err165];}else {vErrors.push(err165);}errors++;}var valid26 = _errs269 === errors;}else {var valid26 = true;}}}}}}}else {const err166 = {instancePath,schemaPath:"#/oneOf/2/oneOf/5/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err166];}else {vErrors.push(err166);}errors++;}}var _valid1 = _errs261 === errors;if(_valid1 && valid2){valid2 = false;passing1 = [passing1, 5];}else {if(_valid1){valid2 = true;passing1 = 5;}}}}}}if(!valid2){const err167 = {instancePath,schemaPath:"#/oneOf/2/oneOf",keyword:"oneOf",params:{passingSchemas: passing1},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err167];}else {vErrors.push(err167);}errors++;}else {errors = _errs8;if(vErrors !== null){if(_errs8){vErrors.length = _errs8;}else {vErrors = null;}}}var _valid0 = _errs6 === errors;if(_valid0 && valid0){valid0 = false;passing0 = [passing0, 2];}else {if(_valid0){valid0 = true;passing0 = 2;}}}if(!valid0){const err168 = {instancePath,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err168];}else {vErrors.push(err168);}errors++;validate18.errors = vErrors;return false;}else {errors = _errs0;if(vErrors !== null){if(_errs0){vErrors.length = _errs0;}else {vErrors = null;}}}validate18.errors = vErrors;return errors === 0;}function validate17(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryTermBankV3" */;let vErrors = null;let errors = 0;if(errors === 0){if(Array.isArray(data)){var valid0 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){let data0 = data[i0];const _errs1 = errors;if(errors === _errs1){if(Array.isArray(data0)){if(data0.length > 8){validate17.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/maxItems",keyword:"maxItems",params:{limit: 8},message:"must NOT have more than 8 items"}];return false;}else {if(data0.length < 8){validate17.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/minItems",keyword:"minItems",params:{limit: 8},message:"must NOT have fewer than 8 items"}];return false;}else {const len1 = data0.length;if(!(len1 <= 8)){validate17.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/additionalItems",keyword:"additionalItems",params:{limit: 8},message:"must NOT have more than 8 items"}];return false;}else {const len2 = data0.length;if(len2 > 0){const _errs3 = errors;if(typeof data0[0] !== "string"){validate17.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs3 === errors;}if(valid1){if(len2 > 1){const _errs5 = errors;if(typeof data0[1] !== "string"){validate17.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs5 === errors;}if(valid1){if(len2 > 2){let data3 = data0[2];const _errs7 = errors;if((typeof data3 !== "string") && (data3 !== null)){validate17.errors = [{instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/items/2/type",keyword:"type",params:{type: schema21.items.items[2].type},message:"must be string,null"}];return false;}var valid1 = _errs7 === errors;}if(valid1){if(len2 > 3){const _errs9 = errors;if(typeof data0[3] !== "string"){validate17.errors = [{instancePath:instancePath+"/" + i0+"/3",schemaPath:"#/items/items/3/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs9 === errors;}if(valid1){if(len2 > 4){let data5 = data0[4];const _errs11 = errors;if(!((typeof data5 == "number") && (isFinite(data5)))){validate17.errors = [{instancePath:instancePath+"/" + i0+"/4",schemaPath:"#/items/items/4/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid1 = _errs11 === errors;}if(valid1){if(len2 > 5){let data6 = data0[5];const _errs13 = errors;if(errors === _errs13){if(Array.isArray(data6)){var valid2 = true;const len3 = data6.length;for(let i1=0; i1<len3; i1++){let data7 = data6[i1];const _errs15 = errors;const _errs16 = errors;let valid3 = false;let passing0 = null;const _errs17 = errors;if(typeof data7 !== "string"){const err0 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}var _valid0 = _errs17 === errors;if(_valid0){valid3 = true;passing0 = 0;}const _errs19 = errors;const _errs21 = errors;let valid4 = false;let passing1 = null;const _errs22 = errors;if(data7 && typeof data7 == "object" && !Array.isArray(data7)){let missing0;if(((data7.type === undefined) && (missing0 = "type")) || ((data7.text === undefined) && (missing0 = "text"))){const err1 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/oneOf/0/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}else {const _errs23 = errors;for(const key0 in data7){if(!((key0 === "type") || (key0 === "text"))){const err2 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;break;}}if(_errs23 === errors){if(data7.type !== undefined){let data8 = data7.type;const _errs24 = errors;if(typeof data8 !== "string"){const err3 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/0/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if("text" !== data8){const err4 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/0/properties/type/const",keyword:"const",params:{allowedValue: "text"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}var valid5 = _errs24 === errors;}else {var valid5 = true;}if(valid5){if(data7.text !== undefined){const _errs26 = errors;if(typeof data7.text !== "string"){const err5 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/text",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/0/properties/text/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var valid5 = _errs26 === errors;}else {var valid5 = true;}}}}}var _valid1 = _errs22 === errors;if(_valid1){valid4 = true;passing1 = 0;}const _errs28 = errors;if(data7 && typeof data7 == "object" && !Array.isArray(data7)){let missing1;if(((data7.type === undefined) && (missing1 = "type")) || ((data7.content === undefined) && (missing1 = "content"))){const err6 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/oneOf/1/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}else {const _errs29 = errors;for(const key1 in data7){if(!((key1 === "type") || (key1 === "content"))){const err7 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;break;}}if(_errs29 === errors){if(data7.type !== undefined){let data10 = data7.type;const _errs30 = errors;if(typeof data10 !== "string"){const err8 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/1/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if("structured-content" !== data10){const err9 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/1/properties/type/const",keyword:"const",params:{allowedValue: "structured-content"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var valid6 = _errs30 === errors;}else {var valid6 = true;}if(valid6){if(data7.content !== undefined){const _errs32 = errors;if(!(validate18(data7.content, {instancePath:instancePath+"/" + i0+"/5/" + i1+"/content",parentData:data7,parentDataProperty:"content",rootData}))){vErrors = vErrors === null ? validate18.errors : vErrors.concat(validate18.errors);errors = vErrors.length;}var valid6 = _errs32 === errors;}else {var valid6 = true;}}}}}var _valid1 = _errs28 === errors;if(_valid1 && valid4){valid4 = false;passing1 = [passing1, 1];}else {if(_valid1){valid4 = true;passing1 = 1;}const _errs33 = errors;if(data7 && typeof data7 == "object" && !Array.isArray(data7)){let missing2;if(((data7.type === undefined) && (missing2 = "type")) || ((data7.path === undefined) && (missing2 = "path"))){const err10 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/required",keyword:"required",params:{missingProperty: missing2},message:"must have required property '"+missing2+"'"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}else {const _errs34 = errors;for(const key2 in data7){if(!(func5.call(schema21.items.items[5].items.oneOf[1].oneOf[2].properties, key2))){const err11 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key2},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;break;}}if(_errs34 === errors){if(data7.type !== undefined){let data12 = data7.type;const _errs35 = errors;if(typeof data12 !== "string"){const err12 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if("image" !== data12){const err13 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/type/const",keyword:"const",params:{allowedValue: "image"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var valid7 = _errs35 === errors;}else {var valid7 = true;}if(valid7){if(data7.path !== undefined){const _errs37 = errors;if(typeof data7.path !== "string"){const err14 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/path",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}var valid7 = _errs37 === errors;}else {var valid7 = true;}if(valid7){if(data7.width !== undefined){let data14 = data7.width;const _errs39 = errors;if(!(((typeof data14 == "number") && (!(data14 % 1) && !isNaN(data14))) && (isFinite(data14)))){const err15 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/width",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/width/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(errors === _errs39){if((typeof data14 == "number") && (isFinite(data14))){if(data14 < 1 || isNaN(data14)){const err16 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/width",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/width/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}}var valid7 = _errs39 === errors;}else {var valid7 = true;}if(valid7){if(data7.height !== undefined){let data15 = data7.height;const _errs41 = errors;if(!(((typeof data15 == "number") && (!(data15 % 1) && !isNaN(data15))) && (isFinite(data15)))){const err17 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/height",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/height/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}if(errors === _errs41){if((typeof data15 == "number") && (isFinite(data15))){if(data15 < 1 || isNaN(data15)){const err18 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/height",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/height/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}}var valid7 = _errs41 === errors;}else {var valid7 = true;}if(valid7){if(data7.title !== undefined){const _errs43 = errors;if(typeof data7.title !== "string"){const err19 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/title",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/title/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var valid7 = _errs43 === errors;}else {var valid7 = true;}if(valid7){if(data7.alt !== undefined){const _errs45 = errors;if(typeof data7.alt !== "string"){const err20 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/alt",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/alt/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}var valid7 = _errs45 === errors;}else {var valid7 = true;}if(valid7){if(data7.description !== undefined){const _errs47 = errors;if(typeof data7.description !== "string"){const err21 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/description",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}var valid7 = _errs47 === errors;}else {var valid7 = true;}if(valid7){if(data7.pixelated !== undefined){const _errs49 = errors;if(typeof data7.pixelated !== "boolean"){const err22 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/pixelated",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/pixelated/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}var valid7 = _errs49 === errors;}else {var valid7 = true;}if(valid7){if(data7.imageRendering !== undefined){let data20 = data7.imageRendering;const _errs51 = errors;if(typeof data20 !== "string"){const err23 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/imageRendering",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/imageRendering/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}if(!(((data20 === "auto") || (data20 === "pixelated")) || (data20 === "crisp-edges"))){const err24 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/imageRendering",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/imageRendering/enum",keyword:"enum",params:{allowedValues: schema21.items.items[5].items.oneOf[1].oneOf[2].properties.imageRendering.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}var valid7 = _errs51 === errors;}else {var valid7 = true;}if(valid7){if(data7.appearance !== undefined){let data21 = data7.appearance;const _errs53 = errors;if(typeof data21 !== "string"){const err25 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/appearance",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/appearance/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}if(!((data21 === "auto") || (data21 === "monochrome"))){const err26 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/appearance",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/appearance/enum",keyword:"enum",params:{allowedValues: schema21.items.items[5].items.oneOf[1].oneOf[2].properties.appearance.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}var valid7 = _errs53 === errors;}else {var valid7 = true;}if(valid7){if(data7.background !== undefined){const _errs55 = errors;if(typeof data7.background !== "boolean"){const err27 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/background",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/background/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}var valid7 = _errs55 === errors;}else {var valid7 = true;}if(valid7){if(data7.collapsed !== undefined){const _errs57 = errors;if(typeof data7.collapsed !== "boolean"){const err28 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/collapsed",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/collapsed/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}var valid7 = _errs57 === errors;}else {var valid7 = true;}if(valid7){if(data7.collapsible !== undefined){const _errs59 = errors;if(typeof data7.collapsible !== "boolean"){const err29 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/collapsible",schemaPath:"#/items/items/5/items/oneOf/1/oneOf/2/properties/collapsible/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}var valid7 = _errs59 === errors;}else {var valid7 = true;}}}}}}}}}}}}}}}}var _valid1 = _errs33 === errors;if(_valid1 && valid4){valid4 = false;passing1 = [passing1, 2];}else {if(_valid1){valid4 = true;passing1 = 2;}}}if(!valid4){const err30 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/oneOf",keyword:"oneOf",params:{passingSchemas: passing1},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}else {errors = _errs21;if(vErrors !== null){if(_errs21){vErrors.length = _errs21;}else {vErrors = null;}}}if(errors === _errs19){if(data7 && typeof data7 == "object" && !Array.isArray(data7)){let missing3;if((data7.type === undefined) && (missing3 = "type")){const err31 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/required",keyword:"required",params:{missingProperty: missing3},message:"must have required property '"+missing3+"'"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}else {if(data7.type !== undefined){let data25 = data7.type;if(typeof data25 !== "string"){const err32 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}if(!(((data25 === "text") || (data25 === "image")) || (data25 === "structured-content"))){const err33 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/type",schemaPath:"#/items/items/5/items/oneOf/1/properties/type/enum",keyword:"enum",params:{allowedValues: schema21.items.items[5].items.oneOf[1].properties.type.enum},message:"must be equal to one of the allowed values"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}}}else {const err34 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}var _valid0 = _errs19 === errors;if(_valid0 && valid3){valid3 = false;passing0 = [passing0, 1];}else {if(_valid0){valid3 = true;passing0 = 1;}const _errs63 = errors;if(errors === _errs63){if(Array.isArray(data7)){if(data7.length > 2){const err35 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/2/maxItems",keyword:"maxItems",params:{limit: 2},message:"must NOT have more than 2 items"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}else {if(data7.length < 2){const err36 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/2/minItems",keyword:"minItems",params:{limit: 2},message:"must NOT have fewer than 2 items"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}else {const len4 = data7.length;if(len4 > 0){const _errs65 = errors;if(typeof data7[0] !== "string"){const err37 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/0",schemaPath:"#/items/items/5/items/oneOf/2/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}var valid9 = _errs65 === errors;}if(valid9){if(len4 > 1){let data27 = data7[1];const _errs67 = errors;if(errors === _errs67){if(Array.isArray(data27)){var valid10 = true;const len5 = data27.length;for(let i2=0; i2<len5; i2++){const _errs69 = errors;if(typeof data27[i2] !== "string"){const err38 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/1/" + i2,schemaPath:"#/items/items/5/items/oneOf/2/items/1/items/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}var valid10 = _errs69 === errors;if(!valid10){break;}}}else {const err39 = {instancePath:instancePath+"/" + i0+"/5/" + i1+"/1",schemaPath:"#/items/items/5/items/oneOf/2/items/1/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}var valid9 = _errs67 === errors;}}}}}else {const err40 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf/2/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}var _valid0 = _errs63 === errors;if(_valid0 && valid3){valid3 = false;passing0 = [passing0, 2];}else {if(_valid0){valid3 = true;passing0 = 2;}}}if(!valid3){const err41 = {instancePath:instancePath+"/" + i0+"/5/" + i1,schemaPath:"#/items/items/5/items/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;validate17.errors = vErrors;return false;}else {errors = _errs16;if(vErrors !== null){if(_errs16){vErrors.length = _errs16;}else {vErrors = null;}}}var valid2 = _errs15 === errors;if(!valid2){break;}}}else {validate17.errors = [{instancePath:instancePath+"/" + i0+"/5",schemaPath:"#/items/items/5/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid1 = _errs13 === errors;}if(valid1){if(len2 > 6){let data29 = data0[6];const _errs71 = errors;if(!(((typeof data29 == "number") && (!(data29 % 1) && !isNaN(data29))) && (isFinite(data29)))){validate17.errors = [{instancePath:instancePath+"/" + i0+"/6",schemaPath:"#/items/items/6/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}var valid1 = _errs71 === errors;}if(valid1){if(len2 > 7){const _errs73 = errors;if(typeof data0[7] !== "string"){validate17.errors = [{instancePath:instancePath+"/" + i0+"/7",schemaPath:"#/items/items/7/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid1 = _errs73 === errors;}}}}}}}}}}}}else {validate17.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}else {validate17.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}validate17.errors = vErrors;return errors === 0;}export const dictionaryTermMetaBankV3 = validate20;const schema30 = {"$id":"dictionaryTermMetaBankV3","$schema":"http://json-schema.org/draft-07/schema#","definitions":{"frequency":{"oneOf":[{"type":["string","number"]},{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"number"},"displayValue":{"type":"string"}}}]}},"type":"array","description":"Custom metadata for terms.","items":{"type":"array","description":"Metadata about a single term.","minItems":3,"maxItems":3,"additionalItems":false,"items":[{"type":"string","description":"The text for the term."},{"type":"string","enum":["freq","pitch","ipa"],"description":"Type of data. \"freq\" corresponds to frequency information; \"pitch\" corresponds to pitch information. \"ipa\" corresponds to IPA transcription."},{"description":"Data for the term."}],"oneOf":[{"minItems":3,"maxItems":3,"items":[{},{"const":"freq"},{"oneOf":[{"$ref":"#/definitions/frequency","description":"Frequency information for the term."},{"type":"object","required":["reading","frequency"],"additionalProperties":false,"properties":{"reading":{"type":"string","description":"Reading for the term."},"frequency":{"$ref":"#/definitions/frequency","description":"Frequency information for the term."}}}]}]},{"minItems":3,"maxItems":3,"items":[{},{"const":"pitch"},{"type":"object","description":"Pitch accent information for the term.","required":["reading","pitches"],"additionalProperties":false,"properties":{"reading":{"type":"string","description":"Reading for the term."},"pitches":{"type":"array","description":"List of different pitch accent information for the term and reading combination.","items":{"type":"object","required":["position"],"additionalProperties":false,"properties":{"position":{"oneOf":[{"type":"integer","description":"Mora position of the pitch accent downstep. A value of 0 indicates that the word does not have a downstep (heiban).","minimum":0},{"type":"string","description":"Pitch level of each mora with H representing high and L representing low. For example: HHLL for a 4 mora word.","pattern":"^[HL]+$"}]},"nasal":{"oneOf":[{"type":"integer","description":"Position of a mora with nasal sound.","minimum":0},{"type":"array","description":"Positions of morae with nasal sound.","items":{"type":"integer","minimum":0}}]},"devoice":{"oneOf":[{"type":"integer","description":"Position of a mora with devoiced sound.","minimum":0},{"type":"array","description":"Positions of morae with devoiced sound.","items":{"type":"integer","minimum":0}}]},"tags":{"type":"array","description":"List of tags for this pitch accent.","items":{"type":"string","description":"Tag for this pitch accent. This typically corresponds to a certain type of part of speech."}}}}}}}]},{"minItems":3,"maxItems":3,"items":[{},{"const":"ipa"},{"type":["object"],"description":"IPA transcription information for the term.","required":["reading","transcriptions"],"additionalProperties":false,"properties":{"reading":{"type":"string","description":"Reading for the term."},"transcriptions":{"type":"array","description":"List of different IPA transcription information for the term and reading combination.","items":{"type":"object","required":["ipa"],"additionalProperties":false,"properties":{"ipa":{"type":"string","description":"IPA transcription for the term."},"tags":{"type":"array","description":"List of tags for this IPA transcription.","items":{"type":"string","description":"Tag for this IPA transcription."}}}}}}}]}]}};const schema31 = {"oneOf":[{"type":["string","number"]},{"type":"object","additionalProperties":false,"required":["value"],"properties":{"value":{"type":"number"},"displayValue":{"type":"string"}}}]};const pattern3 = new RegExp("^[HL]+$", "u");function validate20(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="dictionaryTermMetaBankV3" */;let vErrors = null;let errors = 0;if(errors === 0){if(Array.isArray(data)){var valid0 = true;const len0 = data.length;for(let i0=0; i0<len0; i0++){let data0 = data[i0];const _errs1 = errors;const _errs3 = errors;let valid1 = false;let passing0 = null;const _errs4 = errors;if(Array.isArray(data0)){if(data0.length > 3){const err0 = {instancePath:instancePath+"/" + i0,schemaPath:"#/items/oneOf/0/maxItems",keyword:"maxItems",params:{limit: 3},message:"must NOT have more than 3 items"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data0.length < 3){const err1 = {instancePath:instancePath+"/" + i0,schemaPath:"#/items/oneOf/0/minItems",keyword:"minItems",params:{limit: 3},message:"must NOT have fewer than 3 items"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}else {const len1 = data0.length;if(len1 > 1){const _errs5 = errors;if("freq" !== data0[1]){const err2 = {instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/oneOf/0/items/1/const",keyword:"const",params:{allowedValue: "freq"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}var valid2 = _errs5 === errors;}if(valid2){if(len1 > 2){let data2 = data0[2];const _errs6 = errors;const _errs7 = errors;let valid3 = false;let passing1 = null;const _errs8 = errors;const _errs10 = errors;let valid5 = false;let passing2 = null;const _errs11 = errors;if((typeof data2 !== "string") && (!((typeof data2 == "number") && (isFinite(data2))))){const err3 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/0/type",keyword:"type",params:{type: schema31.oneOf[0].type},message:"must be string,number"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}var _valid2 = _errs11 === errors;if(_valid2){valid5 = true;passing2 = 0;}const _errs13 = errors;if(errors === _errs13){if(data2 && typeof data2 == "object" && !Array.isArray(data2)){let missing0;if((data2.value === undefined) && (missing0 = "value")){const err4 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/1/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}else {const _errs15 = errors;for(const key0 in data2){if(!((key0 === "value") || (key0 === "displayValue"))){const err5 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;break;}}if(_errs15 === errors){if(data2.value !== undefined){let data3 = data2.value;const _errs16 = errors;if(!((typeof data3 == "number") && (isFinite(data3)))){const err6 = {instancePath:instancePath+"/" + i0+"/2/value",schemaPath:"#/definitions/frequency/oneOf/1/properties/value/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid6 = _errs16 === errors;}else {var valid6 = true;}if(valid6){if(data2.displayValue !== undefined){const _errs18 = errors;if(typeof data2.displayValue !== "string"){const err7 = {instancePath:instancePath+"/" + i0+"/2/displayValue",schemaPath:"#/definitions/frequency/oneOf/1/properties/displayValue/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}var valid6 = _errs18 === errors;}else {var valid6 = true;}}}}}else {const err8 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}var _valid2 = _errs13 === errors;if(_valid2 && valid5){valid5 = false;passing2 = [passing2, 1];}else {if(_valid2){valid5 = true;passing2 = 1;}}if(!valid5){const err9 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/definitions/frequency/oneOf",keyword:"oneOf",params:{passingSchemas: passing2},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}else {errors = _errs10;if(vErrors !== null){if(_errs10){vErrors.length = _errs10;}else {vErrors = null;}}}var _valid1 = _errs8 === errors;if(_valid1){valid3 = true;passing1 = 0;}const _errs20 = errors;if(errors === _errs20){if(data2 && typeof data2 == "object" && !Array.isArray(data2)){let missing1;if(((data2.reading === undefined) && (missing1 = "reading")) || ((data2.frequency === undefined) && (missing1 = "frequency"))){const err10 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/0/items/2/oneOf/1/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}else {const _errs22 = errors;for(const key1 in data2){if(!((key1 === "reading") || (key1 === "frequency"))){const err11 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/0/items/2/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;break;}}if(_errs22 === errors){if(data2.reading !== undefined){const _errs23 = errors;if(typeof data2.reading !== "string"){const err12 = {instancePath:instancePath+"/" + i0+"/2/reading",schemaPath:"#/items/oneOf/0/items/2/oneOf/1/properties/reading/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}var valid7 = _errs23 === errors;}else {var valid7 = true;}if(valid7){if(data2.frequency !== undefined){let data6 = data2.frequency;const _errs25 = errors;const _errs27 = errors;let valid9 = false;let passing3 = null;const _errs28 = errors;if((typeof data6 !== "string") && (!((typeof data6 == "number") && (isFinite(data6))))){const err13 = {instancePath:instancePath+"/" + i0+"/2/frequency",schemaPath:"#/definitions/frequency/oneOf/0/type",keyword:"type",params:{type: schema31.oneOf[0].type},message:"must be string,number"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var _valid3 = _errs28 === errors;if(_valid3){valid9 = true;passing3 = 0;}const _errs30 = errors;if(errors === _errs30){if(data6 && typeof data6 == "object" && !Array.isArray(data6)){let missing2;if((data6.value === undefined) && (missing2 = "value")){const err14 = {instancePath:instancePath+"/" + i0+"/2/frequency",schemaPath:"#/definitions/frequency/oneOf/1/required",keyword:"required",params:{missingProperty: missing2},message:"must have required property '"+missing2+"'"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}else {const _errs32 = errors;for(const key2 in data6){if(!((key2 === "value") || (key2 === "displayValue"))){const err15 = {instancePath:instancePath+"/" + i0+"/2/frequency",schemaPath:"#/definitions/frequency/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key2},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;break;}}if(_errs32 === errors){if(data6.value !== undefined){let data7 = data6.value;const _errs33 = errors;if(!((typeof data7 == "number") && (isFinite(data7)))){const err16 = {instancePath:instancePath+"/" + i0+"/2/frequency/value",schemaPath:"#/definitions/frequency/oneOf/1/properties/value/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}var valid10 = _errs33 === errors;}else {var valid10 = true;}if(valid10){if(data6.displayValue !== undefined){const _errs35 = errors;if(typeof data6.displayValue !== "string"){const err17 = {instancePath:instancePath+"/" + i0+"/2/frequency/displayValue",schemaPath:"#/definitions/frequency/oneOf/1/properties/displayValue/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}var valid10 = _errs35 === errors;}else {var valid10 = true;}}}}}else {const err18 = {instancePath:instancePath+"/" + i0+"/2/frequency",schemaPath:"#/definitions/frequency/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}var _valid3 = _errs30 === errors;if(_valid3 && valid9){valid9 = false;passing3 = [passing3, 1];}else {if(_valid3){valid9 = true;passing3 = 1;}}if(!valid9){const err19 = {instancePath:instancePath+"/" + i0+"/2/frequency",schemaPath:"#/definitions/frequency/oneOf",keyword:"oneOf",params:{passingSchemas: passing3},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}else {errors = _errs27;if(vErrors !== null){if(_errs27){vErrors.length = _errs27;}else {vErrors = null;}}}var valid7 = _errs25 === errors;}else {var valid7 = true;}}}}}else {const err20 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/0/items/2/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}var _valid1 = _errs20 === errors;if(_valid1 && valid3){valid3 = false;passing1 = [passing1, 1];}else {if(_valid1){valid3 = true;passing1 = 1;}}if(!valid3){const err21 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/0/items/2/oneOf",keyword:"oneOf",params:{passingSchemas: passing1},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}else {errors = _errs7;if(vErrors !== null){if(_errs7){vErrors.length = _errs7;}else {vErrors = null;}}}var valid2 = _errs6 === errors;}}}}}var _valid0 = _errs4 === errors;if(_valid0){valid1 = true;passing0 = 0;}const _errs37 = errors;if(Array.isArray(data0)){if(data0.length > 3){const err22 = {instancePath:instancePath+"/" + i0,schemaPath:"#/items/oneOf/1/maxItems",keyword:"maxItems",params:{limit: 3},message:"must NOT have more than 3 items"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}else {if(data0.length < 3){const err23 = {instancePath:instancePath+"/" + i0,schemaPath:"#/items/oneOf/1/minItems",keyword:"minItems",params:{limit: 3},message:"must NOT have fewer than 3 items"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}else {const len2 = data0.length;if(len2 > 1){const _errs38 = errors;if("pitch" !== data0[1]){const err24 = {instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/oneOf/1/items/1/const",keyword:"const",params:{allowedValue: "pitch"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}var valid11 = _errs38 === errors;}if(valid11){if(len2 > 2){let data10 = data0[2];const _errs39 = errors;if(errors === _errs39){if(data10 && typeof data10 == "object" && !Array.isArray(data10)){let missing3;if(((data10.reading === undefined) && (missing3 = "reading")) || ((data10.pitches === undefined) && (missing3 = "pitches"))){const err25 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/1/items/2/required",keyword:"required",params:{missingProperty: missing3},message:"must have required property '"+missing3+"'"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}else {const _errs41 = errors;for(const key3 in data10){if(!((key3 === "reading") || (key3 === "pitches"))){const err26 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/1/items/2/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key3},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;break;}}if(_errs41 === errors){if(data10.reading !== undefined){const _errs42 = errors;if(typeof data10.reading !== "string"){const err27 = {instancePath:instancePath+"/" + i0+"/2/reading",schemaPath:"#/items/oneOf/1/items/2/properties/reading/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}var valid12 = _errs42 === errors;}else {var valid12 = true;}if(valid12){if(data10.pitches !== undefined){let data12 = data10.pitches;const _errs44 = errors;if(errors === _errs44){if(Array.isArray(data12)){var valid13 = true;const len3 = data12.length;for(let i1=0; i1<len3; i1++){let data13 = data12[i1];const _errs46 = errors;if(errors === _errs46){if(data13 && typeof data13 == "object" && !Array.isArray(data13)){let missing4;if((data13.position === undefined) && (missing4 = "position")){const err28 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/required",keyword:"required",params:{missingProperty: missing4},message:"must have required property '"+missing4+"'"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}else {const _errs48 = errors;for(const key4 in data13){if(!((((key4 === "position") || (key4 === "nasal")) || (key4 === "devoice")) || (key4 === "tags"))){const err29 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key4},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;break;}}if(_errs48 === errors){if(data13.position !== undefined){let data14 = data13.position;const _errs49 = errors;const _errs50 = errors;let valid15 = false;let passing4 = null;const _errs51 = errors;if(!(((typeof data14 == "number") && (!(data14 % 1) && !isNaN(data14))) && (isFinite(data14)))){const err30 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/position",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/position/oneOf/0/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}if(errors === _errs51){if((typeof data14 == "number") && (isFinite(data14))){if(data14 < 0 || isNaN(data14)){const err31 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/position",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/position/oneOf/0/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}}var _valid4 = _errs51 === errors;if(_valid4){valid15 = true;passing4 = 0;}const _errs53 = errors;if(errors === _errs53){if(typeof data14 === "string"){if(!pattern3.test(data14)){const err32 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/position",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/position/oneOf/1/pattern",keyword:"pattern",params:{pattern: "^[HL]+$"},message:"must match pattern \""+"^[HL]+$"+"\""};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/position",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/position/oneOf/1/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}var _valid4 = _errs53 === errors;if(_valid4 && valid15){valid15 = false;passing4 = [passing4, 1];}else {if(_valid4){valid15 = true;passing4 = 1;}}if(!valid15){const err34 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/position",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/position/oneOf",keyword:"oneOf",params:{passingSchemas: passing4},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}else {errors = _errs50;if(vErrors !== null){if(_errs50){vErrors.length = _errs50;}else {vErrors = null;}}}var valid14 = _errs49 === errors;}else {var valid14 = true;}if(valid14){if(data13.nasal !== undefined){let data15 = data13.nasal;const _errs55 = errors;const _errs56 = errors;let valid16 = false;let passing5 = null;const _errs57 = errors;if(!(((typeof data15 == "number") && (!(data15 % 1) && !isNaN(data15))) && (isFinite(data15)))){const err35 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/nasal",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/nasal/oneOf/0/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}if(errors === _errs57){if((typeof data15 == "number") && (isFinite(data15))){if(data15 < 0 || isNaN(data15)){const err36 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/nasal",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/nasal/oneOf/0/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}}var _valid5 = _errs57 === errors;if(_valid5){valid16 = true;passing5 = 0;}const _errs59 = errors;if(errors === _errs59){if(Array.isArray(data15)){var valid17 = true;const len4 = data15.length;for(let i2=0; i2<len4; i2++){let data16 = data15[i2];const _errs61 = errors;if(!(((typeof data16 == "number") && (!(data16 % 1) && !isNaN(data16))) && (isFinite(data16)))){const err37 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/nasal/" + i2,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/nasal/oneOf/1/items/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}if(errors === _errs61){if((typeof data16 == "number") && (isFinite(data16))){if(data16 < 0 || isNaN(data16)){const err38 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/nasal/" + i2,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/nasal/oneOf/1/items/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}}var valid17 = _errs61 === errors;if(!valid17){break;}}}else {const err39 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/nasal",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/nasal/oneOf/1/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}var _valid5 = _errs59 === errors;if(_valid5 && valid16){valid16 = false;passing5 = [passing5, 1];}else {if(_valid5){valid16 = true;passing5 = 1;}}if(!valid16){const err40 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/nasal",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/nasal/oneOf",keyword:"oneOf",params:{passingSchemas: passing5},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}else {errors = _errs56;if(vErrors !== null){if(_errs56){vErrors.length = _errs56;}else {vErrors = null;}}}var valid14 = _errs55 === errors;}else {var valid14 = true;}if(valid14){if(data13.devoice !== undefined){let data17 = data13.devoice;const _errs63 = errors;const _errs64 = errors;let valid18 = false;let passing6 = null;const _errs65 = errors;if(!(((typeof data17 == "number") && (!(data17 % 1) && !isNaN(data17))) && (isFinite(data17)))){const err41 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/devoice",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/devoice/oneOf/0/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}if(errors === _errs65){if((typeof data17 == "number") && (isFinite(data17))){if(data17 < 0 || isNaN(data17)){const err42 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/devoice",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/devoice/oneOf/0/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}}var _valid6 = _errs65 === errors;if(_valid6){valid18 = true;passing6 = 0;}const _errs67 = errors;if(errors === _errs67){if(Array.isArray(data17)){var valid19 = true;const len5 = data17.length;for(let i3=0; i3<len5; i3++){let data18 = data17[i3];const _errs69 = errors;if(!(((typeof data18 == "number") && (!(data18 % 1) && !isNaN(data18))) && (isFinite(data18)))){const err43 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/devoice/" + i3,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/devoice/oneOf/1/items/type",keyword:"type",params:{type: "integer"},message:"must be integer"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}if(errors === _errs69){if((typeof data18 == "number") && (isFinite(data18))){if(data18 < 0 || isNaN(data18)){const err44 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/devoice/" + i3,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/devoice/oneOf/1/items/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}}}var valid19 = _errs69 === errors;if(!valid19){break;}}}else {const err45 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/devoice",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/devoice/oneOf/1/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}}var _valid6 = _errs67 === errors;if(_valid6 && valid18){valid18 = false;passing6 = [passing6, 1];}else {if(_valid6){valid18 = true;passing6 = 1;}}if(!valid18){const err46 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/devoice",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/devoice/oneOf",keyword:"oneOf",params:{passingSchemas: passing6},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}else {errors = _errs64;if(vErrors !== null){if(_errs64){vErrors.length = _errs64;}else {vErrors = null;}}}var valid14 = _errs63 === errors;}else {var valid14 = true;}if(valid14){if(data13.tags !== undefined){let data19 = data13.tags;const _errs71 = errors;if(errors === _errs71){if(Array.isArray(data19)){var valid20 = true;const len6 = data19.length;for(let i4=0; i4<len6; i4++){const _errs73 = errors;if(typeof data19[i4] !== "string"){const err47 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/tags/" + i4,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/tags/items/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}var valid20 = _errs73 === errors;if(!valid20){break;}}}else {const err48 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1+"/tags",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/properties/tags/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}}var valid14 = _errs71 === errors;}else {var valid14 = true;}}}}}}}else {const err49 = {instancePath:instancePath+"/" + i0+"/2/pitches/" + i1,schemaPath:"#/items/oneOf/1/items/2/properties/pitches/items/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}}var valid13 = _errs46 === errors;if(!valid13){break;}}}else {const err50 = {instancePath:instancePath+"/" + i0+"/2/pitches",schemaPath:"#/items/oneOf/1/items/2/properties/pitches/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}}var valid12 = _errs44 === errors;}else {var valid12 = true;}}}}}else {const err51 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/1/items/2/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}var valid11 = _errs39 === errors;}}}}}var _valid0 = _errs37 === errors;if(_valid0 && valid1){valid1 = false;passing0 = [passing0, 1];}else {if(_valid0){valid1 = true;passing0 = 1;}const _errs75 = errors;if(Array.isArray(data0)){if(data0.length > 3){const err52 = {instancePath:instancePath+"/" + i0,schemaPath:"#/items/oneOf/2/maxItems",keyword:"maxItems",params:{limit: 3},message:"must NOT have more than 3 items"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}else {if(data0.length < 3){const err53 = {instancePath:instancePath+"/" + i0,schemaPath:"#/items/oneOf/2/minItems",keyword:"minItems",params:{limit: 3},message:"must NOT have fewer than 3 items"};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}else {const len7 = data0.length;if(len7 > 1){const _errs76 = errors;if("ipa" !== data0[1]){const err54 = {instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/oneOf/2/items/1/const",keyword:"const",params:{allowedValue: "ipa"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}var valid21 = _errs76 === errors;}if(valid21){if(len7 > 2){let data22 = data0[2];const _errs77 = errors;if(errors === _errs77){if(data22 && typeof data22 == "object" && !Array.isArray(data22)){let missing5;if(((data22.reading === undefined) && (missing5 = "reading")) || ((data22.transcriptions === undefined) && (missing5 = "transcriptions"))){const err55 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/2/items/2/required",keyword:"required",params:{missingProperty: missing5},message:"must have required property '"+missing5+"'"};if(vErrors === null){vErrors = [err55];}else {vErrors.push(err55);}errors++;}else {const _errs79 = errors;for(const key5 in data22){if(!((key5 === "reading") || (key5 === "transcriptions"))){const err56 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/2/items/2/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key5},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err56];}else {vErrors.push(err56);}errors++;break;}}if(_errs79 === errors){if(data22.reading !== undefined){const _errs80 = errors;if(typeof data22.reading !== "string"){const err57 = {instancePath:instancePath+"/" + i0+"/2/reading",schemaPath:"#/items/oneOf/2/items/2/properties/reading/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err57];}else {vErrors.push(err57);}errors++;}var valid22 = _errs80 === errors;}else {var valid22 = true;}if(valid22){if(data22.transcriptions !== undefined){let data24 = data22.transcriptions;const _errs82 = errors;if(errors === _errs82){if(Array.isArray(data24)){var valid23 = true;const len8 = data24.length;for(let i5=0; i5<len8; i5++){let data25 = data24[i5];const _errs84 = errors;if(errors === _errs84){if(data25 && typeof data25 == "object" && !Array.isArray(data25)){let missing6;if((data25.ipa === undefined) && (missing6 = "ipa")){const err58 = {instancePath:instancePath+"/" + i0+"/2/transcriptions/" + i5,schemaPath:"#/items/oneOf/2/items/2/properties/transcriptions/items/required",keyword:"required",params:{missingProperty: missing6},message:"must have required property '"+missing6+"'"};if(vErrors === null){vErrors = [err58];}else {vErrors.push(err58);}errors++;}else {const _errs86 = errors;for(const key6 in data25){if(!((key6 === "ipa") || (key6 === "tags"))){const err59 = {instancePath:instancePath+"/" + i0+"/2/transcriptions/" + i5,schemaPath:"#/items/oneOf/2/items/2/properties/transcriptions/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key6},message:"must NOT have additional properties"};if(vErrors === null){vErrors = [err59];}else {vErrors.push(err59);}errors++;break;}}if(_errs86 === errors){if(data25.ipa !== undefined){const _errs87 = errors;if(typeof data25.ipa !== "string"){const err60 = {instancePath:instancePath+"/" + i0+"/2/transcriptions/" + i5+"/ipa",schemaPath:"#/items/oneOf/2/items/2/properties/transcriptions/items/properties/ipa/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err60];}else {vErrors.push(err60);}errors++;}var valid24 = _errs87 === errors;}else {var valid24 = true;}if(valid24){if(data25.tags !== undefined){let data27 = data25.tags;const _errs89 = errors;if(errors === _errs89){if(Array.isArray(data27)){var valid25 = true;const len9 = data27.length;for(let i6=0; i6<len9; i6++){const _errs91 = errors;if(typeof data27[i6] !== "string"){const err61 = {instancePath:instancePath+"/" + i0+"/2/transcriptions/" + i5+"/tags/" + i6,schemaPath:"#/items/oneOf/2/items/2/properties/transcriptions/items/properties/tags/items/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err61];}else {vErrors.push(err61);}errors++;}var valid25 = _errs91 === errors;if(!valid25){break;}}}else {const err62 = {instancePath:instancePath+"/" + i0+"/2/transcriptions/" + i5+"/tags",schemaPath:"#/items/oneOf/2/items/2/properties/transcriptions/items/properties/tags/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err62];}else {vErrors.push(err62);}errors++;}}var valid24 = _errs89 === errors;}else {var valid24 = true;}}}}}else {const err63 = {instancePath:instancePath+"/" + i0+"/2/transcriptions/" + i5,schemaPath:"#/items/oneOf/2/items/2/properties/transcriptions/items/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err63];}else {vErrors.push(err63);}errors++;}}var valid23 = _errs84 === errors;if(!valid23){break;}}}else {const err64 = {instancePath:instancePath+"/" + i0+"/2/transcriptions",schemaPath:"#/items/oneOf/2/items/2/properties/transcriptions/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err64];}else {vErrors.push(err64);}errors++;}}var valid22 = _errs82 === errors;}else {var valid22 = true;}}}}}else {const err65 = {instancePath:instancePath+"/" + i0+"/2",schemaPath:"#/items/oneOf/2/items/2/type",keyword:"type",params:{type: schema30.items.oneOf[2].items[2].type},message:"must be object"};if(vErrors === null){vErrors = [err65];}else {vErrors.push(err65);}errors++;}}var valid21 = _errs77 === errors;}}}}}var _valid0 = _errs75 === errors;if(_valid0 && valid1){valid1 = false;passing0 = [passing0, 2];}else {if(_valid0){valid1 = true;passing0 = 2;}}}if(!valid1){const err66 = {instancePath:instancePath+"/" + i0,schemaPath:"#/items/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err66];}else {vErrors.push(err66);}errors++;validate20.errors = vErrors;return false;}else {errors = _errs3;if(vErrors !== null){if(_errs3){vErrors.length = _errs3;}else {vErrors = null;}}}if(errors === _errs1){if(Array.isArray(data0)){if(data0.length > 3){validate20.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/maxItems",keyword:"maxItems",params:{limit: 3},message:"must NOT have more than 3 items"}];return false;}else {if(data0.length < 3){validate20.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/minItems",keyword:"minItems",params:{limit: 3},message:"must NOT have fewer than 3 items"}];return false;}else {const len10 = data0.length;if(!(len10 <= 3)){validate20.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/additionalItems",keyword:"additionalItems",params:{limit: 3},message:"must NOT have more than 3 items"}];return false;}else {const len11 = data0.length;if(len11 > 0){const _errs93 = errors;if(typeof data0[0] !== "string"){validate20.errors = [{instancePath:instancePath+"/" + i0+"/0",schemaPath:"#/items/items/0/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid26 = _errs93 === errors;}if(valid26){if(len11 > 1){let data30 = data0[1];const _errs95 = errors;if(typeof data30 !== "string"){validate20.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((data30 === "freq") || (data30 === "pitch")) || (data30 === "ipa"))){validate20.errors = [{instancePath:instancePath+"/" + i0+"/1",schemaPath:"#/items/items/1/enum",keyword:"enum",params:{allowedValues: schema30.items.items[1].enum},message:"must be equal to one of the allowed values"}];return false;}var valid26 = _errs95 === errors;}}}}}}else {validate20.errors = [{instancePath:instancePath+"/" + i0,schemaPath:"#/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}else {validate20.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}validate20.errors = vErrors;return errors === 0;}export const options = validate21;const schema33 = {"$id":"options","$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["version","profiles","profileCurrent","global"],"properties":{"version":{"type":"integer","minimum":0,"default":0},"profiles":{"type":"array","minItems":1,"items":{"type":"object","required":["name","conditionGroups","options"],"properties":{"name":{"type":"string","default":"Default"},"conditionGroups":{"type":"array","items":{"type":"object","required":["conditions"],"properties":{"conditions":{"type":"array","items":{"type":"object","required":["type","operator","value"],"properties":{"type":{"type":"string"},"operator":{"type":"string"},"value":{}}}}}}},"options":{"type":"object","required":["general","popupWindow","audio","scanning","translation","dictionaries","parsing","anki","sentenceParsing","inputs","clipboard","accessibility"],"properties":{"general":{"type":"object","required":["enable","language","resultOutputMode","debugInfo","maxResults","showAdvanced","showDebug","popupDisplayMode","popupWidth","popupHeight","popupHorizontalOffset","popupVerticalOffset","popupHorizontalOffset2","popupVerticalOffset2","popupHorizontalTextPosition","popupVerticalTextPosition","popupScalingFactor","popupScaleRelativeToPageZoom","popupScaleRelativeToVisualViewport","showGuide","enableContextMenuScanSelected","compactTags","averageFrequency","glossaryLayoutMode","mainDictionary","popupTheme","popupOuterTheme","customPopupCss","customPopupOuterCss","enableWanakana","showPitchAccentDownstepNotation","showPitchAccentPositionNotation","showPitchAccentGraph","showIframePopupsInRootFrame","useSecurePopupFrameUrl","usePopupShadowDom","usePopupWindow","popupCurrentIndicatorMode","popupActionBarVisibility","popupActionBarLocation","frequencyDisplayMode","termDisplayMode","sortFrequencyDictionary","sortFrequencyDictionaryOrder","stickySearchHeader","fontFamily","fontSize","lineHeight","enableYomitanApi","yomitanApiServer","yomitanApiAllowCssSanitizationBypass"],"properties":{"enable":{"type":"boolean","default":true},"language":{"type":"string","default":"ja"},"resultOutputMode":{"type":"string","enum":["group","merge","split","term"],"default":"group"},"fontFamily":{"type":"string","default":""},"fontSize":{"type":"number","default":14},"lineHeight":{"type":"string","default":"1.5"},"debugInfo":{"type":"boolean","default":false},"maxResults":{"type":"integer","minimum":1,"default":32},"showAdvanced":{"type":"boolean","default":false},"showDebug":{"type":"boolean","default":false},"popupDisplayMode":{"type":"string","enum":["default","full-width"],"default":"default"},"popupWidth":{"type":"number","minimum":0,"default":400},"popupHeight":{"type":"number","minimum":0,"default":250},"popupHorizontalOffset":{"type":"number","default":0},"popupVerticalOffset":{"type":"number","default":10},"popupHorizontalOffset2":{"type":"number","default":10},"popupVerticalOffset2":{"type":"number","default":0},"popupHorizontalTextPosition":{"type":"string","enum":["below","above"],"default":"below"},"popupVerticalTextPosition":{"type":"string","enum":["default","before","after","left","right"],"default":"before"},"popupScalingFactor":{"type":"number","default":1},"popupScaleRelativeToPageZoom":{"type":"boolean","default":false},"popupScaleRelativeToVisualViewport":{"type":"boolean","default":true},"showGuide":{"type":"boolean","default":true},"enableContextMenuScanSelected":{"type":"boolean","default":true},"compactTags":{"type":"boolean","default":false},"averageFrequency":{"type":"boolean","default":false},"glossaryLayoutMode":{"type":"string","enum":["default","compact","compact-popup-anki"],"default":"default"},"mainDictionary":{"type":"string"},"popupTheme":{"type":"string","enum":["light","dark","browser","site"],"default":"site"},"popupOuterTheme":{"type":"string","enum":["light","dark","browser","site","none"],"default":"site"},"customPopupCss":{"type":"string","default":""},"customPopupOuterCss":{"type":"string","default":""},"enableWanakana":{"type":"boolean","default":true},"showPitchAccentDownstepNotation":{"type":"boolean","default":true},"showPitchAccentPositionNotation":{"type":"boolean","default":true},"showPitchAccentGraph":{"type":"boolean","default":false},"showIframePopupsInRootFrame":{"type":"boolean","default":true},"useSecurePopupFrameUrl":{"type":"boolean","default":true},"usePopupShadowDom":{"type":"boolean","default":true},"usePopupWindow":{"type":"boolean","default":false},"popupCurrentIndicatorMode":{"type":"string","enum":["none","asterisk","triangle","bar-left","bar-right","dot-left","dot-right"],"default":"triangle"},"popupActionBarVisibility":{"type":"string","enum":["auto","always"],"default":"auto"},"popupActionBarLocation":{"type":"string","enum":["left","right","top","bottom"],"default":"top"},"frequencyDisplayMode":{"type":"string","enum":["tags","tags-grouped","split-tags","split-tags-grouped","inline-list","list"],"default":"split-tags-grouped"},"termDisplayMode":{"type":"string","enum":["ruby","ruby-and-reading","term-and-reading","term-only"],"default":"ruby"},"sortFrequencyDictionary":{"type":["string","null"],"default":null},"sortFrequencyDictionaryOrder":{"type":"string","enum":["ascending","descending"],"default":"descending"},"stickySearchHeader":{"type":"boolean","default":false},"enableYomitanApi":{"type":"boolean","default":false},"yomitanApiServer":{"type":"string","default":"http://127.0.0.1:19633"},"yomitanApiAllowCssSanitizationBypass":{"type":"boolean","default":false}}},"popupWindow":{"type":"object","required":["width","height","left","top","useLeft","useTop","windowType","windowState"],"properties":{"width":{"type":"integer","minimum":0,"default":400},"height":{"type":"integer","minimum":0,"default":250},"left":{"type":"integer","default":0},"top":{"type":"integer","default":0},"useLeft":{"type":"boolean","default":false},"useTop":{"type":"boolean","default":false},"windowType":{"type":"string","enum":["normal","popup"],"default":"popup"},"windowState":{"type":"string","enum":["normal","maximized","fullscreen"],"default":"normal"}}},"audio":{"type":"object","required":["enabled","volume","autoPlay","fallbackSoundType","sources","enableDefaultAudioSources"],"properties":{"enabled":{"type":"boolean","default":true},"volume":{"type":"number","minimum":0,"maximum":100,"default":100},"autoPlay":{"type":"boolean","default":false},"fallbackSoundType":{"type":"string","enum":["none","click","bloop"],"default":"click"},"sources":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","url","voice"],"properties":{"type":{"type":"string","enum":["jpod101","language-pod-101","jisho","lingua-libre","wiktionary","text-to-speech","text-to-speech-reading","custom","custom-json"],"default":"jpod101"},"url":{"type":"string","default":""},"voice":{"type":"string","default":""}}},"default":[]},"enableDefaultAudioSources":{"type":"boolean","default":true}}},"scanning":{"type":"object","required":["inputs","preventMiddleMouse","preventBackForward","selectText","alphanumeric","autoHideResults","delay","hideDelay","length","deepDomScan","popupNestingMaxDepth","enablePopupSearch","enableOnPopupExpressions","enableOnSearchPage","enableSearchTags","layoutAwareScan","matchTypePrefix","hidePopupOnCursorExit","hidePopupOnCursorExitDelay","reducedMotionScrolling","reducedMotionScrollingScale","reducedMotionScrollingSwipeThreshold","normalizeCssZoom","scanWithoutMousemove","scanResolution"],"properties":{"inputs":{"type":"array","default":[{"include":"shift","exclude":"mouse0","types":{"mouse":true,"touch":false,"pen":false},"options":{"showAdvanced":false,"searchTerms":true,"searchKanji":true,"scanOnTouchTap":true,"scanOnTouchMove":false,"scanOnTouchPress":false,"scanOnTouchRelease":false,"scanOnPenMove":true,"scanOnPenHover":false,"scanOnPenReleaseHover":false,"scanOnPenPress":true,"scanOnPenRelease":false,"preventTouchScrolling":false,"preventPenScrolling":false,"minimumTouchTime":0}},{"include":"","exclude":"","types":{"mouse":false,"touch":true,"pen":true},"options":{"showAdvanced":false,"searchTerms":true,"searchKanji":true,"scanOnTouchTap":true,"scanOnTouchMove":false,"scanOnTouchPress":false,"scanOnTouchRelease":false,"scanOnPenMove":true,"scanOnPenHover":false,"scanOnPenReleaseHover":false,"scanOnPenPress":true,"scanOnPenRelease":false,"preventTouchScrolling":true,"preventPenScrolling":true,"minimumTouchTime":0}}],"items":{"type":"object","required":["include","exclude","types","options"],"properties":{"include":{"type":"string","default":"shift"},"exclude":{"type":"string","default":""},"types":{"type":"object","required":["mouse","touch","pen"],"properties":{"mouse":{"type":"boolean","default":true},"touch":{"type":"boolean","default":true},"pen":{"type":"boolean","default":true}}},"options":{"type":"object","required":["showAdvanced","searchTerms","searchKanji","scanOnTouchTap","scanOnTouchMove","scanOnTouchPress","scanOnTouchRelease","scanOnPenMove","scanOnPenHover","scanOnPenReleaseHover","scanOnPenPress","scanOnPenRelease","preventTouchScrolling","preventPenScrolling","minimumTouchTime"],"properties":{"showAdvanced":{"type":"boolean","default":false},"searchTerms":{"type":"boolean","default":true},"searchKanji":{"type":"boolean","default":true},"scanOnTouchTap":{"type":"boolean","default":true},"scanOnTouchMove":{"type":"boolean","default":false},"scanOnTouchPress":{"type":"boolean","default":false},"scanOnTouchRelease":{"type":"boolean","default":false},"scanOnPenMove":{"type":"boolean","default":true},"scanOnPenHover":{"type":"boolean","default":false},"scanOnPenReleaseHover":{"type":"boolean","default":false},"scanOnPenPress":{"type":"boolean","default":true},"scanOnPenRelease":{"type":"boolean","default":false},"preventTouchScrolling":{"type":"boolean","default":true},"preventPenScrolling":{"type":"boolean","default":true},"minimumTouchTime":{"type":"number","default":0}}}}}},"preventMiddleMouse":{"type":"object","required":["onTextHover","onWebPages","onPopupPages","onSearchPages","onSearchQuery"],"properties":{"onWebPages":{"type":"boolean","default":false},"onPopupPages":{"type":"boolean","default":false},"onSearchPages":{"type":"boolean","default":false},"onSearchQuery":{"type":"boolean","default":false}}},"preventBackForward":{"type":"object","required":["onTextHover","onWebPages","onPopupPages","onSearchPages","onSearchQuery"],"properties":{"onWebPages":{"type":"boolean","default":false},"onPopupPages":{"type":"boolean","default":false},"onSearchPages":{"type":"boolean","default":false},"onSearchQuery":{"type":"boolean","default":false}}},"selectText":{"type":"boolean","default":true},"alphanumeric":{"type":"boolean","default":true},"autoHideResults":{"type":"boolean","default":false},"delay":{"type":"number","minimum":0,"default":20},"hideDelay":{"type":"number","minimum":0,"default":0},"length":{"type":"integer","minimum":1,"default":16},"deepDomScan":{"type":"boolean","default":false},"popupNestingMaxDepth":{"type":"integer","minimum":0,"default":10},"enablePopupSearch":{"type":"boolean","default":false},"enableOnPopupExpressions":{"type":"boolean","default":false},"enableOnSearchPage":{"type":"boolean","default":true},"enableSearchTags":{"type":"boolean","default":false},"layoutAwareScan":{"type":"boolean","default":true},"matchTypePrefix":{"type":"boolean","default":false},"hidePopupOnCursorExit":{"type":"boolean","default":false},"hidePopupOnCursorExitDelay":{"type":"number","minimum":0,"default":0},"reducedMotionScrolling":{"type":"boolean","default":false},"reducedMotionScrollingScale":{"type":"number","default":1},"reducedMotionScrollingSwipeThreshold":{"type":"number","minimum":0,"default":40},"normalizeCssZoom":{"type":"boolean","default":true},"scanWithoutMousemove":{"type":"boolean","default":true},"scanResolution":{"type":"string","enum":["character","word"],"default":"character"}}},"translation":{"type":"object","required":["textReplacements","searchResolution"],"properties":{"searchResolution":{"type":"string","enum":["letter","word"],"default":"letter"},"textReplacements":{"type":"object","required":["searchOriginal","groups"],"properties":{"searchOriginal":{"type":"boolean","default":true},"groups":{"type":"array","items":{"type":"array","items":{"type":"object","required":["pattern","ignoreCase","replacement"],"properties":{"pattern":{"type":"string","default":""},"ignoreCase":{"type":"boolean","default":false},"replacement":{"type":"string","default":""}}}}}}}}},"dictionaries":{"type":"array","items":{"type":"object","required":["name","alias","enabled","allowSecondarySearches","definitionsCollapsible","partsOfSpeechFilter","useDeinflections"],"properties":{"name":{"type":"string","default":""},"alias":{"type":"string","default":""},"enabled":{"type":"boolean","default":true},"allowSecondarySearches":{"type":"boolean","default":false},"definitionsCollapsible":{"type":"string","enum":["not-collapsible","expanded","collapsed","force-collapsed","force-expanded"],"default":"not-collapsible"},"partsOfSpeechFilter":{"type":"boolean","default":true},"useDeinflections":{"type":"boolean","default":true}}}},"parsing":{"type":"object","required":["enableScanningParser","enableMecabParser","selectedParser","termSpacing","readingMode"],"properties":{"enableScanningParser":{"type":"boolean","default":true},"enableMecabParser":{"type":"boolean","default":false},"selectedParser":{"type":["string","null"],"default":null},"termSpacing":{"type":"boolean","default":true},"readingMode":{"type":"string","enum":["hiragana","katakana","romaji","dictionary-reading","none"],"default":"hiragana"}}},"anki":{"type":"object","required":["enable","server","tags","screenshot","cardFormats","duplicateScope","duplicateScopeCheckAllModels","checkForDuplicates","duplicateBehavior","fieldTemplates","suspendNewCards","displayTagsAndFlags","targetTags","noteGuiMode","apiKey","downloadTimeout","forceSync"],"properties":{"enable":{"type":"boolean","default":false},"server":{"type":"string","default":"http://127.0.0.1:8765"},"tags":{"type":"array","items":{"type":"string"},"default":["yomitan"]},"screenshot":{"type":"object","required":["format","quality"],"properties":{"format":{"type":"string","enum":["png","jpeg"],"default":"png"},"quality":{"type":"integer","minimum":0,"maximum":100,"default":92}}},"cardFormats":{"type":"array","items":{"type":"object","required":["name","icon","deck","model","fields","type"],"properties":{"name":{"type":"string","default":""},"icon":{"type":"string","enum":["big-circle","small-circle","big-square","big-diamond"],"default":"big-circle"},"deck":{"type":"string","default":""},"model":{"type":"string","default":""},"type":{"type":"string","enum":["term","kanji"],"default":"term"},"fields":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"string","default":""},"overwriteMode":{"type":"string","enum":["coalesce","coalesce-new","skip","append","prepend","overwrite"],"default":"coalesce"}}}}}},"default":[{"name":"Expression","icon":"big-circle","deck":"","model":"","fields":{},"type":"term"},{"name":"Reading","icon":"small-circle","deck":"","model":"","fields":{},"type":"term"},{"name":"Kanji","icon":"big-circle","deck":"","model":"","fields":{},"type":"kanji"}]},"duplicateScope":{"type":"string","default":"collection","enum":["collection","deck","deck-root"]},"duplicateScopeCheckAllModels":{"type":"boolean","default":false},"checkForDuplicates":{"type":"boolean","default":true},"duplicateBehavior":{"type":"string","enum":["prevent","overwrite","new"],"default":"new"},"fieldTemplates":{"type":["string","null"],"default":null},"suspendNewCards":{"type":"boolean","default":false},"displayTagsAndFlags":{"type":"string","enum":["never","always","non-standard","custom"],"default":"never"},"targetTags":{"type":"array","items":{"type":"string"},"default":[]},"noteGuiMode":{"type":"string","enum":["browse","edit"],"default":"browse"},"apiKey":{"type":"string","default":""},"downloadTimeout":{"type":"number","default":0,"minimum":0},"forceSync":{"type":"boolean","default":false}}},"sentenceParsing":{"type":"object","required":["scanExtent","terminationCharacterMode","terminationCharacters"],"properties":{"scanExtent":{"type":"integer","minimum":0,"default":200},"terminationCharacterMode":{"type":"string","enum":["custom","custom-no-newlines","newlines","none"],"default":"custom"},"terminationCharacters":{"type":"array","items":{"type":"object","required":["enabled","character1","character2","includeCharacterAtStart","includeCharacterAtEnd"],"properties":{"enabled":{"type":"boolean","default":true},"character1":{"type":"string","default":"\"","minLength":1,"maxLength":1},"character2":{"type":["string","null"],"default":"\"","minLength":1,"maxLength":1},"includeCharacterAtStart":{"type":"boolean","default":false},"includeCharacterAtEnd":{"type":"boolean","default":false}}},"default":[{"enabled":true,"character1":"「","character2":"」","includeCharacterAtStart":false,"includeCharacterAtEnd":false},{"enabled":true,"character1":"『","character2":"』","includeCharacterAtStart":false,"includeCharacterAtEnd":false},{"enabled":true,"character1":"\"","character2":"\"","includeCharacterAtStart":false,"includeCharacterAtEnd":false},{"enabled":true,"character1":"'","character2":"'","includeCharacterAtStart":false,"includeCharacterAtEnd":false},{"enabled":true,"character1":".","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"!","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"?","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":".","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"。","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"!","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"?","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"…","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"︒","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"︕","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"︖","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true},{"enabled":true,"character1":"︙","character2":null,"includeCharacterAtStart":false,"includeCharacterAtEnd":true}]}}},"inputs":{"type":"object","required":["hotkeys"],"properties":{"hotkeys":{"type":"array","items":{"type":"object","required":["action","argument","key","modifiers","scopes","enabled"],"properties":{"action":{"type":"string","default":""},"argument":{"type":"string","default":""},"key":{"type":["string","null"],"default":null},"modifiers":{"type":"array","items":{"type":"string","enum":["alt","ctrl","shift","meta"],"default":"alt"}},"scopes":{"type":"array","items":{"type":"string","enum":["popup","search","web"],"default":"popup"},"default":["popup","search"]},"enabled":{"type":"boolean","default":true}}},"default":[{"action":"close","argument":"","key":"Escape","modifiers":[],"scopes":["popup"],"enabled":true},{"action":"focusSearchBox","argument":"","key":"Escape","modifiers":[],"scopes":["search"],"enabled":true},{"action":"previousEntry","argument":"3","key":"PageUp","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"nextEntry","argument":"3","key":"PageDown","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"lastEntry","argument":"","key":"End","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"firstEntry","argument":"","key":"Home","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"previousEntry","argument":"1","key":"ArrowUp","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"nextEntry","argument":"1","key":"ArrowDown","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"historyBackward","argument":"","key":"KeyB","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"historyForward","argument":"","key":"KeyF","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"profilePrevious","argument":"","key":"Minus","modifiers":["alt"],"scopes":["popup","search","web"],"enabled":true},{"action":"profileNext","argument":"","key":"Equal","modifiers":["alt"],"scopes":["popup","search","web"],"enabled":true},{"action":"addNote","argument":"0","key":"KeyE","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"addNote","argument":"1","key":"KeyR","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"addNote","argument":"2","key":"KeyK","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"playAudio","argument":"","key":"KeyP","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"viewNotes","argument":"0","key":"KeyV","modifiers":["alt"],"scopes":["popup","search"],"enabled":true},{"action":"copyHostSelection","argument":"","key":"KeyC","modifiers":["ctrl"],"scopes":["popup"],"enabled":true}]}}},"clipboard":{"type":"object","required":["enableBackgroundMonitor","enableSearchPageMonitor","autoSearchContent","maximumSearchLength"],"properties":{"enableBackgroundMonitor":{"type":"boolean","default":false},"enableSearchPageMonitor":{"type":"boolean","default":false},"autoSearchContent":{"type":"boolean","default":true},"maximumSearchLength":{"type":"integer","default":1000,"minimum":0}}},"accessibility":{"type":"object","required":["forceGoogleDocsHtmlRendering"],"properties":{"forceGoogleDocsHtmlRendering":{"type":"boolean","default":false}}}}}}}},"profileCurrent":{"type":"integer","minimum":0,"default":0},"global":{"type":"object","required":["database","dataTransmissionConsentShown"],"properties":{"database":{"type":"object","required":["prefixWildcardsSupported"],"properties":{"prefixWildcardsSupported":{"type":"boolean","default":false}}},"dataTransmissionConsentShown":{"type":"boolean","default":false}}}}};function validate21(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="options" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if(((((data.version === undefined) && (missing0 = "version")) || ((data.profiles === undefined) && (missing0 = "profiles"))) || ((data.profileCurrent === undefined) && (missing0 = "profileCurrent"))) || ((data.global === undefined) && (missing0 = "global"))){validate21.errors = [{instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"}];return false;}else {if(data.version !== undefined){let data0 = data.version;const _errs1 = errors;if(!(((typeof data0 == "number") && (!(data0 % 1) && !isNaN(data0))) && (isFinite(data0)))){validate21.errors = [{instancePath:instancePath+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs1){if((typeof data0 == "number") && (isFinite(data0))){if(data0 < 0 || isNaN(data0)){validate21.errors = [{instancePath:instancePath+"/version",schemaPath:"#/properties/version/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs1 === errors;}else {var valid0 = true;}if(valid0){if(data.profiles !== undefined){let data1 = data.profiles;const _errs3 = errors;if(errors === _errs3){if(Array.isArray(data1)){if(data1.length < 1){validate21.errors = [{instancePath:instancePath+"/profiles",schemaPath:"#/properties/profiles/minItems",keyword:"minItems",params:{limit: 1},message:"must NOT have fewer than 1 items"}];return false;}else {var valid1 = true;const len0 = data1.length;for(let i0=0; i0<len0; i0++){let data2 = data1[i0];const _errs5 = errors;if(errors === _errs5){if(data2 && typeof data2 == "object" && !Array.isArray(data2)){let missing1;if((((data2.name === undefined) && (missing1 = "name")) || ((data2.conditionGroups === undefined) && (missing1 = "conditionGroups"))) || ((data2.options === undefined) && (missing1 = "options"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0,schemaPath:"#/properties/profiles/items/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"}];return false;}else {if(data2.name !== undefined){const _errs7 = errors;if(typeof data2.name !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/name",schemaPath:"#/properties/profiles/items/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid2 = _errs7 === errors;}else {var valid2 = true;}if(valid2){if(data2.conditionGroups !== undefined){let data4 = data2.conditionGroups;const _errs9 = errors;if(errors === _errs9){if(Array.isArray(data4)){var valid3 = true;const len1 = data4.length;for(let i1=0; i1<len1; i1++){let data5 = data4[i1];const _errs11 = errors;if(errors === _errs11){if(data5 && typeof data5 == "object" && !Array.isArray(data5)){let missing2;if((data5.conditions === undefined) && (missing2 = "conditions")){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups/" + i1,schemaPath:"#/properties/profiles/items/properties/conditionGroups/items/required",keyword:"required",params:{missingProperty: missing2},message:"must have required property '"+missing2+"'"}];return false;}else {if(data5.conditions !== undefined){let data6 = data5.conditions;const _errs13 = errors;if(errors === _errs13){if(Array.isArray(data6)){var valid5 = true;const len2 = data6.length;for(let i2=0; i2<len2; i2++){let data7 = data6[i2];const _errs15 = errors;if(errors === _errs15){if(data7 && typeof data7 == "object" && !Array.isArray(data7)){let missing3;if((((data7.type === undefined) && (missing3 = "type")) || ((data7.operator === undefined) && (missing3 = "operator"))) || ((data7.value === undefined) && (missing3 = "value"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups/" + i1+"/conditions/" + i2,schemaPath:"#/properties/profiles/items/properties/conditionGroups/items/properties/conditions/items/required",keyword:"required",params:{missingProperty: missing3},message:"must have required property '"+missing3+"'"}];return false;}else {if(data7.type !== undefined){const _errs17 = errors;if(typeof data7.type !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups/" + i1+"/conditions/" + i2+"/type",schemaPath:"#/properties/profiles/items/properties/conditionGroups/items/properties/conditions/items/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid6 = _errs17 === errors;}else {var valid6 = true;}if(valid6){if(data7.operator !== undefined){const _errs19 = errors;if(typeof data7.operator !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups/" + i1+"/conditions/" + i2+"/operator",schemaPath:"#/properties/profiles/items/properties/conditionGroups/items/properties/conditions/items/properties/operator/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid6 = _errs19 === errors;}else {var valid6 = true;}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups/" + i1+"/conditions/" + i2,schemaPath:"#/properties/profiles/items/properties/conditionGroups/items/properties/conditions/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid5 = _errs15 === errors;if(!valid5){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups/" + i1+"/conditions",schemaPath:"#/properties/profiles/items/properties/conditionGroups/items/properties/conditions/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups/" + i1,schemaPath:"#/properties/profiles/items/properties/conditionGroups/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid3 = _errs11 === errors;if(!valid3){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/conditionGroups",schemaPath:"#/properties/profiles/items/properties/conditionGroups/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid2 = _errs9 === errors;}else {var valid2 = true;}if(valid2){if(data2.options !== undefined){let data10 = data2.options;const _errs21 = errors;if(errors === _errs21){if(data10 && typeof data10 == "object" && !Array.isArray(data10)){let missing4;if(((((((((((((data10.general === undefined) && (missing4 = "general")) || ((data10.popupWindow === undefined) && (missing4 = "popupWindow"))) || ((data10.audio === undefined) && (missing4 = "audio"))) || ((data10.scanning === undefined) && (missing4 = "scanning"))) || ((data10.translation === undefined) && (missing4 = "translation"))) || ((data10.dictionaries === undefined) && (missing4 = "dictionaries"))) || ((data10.parsing === undefined) && (missing4 = "parsing"))) || ((data10.anki === undefined) && (missing4 = "anki"))) || ((data10.sentenceParsing === undefined) && (missing4 = "sentenceParsing"))) || ((data10.inputs === undefined) && (missing4 = "inputs"))) || ((data10.clipboard === undefined) && (missing4 = "clipboard"))) || ((data10.accessibility === undefined) && (missing4 = "accessibility"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options",schemaPath:"#/properties/profiles/items/properties/options/required",keyword:"required",params:{missingProperty: missing4},message:"must have required property '"+missing4+"'"}];return false;}else {if(data10.general !== undefined){let data11 = data10.general;const _errs23 = errors;if(errors === _errs23){if(data11 && typeof data11 == "object" && !Array.isArray(data11)){let missing5;if((((((((((((((((((((((((((((((((((((((((((((((((((((data11.enable === undefined) && (missing5 = "enable")) || ((data11.language === undefined) && (missing5 = "language"))) || ((data11.resultOutputMode === undefined) && (missing5 = "resultOutputMode"))) || ((data11.debugInfo === undefined) && (missing5 = "debugInfo"))) || ((data11.maxResults === undefined) && (missing5 = "maxResults"))) || ((data11.showAdvanced === undefined) && (missing5 = "showAdvanced"))) || ((data11.showDebug === undefined) && (missing5 = "showDebug"))) || ((data11.popupDisplayMode === undefined) && (missing5 = "popupDisplayMode"))) || ((data11.popupWidth === undefined) && (missing5 = "popupWidth"))) || ((data11.popupHeight === undefined) && (missing5 = "popupHeight"))) || ((data11.popupHorizontalOffset === undefined) && (missing5 = "popupHorizontalOffset"))) || ((data11.popupVerticalOffset === undefined) && (missing5 = "popupVerticalOffset"))) || ((data11.popupHorizontalOffset2 === undefined) && (missing5 = "popupHorizontalOffset2"))) || ((data11.popupVerticalOffset2 === undefined) && (missing5 = "popupVerticalOffset2"))) || ((data11.popupHorizontalTextPosition === undefined) && (missing5 = "popupHorizontalTextPosition"))) || ((data11.popupVerticalTextPosition === undefined) && (missing5 = "popupVerticalTextPosition"))) || ((data11.popupScalingFactor === undefined) && (missing5 = "popupScalingFactor"))) || ((data11.popupScaleRelativeToPageZoom === undefined) && (missing5 = "popupScaleRelativeToPageZoom"))) || ((data11.popupScaleRelativeToVisualViewport === undefined) && (missing5 = "popupScaleRelativeToVisualViewport"))) || ((data11.showGuide === undefined) && (missing5 = "showGuide"))) || ((data11.enableContextMenuScanSelected === undefined) && (missing5 = "enableContextMenuScanSelected"))) || ((data11.compactTags === undefined) && (missing5 = "compactTags"))) || ((data11.averageFrequency === undefined) && (missing5 = "averageFrequency"))) || ((data11.glossaryLayoutMode === undefined) && (missing5 = "glossaryLayoutMode"))) || ((data11.mainDictionary === undefined) && (missing5 = "mainDictionary"))) || ((data11.popupTheme === undefined) && (missing5 = "popupTheme"))) || ((data11.popupOuterTheme === undefined) && (missing5 = "popupOuterTheme"))) || ((data11.customPopupCss === undefined) && (missing5 = "customPopupCss"))) || ((data11.customPopupOuterCss === undefined) && (missing5 = "customPopupOuterCss"))) || ((data11.enableWanakana === undefined) && (missing5 = "enableWanakana"))) || ((data11.showPitchAccentDownstepNotation === undefined) && (missing5 = "showPitchAccentDownstepNotation"))) || ((data11.showPitchAccentPositionNotation === undefined) && (missing5 = "showPitchAccentPositionNotation"))) || ((data11.showPitchAccentGraph === undefined) && (missing5 = "showPitchAccentGraph"))) || ((data11.showIframePopupsInRootFrame === undefined) && (missing5 = "showIframePopupsInRootFrame"))) || ((data11.useSecurePopupFrameUrl === undefined) && (missing5 = "useSecurePopupFrameUrl"))) || ((data11.usePopupShadowDom === undefined) && (missing5 = "usePopupShadowDom"))) || ((data11.usePopupWindow === undefined) && (missing5 = "usePopupWindow"))) || ((data11.popupCurrentIndicatorMode === undefined) && (missing5 = "popupCurrentIndicatorMode"))) || ((data11.popupActionBarVisibility === undefined) && (missing5 = "popupActionBarVisibility"))) || ((data11.popupActionBarLocation === undefined) && (missing5 = "popupActionBarLocation"))) || ((data11.frequencyDisplayMode === undefined) && (missing5 = "frequencyDisplayMode"))) || ((data11.termDisplayMode === undefined) && (missing5 = "termDisplayMode"))) || ((data11.sortFrequencyDictionary === undefined) && (missing5 = "sortFrequencyDictionary"))) || ((data11.sortFrequencyDictionaryOrder === undefined) && (missing5 = "sortFrequencyDictionaryOrder"))) || ((data11.stickySearchHeader === undefined) && (missing5 = "stickySearchHeader"))) || ((data11.fontFamily === undefined) && (missing5 = "fontFamily"))) || ((data11.fontSize === undefined) && (missing5 = "fontSize"))) || ((data11.lineHeight === undefined) && (missing5 = "lineHeight"))) || ((data11.enableYomitanApi === undefined) && (missing5 = "enableYomitanApi"))) || ((data11.yomitanApiServer === undefined) && (missing5 = "yomitanApiServer"))) || ((data11.yomitanApiAllowCssSanitizationBypass === undefined) && (missing5 = "yomitanApiAllowCssSanitizationBypass"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general",schemaPath:"#/properties/profiles/items/properties/options/properties/general/required",keyword:"required",params:{missingProperty: missing5},message:"must have required property '"+missing5+"'"}];return false;}else {if(data11.enable !== undefined){const _errs25 = errors;if(typeof data11.enable !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/enable",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/enable/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs25 === errors;}else {var valid8 = true;}if(valid8){if(data11.language !== undefined){const _errs27 = errors;if(typeof data11.language !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/language",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/language/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid8 = _errs27 === errors;}else {var valid8 = true;}if(valid8){if(data11.resultOutputMode !== undefined){let data14 = data11.resultOutputMode;const _errs29 = errors;if(typeof data14 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/resultOutputMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/resultOutputMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data14 === "group") || (data14 === "merge")) || (data14 === "split")) || (data14 === "term"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/resultOutputMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/resultOutputMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.resultOutputMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs29 === errors;}else {var valid8 = true;}if(valid8){if(data11.fontFamily !== undefined){const _errs31 = errors;if(typeof data11.fontFamily !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/fontFamily",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/fontFamily/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid8 = _errs31 === errors;}else {var valid8 = true;}if(valid8){if(data11.fontSize !== undefined){let data16 = data11.fontSize;const _errs33 = errors;if(!((typeof data16 == "number") && (isFinite(data16)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/fontSize",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/fontSize/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid8 = _errs33 === errors;}else {var valid8 = true;}if(valid8){if(data11.lineHeight !== undefined){const _errs35 = errors;if(typeof data11.lineHeight !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/lineHeight",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/lineHeight/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid8 = _errs35 === errors;}else {var valid8 = true;}if(valid8){if(data11.debugInfo !== undefined){const _errs37 = errors;if(typeof data11.debugInfo !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/debugInfo",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/debugInfo/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs37 === errors;}else {var valid8 = true;}if(valid8){if(data11.maxResults !== undefined){let data19 = data11.maxResults;const _errs39 = errors;if(!(((typeof data19 == "number") && (!(data19 % 1) && !isNaN(data19))) && (isFinite(data19)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/maxResults",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/maxResults/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs39){if((typeof data19 == "number") && (isFinite(data19))){if(data19 < 1 || isNaN(data19)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/maxResults",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/maxResults/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1"}];return false;}}}var valid8 = _errs39 === errors;}else {var valid8 = true;}if(valid8){if(data11.showAdvanced !== undefined){const _errs41 = errors;if(typeof data11.showAdvanced !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/showAdvanced",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/showAdvanced/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs41 === errors;}else {var valid8 = true;}if(valid8){if(data11.showDebug !== undefined){const _errs43 = errors;if(typeof data11.showDebug !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/showDebug",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/showDebug/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs43 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupDisplayMode !== undefined){let data22 = data11.popupDisplayMode;const _errs45 = errors;if(typeof data22 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupDisplayMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupDisplayMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data22 === "default") || (data22 === "full-width"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupDisplayMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupDisplayMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupDisplayMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs45 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupWidth !== undefined){let data23 = data11.popupWidth;const _errs47 = errors;if(errors === _errs47){if((typeof data23 == "number") && (isFinite(data23))){if(data23 < 0 || isNaN(data23)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupWidth",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupWidth/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupWidth",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupWidth/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid8 = _errs47 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupHeight !== undefined){let data24 = data11.popupHeight;const _errs49 = errors;if(errors === _errs49){if((typeof data24 == "number") && (isFinite(data24))){if(data24 < 0 || isNaN(data24)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupHeight",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupHeight/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupHeight",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupHeight/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid8 = _errs49 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupHorizontalOffset !== undefined){let data25 = data11.popupHorizontalOffset;const _errs51 = errors;if(!((typeof data25 == "number") && (isFinite(data25)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupHorizontalOffset",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupHorizontalOffset/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid8 = _errs51 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupVerticalOffset !== undefined){let data26 = data11.popupVerticalOffset;const _errs53 = errors;if(!((typeof data26 == "number") && (isFinite(data26)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupVerticalOffset",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupVerticalOffset/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid8 = _errs53 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupHorizontalOffset2 !== undefined){let data27 = data11.popupHorizontalOffset2;const _errs55 = errors;if(!((typeof data27 == "number") && (isFinite(data27)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupHorizontalOffset2",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupHorizontalOffset2/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid8 = _errs55 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupVerticalOffset2 !== undefined){let data28 = data11.popupVerticalOffset2;const _errs57 = errors;if(!((typeof data28 == "number") && (isFinite(data28)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupVerticalOffset2",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupVerticalOffset2/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid8 = _errs57 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupHorizontalTextPosition !== undefined){let data29 = data11.popupHorizontalTextPosition;const _errs59 = errors;if(typeof data29 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupHorizontalTextPosition",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupHorizontalTextPosition/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data29 === "below") || (data29 === "above"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupHorizontalTextPosition",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupHorizontalTextPosition/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupHorizontalTextPosition.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs59 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupVerticalTextPosition !== undefined){let data30 = data11.popupVerticalTextPosition;const _errs61 = errors;if(typeof data30 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupVerticalTextPosition",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupVerticalTextPosition/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((((data30 === "default") || (data30 === "before")) || (data30 === "after")) || (data30 === "left")) || (data30 === "right"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupVerticalTextPosition",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupVerticalTextPosition/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupVerticalTextPosition.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs61 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupScalingFactor !== undefined){let data31 = data11.popupScalingFactor;const _errs63 = errors;if(!((typeof data31 == "number") && (isFinite(data31)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupScalingFactor",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupScalingFactor/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid8 = _errs63 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupScaleRelativeToPageZoom !== undefined){const _errs65 = errors;if(typeof data11.popupScaleRelativeToPageZoom !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupScaleRelativeToPageZoom",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupScaleRelativeToPageZoom/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs65 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupScaleRelativeToVisualViewport !== undefined){const _errs67 = errors;if(typeof data11.popupScaleRelativeToVisualViewport !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupScaleRelativeToVisualViewport",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupScaleRelativeToVisualViewport/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs67 === errors;}else {var valid8 = true;}if(valid8){if(data11.showGuide !== undefined){const _errs69 = errors;if(typeof data11.showGuide !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/showGuide",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/showGuide/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs69 === errors;}else {var valid8 = true;}if(valid8){if(data11.enableContextMenuScanSelected !== undefined){const _errs71 = errors;if(typeof data11.enableContextMenuScanSelected !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/enableContextMenuScanSelected",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/enableContextMenuScanSelected/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs71 === errors;}else {var valid8 = true;}if(valid8){if(data11.compactTags !== undefined){const _errs73 = errors;if(typeof data11.compactTags !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/compactTags",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/compactTags/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs73 === errors;}else {var valid8 = true;}if(valid8){if(data11.averageFrequency !== undefined){const _errs75 = errors;if(typeof data11.averageFrequency !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/averageFrequency",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/averageFrequency/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs75 === errors;}else {var valid8 = true;}if(valid8){if(data11.glossaryLayoutMode !== undefined){let data38 = data11.glossaryLayoutMode;const _errs77 = errors;if(typeof data38 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/glossaryLayoutMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/glossaryLayoutMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((data38 === "default") || (data38 === "compact")) || (data38 === "compact-popup-anki"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/glossaryLayoutMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/glossaryLayoutMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.glossaryLayoutMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs77 === errors;}else {var valid8 = true;}if(valid8){if(data11.mainDictionary !== undefined){const _errs79 = errors;if(typeof data11.mainDictionary !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/mainDictionary",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/mainDictionary/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid8 = _errs79 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupTheme !== undefined){let data40 = data11.popupTheme;const _errs81 = errors;if(typeof data40 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupTheme",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupTheme/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data40 === "light") || (data40 === "dark")) || (data40 === "browser")) || (data40 === "site"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupTheme",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupTheme/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupTheme.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs81 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupOuterTheme !== undefined){let data41 = data11.popupOuterTheme;const _errs83 = errors;if(typeof data41 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupOuterTheme",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupOuterTheme/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((((data41 === "light") || (data41 === "dark")) || (data41 === "browser")) || (data41 === "site")) || (data41 === "none"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupOuterTheme",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupOuterTheme/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupOuterTheme.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs83 === errors;}else {var valid8 = true;}if(valid8){if(data11.customPopupCss !== undefined){const _errs85 = errors;if(typeof data11.customPopupCss !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/customPopupCss",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/customPopupCss/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid8 = _errs85 === errors;}else {var valid8 = true;}if(valid8){if(data11.customPopupOuterCss !== undefined){const _errs87 = errors;if(typeof data11.customPopupOuterCss !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/customPopupOuterCss",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/customPopupOuterCss/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid8 = _errs87 === errors;}else {var valid8 = true;}if(valid8){if(data11.enableWanakana !== undefined){const _errs89 = errors;if(typeof data11.enableWanakana !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/enableWanakana",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/enableWanakana/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs89 === errors;}else {var valid8 = true;}if(valid8){if(data11.showPitchAccentDownstepNotation !== undefined){const _errs91 = errors;if(typeof data11.showPitchAccentDownstepNotation !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/showPitchAccentDownstepNotation",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/showPitchAccentDownstepNotation/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs91 === errors;}else {var valid8 = true;}if(valid8){if(data11.showPitchAccentPositionNotation !== undefined){const _errs93 = errors;if(typeof data11.showPitchAccentPositionNotation !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/showPitchAccentPositionNotation",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/showPitchAccentPositionNotation/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs93 === errors;}else {var valid8 = true;}if(valid8){if(data11.showPitchAccentGraph !== undefined){const _errs95 = errors;if(typeof data11.showPitchAccentGraph !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/showPitchAccentGraph",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/showPitchAccentGraph/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs95 === errors;}else {var valid8 = true;}if(valid8){if(data11.showIframePopupsInRootFrame !== undefined){const _errs97 = errors;if(typeof data11.showIframePopupsInRootFrame !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/showIframePopupsInRootFrame",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/showIframePopupsInRootFrame/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs97 === errors;}else {var valid8 = true;}if(valid8){if(data11.useSecurePopupFrameUrl !== undefined){const _errs99 = errors;if(typeof data11.useSecurePopupFrameUrl !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/useSecurePopupFrameUrl",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/useSecurePopupFrameUrl/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs99 === errors;}else {var valid8 = true;}if(valid8){if(data11.usePopupShadowDom !== undefined){const _errs101 = errors;if(typeof data11.usePopupShadowDom !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/usePopupShadowDom",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/usePopupShadowDom/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs101 === errors;}else {var valid8 = true;}if(valid8){if(data11.usePopupWindow !== undefined){const _errs103 = errors;if(typeof data11.usePopupWindow !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/usePopupWindow",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/usePopupWindow/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs103 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupCurrentIndicatorMode !== undefined){let data52 = data11.popupCurrentIndicatorMode;const _errs105 = errors;if(typeof data52 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupCurrentIndicatorMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupCurrentIndicatorMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((((((data52 === "none") || (data52 === "asterisk")) || (data52 === "triangle")) || (data52 === "bar-left")) || (data52 === "bar-right")) || (data52 === "dot-left")) || (data52 === "dot-right"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupCurrentIndicatorMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupCurrentIndicatorMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupCurrentIndicatorMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs105 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupActionBarVisibility !== undefined){let data53 = data11.popupActionBarVisibility;const _errs107 = errors;if(typeof data53 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupActionBarVisibility",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupActionBarVisibility/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data53 === "auto") || (data53 === "always"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupActionBarVisibility",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupActionBarVisibility/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupActionBarVisibility.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs107 === errors;}else {var valid8 = true;}if(valid8){if(data11.popupActionBarLocation !== undefined){let data54 = data11.popupActionBarLocation;const _errs109 = errors;if(typeof data54 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupActionBarLocation",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupActionBarLocation/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data54 === "left") || (data54 === "right")) || (data54 === "top")) || (data54 === "bottom"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/popupActionBarLocation",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/popupActionBarLocation/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.popupActionBarLocation.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs109 === errors;}else {var valid8 = true;}if(valid8){if(data11.frequencyDisplayMode !== undefined){let data55 = data11.frequencyDisplayMode;const _errs111 = errors;if(typeof data55 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/frequencyDisplayMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/frequencyDisplayMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((((data55 === "tags") || (data55 === "tags-grouped")) || (data55 === "split-tags")) || (data55 === "split-tags-grouped")) || (data55 === "inline-list")) || (data55 === "list"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/frequencyDisplayMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/frequencyDisplayMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.frequencyDisplayMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs111 === errors;}else {var valid8 = true;}if(valid8){if(data11.termDisplayMode !== undefined){let data56 = data11.termDisplayMode;const _errs113 = errors;if(typeof data56 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/termDisplayMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/termDisplayMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data56 === "ruby") || (data56 === "ruby-and-reading")) || (data56 === "term-and-reading")) || (data56 === "term-only"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/termDisplayMode",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/termDisplayMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.termDisplayMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs113 === errors;}else {var valid8 = true;}if(valid8){if(data11.sortFrequencyDictionary !== undefined){let data57 = data11.sortFrequencyDictionary;const _errs115 = errors;if((typeof data57 !== "string") && (data57 !== null)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/sortFrequencyDictionary",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/sortFrequencyDictionary/type",keyword:"type",params:{type: schema33.properties.profiles.items.properties.options.properties.general.properties.sortFrequencyDictionary.type},message:"must be string,null"}];return false;}var valid8 = _errs115 === errors;}else {var valid8 = true;}if(valid8){if(data11.sortFrequencyDictionaryOrder !== undefined){let data58 = data11.sortFrequencyDictionaryOrder;const _errs117 = errors;if(typeof data58 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/sortFrequencyDictionaryOrder",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/sortFrequencyDictionaryOrder/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data58 === "ascending") || (data58 === "descending"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/sortFrequencyDictionaryOrder",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/sortFrequencyDictionaryOrder/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.general.properties.sortFrequencyDictionaryOrder.enum},message:"must be equal to one of the allowed values"}];return false;}var valid8 = _errs117 === errors;}else {var valid8 = true;}if(valid8){if(data11.stickySearchHeader !== undefined){const _errs119 = errors;if(typeof data11.stickySearchHeader !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/stickySearchHeader",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/stickySearchHeader/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs119 === errors;}else {var valid8 = true;}if(valid8){if(data11.enableYomitanApi !== undefined){const _errs121 = errors;if(typeof data11.enableYomitanApi !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/enableYomitanApi",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/enableYomitanApi/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs121 === errors;}else {var valid8 = true;}if(valid8){if(data11.yomitanApiServer !== undefined){const _errs123 = errors;if(typeof data11.yomitanApiServer !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/yomitanApiServer",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/yomitanApiServer/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid8 = _errs123 === errors;}else {var valid8 = true;}if(valid8){if(data11.yomitanApiAllowCssSanitizationBypass !== undefined){const _errs125 = errors;if(typeof data11.yomitanApiAllowCssSanitizationBypass !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general/yomitanApiAllowCssSanitizationBypass",schemaPath:"#/properties/profiles/items/properties/options/properties/general/properties/yomitanApiAllowCssSanitizationBypass/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid8 = _errs125 === errors;}else {var valid8 = true;}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/general",schemaPath:"#/properties/profiles/items/properties/options/properties/general/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs23 === errors;}else {var valid7 = true;}if(valid7){if(data10.popupWindow !== undefined){let data63 = data10.popupWindow;const _errs127 = errors;if(errors === _errs127){if(data63 && typeof data63 == "object" && !Array.isArray(data63)){let missing6;if(((((((((data63.width === undefined) && (missing6 = "width")) || ((data63.height === undefined) && (missing6 = "height"))) || ((data63.left === undefined) && (missing6 = "left"))) || ((data63.top === undefined) && (missing6 = "top"))) || ((data63.useLeft === undefined) && (missing6 = "useLeft"))) || ((data63.useTop === undefined) && (missing6 = "useTop"))) || ((data63.windowType === undefined) && (missing6 = "windowType"))) || ((data63.windowState === undefined) && (missing6 = "windowState"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/required",keyword:"required",params:{missingProperty: missing6},message:"must have required property '"+missing6+"'"}];return false;}else {if(data63.width !== undefined){let data64 = data63.width;const _errs129 = errors;if(!(((typeof data64 == "number") && (!(data64 % 1) && !isNaN(data64))) && (isFinite(data64)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/width",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/width/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs129){if((typeof data64 == "number") && (isFinite(data64))){if(data64 < 0 || isNaN(data64)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/width",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/width/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid9 = _errs129 === errors;}else {var valid9 = true;}if(valid9){if(data63.height !== undefined){let data65 = data63.height;const _errs131 = errors;if(!(((typeof data65 == "number") && (!(data65 % 1) && !isNaN(data65))) && (isFinite(data65)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/height",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/height/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs131){if((typeof data65 == "number") && (isFinite(data65))){if(data65 < 0 || isNaN(data65)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/height",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/height/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid9 = _errs131 === errors;}else {var valid9 = true;}if(valid9){if(data63.left !== undefined){let data66 = data63.left;const _errs133 = errors;if(!(((typeof data66 == "number") && (!(data66 % 1) && !isNaN(data66))) && (isFinite(data66)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/left",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/left/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}var valid9 = _errs133 === errors;}else {var valid9 = true;}if(valid9){if(data63.top !== undefined){let data67 = data63.top;const _errs135 = errors;if(!(((typeof data67 == "number") && (!(data67 % 1) && !isNaN(data67))) && (isFinite(data67)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/top",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/top/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}var valid9 = _errs135 === errors;}else {var valid9 = true;}if(valid9){if(data63.useLeft !== undefined){const _errs137 = errors;if(typeof data63.useLeft !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/useLeft",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/useLeft/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid9 = _errs137 === errors;}else {var valid9 = true;}if(valid9){if(data63.useTop !== undefined){const _errs139 = errors;if(typeof data63.useTop !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/useTop",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/useTop/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid9 = _errs139 === errors;}else {var valid9 = true;}if(valid9){if(data63.windowType !== undefined){let data70 = data63.windowType;const _errs141 = errors;if(typeof data70 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/windowType",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/windowType/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data70 === "normal") || (data70 === "popup"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/windowType",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/windowType/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.popupWindow.properties.windowType.enum},message:"must be equal to one of the allowed values"}];return false;}var valid9 = _errs141 === errors;}else {var valid9 = true;}if(valid9){if(data63.windowState !== undefined){let data71 = data63.windowState;const _errs143 = errors;if(typeof data71 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/windowState",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/windowState/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((data71 === "normal") || (data71 === "maximized")) || (data71 === "fullscreen"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow/windowState",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/properties/windowState/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.popupWindow.properties.windowState.enum},message:"must be equal to one of the allowed values"}];return false;}var valid9 = _errs143 === errors;}else {var valid9 = true;}}}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/popupWindow",schemaPath:"#/properties/profiles/items/properties/options/properties/popupWindow/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs127 === errors;}else {var valid7 = true;}if(valid7){if(data10.audio !== undefined){let data72 = data10.audio;const _errs145 = errors;if(errors === _errs145){if(data72 && typeof data72 == "object" && !Array.isArray(data72)){let missing7;if(((((((data72.enabled === undefined) && (missing7 = "enabled")) || ((data72.volume === undefined) && (missing7 = "volume"))) || ((data72.autoPlay === undefined) && (missing7 = "autoPlay"))) || ((data72.fallbackSoundType === undefined) && (missing7 = "fallbackSoundType"))) || ((data72.sources === undefined) && (missing7 = "sources"))) || ((data72.enableDefaultAudioSources === undefined) && (missing7 = "enableDefaultAudioSources"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/required",keyword:"required",params:{missingProperty: missing7},message:"must have required property '"+missing7+"'"}];return false;}else {if(data72.enabled !== undefined){const _errs147 = errors;if(typeof data72.enabled !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/enabled",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/enabled/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid10 = _errs147 === errors;}else {var valid10 = true;}if(valid10){if(data72.volume !== undefined){let data74 = data72.volume;const _errs149 = errors;if(errors === _errs149){if((typeof data74 == "number") && (isFinite(data74))){if(data74 > 100 || isNaN(data74)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/volume",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/volume/maximum",keyword:"maximum",params:{comparison: "<=", limit: 100},message:"must be <= 100"}];return false;}else {if(data74 < 0 || isNaN(data74)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/volume",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/volume/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/volume",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/volume/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid10 = _errs149 === errors;}else {var valid10 = true;}if(valid10){if(data72.autoPlay !== undefined){const _errs151 = errors;if(typeof data72.autoPlay !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/autoPlay",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/autoPlay/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid10 = _errs151 === errors;}else {var valid10 = true;}if(valid10){if(data72.fallbackSoundType !== undefined){let data76 = data72.fallbackSoundType;const _errs153 = errors;if(typeof data76 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/fallbackSoundType",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/fallbackSoundType/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((data76 === "none") || (data76 === "click")) || (data76 === "bloop"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/fallbackSoundType",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/fallbackSoundType/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.audio.properties.fallbackSoundType.enum},message:"must be equal to one of the allowed values"}];return false;}var valid10 = _errs153 === errors;}else {var valid10 = true;}if(valid10){if(data72.sources !== undefined){let data77 = data72.sources;const _errs155 = errors;if(errors === _errs155){if(Array.isArray(data77)){var valid11 = true;const len3 = data77.length;for(let i3=0; i3<len3; i3++){let data78 = data77[i3];const _errs157 = errors;if(errors === _errs157){if(data78 && typeof data78 == "object" && !Array.isArray(data78)){let missing8;if((((data78.type === undefined) && (missing8 = "type")) || ((data78.url === undefined) && (missing8 = "url"))) || ((data78.voice === undefined) && (missing8 = "voice"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources/" + i3,schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/items/required",keyword:"required",params:{missingProperty: missing8},message:"must have required property '"+missing8+"'"}];return false;}else {const _errs159 = errors;for(const key0 in data78){if(!(((key0 === "type") || (key0 === "url")) || (key0 === "voice"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources/" + i3,schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key0},message:"must NOT have additional properties"}];return false;break;}}if(_errs159 === errors){if(data78.type !== undefined){let data79 = data78.type;const _errs160 = errors;if(typeof data79 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources/" + i3+"/type",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/items/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((((((((data79 === "jpod101") || (data79 === "language-pod-101")) || (data79 === "jisho")) || (data79 === "lingua-libre")) || (data79 === "wiktionary")) || (data79 === "text-to-speech")) || (data79 === "text-to-speech-reading")) || (data79 === "custom")) || (data79 === "custom-json"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources/" + i3+"/type",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/items/properties/type/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.audio.properties.sources.items.properties.type.enum},message:"must be equal to one of the allowed values"}];return false;}var valid12 = _errs160 === errors;}else {var valid12 = true;}if(valid12){if(data78.url !== undefined){const _errs162 = errors;if(typeof data78.url !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources/" + i3+"/url",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/items/properties/url/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid12 = _errs162 === errors;}else {var valid12 = true;}if(valid12){if(data78.voice !== undefined){const _errs164 = errors;if(typeof data78.voice !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources/" + i3+"/voice",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/items/properties/voice/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid12 = _errs164 === errors;}else {var valid12 = true;}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources/" + i3,schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid11 = _errs157 === errors;if(!valid11){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/sources",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/sources/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid10 = _errs155 === errors;}else {var valid10 = true;}if(valid10){if(data72.enableDefaultAudioSources !== undefined){const _errs166 = errors;if(typeof data72.enableDefaultAudioSources !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio/enableDefaultAudioSources",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/properties/enableDefaultAudioSources/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid10 = _errs166 === errors;}else {var valid10 = true;}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/audio",schemaPath:"#/properties/profiles/items/properties/options/properties/audio/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs145 === errors;}else {var valid7 = true;}if(valid7){if(data10.scanning !== undefined){let data83 = data10.scanning;const _errs168 = errors;if(errors === _errs168){if(data83 && typeof data83 == "object" && !Array.isArray(data83)){let missing9;if((((((((((((((((((((((((((data83.inputs === undefined) && (missing9 = "inputs")) || ((data83.preventMiddleMouse === undefined) && (missing9 = "preventMiddleMouse"))) || ((data83.preventBackForward === undefined) && (missing9 = "preventBackForward"))) || ((data83.selectText === undefined) && (missing9 = "selectText"))) || ((data83.alphanumeric === undefined) && (missing9 = "alphanumeric"))) || ((data83.autoHideResults === undefined) && (missing9 = "autoHideResults"))) || ((data83.delay === undefined) && (missing9 = "delay"))) || ((data83.hideDelay === undefined) && (missing9 = "hideDelay"))) || ((data83.length === undefined) && (missing9 = "length"))) || ((data83.deepDomScan === undefined) && (missing9 = "deepDomScan"))) || ((data83.popupNestingMaxDepth === undefined) && (missing9 = "popupNestingMaxDepth"))) || ((data83.enablePopupSearch === undefined) && (missing9 = "enablePopupSearch"))) || ((data83.enableOnPopupExpressions === undefined) && (missing9 = "enableOnPopupExpressions"))) || ((data83.enableOnSearchPage === undefined) && (missing9 = "enableOnSearchPage"))) || ((data83.enableSearchTags === undefined) && (missing9 = "enableSearchTags"))) || ((data83.layoutAwareScan === undefined) && (missing9 = "layoutAwareScan"))) || ((data83.matchTypePrefix === undefined) && (missing9 = "matchTypePrefix"))) || ((data83.hidePopupOnCursorExit === undefined) && (missing9 = "hidePopupOnCursorExit"))) || ((data83.hidePopupOnCursorExitDelay === undefined) && (missing9 = "hidePopupOnCursorExitDelay"))) || ((data83.reducedMotionScrolling === undefined) && (missing9 = "reducedMotionScrolling"))) || ((data83.reducedMotionScrollingScale === undefined) && (missing9 = "reducedMotionScrollingScale"))) || ((data83.reducedMotionScrollingSwipeThreshold === undefined) && (missing9 = "reducedMotionScrollingSwipeThreshold"))) || ((data83.normalizeCssZoom === undefined) && (missing9 = "normalizeCssZoom"))) || ((data83.scanWithoutMousemove === undefined) && (missing9 = "scanWithoutMousemove"))) || ((data83.scanResolution === undefined) && (missing9 = "scanResolution"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/required",keyword:"required",params:{missingProperty: missing9},message:"must have required property '"+missing9+"'"}];return false;}else {if(data83.inputs !== undefined){let data84 = data83.inputs;const _errs170 = errors;if(errors === _errs170){if(Array.isArray(data84)){var valid14 = true;const len4 = data84.length;for(let i4=0; i4<len4; i4++){let data85 = data84[i4];const _errs172 = errors;if(errors === _errs172){if(data85 && typeof data85 == "object" && !Array.isArray(data85)){let missing10;if(((((data85.include === undefined) && (missing10 = "include")) || ((data85.exclude === undefined) && (missing10 = "exclude"))) || ((data85.types === undefined) && (missing10 = "types"))) || ((data85.options === undefined) && (missing10 = "options"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4,schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/required",keyword:"required",params:{missingProperty: missing10},message:"must have required property '"+missing10+"'"}];return false;}else {if(data85.include !== undefined){const _errs174 = errors;if(typeof data85.include !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/include",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/include/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid15 = _errs174 === errors;}else {var valid15 = true;}if(valid15){if(data85.exclude !== undefined){const _errs176 = errors;if(typeof data85.exclude !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/exclude",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/exclude/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid15 = _errs176 === errors;}else {var valid15 = true;}if(valid15){if(data85.types !== undefined){let data88 = data85.types;const _errs178 = errors;if(errors === _errs178){if(data88 && typeof data88 == "object" && !Array.isArray(data88)){let missing11;if((((data88.mouse === undefined) && (missing11 = "mouse")) || ((data88.touch === undefined) && (missing11 = "touch"))) || ((data88.pen === undefined) && (missing11 = "pen"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/types",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/types/required",keyword:"required",params:{missingProperty: missing11},message:"must have required property '"+missing11+"'"}];return false;}else {if(data88.mouse !== undefined){const _errs180 = errors;if(typeof data88.mouse !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/types/mouse",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/types/properties/mouse/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid16 = _errs180 === errors;}else {var valid16 = true;}if(valid16){if(data88.touch !== undefined){const _errs182 = errors;if(typeof data88.touch !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/types/touch",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/types/properties/touch/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid16 = _errs182 === errors;}else {var valid16 = true;}if(valid16){if(data88.pen !== undefined){const _errs184 = errors;if(typeof data88.pen !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/types/pen",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/types/properties/pen/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid16 = _errs184 === errors;}else {var valid16 = true;}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/types",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/types/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid15 = _errs178 === errors;}else {var valid15 = true;}if(valid15){if(data85.options !== undefined){let data92 = data85.options;const _errs186 = errors;if(errors === _errs186){if(data92 && typeof data92 == "object" && !Array.isArray(data92)){let missing12;if((((((((((((((((data92.showAdvanced === undefined) && (missing12 = "showAdvanced")) || ((data92.searchTerms === undefined) && (missing12 = "searchTerms"))) || ((data92.searchKanji === undefined) && (missing12 = "searchKanji"))) || ((data92.scanOnTouchTap === undefined) && (missing12 = "scanOnTouchTap"))) || ((data92.scanOnTouchMove === undefined) && (missing12 = "scanOnTouchMove"))) || ((data92.scanOnTouchPress === undefined) && (missing12 = "scanOnTouchPress"))) || ((data92.scanOnTouchRelease === undefined) && (missing12 = "scanOnTouchRelease"))) || ((data92.scanOnPenMove === undefined) && (missing12 = "scanOnPenMove"))) || ((data92.scanOnPenHover === undefined) && (missing12 = "scanOnPenHover"))) || ((data92.scanOnPenReleaseHover === undefined) && (missing12 = "scanOnPenReleaseHover"))) || ((data92.scanOnPenPress === undefined) && (missing12 = "scanOnPenPress"))) || ((data92.scanOnPenRelease === undefined) && (missing12 = "scanOnPenRelease"))) || ((data92.preventTouchScrolling === undefined) && (missing12 = "preventTouchScrolling"))) || ((data92.preventPenScrolling === undefined) && (missing12 = "preventPenScrolling"))) || ((data92.minimumTouchTime === undefined) && (missing12 = "minimumTouchTime"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/required",keyword:"required",params:{missingProperty: missing12},message:"must have required property '"+missing12+"'"}];return false;}else {if(data92.showAdvanced !== undefined){const _errs188 = errors;if(typeof data92.showAdvanced !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/showAdvanced",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/showAdvanced/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs188 === errors;}else {var valid17 = true;}if(valid17){if(data92.searchTerms !== undefined){const _errs190 = errors;if(typeof data92.searchTerms !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/searchTerms",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/searchTerms/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs190 === errors;}else {var valid17 = true;}if(valid17){if(data92.searchKanji !== undefined){const _errs192 = errors;if(typeof data92.searchKanji !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/searchKanji",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/searchKanji/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs192 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnTouchTap !== undefined){const _errs194 = errors;if(typeof data92.scanOnTouchTap !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnTouchTap",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnTouchTap/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs194 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnTouchMove !== undefined){const _errs196 = errors;if(typeof data92.scanOnTouchMove !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnTouchMove",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnTouchMove/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs196 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnTouchPress !== undefined){const _errs198 = errors;if(typeof data92.scanOnTouchPress !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnTouchPress",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnTouchPress/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs198 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnTouchRelease !== undefined){const _errs200 = errors;if(typeof data92.scanOnTouchRelease !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnTouchRelease",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnTouchRelease/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs200 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnPenMove !== undefined){const _errs202 = errors;if(typeof data92.scanOnPenMove !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnPenMove",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnPenMove/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs202 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnPenHover !== undefined){const _errs204 = errors;if(typeof data92.scanOnPenHover !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnPenHover",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnPenHover/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs204 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnPenReleaseHover !== undefined){const _errs206 = errors;if(typeof data92.scanOnPenReleaseHover !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnPenReleaseHover",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnPenReleaseHover/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs206 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnPenPress !== undefined){const _errs208 = errors;if(typeof data92.scanOnPenPress !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnPenPress",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnPenPress/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs208 === errors;}else {var valid17 = true;}if(valid17){if(data92.scanOnPenRelease !== undefined){const _errs210 = errors;if(typeof data92.scanOnPenRelease !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/scanOnPenRelease",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/scanOnPenRelease/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs210 === errors;}else {var valid17 = true;}if(valid17){if(data92.preventTouchScrolling !== undefined){const _errs212 = errors;if(typeof data92.preventTouchScrolling !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/preventTouchScrolling",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/preventTouchScrolling/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs212 === errors;}else {var valid17 = true;}if(valid17){if(data92.preventPenScrolling !== undefined){const _errs214 = errors;if(typeof data92.preventPenScrolling !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/preventPenScrolling",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/preventPenScrolling/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid17 = _errs214 === errors;}else {var valid17 = true;}if(valid17){if(data92.minimumTouchTime !== undefined){let data107 = data92.minimumTouchTime;const _errs216 = errors;if(!((typeof data107 == "number") && (isFinite(data107)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options/minimumTouchTime",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/properties/minimumTouchTime/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid17 = _errs216 === errors;}else {var valid17 = true;}}}}}}}}}}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4+"/options",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/properties/options/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid15 = _errs186 === errors;}else {var valid15 = true;}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs/" + i4,schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid14 = _errs172 === errors;if(!valid14){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/inputs",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/inputs/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid13 = _errs170 === errors;}else {var valid13 = true;}if(valid13){if(data83.preventMiddleMouse !== undefined){let data108 = data83.preventMiddleMouse;const _errs218 = errors;if(errors === _errs218){if(data108 && typeof data108 == "object" && !Array.isArray(data108)){let missing13;if((((((data108.onTextHover === undefined) && (missing13 = "onTextHover")) || ((data108.onWebPages === undefined) && (missing13 = "onWebPages"))) || ((data108.onPopupPages === undefined) && (missing13 = "onPopupPages"))) || ((data108.onSearchPages === undefined) && (missing13 = "onSearchPages"))) || ((data108.onSearchQuery === undefined) && (missing13 = "onSearchQuery"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventMiddleMouse",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventMiddleMouse/required",keyword:"required",params:{missingProperty: missing13},message:"must have required property '"+missing13+"'"}];return false;}else {if(data108.onWebPages !== undefined){const _errs220 = errors;if(typeof data108.onWebPages !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventMiddleMouse/onWebPages",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventMiddleMouse/properties/onWebPages/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid18 = _errs220 === errors;}else {var valid18 = true;}if(valid18){if(data108.onPopupPages !== undefined){const _errs222 = errors;if(typeof data108.onPopupPages !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventMiddleMouse/onPopupPages",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventMiddleMouse/properties/onPopupPages/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid18 = _errs222 === errors;}else {var valid18 = true;}if(valid18){if(data108.onSearchPages !== undefined){const _errs224 = errors;if(typeof data108.onSearchPages !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventMiddleMouse/onSearchPages",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventMiddleMouse/properties/onSearchPages/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid18 = _errs224 === errors;}else {var valid18 = true;}if(valid18){if(data108.onSearchQuery !== undefined){const _errs226 = errors;if(typeof data108.onSearchQuery !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventMiddleMouse/onSearchQuery",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventMiddleMouse/properties/onSearchQuery/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid18 = _errs226 === errors;}else {var valid18 = true;}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventMiddleMouse",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventMiddleMouse/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid13 = _errs218 === errors;}else {var valid13 = true;}if(valid13){if(data83.preventBackForward !== undefined){let data113 = data83.preventBackForward;const _errs228 = errors;if(errors === _errs228){if(data113 && typeof data113 == "object" && !Array.isArray(data113)){let missing14;if((((((data113.onTextHover === undefined) && (missing14 = "onTextHover")) || ((data113.onWebPages === undefined) && (missing14 = "onWebPages"))) || ((data113.onPopupPages === undefined) && (missing14 = "onPopupPages"))) || ((data113.onSearchPages === undefined) && (missing14 = "onSearchPages"))) || ((data113.onSearchQuery === undefined) && (missing14 = "onSearchQuery"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventBackForward",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventBackForward/required",keyword:"required",params:{missingProperty: missing14},message:"must have required property '"+missing14+"'"}];return false;}else {if(data113.onWebPages !== undefined){const _errs230 = errors;if(typeof data113.onWebPages !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventBackForward/onWebPages",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventBackForward/properties/onWebPages/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid19 = _errs230 === errors;}else {var valid19 = true;}if(valid19){if(data113.onPopupPages !== undefined){const _errs232 = errors;if(typeof data113.onPopupPages !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventBackForward/onPopupPages",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventBackForward/properties/onPopupPages/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid19 = _errs232 === errors;}else {var valid19 = true;}if(valid19){if(data113.onSearchPages !== undefined){const _errs234 = errors;if(typeof data113.onSearchPages !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventBackForward/onSearchPages",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventBackForward/properties/onSearchPages/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid19 = _errs234 === errors;}else {var valid19 = true;}if(valid19){if(data113.onSearchQuery !== undefined){const _errs236 = errors;if(typeof data113.onSearchQuery !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventBackForward/onSearchQuery",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventBackForward/properties/onSearchQuery/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid19 = _errs236 === errors;}else {var valid19 = true;}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/preventBackForward",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/preventBackForward/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid13 = _errs228 === errors;}else {var valid13 = true;}if(valid13){if(data83.selectText !== undefined){const _errs238 = errors;if(typeof data83.selectText !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/selectText",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/selectText/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs238 === errors;}else {var valid13 = true;}if(valid13){if(data83.alphanumeric !== undefined){const _errs240 = errors;if(typeof data83.alphanumeric !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/alphanumeric",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/alphanumeric/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs240 === errors;}else {var valid13 = true;}if(valid13){if(data83.autoHideResults !== undefined){const _errs242 = errors;if(typeof data83.autoHideResults !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/autoHideResults",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/autoHideResults/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs242 === errors;}else {var valid13 = true;}if(valid13){if(data83.delay !== undefined){let data121 = data83.delay;const _errs244 = errors;if(errors === _errs244){if((typeof data121 == "number") && (isFinite(data121))){if(data121 < 0 || isNaN(data121)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/delay",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/delay/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/delay",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/delay/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid13 = _errs244 === errors;}else {var valid13 = true;}if(valid13){if(data83.hideDelay !== undefined){let data122 = data83.hideDelay;const _errs246 = errors;if(errors === _errs246){if((typeof data122 == "number") && (isFinite(data122))){if(data122 < 0 || isNaN(data122)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/hideDelay",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/hideDelay/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/hideDelay",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/hideDelay/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid13 = _errs246 === errors;}else {var valid13 = true;}if(valid13){if(data83.length !== undefined){let data123 = data83.length;const _errs248 = errors;if(!(((typeof data123 == "number") && (!(data123 % 1) && !isNaN(data123))) && (isFinite(data123)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/length",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/length/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs248){if((typeof data123 == "number") && (isFinite(data123))){if(data123 < 1 || isNaN(data123)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/length",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/length/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1"}];return false;}}}var valid13 = _errs248 === errors;}else {var valid13 = true;}if(valid13){if(data83.deepDomScan !== undefined){const _errs250 = errors;if(typeof data83.deepDomScan !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/deepDomScan",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/deepDomScan/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs250 === errors;}else {var valid13 = true;}if(valid13){if(data83.popupNestingMaxDepth !== undefined){let data125 = data83.popupNestingMaxDepth;const _errs252 = errors;if(!(((typeof data125 == "number") && (!(data125 % 1) && !isNaN(data125))) && (isFinite(data125)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/popupNestingMaxDepth",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/popupNestingMaxDepth/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs252){if((typeof data125 == "number") && (isFinite(data125))){if(data125 < 0 || isNaN(data125)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/popupNestingMaxDepth",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/popupNestingMaxDepth/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid13 = _errs252 === errors;}else {var valid13 = true;}if(valid13){if(data83.enablePopupSearch !== undefined){const _errs254 = errors;if(typeof data83.enablePopupSearch !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/enablePopupSearch",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/enablePopupSearch/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs254 === errors;}else {var valid13 = true;}if(valid13){if(data83.enableOnPopupExpressions !== undefined){const _errs256 = errors;if(typeof data83.enableOnPopupExpressions !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/enableOnPopupExpressions",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/enableOnPopupExpressions/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs256 === errors;}else {var valid13 = true;}if(valid13){if(data83.enableOnSearchPage !== undefined){const _errs258 = errors;if(typeof data83.enableOnSearchPage !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/enableOnSearchPage",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/enableOnSearchPage/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs258 === errors;}else {var valid13 = true;}if(valid13){if(data83.enableSearchTags !== undefined){const _errs260 = errors;if(typeof data83.enableSearchTags !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/enableSearchTags",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/enableSearchTags/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs260 === errors;}else {var valid13 = true;}if(valid13){if(data83.layoutAwareScan !== undefined){const _errs262 = errors;if(typeof data83.layoutAwareScan !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/layoutAwareScan",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/layoutAwareScan/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs262 === errors;}else {var valid13 = true;}if(valid13){if(data83.matchTypePrefix !== undefined){const _errs264 = errors;if(typeof data83.matchTypePrefix !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/matchTypePrefix",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/matchTypePrefix/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs264 === errors;}else {var valid13 = true;}if(valid13){if(data83.hidePopupOnCursorExit !== undefined){const _errs266 = errors;if(typeof data83.hidePopupOnCursorExit !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/hidePopupOnCursorExit",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/hidePopupOnCursorExit/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs266 === errors;}else {var valid13 = true;}if(valid13){if(data83.hidePopupOnCursorExitDelay !== undefined){let data133 = data83.hidePopupOnCursorExitDelay;const _errs268 = errors;if(errors === _errs268){if((typeof data133 == "number") && (isFinite(data133))){if(data133 < 0 || isNaN(data133)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/hidePopupOnCursorExitDelay",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/hidePopupOnCursorExitDelay/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/hidePopupOnCursorExitDelay",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/hidePopupOnCursorExitDelay/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid13 = _errs268 === errors;}else {var valid13 = true;}if(valid13){if(data83.reducedMotionScrolling !== undefined){const _errs270 = errors;if(typeof data83.reducedMotionScrolling !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/reducedMotionScrolling",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/reducedMotionScrolling/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs270 === errors;}else {var valid13 = true;}if(valid13){if(data83.reducedMotionScrollingScale !== undefined){let data135 = data83.reducedMotionScrollingScale;const _errs272 = errors;if(!((typeof data135 == "number") && (isFinite(data135)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/reducedMotionScrollingScale",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/reducedMotionScrollingScale/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}var valid13 = _errs272 === errors;}else {var valid13 = true;}if(valid13){if(data83.reducedMotionScrollingSwipeThreshold !== undefined){let data136 = data83.reducedMotionScrollingSwipeThreshold;const _errs274 = errors;if(errors === _errs274){if((typeof data136 == "number") && (isFinite(data136))){if(data136 < 0 || isNaN(data136)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/reducedMotionScrollingSwipeThreshold",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/reducedMotionScrollingSwipeThreshold/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/reducedMotionScrollingSwipeThreshold",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/reducedMotionScrollingSwipeThreshold/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid13 = _errs274 === errors;}else {var valid13 = true;}if(valid13){if(data83.normalizeCssZoom !== undefined){const _errs276 = errors;if(typeof data83.normalizeCssZoom !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/normalizeCssZoom",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/normalizeCssZoom/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs276 === errors;}else {var valid13 = true;}if(valid13){if(data83.scanWithoutMousemove !== undefined){const _errs278 = errors;if(typeof data83.scanWithoutMousemove !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/scanWithoutMousemove",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/scanWithoutMousemove/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid13 = _errs278 === errors;}else {var valid13 = true;}if(valid13){if(data83.scanResolution !== undefined){let data139 = data83.scanResolution;const _errs280 = errors;if(typeof data139 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/scanResolution",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/scanResolution/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data139 === "character") || (data139 === "word"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning/scanResolution",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/properties/scanResolution/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.scanning.properties.scanResolution.enum},message:"must be equal to one of the allowed values"}];return false;}var valid13 = _errs280 === errors;}else {var valid13 = true;}}}}}}}}}}}}}}}}}}}}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/scanning",schemaPath:"#/properties/profiles/items/properties/options/properties/scanning/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs168 === errors;}else {var valid7 = true;}if(valid7){if(data10.translation !== undefined){let data140 = data10.translation;const _errs282 = errors;if(errors === _errs282){if(data140 && typeof data140 == "object" && !Array.isArray(data140)){let missing15;if(((data140.textReplacements === undefined) && (missing15 = "textReplacements")) || ((data140.searchResolution === undefined) && (missing15 = "searchResolution"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/required",keyword:"required",params:{missingProperty: missing15},message:"must have required property '"+missing15+"'"}];return false;}else {if(data140.searchResolution !== undefined){let data141 = data140.searchResolution;const _errs284 = errors;if(typeof data141 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/searchResolution",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/searchResolution/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data141 === "letter") || (data141 === "word"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/searchResolution",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/searchResolution/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.translation.properties.searchResolution.enum},message:"must be equal to one of the allowed values"}];return false;}var valid20 = _errs284 === errors;}else {var valid20 = true;}if(valid20){if(data140.textReplacements !== undefined){let data142 = data140.textReplacements;const _errs286 = errors;if(errors === _errs286){if(data142 && typeof data142 == "object" && !Array.isArray(data142)){let missing16;if(((data142.searchOriginal === undefined) && (missing16 = "searchOriginal")) || ((data142.groups === undefined) && (missing16 = "groups"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/required",keyword:"required",params:{missingProperty: missing16},message:"must have required property '"+missing16+"'"}];return false;}else {if(data142.searchOriginal !== undefined){const _errs288 = errors;if(typeof data142.searchOriginal !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/searchOriginal",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/searchOriginal/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid21 = _errs288 === errors;}else {var valid21 = true;}if(valid21){if(data142.groups !== undefined){let data144 = data142.groups;const _errs290 = errors;if(errors === _errs290){if(Array.isArray(data144)){var valid22 = true;const len5 = data144.length;for(let i5=0; i5<len5; i5++){let data145 = data144[i5];const _errs292 = errors;if(errors === _errs292){if(Array.isArray(data145)){var valid23 = true;const len6 = data145.length;for(let i6=0; i6<len6; i6++){let data146 = data145[i6];const _errs294 = errors;if(errors === _errs294){if(data146 && typeof data146 == "object" && !Array.isArray(data146)){let missing17;if((((data146.pattern === undefined) && (missing17 = "pattern")) || ((data146.ignoreCase === undefined) && (missing17 = "ignoreCase"))) || ((data146.replacement === undefined) && (missing17 = "replacement"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/groups/" + i5+"/" + i6,schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/groups/items/items/required",keyword:"required",params:{missingProperty: missing17},message:"must have required property '"+missing17+"'"}];return false;}else {if(data146.pattern !== undefined){const _errs296 = errors;if(typeof data146.pattern !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/groups/" + i5+"/" + i6+"/pattern",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/groups/items/items/properties/pattern/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid24 = _errs296 === errors;}else {var valid24 = true;}if(valid24){if(data146.ignoreCase !== undefined){const _errs298 = errors;if(typeof data146.ignoreCase !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/groups/" + i5+"/" + i6+"/ignoreCase",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/groups/items/items/properties/ignoreCase/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid24 = _errs298 === errors;}else {var valid24 = true;}if(valid24){if(data146.replacement !== undefined){const _errs300 = errors;if(typeof data146.replacement !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/groups/" + i5+"/" + i6+"/replacement",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/groups/items/items/properties/replacement/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid24 = _errs300 === errors;}else {var valid24 = true;}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/groups/" + i5+"/" + i6,schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/groups/items/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid23 = _errs294 === errors;if(!valid23){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/groups/" + i5,schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/groups/items/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid22 = _errs292 === errors;if(!valid22){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements/groups",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/properties/groups/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid21 = _errs290 === errors;}else {var valid21 = true;}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation/textReplacements",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/properties/textReplacements/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid20 = _errs286 === errors;}else {var valid20 = true;}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/translation",schemaPath:"#/properties/profiles/items/properties/options/properties/translation/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs282 === errors;}else {var valid7 = true;}if(valid7){if(data10.dictionaries !== undefined){let data150 = data10.dictionaries;const _errs302 = errors;if(errors === _errs302){if(Array.isArray(data150)){var valid25 = true;const len7 = data150.length;for(let i7=0; i7<len7; i7++){let data151 = data150[i7];const _errs304 = errors;if(errors === _errs304){if(data151 && typeof data151 == "object" && !Array.isArray(data151)){let missing18;if((((((((data151.name === undefined) && (missing18 = "name")) || ((data151.alias === undefined) && (missing18 = "alias"))) || ((data151.enabled === undefined) && (missing18 = "enabled"))) || ((data151.allowSecondarySearches === undefined) && (missing18 = "allowSecondarySearches"))) || ((data151.definitionsCollapsible === undefined) && (missing18 = "definitionsCollapsible"))) || ((data151.partsOfSpeechFilter === undefined) && (missing18 = "partsOfSpeechFilter"))) || ((data151.useDeinflections === undefined) && (missing18 = "useDeinflections"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7,schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/required",keyword:"required",params:{missingProperty: missing18},message:"must have required property '"+missing18+"'"}];return false;}else {if(data151.name !== undefined){const _errs306 = errors;if(typeof data151.name !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/name",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid26 = _errs306 === errors;}else {var valid26 = true;}if(valid26){if(data151.alias !== undefined){const _errs308 = errors;if(typeof data151.alias !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/alias",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/alias/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid26 = _errs308 === errors;}else {var valid26 = true;}if(valid26){if(data151.enabled !== undefined){const _errs310 = errors;if(typeof data151.enabled !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/enabled",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/enabled/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid26 = _errs310 === errors;}else {var valid26 = true;}if(valid26){if(data151.allowSecondarySearches !== undefined){const _errs312 = errors;if(typeof data151.allowSecondarySearches !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/allowSecondarySearches",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/allowSecondarySearches/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid26 = _errs312 === errors;}else {var valid26 = true;}if(valid26){if(data151.definitionsCollapsible !== undefined){let data156 = data151.definitionsCollapsible;const _errs314 = errors;if(typeof data156 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/definitionsCollapsible",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/definitionsCollapsible/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((((data156 === "not-collapsible") || (data156 === "expanded")) || (data156 === "collapsed")) || (data156 === "force-collapsed")) || (data156 === "force-expanded"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/definitionsCollapsible",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/definitionsCollapsible/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.dictionaries.items.properties.definitionsCollapsible.enum},message:"must be equal to one of the allowed values"}];return false;}var valid26 = _errs314 === errors;}else {var valid26 = true;}if(valid26){if(data151.partsOfSpeechFilter !== undefined){const _errs316 = errors;if(typeof data151.partsOfSpeechFilter !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/partsOfSpeechFilter",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/partsOfSpeechFilter/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid26 = _errs316 === errors;}else {var valid26 = true;}if(valid26){if(data151.useDeinflections !== undefined){const _errs318 = errors;if(typeof data151.useDeinflections !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7+"/useDeinflections",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/properties/useDeinflections/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid26 = _errs318 === errors;}else {var valid26 = true;}}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries/" + i7,schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid25 = _errs304 === errors;if(!valid25){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/dictionaries",schemaPath:"#/properties/profiles/items/properties/options/properties/dictionaries/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid7 = _errs302 === errors;}else {var valid7 = true;}if(valid7){if(data10.parsing !== undefined){let data159 = data10.parsing;const _errs320 = errors;if(errors === _errs320){if(data159 && typeof data159 == "object" && !Array.isArray(data159)){let missing19;if((((((data159.enableScanningParser === undefined) && (missing19 = "enableScanningParser")) || ((data159.enableMecabParser === undefined) && (missing19 = "enableMecabParser"))) || ((data159.selectedParser === undefined) && (missing19 = "selectedParser"))) || ((data159.termSpacing === undefined) && (missing19 = "termSpacing"))) || ((data159.readingMode === undefined) && (missing19 = "readingMode"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/required",keyword:"required",params:{missingProperty: missing19},message:"must have required property '"+missing19+"'"}];return false;}else {if(data159.enableScanningParser !== undefined){const _errs322 = errors;if(typeof data159.enableScanningParser !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing/enableScanningParser",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/properties/enableScanningParser/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid27 = _errs322 === errors;}else {var valid27 = true;}if(valid27){if(data159.enableMecabParser !== undefined){const _errs324 = errors;if(typeof data159.enableMecabParser !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing/enableMecabParser",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/properties/enableMecabParser/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid27 = _errs324 === errors;}else {var valid27 = true;}if(valid27){if(data159.selectedParser !== undefined){let data162 = data159.selectedParser;const _errs326 = errors;if((typeof data162 !== "string") && (data162 !== null)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing/selectedParser",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/properties/selectedParser/type",keyword:"type",params:{type: schema33.properties.profiles.items.properties.options.properties.parsing.properties.selectedParser.type},message:"must be string,null"}];return false;}var valid27 = _errs326 === errors;}else {var valid27 = true;}if(valid27){if(data159.termSpacing !== undefined){const _errs328 = errors;if(typeof data159.termSpacing !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing/termSpacing",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/properties/termSpacing/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid27 = _errs328 === errors;}else {var valid27 = true;}if(valid27){if(data159.readingMode !== undefined){let data164 = data159.readingMode;const _errs330 = errors;if(typeof data164 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing/readingMode",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/properties/readingMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((((data164 === "hiragana") || (data164 === "katakana")) || (data164 === "romaji")) || (data164 === "dictionary-reading")) || (data164 === "none"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing/readingMode",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/properties/readingMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.parsing.properties.readingMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid27 = _errs330 === errors;}else {var valid27 = true;}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/parsing",schemaPath:"#/properties/profiles/items/properties/options/properties/parsing/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs320 === errors;}else {var valid7 = true;}if(valid7){if(data10.anki !== undefined){let data165 = data10.anki;const _errs332 = errors;if(errors === _errs332){if(data165 && typeof data165 == "object" && !Array.isArray(data165)){let missing20;if((((((((((((((((((data165.enable === undefined) && (missing20 = "enable")) || ((data165.server === undefined) && (missing20 = "server"))) || ((data165.tags === undefined) && (missing20 = "tags"))) || ((data165.screenshot === undefined) && (missing20 = "screenshot"))) || ((data165.cardFormats === undefined) && (missing20 = "cardFormats"))) || ((data165.duplicateScope === undefined) && (missing20 = "duplicateScope"))) || ((data165.duplicateScopeCheckAllModels === undefined) && (missing20 = "duplicateScopeCheckAllModels"))) || ((data165.checkForDuplicates === undefined) && (missing20 = "checkForDuplicates"))) || ((data165.duplicateBehavior === undefined) && (missing20 = "duplicateBehavior"))) || ((data165.fieldTemplates === undefined) && (missing20 = "fieldTemplates"))) || ((data165.suspendNewCards === undefined) && (missing20 = "suspendNewCards"))) || ((data165.displayTagsAndFlags === undefined) && (missing20 = "displayTagsAndFlags"))) || ((data165.targetTags === undefined) && (missing20 = "targetTags"))) || ((data165.noteGuiMode === undefined) && (missing20 = "noteGuiMode"))) || ((data165.apiKey === undefined) && (missing20 = "apiKey"))) || ((data165.downloadTimeout === undefined) && (missing20 = "downloadTimeout"))) || ((data165.forceSync === undefined) && (missing20 = "forceSync"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/required",keyword:"required",params:{missingProperty: missing20},message:"must have required property '"+missing20+"'"}];return false;}else {if(data165.enable !== undefined){const _errs334 = errors;if(typeof data165.enable !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/enable",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/enable/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid28 = _errs334 === errors;}else {var valid28 = true;}if(valid28){if(data165.server !== undefined){const _errs336 = errors;if(typeof data165.server !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/server",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/server/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid28 = _errs336 === errors;}else {var valid28 = true;}if(valid28){if(data165.tags !== undefined){let data168 = data165.tags;const _errs338 = errors;if(errors === _errs338){if(Array.isArray(data168)){var valid29 = true;const len8 = data168.length;for(let i8=0; i8<len8; i8++){const _errs340 = errors;if(typeof data168[i8] !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/tags/" + i8,schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/tags/items/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid29 = _errs340 === errors;if(!valid29){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/tags",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/tags/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid28 = _errs338 === errors;}else {var valid28 = true;}if(valid28){if(data165.screenshot !== undefined){let data170 = data165.screenshot;const _errs342 = errors;if(errors === _errs342){if(data170 && typeof data170 == "object" && !Array.isArray(data170)){let missing21;if(((data170.format === undefined) && (missing21 = "format")) || ((data170.quality === undefined) && (missing21 = "quality"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/screenshot",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/screenshot/required",keyword:"required",params:{missingProperty: missing21},message:"must have required property '"+missing21+"'"}];return false;}else {if(data170.format !== undefined){let data171 = data170.format;const _errs344 = errors;if(typeof data171 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/screenshot/format",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/screenshot/properties/format/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data171 === "png") || (data171 === "jpeg"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/screenshot/format",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/screenshot/properties/format/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.screenshot.properties.format.enum},message:"must be equal to one of the allowed values"}];return false;}var valid30 = _errs344 === errors;}else {var valid30 = true;}if(valid30){if(data170.quality !== undefined){let data172 = data170.quality;const _errs346 = errors;if(!(((typeof data172 == "number") && (!(data172 % 1) && !isNaN(data172))) && (isFinite(data172)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/screenshot/quality",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/screenshot/properties/quality/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs346){if((typeof data172 == "number") && (isFinite(data172))){if(data172 > 100 || isNaN(data172)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/screenshot/quality",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/screenshot/properties/quality/maximum",keyword:"maximum",params:{comparison: "<=", limit: 100},message:"must be <= 100"}];return false;}else {if(data172 < 0 || isNaN(data172)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/screenshot/quality",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/screenshot/properties/quality/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}}var valid30 = _errs346 === errors;}else {var valid30 = true;}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/screenshot",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/screenshot/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid28 = _errs342 === errors;}else {var valid28 = true;}if(valid28){if(data165.cardFormats !== undefined){let data173 = data165.cardFormats;const _errs348 = errors;if(errors === _errs348){if(Array.isArray(data173)){var valid31 = true;const len9 = data173.length;for(let i9=0; i9<len9; i9++){let data174 = data173[i9];const _errs350 = errors;if(errors === _errs350){if(data174 && typeof data174 == "object" && !Array.isArray(data174)){let missing22;if(((((((data174.name === undefined) && (missing22 = "name")) || ((data174.icon === undefined) && (missing22 = "icon"))) || ((data174.deck === undefined) && (missing22 = "deck"))) || ((data174.model === undefined) && (missing22 = "model"))) || ((data174.fields === undefined) && (missing22 = "fields"))) || ((data174.type === undefined) && (missing22 = "type"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9,schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/required",keyword:"required",params:{missingProperty: missing22},message:"must have required property '"+missing22+"'"}];return false;}else {if(data174.name !== undefined){const _errs352 = errors;if(typeof data174.name !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/name",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid32 = _errs352 === errors;}else {var valid32 = true;}if(valid32){if(data174.icon !== undefined){let data176 = data174.icon;const _errs354 = errors;if(typeof data176 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/icon",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/icon/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data176 === "big-circle") || (data176 === "small-circle")) || (data176 === "big-square")) || (data176 === "big-diamond"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/icon",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/icon/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.cardFormats.items.properties.icon.enum},message:"must be equal to one of the allowed values"}];return false;}var valid32 = _errs354 === errors;}else {var valid32 = true;}if(valid32){if(data174.deck !== undefined){const _errs356 = errors;if(typeof data174.deck !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/deck",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/deck/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid32 = _errs356 === errors;}else {var valid32 = true;}if(valid32){if(data174.model !== undefined){const _errs358 = errors;if(typeof data174.model !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/model",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/model/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid32 = _errs358 === errors;}else {var valid32 = true;}if(valid32){if(data174.type !== undefined){let data179 = data174.type;const _errs360 = errors;if(typeof data179 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/type",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/type/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data179 === "term") || (data179 === "kanji"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/type",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/type/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.cardFormats.items.properties.type.enum},message:"must be equal to one of the allowed values"}];return false;}var valid32 = _errs360 === errors;}else {var valid32 = true;}if(valid32){if(data174.fields !== undefined){let data180 = data174.fields;const _errs362 = errors;if(errors === _errs362){if(data180 && typeof data180 == "object" && !Array.isArray(data180)){for(const key1 in data180){let data181 = data180[key1];const _errs365 = errors;if(errors === _errs365){if(data181 && typeof data181 == "object" && !Array.isArray(data181)){if(data181.value !== undefined){const _errs367 = errors;if(typeof data181.value !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/fields/" + key1.replace(/~/g, "~0").replace(/\//g, "~1")+"/value",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/fields/additionalProperties/properties/value/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid34 = _errs367 === errors;}else {var valid34 = true;}if(valid34){if(data181.overwriteMode !== undefined){let data183 = data181.overwriteMode;const _errs369 = errors;if(typeof data183 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/fields/" + key1.replace(/~/g, "~0").replace(/\//g, "~1")+"/overwriteMode",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/fields/additionalProperties/properties/overwriteMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((((data183 === "coalesce") || (data183 === "coalesce-new")) || (data183 === "skip")) || (data183 === "append")) || (data183 === "prepend")) || (data183 === "overwrite"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/fields/" + key1.replace(/~/g, "~0").replace(/\//g, "~1")+"/overwriteMode",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/fields/additionalProperties/properties/overwriteMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.cardFormats.items.properties.fields.additionalProperties.properties.overwriteMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid34 = _errs369 === errors;}else {var valid34 = true;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/fields/" + key1.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/fields/additionalProperties/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid33 = _errs365 === errors;if(!valid33){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9+"/fields",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/properties/fields/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid32 = _errs362 === errors;}else {var valid32 = true;}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats/" + i9,schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid31 = _errs350 === errors;if(!valid31){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/cardFormats",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/cardFormats/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid28 = _errs348 === errors;}else {var valid28 = true;}if(valid28){if(data165.duplicateScope !== undefined){let data184 = data165.duplicateScope;const _errs371 = errors;if(typeof data184 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/duplicateScope",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/duplicateScope/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((data184 === "collection") || (data184 === "deck")) || (data184 === "deck-root"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/duplicateScope",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/duplicateScope/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.duplicateScope.enum},message:"must be equal to one of the allowed values"}];return false;}var valid28 = _errs371 === errors;}else {var valid28 = true;}if(valid28){if(data165.duplicateScopeCheckAllModels !== undefined){const _errs373 = errors;if(typeof data165.duplicateScopeCheckAllModels !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/duplicateScopeCheckAllModels",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/duplicateScopeCheckAllModels/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid28 = _errs373 === errors;}else {var valid28 = true;}if(valid28){if(data165.checkForDuplicates !== undefined){const _errs375 = errors;if(typeof data165.checkForDuplicates !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/checkForDuplicates",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/checkForDuplicates/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid28 = _errs375 === errors;}else {var valid28 = true;}if(valid28){if(data165.duplicateBehavior !== undefined){let data187 = data165.duplicateBehavior;const _errs377 = errors;if(typeof data187 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/duplicateBehavior",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/duplicateBehavior/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((data187 === "prevent") || (data187 === "overwrite")) || (data187 === "new"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/duplicateBehavior",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/duplicateBehavior/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.duplicateBehavior.enum},message:"must be equal to one of the allowed values"}];return false;}var valid28 = _errs377 === errors;}else {var valid28 = true;}if(valid28){if(data165.fieldTemplates !== undefined){let data188 = data165.fieldTemplates;const _errs379 = errors;if((typeof data188 !== "string") && (data188 !== null)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/fieldTemplates",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/fieldTemplates/type",keyword:"type",params:{type: schema33.properties.profiles.items.properties.options.properties.anki.properties.fieldTemplates.type},message:"must be string,null"}];return false;}var valid28 = _errs379 === errors;}else {var valid28 = true;}if(valid28){if(data165.suspendNewCards !== undefined){const _errs381 = errors;if(typeof data165.suspendNewCards !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/suspendNewCards",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/suspendNewCards/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid28 = _errs381 === errors;}else {var valid28 = true;}if(valid28){if(data165.displayTagsAndFlags !== undefined){let data190 = data165.displayTagsAndFlags;const _errs383 = errors;if(typeof data190 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/displayTagsAndFlags",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/displayTagsAndFlags/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data190 === "never") || (data190 === "always")) || (data190 === "non-standard")) || (data190 === "custom"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/displayTagsAndFlags",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/displayTagsAndFlags/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.displayTagsAndFlags.enum},message:"must be equal to one of the allowed values"}];return false;}var valid28 = _errs383 === errors;}else {var valid28 = true;}if(valid28){if(data165.targetTags !== undefined){let data191 = data165.targetTags;const _errs385 = errors;if(errors === _errs385){if(Array.isArray(data191)){var valid35 = true;const len10 = data191.length;for(let i10=0; i10<len10; i10++){const _errs387 = errors;if(typeof data191[i10] !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/targetTags/" + i10,schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/targetTags/items/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid35 = _errs387 === errors;if(!valid35){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/targetTags",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/targetTags/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid28 = _errs385 === errors;}else {var valid28 = true;}if(valid28){if(data165.noteGuiMode !== undefined){let data193 = data165.noteGuiMode;const _errs389 = errors;if(typeof data193 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/noteGuiMode",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/noteGuiMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((data193 === "browse") || (data193 === "edit"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/noteGuiMode",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/noteGuiMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.anki.properties.noteGuiMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid28 = _errs389 === errors;}else {var valid28 = true;}if(valid28){if(data165.apiKey !== undefined){const _errs391 = errors;if(typeof data165.apiKey !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/apiKey",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/apiKey/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid28 = _errs391 === errors;}else {var valid28 = true;}if(valid28){if(data165.downloadTimeout !== undefined){let data195 = data165.downloadTimeout;const _errs393 = errors;if(errors === _errs393){if((typeof data195 == "number") && (isFinite(data195))){if(data195 < 0 || isNaN(data195)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/downloadTimeout",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/downloadTimeout/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/downloadTimeout",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/downloadTimeout/type",keyword:"type",params:{type: "number"},message:"must be number"}];return false;}}var valid28 = _errs393 === errors;}else {var valid28 = true;}if(valid28){if(data165.forceSync !== undefined){const _errs395 = errors;if(typeof data165.forceSync !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki/forceSync",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/properties/forceSync/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid28 = _errs395 === errors;}else {var valid28 = true;}}}}}}}}}}}}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/anki",schemaPath:"#/properties/profiles/items/properties/options/properties/anki/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs332 === errors;}else {var valid7 = true;}if(valid7){if(data10.sentenceParsing !== undefined){let data197 = data10.sentenceParsing;const _errs397 = errors;if(errors === _errs397){if(data197 && typeof data197 == "object" && !Array.isArray(data197)){let missing23;if((((data197.scanExtent === undefined) && (missing23 = "scanExtent")) || ((data197.terminationCharacterMode === undefined) && (missing23 = "terminationCharacterMode"))) || ((data197.terminationCharacters === undefined) && (missing23 = "terminationCharacters"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/required",keyword:"required",params:{missingProperty: missing23},message:"must have required property '"+missing23+"'"}];return false;}else {if(data197.scanExtent !== undefined){let data198 = data197.scanExtent;const _errs399 = errors;if(!(((typeof data198 == "number") && (!(data198 % 1) && !isNaN(data198))) && (isFinite(data198)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/scanExtent",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/scanExtent/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs399){if((typeof data198 == "number") && (isFinite(data198))){if(data198 < 0 || isNaN(data198)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/scanExtent",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/scanExtent/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid36 = _errs399 === errors;}else {var valid36 = true;}if(valid36){if(data197.terminationCharacterMode !== undefined){let data199 = data197.terminationCharacterMode;const _errs401 = errors;if(typeof data199 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacterMode",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacterMode/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data199 === "custom") || (data199 === "custom-no-newlines")) || (data199 === "newlines")) || (data199 === "none"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacterMode",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacterMode/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.sentenceParsing.properties.terminationCharacterMode.enum},message:"must be equal to one of the allowed values"}];return false;}var valid36 = _errs401 === errors;}else {var valid36 = true;}if(valid36){if(data197.terminationCharacters !== undefined){let data200 = data197.terminationCharacters;const _errs403 = errors;if(errors === _errs403){if(Array.isArray(data200)){var valid37 = true;const len11 = data200.length;for(let i11=0; i11<len11; i11++){let data201 = data200[i11];const _errs405 = errors;if(errors === _errs405){if(data201 && typeof data201 == "object" && !Array.isArray(data201)){let missing24;if((((((data201.enabled === undefined) && (missing24 = "enabled")) || ((data201.character1 === undefined) && (missing24 = "character1"))) || ((data201.character2 === undefined) && (missing24 = "character2"))) || ((data201.includeCharacterAtStart === undefined) && (missing24 = "includeCharacterAtStart"))) || ((data201.includeCharacterAtEnd === undefined) && (missing24 = "includeCharacterAtEnd"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11,schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/required",keyword:"required",params:{missingProperty: missing24},message:"must have required property '"+missing24+"'"}];return false;}else {if(data201.enabled !== undefined){const _errs407 = errors;if(typeof data201.enabled !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/enabled",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/enabled/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid38 = _errs407 === errors;}else {var valid38 = true;}if(valid38){if(data201.character1 !== undefined){let data203 = data201.character1;const _errs409 = errors;if(errors === _errs409){if(typeof data203 === "string"){if(func2(data203) > 1){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/character1",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/character1/maxLength",keyword:"maxLength",params:{limit: 1},message:"must NOT have more than 1 characters"}];return false;}else {if(func2(data203) < 1){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/character1",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/character1/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/character1",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/character1/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid38 = _errs409 === errors;}else {var valid38 = true;}if(valid38){if(data201.character2 !== undefined){let data204 = data201.character2;const _errs411 = errors;if((typeof data204 !== "string") && (data204 !== null)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/character2",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/character2/type",keyword:"type",params:{type: schema33.properties.profiles.items.properties.options.properties.sentenceParsing.properties.terminationCharacters.items.properties.character2.type},message:"must be string,null"}];return false;}if(errors === _errs411){if(typeof data204 === "string"){if(func2(data204) > 1){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/character2",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/character2/maxLength",keyword:"maxLength",params:{limit: 1},message:"must NOT have more than 1 characters"}];return false;}else {if(func2(data204) < 1){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/character2",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/character2/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"}];return false;}}}}var valid38 = _errs411 === errors;}else {var valid38 = true;}if(valid38){if(data201.includeCharacterAtStart !== undefined){const _errs413 = errors;if(typeof data201.includeCharacterAtStart !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/includeCharacterAtStart",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/includeCharacterAtStart/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid38 = _errs413 === errors;}else {var valid38 = true;}if(valid38){if(data201.includeCharacterAtEnd !== undefined){const _errs415 = errors;if(typeof data201.includeCharacterAtEnd !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11+"/includeCharacterAtEnd",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/properties/includeCharacterAtEnd/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid38 = _errs415 === errors;}else {var valid38 = true;}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters/" + i11,schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid37 = _errs405 === errors;if(!valid37){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing/terminationCharacters",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/properties/terminationCharacters/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid36 = _errs403 === errors;}else {var valid36 = true;}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/sentenceParsing",schemaPath:"#/properties/profiles/items/properties/options/properties/sentenceParsing/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs397 === errors;}else {var valid7 = true;}if(valid7){if(data10.inputs !== undefined){let data207 = data10.inputs;const _errs417 = errors;if(errors === _errs417){if(data207 && typeof data207 == "object" && !Array.isArray(data207)){let missing25;if((data207.hotkeys === undefined) && (missing25 = "hotkeys")){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/required",keyword:"required",params:{missingProperty: missing25},message:"must have required property '"+missing25+"'"}];return false;}else {if(data207.hotkeys !== undefined){let data208 = data207.hotkeys;const _errs419 = errors;if(errors === _errs419){if(Array.isArray(data208)){var valid40 = true;const len12 = data208.length;for(let i12=0; i12<len12; i12++){let data209 = data208[i12];const _errs421 = errors;if(errors === _errs421){if(data209 && typeof data209 == "object" && !Array.isArray(data209)){let missing26;if(((((((data209.action === undefined) && (missing26 = "action")) || ((data209.argument === undefined) && (missing26 = "argument"))) || ((data209.key === undefined) && (missing26 = "key"))) || ((data209.modifiers === undefined) && (missing26 = "modifiers"))) || ((data209.scopes === undefined) && (missing26 = "scopes"))) || ((data209.enabled === undefined) && (missing26 = "enabled"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12,schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/required",keyword:"required",params:{missingProperty: missing26},message:"must have required property '"+missing26+"'"}];return false;}else {if(data209.action !== undefined){const _errs423 = errors;if(typeof data209.action !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/action",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/action/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid41 = _errs423 === errors;}else {var valid41 = true;}if(valid41){if(data209.argument !== undefined){const _errs425 = errors;if(typeof data209.argument !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/argument",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/argument/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}var valid41 = _errs425 === errors;}else {var valid41 = true;}if(valid41){if(data209.key !== undefined){let data212 = data209.key;const _errs427 = errors;if((typeof data212 !== "string") && (data212 !== null)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/key",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/key/type",keyword:"type",params:{type: schema33.properties.profiles.items.properties.options.properties.inputs.properties.hotkeys.items.properties.key.type},message:"must be string,null"}];return false;}var valid41 = _errs427 === errors;}else {var valid41 = true;}if(valid41){if(data209.modifiers !== undefined){let data213 = data209.modifiers;const _errs429 = errors;if(errors === _errs429){if(Array.isArray(data213)){var valid42 = true;const len13 = data213.length;for(let i13=0; i13<len13; i13++){let data214 = data213[i13];const _errs431 = errors;if(typeof data214 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/modifiers/" + i13,schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/modifiers/items/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!((((data214 === "alt") || (data214 === "ctrl")) || (data214 === "shift")) || (data214 === "meta"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/modifiers/" + i13,schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/modifiers/items/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.inputs.properties.hotkeys.items.properties.modifiers.items.enum},message:"must be equal to one of the allowed values"}];return false;}var valid42 = _errs431 === errors;if(!valid42){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/modifiers",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/modifiers/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid41 = _errs429 === errors;}else {var valid41 = true;}if(valid41){if(data209.scopes !== undefined){let data215 = data209.scopes;const _errs433 = errors;if(errors === _errs433){if(Array.isArray(data215)){var valid43 = true;const len14 = data215.length;for(let i14=0; i14<len14; i14++){let data216 = data215[i14];const _errs435 = errors;if(typeof data216 !== "string"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/scopes/" + i14,schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/scopes/items/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}if(!(((data216 === "popup") || (data216 === "search")) || (data216 === "web"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/scopes/" + i14,schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/scopes/items/enum",keyword:"enum",params:{allowedValues: schema33.properties.profiles.items.properties.options.properties.inputs.properties.hotkeys.items.properties.scopes.items.enum},message:"must be equal to one of the allowed values"}];return false;}var valid43 = _errs435 === errors;if(!valid43){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/scopes",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/scopes/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid41 = _errs433 === errors;}else {var valid41 = true;}if(valid41){if(data209.enabled !== undefined){const _errs437 = errors;if(typeof data209.enabled !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12+"/enabled",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/properties/enabled/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid41 = _errs437 === errors;}else {var valid41 = true;}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys/" + i12,schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid40 = _errs421 === errors;if(!valid40){break;}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs/hotkeys",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/properties/hotkeys/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/inputs",schemaPath:"#/properties/profiles/items/properties/options/properties/inputs/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs417 === errors;}else {var valid7 = true;}if(valid7){if(data10.clipboard !== undefined){let data218 = data10.clipboard;const _errs439 = errors;if(errors === _errs439){if(data218 && typeof data218 == "object" && !Array.isArray(data218)){let missing27;if(((((data218.enableBackgroundMonitor === undefined) && (missing27 = "enableBackgroundMonitor")) || ((data218.enableSearchPageMonitor === undefined) && (missing27 = "enableSearchPageMonitor"))) || ((data218.autoSearchContent === undefined) && (missing27 = "autoSearchContent"))) || ((data218.maximumSearchLength === undefined) && (missing27 = "maximumSearchLength"))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/clipboard",schemaPath:"#/properties/profiles/items/properties/options/properties/clipboard/required",keyword:"required",params:{missingProperty: missing27},message:"must have required property '"+missing27+"'"}];return false;}else {if(data218.enableBackgroundMonitor !== undefined){const _errs441 = errors;if(typeof data218.enableBackgroundMonitor !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/clipboard/enableBackgroundMonitor",schemaPath:"#/properties/profiles/items/properties/options/properties/clipboard/properties/enableBackgroundMonitor/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid44 = _errs441 === errors;}else {var valid44 = true;}if(valid44){if(data218.enableSearchPageMonitor !== undefined){const _errs443 = errors;if(typeof data218.enableSearchPageMonitor !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/clipboard/enableSearchPageMonitor",schemaPath:"#/properties/profiles/items/properties/options/properties/clipboard/properties/enableSearchPageMonitor/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid44 = _errs443 === errors;}else {var valid44 = true;}if(valid44){if(data218.autoSearchContent !== undefined){const _errs445 = errors;if(typeof data218.autoSearchContent !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/clipboard/autoSearchContent",schemaPath:"#/properties/profiles/items/properties/options/properties/clipboard/properties/autoSearchContent/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid44 = _errs445 === errors;}else {var valid44 = true;}if(valid44){if(data218.maximumSearchLength !== undefined){let data222 = data218.maximumSearchLength;const _errs447 = errors;if(!(((typeof data222 == "number") && (!(data222 % 1) && !isNaN(data222))) && (isFinite(data222)))){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/clipboard/maximumSearchLength",schemaPath:"#/properties/profiles/items/properties/options/properties/clipboard/properties/maximumSearchLength/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs447){if((typeof data222 == "number") && (isFinite(data222))){if(data222 < 0 || isNaN(data222)){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/clipboard/maximumSearchLength",schemaPath:"#/properties/profiles/items/properties/options/properties/clipboard/properties/maximumSearchLength/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid44 = _errs447 === errors;}else {var valid44 = true;}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/clipboard",schemaPath:"#/properties/profiles/items/properties/options/properties/clipboard/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs439 === errors;}else {var valid7 = true;}if(valid7){if(data10.accessibility !== undefined){let data223 = data10.accessibility;const _errs449 = errors;if(errors === _errs449){if(data223 && typeof data223 == "object" && !Array.isArray(data223)){let missing28;if((data223.forceGoogleDocsHtmlRendering === undefined) && (missing28 = "forceGoogleDocsHtmlRendering")){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/accessibility",schemaPath:"#/properties/profiles/items/properties/options/properties/accessibility/required",keyword:"required",params:{missingProperty: missing28},message:"must have required property '"+missing28+"'"}];return false;}else {if(data223.forceGoogleDocsHtmlRendering !== undefined){if(typeof data223.forceGoogleDocsHtmlRendering !== "boolean"){validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/accessibility/forceGoogleDocsHtmlRendering",schemaPath:"#/properties/profiles/items/properties/options/properties/accessibility/properties/forceGoogleDocsHtmlRendering/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options/accessibility",schemaPath:"#/properties/profiles/items/properties/options/properties/accessibility/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid7 = _errs449 === errors;}else {var valid7 = true;}}}}}}}}}}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0+"/options",schemaPath:"#/properties/profiles/items/properties/options/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid2 = _errs21 === errors;}else {var valid2 = true;}}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles/" + i0,schemaPath:"#/properties/profiles/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid1 = _errs5 === errors;if(!valid1){break;}}}}else {validate21.errors = [{instancePath:instancePath+"/profiles",schemaPath:"#/properties/profiles/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs3 === errors;}else {var valid0 = true;}if(valid0){if(data.profileCurrent !== undefined){let data225 = data.profileCurrent;const _errs453 = errors;if(!(((typeof data225 == "number") && (!(data225 % 1) && !isNaN(data225))) && (isFinite(data225)))){validate21.errors = [{instancePath:instancePath+"/profileCurrent",schemaPath:"#/properties/profileCurrent/type",keyword:"type",params:{type: "integer"},message:"must be integer"}];return false;}if(errors === _errs453){if((typeof data225 == "number") && (isFinite(data225))){if(data225 < 0 || isNaN(data225)){validate21.errors = [{instancePath:instancePath+"/profileCurrent",schemaPath:"#/properties/profileCurrent/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0"}];return false;}}}var valid0 = _errs453 === errors;}else {var valid0 = true;}if(valid0){if(data.global !== undefined){let data226 = data.global;const _errs455 = errors;if(errors === _errs455){if(data226 && typeof data226 == "object" && !Array.isArray(data226)){let missing29;if(((data226.database === undefined) && (missing29 = "database")) || ((data226.dataTransmissionConsentShown === undefined) && (missing29 = "dataTransmissionConsentShown"))){validate21.errors = [{instancePath:instancePath+"/global",schemaPath:"#/properties/global/required",keyword:"required",params:{missingProperty: missing29},message:"must have required property '"+missing29+"'"}];return false;}else {if(data226.database !== undefined){let data227 = data226.database;const _errs457 = errors;if(errors === _errs457){if(data227 && typeof data227 == "object" && !Array.isArray(data227)){let missing30;if((data227.prefixWildcardsSupported === undefined) && (missing30 = "prefixWildcardsSupported")){validate21.errors = [{instancePath:instancePath+"/global/database",schemaPath:"#/properties/global/properties/database/required",keyword:"required",params:{missingProperty: missing30},message:"must have required property '"+missing30+"'"}];return false;}else {if(data227.prefixWildcardsSupported !== undefined){if(typeof data227.prefixWildcardsSupported !== "boolean"){validate21.errors = [{instancePath:instancePath+"/global/database/prefixWildcardsSupported",schemaPath:"#/properties/global/properties/database/properties/prefixWildcardsSupported/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}}}}else {validate21.errors = [{instancePath:instancePath+"/global/database",schemaPath:"#/properties/global/properties/database/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid46 = _errs457 === errors;}else {var valid46 = true;}if(valid46){if(data226.dataTransmissionConsentShown !== undefined){const _errs461 = errors;if(typeof data226.dataTransmissionConsentShown !== "boolean"){validate21.errors = [{instancePath:instancePath+"/global/dataTransmissionConsentShown",schemaPath:"#/properties/global/properties/dataTransmissionConsentShown/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"}];return false;}var valid46 = _errs461 === errors;}else {var valid46 = true;}}}}else {validate21.errors = [{instancePath:instancePath+"/global",schemaPath:"#/properties/global/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid0 = _errs455 === errors;}else {var valid0 = true;}}}}}}else {validate21.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate21.errors = vErrors;return errors === 0;}export const recommendedDictionaries = validate22;const schema34 = {"$id":"recommendedDictionaries","$schema":"http://json-schema.org/draft-07/schema#","description":"Contains data for recommended dictionaries on welcome page.","type":"object","patternProperties":{"^.{2,}$":{"type":"object","properties":{"terms":{"type":"array","items":{"$ref":"#/definitions/Dictionary"}},"kanji":{"type":"array","items":{"$ref":"#/definitions/Dictionary"}},"frequency":{"type":"array","items":{"$ref":"#/definitions/Dictionary"}},"grammar":{"type":"array","items":{"$ref":"#/definitions/Dictionary"}},"pronunciation":{"type":"array","items":{"$ref":"#/definitions/Dictionary"}}},"required":["terms","kanji","frequency","grammar"],"additionalProperties":false}},"definitions":{"Dictionary":{"type":"object","required":["name","downloadUrl","description"],"properties":{"name":{"type":"string","minLength":2},"downloadUrl":{"type":"string","minLength":2},"description":{"type":"string","minLength":2},"homepage":{"type":"string","minLength":2}}}}};const schema35 = {"type":"object","required":["name","downloadUrl","description"],"properties":{"name":{"type":"string","minLength":2},"downloadUrl":{"type":"string","minLength":2},"description":{"type":"string","minLength":2},"homepage":{"type":"string","minLength":2}}};const pattern4 = new RegExp("^.{2,}$", "u");function validate22(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="recommendedDictionaries" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){var valid0 = true;for(const key0 in data){if(pattern4.test(key0)){let data0 = data[key0];const _errs1 = errors;if(errors === _errs1){if(data0 && typeof data0 == "object" && !Array.isArray(data0)){let missing0;if(((((data0.terms === undefined) && (missing0 = "terms")) || ((data0.kanji === undefined) && (missing0 = "kanji"))) || ((data0.frequency === undefined) && (missing0 = "frequency"))) || ((data0.grammar === undefined) && (missing0 = "grammar"))){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/required",keyword:"required",params:{missingProperty: missing0},message:"must have required property '"+missing0+"'"}];return false;}else {const _errs3 = errors;for(const key1 in data0){if(!(((((key1 === "terms") || (key1 === "kanji")) || (key1 === "frequency")) || (key1 === "grammar")) || (key1 === "pronunciation"))){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/additionalProperties",keyword:"additionalProperties",params:{additionalProperty: key1},message:"must NOT have additional properties"}];return false;break;}}if(_errs3 === errors){if(data0.terms !== undefined){let data1 = data0.terms;const _errs4 = errors;if(errors === _errs4){if(Array.isArray(data1)){var valid2 = true;const len0 = data1.length;for(let i0=0; i0<len0; i0++){let data2 = data1[i0];const _errs6 = errors;const _errs7 = errors;if(errors === _errs7){if(data2 && typeof data2 == "object" && !Array.isArray(data2)){let missing1;if((((data2.name === undefined) && (missing1 = "name")) || ((data2.downloadUrl === undefined) && (missing1 = "downloadUrl"))) || ((data2.description === undefined) && (missing1 = "description"))){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0,schemaPath:"#/definitions/Dictionary/required",keyword:"required",params:{missingProperty: missing1},message:"must have required property '"+missing1+"'"}];return false;}else {if(data2.name !== undefined){let data3 = data2.name;const _errs9 = errors;if(errors === _errs9){if(typeof data3 === "string"){if(func2(data3) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/name",schemaPath:"#/definitions/Dictionary/properties/name/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/name",schemaPath:"#/definitions/Dictionary/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid4 = _errs9 === errors;}else {var valid4 = true;}if(valid4){if(data2.downloadUrl !== undefined){let data4 = data2.downloadUrl;const _errs11 = errors;if(errors === _errs11){if(typeof data4 === "string"){if(func2(data4) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid4 = _errs11 === errors;}else {var valid4 = true;}if(valid4){if(data2.description !== undefined){let data5 = data2.description;const _errs13 = errors;if(errors === _errs13){if(typeof data5 === "string"){if(func2(data5) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/description",schemaPath:"#/definitions/Dictionary/properties/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/description",schemaPath:"#/definitions/Dictionary/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid4 = _errs13 === errors;}else {var valid4 = true;}if(valid4){if(data2.homepage !== undefined){let data6 = data2.homepage;const _errs15 = errors;if(errors === _errs15){if(typeof data6 === "string"){if(func2(data6) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid4 = _errs15 === errors;}else {var valid4 = true;}}}}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms/" + i0,schemaPath:"#/definitions/Dictionary/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid2 = _errs6 === errors;if(!valid2){break;}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/terms",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/properties/terms/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid1 = _errs4 === errors;}else {var valid1 = true;}if(valid1){if(data0.kanji !== undefined){let data7 = data0.kanji;const _errs17 = errors;if(errors === _errs17){if(Array.isArray(data7)){var valid5 = true;const len1 = data7.length;for(let i1=0; i1<len1; i1++){let data8 = data7[i1];const _errs19 = errors;const _errs20 = errors;if(errors === _errs20){if(data8 && typeof data8 == "object" && !Array.isArray(data8)){let missing2;if((((data8.name === undefined) && (missing2 = "name")) || ((data8.downloadUrl === undefined) && (missing2 = "downloadUrl"))) || ((data8.description === undefined) && (missing2 = "description"))){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1,schemaPath:"#/definitions/Dictionary/required",keyword:"required",params:{missingProperty: missing2},message:"must have required property '"+missing2+"'"}];return false;}else {if(data8.name !== undefined){let data9 = data8.name;const _errs22 = errors;if(errors === _errs22){if(typeof data9 === "string"){if(func2(data9) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/name",schemaPath:"#/definitions/Dictionary/properties/name/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/name",schemaPath:"#/definitions/Dictionary/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid7 = _errs22 === errors;}else {var valid7 = true;}if(valid7){if(data8.downloadUrl !== undefined){let data10 = data8.downloadUrl;const _errs24 = errors;if(errors === _errs24){if(typeof data10 === "string"){if(func2(data10) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid7 = _errs24 === errors;}else {var valid7 = true;}if(valid7){if(data8.description !== undefined){let data11 = data8.description;const _errs26 = errors;if(errors === _errs26){if(typeof data11 === "string"){if(func2(data11) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/description",schemaPath:"#/definitions/Dictionary/properties/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/description",schemaPath:"#/definitions/Dictionary/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid7 = _errs26 === errors;}else {var valid7 = true;}if(valid7){if(data8.homepage !== undefined){let data12 = data8.homepage;const _errs28 = errors;if(errors === _errs28){if(typeof data12 === "string"){if(func2(data12) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid7 = _errs28 === errors;}else {var valid7 = true;}}}}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji/" + i1,schemaPath:"#/definitions/Dictionary/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid5 = _errs19 === errors;if(!valid5){break;}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/kanji",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/properties/kanji/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid1 = _errs17 === errors;}else {var valid1 = true;}if(valid1){if(data0.frequency !== undefined){let data13 = data0.frequency;const _errs30 = errors;if(errors === _errs30){if(Array.isArray(data13)){var valid8 = true;const len2 = data13.length;for(let i2=0; i2<len2; i2++){let data14 = data13[i2];const _errs32 = errors;const _errs33 = errors;if(errors === _errs33){if(data14 && typeof data14 == "object" && !Array.isArray(data14)){let missing3;if((((data14.name === undefined) && (missing3 = "name")) || ((data14.downloadUrl === undefined) && (missing3 = "downloadUrl"))) || ((data14.description === undefined) && (missing3 = "description"))){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2,schemaPath:"#/definitions/Dictionary/required",keyword:"required",params:{missingProperty: missing3},message:"must have required property '"+missing3+"'"}];return false;}else {if(data14.name !== undefined){let data15 = data14.name;const _errs35 = errors;if(errors === _errs35){if(typeof data15 === "string"){if(func2(data15) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/name",schemaPath:"#/definitions/Dictionary/properties/name/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/name",schemaPath:"#/definitions/Dictionary/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid10 = _errs35 === errors;}else {var valid10 = true;}if(valid10){if(data14.downloadUrl !== undefined){let data16 = data14.downloadUrl;const _errs37 = errors;if(errors === _errs37){if(typeof data16 === "string"){if(func2(data16) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid10 = _errs37 === errors;}else {var valid10 = true;}if(valid10){if(data14.description !== undefined){let data17 = data14.description;const _errs39 = errors;if(errors === _errs39){if(typeof data17 === "string"){if(func2(data17) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/description",schemaPath:"#/definitions/Dictionary/properties/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/description",schemaPath:"#/definitions/Dictionary/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid10 = _errs39 === errors;}else {var valid10 = true;}if(valid10){if(data14.homepage !== undefined){let data18 = data14.homepage;const _errs41 = errors;if(errors === _errs41){if(typeof data18 === "string"){if(func2(data18) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid10 = _errs41 === errors;}else {var valid10 = true;}}}}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency/" + i2,schemaPath:"#/definitions/Dictionary/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid8 = _errs32 === errors;if(!valid8){break;}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/frequency",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/properties/frequency/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid1 = _errs30 === errors;}else {var valid1 = true;}if(valid1){if(data0.grammar !== undefined){let data19 = data0.grammar;const _errs43 = errors;if(errors === _errs43){if(Array.isArray(data19)){var valid11 = true;const len3 = data19.length;for(let i3=0; i3<len3; i3++){let data20 = data19[i3];const _errs45 = errors;const _errs46 = errors;if(errors === _errs46){if(data20 && typeof data20 == "object" && !Array.isArray(data20)){let missing4;if((((data20.name === undefined) && (missing4 = "name")) || ((data20.downloadUrl === undefined) && (missing4 = "downloadUrl"))) || ((data20.description === undefined) && (missing4 = "description"))){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3,schemaPath:"#/definitions/Dictionary/required",keyword:"required",params:{missingProperty: missing4},message:"must have required property '"+missing4+"'"}];return false;}else {if(data20.name !== undefined){let data21 = data20.name;const _errs48 = errors;if(errors === _errs48){if(typeof data21 === "string"){if(func2(data21) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/name",schemaPath:"#/definitions/Dictionary/properties/name/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/name",schemaPath:"#/definitions/Dictionary/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid13 = _errs48 === errors;}else {var valid13 = true;}if(valid13){if(data20.downloadUrl !== undefined){let data22 = data20.downloadUrl;const _errs50 = errors;if(errors === _errs50){if(typeof data22 === "string"){if(func2(data22) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid13 = _errs50 === errors;}else {var valid13 = true;}if(valid13){if(data20.description !== undefined){let data23 = data20.description;const _errs52 = errors;if(errors === _errs52){if(typeof data23 === "string"){if(func2(data23) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/description",schemaPath:"#/definitions/Dictionary/properties/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/description",schemaPath:"#/definitions/Dictionary/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid13 = _errs52 === errors;}else {var valid13 = true;}if(valid13){if(data20.homepage !== undefined){let data24 = data20.homepage;const _errs54 = errors;if(errors === _errs54){if(typeof data24 === "string"){if(func2(data24) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid13 = _errs54 === errors;}else {var valid13 = true;}}}}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar/" + i3,schemaPath:"#/definitions/Dictionary/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid11 = _errs45 === errors;if(!valid11){break;}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/grammar",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/properties/grammar/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid1 = _errs43 === errors;}else {var valid1 = true;}if(valid1){if(data0.pronunciation !== undefined){let data25 = data0.pronunciation;const _errs56 = errors;if(errors === _errs56){if(Array.isArray(data25)){var valid14 = true;const len4 = data25.length;for(let i4=0; i4<len4; i4++){let data26 = data25[i4];const _errs58 = errors;const _errs59 = errors;if(errors === _errs59){if(data26 && typeof data26 == "object" && !Array.isArray(data26)){let missing5;if((((data26.name === undefined) && (missing5 = "name")) || ((data26.downloadUrl === undefined) && (missing5 = "downloadUrl"))) || ((data26.description === undefined) && (missing5 = "description"))){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4,schemaPath:"#/definitions/Dictionary/required",keyword:"required",params:{missingProperty: missing5},message:"must have required property '"+missing5+"'"}];return false;}else {if(data26.name !== undefined){let data27 = data26.name;const _errs61 = errors;if(errors === _errs61){if(typeof data27 === "string"){if(func2(data27) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/name",schemaPath:"#/definitions/Dictionary/properties/name/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/name",schemaPath:"#/definitions/Dictionary/properties/name/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid16 = _errs61 === errors;}else {var valid16 = true;}if(valid16){if(data26.downloadUrl !== undefined){let data28 = data26.downloadUrl;const _errs63 = errors;if(errors === _errs63){if(typeof data28 === "string"){if(func2(data28) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/downloadUrl",schemaPath:"#/definitions/Dictionary/properties/downloadUrl/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid16 = _errs63 === errors;}else {var valid16 = true;}if(valid16){if(data26.description !== undefined){let data29 = data26.description;const _errs65 = errors;if(errors === _errs65){if(typeof data29 === "string"){if(func2(data29) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/description",schemaPath:"#/definitions/Dictionary/properties/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/description",schemaPath:"#/definitions/Dictionary/properties/description/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid16 = _errs65 === errors;}else {var valid16 = true;}if(valid16){if(data26.homepage !== undefined){let data30 = data26.homepage;const _errs67 = errors;if(errors === _errs67){if(typeof data30 === "string"){if(func2(data30) < 2){validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"}];return false;}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4+"/homepage",schemaPath:"#/definitions/Dictionary/properties/homepage/type",keyword:"type",params:{type: "string"},message:"must be string"}];return false;}}var valid16 = _errs67 === errors;}else {var valid16 = true;}}}}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation/" + i4,schemaPath:"#/definitions/Dictionary/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid14 = _errs58 === errors;if(!valid14){break;}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/pronunciation",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/properties/pronunciation/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid1 = _errs56 === errors;}else {var valid1 = true;}}}}}}}}else {validate22.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}}else {validate22.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate22.errors = vErrors;return errors === 0;}export const recommendedSettings = validate23;const schema40 = {"$id":"recommendedSettings","$schema":"http://json-schema.org/draft-07/schema#","description":"Contains data for recommended default options overrides by language.","type":"object","$defs":{"path":{"type":"string","minLength":2},"value":{"anyOf":[{"type":"string","minLength":1},{"type":"number"},{"type":"boolean"},{"type":"array"},{"type":"object"}]},"description":{"type":"string","minLength":2}},"patternProperties":{"^.{2,}$":{"title":"Language","type":"array","items":{"title":"Modification","type":"object","oneOf":[{"type":"object","title":"ModificationSet","properties":{"modification":{"type":"object","properties":{"action":{"type":"string","const":"set"},"path":{"$ref":"#/$defs/path"},"value":{"$ref":"#/$defs/value"}}},"description":{"$ref":"#/$defs/description"}}},{"type":"object","title":"ModificationDelete","properties":{"modification":{"type":"object","properties":{"action":{"type":"string","const":"delete"},"path":{"$ref":"#/$defs/path"},"value":{"$ref":"#/$defs/value"}}},"description":{"$ref":"#/$defs/description"}}},{"type":"object","title":"ModificationSwap","properties":{"modification":{"type":"object","properties":{"action":{"type":"string","const":"swap"},"path1":{"$ref":"#/$defs/path"},"path2":{"$ref":"#/$defs/path"}}},"description":{"$ref":"#/$defs/description"}}},{"type":"object","title":"ModificationSplice","properties":{"modification":{"type":"object","properties":{"action":{"type":"string","const":"splice"},"path":{"$ref":"#/$defs/path"},"start":{"type":"number"},"deleteCount":{"type":"number"},"items":{"type":"array","items":{"$ref":"#/$defs/value"}}}},"description":{"$ref":"#/$defs/description"}}},{"type":"object","title":"ModificationPush","properties":{"modification":{"type":"object","properties":{"action":{"type":"string","const":"push"},"path":{"$ref":"#/$defs/path"},"items":{"type":"array","items":{"$ref":"#/$defs/value"}}}},"description":{"$ref":"#/$defs/description"}}}]}}}};const schema41 = {"type":"string","minLength":2};const schema42 = {"anyOf":[{"type":"string","minLength":1},{"type":"number"},{"type":"boolean"},{"type":"array"},{"type":"object"}]};const schema43 = {"type":"string","minLength":2};function validate23(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){/*# sourceURL="recommendedSettings" */;let vErrors = null;let errors = 0;if(errors === 0){if(data && typeof data == "object" && !Array.isArray(data)){var valid0 = true;for(const key0 in data){if(pattern4.test(key0)){let data0 = data[key0];const _errs1 = errors;if(errors === _errs1){if(Array.isArray(data0)){var valid1 = true;const len0 = data0.length;for(let i0=0; i0<len0; i0++){let data1 = data0[i0];const _errs3 = errors;if(!(data1 && typeof data1 == "object" && !Array.isArray(data1))){validate23.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}const _errs5 = errors;let valid2 = false;let passing0 = null;const _errs6 = errors;if(errors === _errs6){if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.modification !== undefined){let data2 = data1.modification;const _errs8 = errors;if(errors === _errs8){if(data2 && typeof data2 == "object" && !Array.isArray(data2)){if(data2.action !== undefined){let data3 = data2.action;const _errs10 = errors;if(typeof data3 !== "string"){const err0 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/0/properties/modification/properties/action/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if("set" !== data3){const err1 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/0/properties/modification/properties/action/const",keyword:"const",params:{allowedValue: "set"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}var valid4 = _errs10 === errors;}else {var valid4 = true;}if(valid4){if(data2.path !== undefined){let data4 = data2.path;const _errs12 = errors;const _errs13 = errors;if(errors === _errs13){if(typeof data4 === "string"){if(func2(data4) < 2){const err2 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}else {const err3 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}var valid4 = _errs12 === errors;}else {var valid4 = true;}if(valid4){if(data2.value !== undefined){let data5 = data2.value;const _errs15 = errors;const _errs17 = errors;let valid7 = false;const _errs18 = errors;if(errors === _errs18){if(typeof data5 === "string"){if(func2(data5) < 1){const err4 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/0/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}var _valid1 = _errs18 === errors;valid7 = valid7 || _valid1;if(!valid7){const _errs20 = errors;if(!((typeof data5 == "number") && (isFinite(data5)))){const err6 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/1/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var _valid1 = _errs20 === errors;valid7 = valid7 || _valid1;if(!valid7){const _errs22 = errors;if(typeof data5 !== "boolean"){const err7 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/2/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}var _valid1 = _errs22 === errors;valid7 = valid7 || _valid1;if(!valid7){const _errs24 = errors;if(!(Array.isArray(data5))){const err8 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/3/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}var _valid1 = _errs24 === errors;valid7 = valid7 || _valid1;if(!valid7){const _errs26 = errors;if(!(data5 && typeof data5 == "object" && !Array.isArray(data5))){const err9 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/4/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}var _valid1 = _errs26 === errors;valid7 = valid7 || _valid1;}}}}if(!valid7){const err10 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}else {errors = _errs17;if(vErrors !== null){if(_errs17){vErrors.length = _errs17;}else {vErrors = null;}}}var valid4 = _errs15 === errors;}else {var valid4 = true;}}}}else {const err11 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/0/properties/modification/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}var valid3 = _errs8 === errors;}else {var valid3 = true;}if(valid3){if(data1.description !== undefined){let data6 = data1.description;const _errs28 = errors;const _errs29 = errors;if(errors === _errs29){if(typeof data6 === "string"){if(func2(data6) < 2){const err12 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}else {const err13 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}var valid3 = _errs28 === errors;}else {var valid3 = true;}}}else {const err14 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/0/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}var _valid0 = _errs6 === errors;if(_valid0){valid2 = true;passing0 = 0;}const _errs31 = errors;if(errors === _errs31){if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.modification !== undefined){let data7 = data1.modification;const _errs33 = errors;if(errors === _errs33){if(data7 && typeof data7 == "object" && !Array.isArray(data7)){if(data7.action !== undefined){let data8 = data7.action;const _errs35 = errors;if(typeof data8 !== "string"){const err15 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/1/properties/modification/properties/action/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if("delete" !== data8){const err16 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/1/properties/modification/properties/action/const",keyword:"const",params:{allowedValue: "delete"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}var valid10 = _errs35 === errors;}else {var valid10 = true;}if(valid10){if(data7.path !== undefined){let data9 = data7.path;const _errs37 = errors;const _errs38 = errors;if(errors === _errs38){if(typeof data9 === "string"){if(func2(data9) < 2){const err17 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}var valid10 = _errs37 === errors;}else {var valid10 = true;}if(valid10){if(data7.value !== undefined){let data10 = data7.value;const _errs40 = errors;const _errs42 = errors;let valid13 = false;const _errs43 = errors;if(errors === _errs43){if(typeof data10 === "string"){if(func2(data10) < 1){const err19 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/0/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}else {const err20 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}var _valid2 = _errs43 === errors;valid13 = valid13 || _valid2;if(!valid13){const _errs45 = errors;if(!((typeof data10 == "number") && (isFinite(data10)))){const err21 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/1/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}var _valid2 = _errs45 === errors;valid13 = valid13 || _valid2;if(!valid13){const _errs47 = errors;if(typeof data10 !== "boolean"){const err22 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/2/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}var _valid2 = _errs47 === errors;valid13 = valid13 || _valid2;if(!valid13){const _errs49 = errors;if(!(Array.isArray(data10))){const err23 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/3/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}var _valid2 = _errs49 === errors;valid13 = valid13 || _valid2;if(!valid13){const _errs51 = errors;if(!(data10 && typeof data10 == "object" && !Array.isArray(data10))){const err24 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf/4/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}var _valid2 = _errs51 === errors;valid13 = valid13 || _valid2;}}}}if(!valid13){const err25 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/value",schemaPath:"#/$defs/value/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}else {errors = _errs42;if(vErrors !== null){if(_errs42){vErrors.length = _errs42;}else {vErrors = null;}}}var valid10 = _errs40 === errors;}else {var valid10 = true;}}}}else {const err26 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/1/properties/modification/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}var valid9 = _errs33 === errors;}else {var valid9 = true;}if(valid9){if(data1.description !== undefined){let data11 = data1.description;const _errs53 = errors;const _errs54 = errors;if(errors === _errs54){if(typeof data11 === "string"){if(func2(data11) < 2){const err27 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}else {const err28 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}var valid9 = _errs53 === errors;}else {var valid9 = true;}}}else {const err29 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/1/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}var _valid0 = _errs31 === errors;if(_valid0 && valid2){valid2 = false;passing0 = [passing0, 1];}else {if(_valid0){valid2 = true;passing0 = 1;}const _errs56 = errors;if(errors === _errs56){if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.modification !== undefined){let data12 = data1.modification;const _errs58 = errors;if(errors === _errs58){if(data12 && typeof data12 == "object" && !Array.isArray(data12)){if(data12.action !== undefined){let data13 = data12.action;const _errs60 = errors;if(typeof data13 !== "string"){const err30 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/2/properties/modification/properties/action/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}if("swap" !== data13){const err31 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/2/properties/modification/properties/action/const",keyword:"const",params:{allowedValue: "swap"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}var valid16 = _errs60 === errors;}else {var valid16 = true;}if(valid16){if(data12.path1 !== undefined){let data14 = data12.path1;const _errs62 = errors;const _errs63 = errors;if(errors === _errs63){if(typeof data14 === "string"){if(func2(data14) < 2){const err32 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path1",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path1",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}var valid16 = _errs62 === errors;}else {var valid16 = true;}if(valid16){if(data12.path2 !== undefined){let data15 = data12.path2;const _errs65 = errors;const _errs66 = errors;if(errors === _errs66){if(typeof data15 === "string"){if(func2(data15) < 2){const err34 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path2",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path2",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}var valid16 = _errs65 === errors;}else {var valid16 = true;}}}}else {const err36 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/2/properties/modification/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}var valid15 = _errs58 === errors;}else {var valid15 = true;}if(valid15){if(data1.description !== undefined){let data16 = data1.description;const _errs68 = errors;const _errs69 = errors;if(errors === _errs69){if(typeof data16 === "string"){if(func2(data16) < 2){const err37 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}else {const err38 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}var valid15 = _errs68 === errors;}else {var valid15 = true;}}}else {const err39 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/2/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}var _valid0 = _errs56 === errors;if(_valid0 && valid2){valid2 = false;passing0 = [passing0, 2];}else {if(_valid0){valid2 = true;passing0 = 2;}const _errs71 = errors;if(errors === _errs71){if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.modification !== undefined){let data17 = data1.modification;const _errs73 = errors;if(errors === _errs73){if(data17 && typeof data17 == "object" && !Array.isArray(data17)){if(data17.action !== undefined){let data18 = data17.action;const _errs75 = errors;if(typeof data18 !== "string"){const err40 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/3/properties/modification/properties/action/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}if("splice" !== data18){const err41 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/3/properties/modification/properties/action/const",keyword:"const",params:{allowedValue: "splice"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}var valid21 = _errs75 === errors;}else {var valid21 = true;}if(valid21){if(data17.path !== undefined){let data19 = data17.path;const _errs77 = errors;const _errs78 = errors;if(errors === _errs78){if(typeof data19 === "string"){if(func2(data19) < 2){const err42 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}else {const err43 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}}var valid21 = _errs77 === errors;}else {var valid21 = true;}if(valid21){if(data17.start !== undefined){let data20 = data17.start;const _errs80 = errors;if(!((typeof data20 == "number") && (isFinite(data20)))){const err44 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/start",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/3/properties/modification/properties/start/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}var valid21 = _errs80 === errors;}else {var valid21 = true;}if(valid21){if(data17.deleteCount !== undefined){let data21 = data17.deleteCount;const _errs82 = errors;if(!((typeof data21 == "number") && (isFinite(data21)))){const err45 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/deleteCount",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/3/properties/modification/properties/deleteCount/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}var valid21 = _errs82 === errors;}else {var valid21 = true;}if(valid21){if(data17.items !== undefined){let data22 = data17.items;const _errs84 = errors;if(errors === _errs84){if(Array.isArray(data22)){var valid23 = true;const len1 = data22.length;for(let i1=0; i1<len1; i1++){let data23 = data22[i1];const _errs86 = errors;const _errs88 = errors;let valid25 = false;const _errs89 = errors;if(errors === _errs89){if(typeof data23 === "string"){if(func2(data23) < 1){const err46 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i1,schemaPath:"#/$defs/value/anyOf/0/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}}else {const err47 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i1,schemaPath:"#/$defs/value/anyOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}}var _valid3 = _errs89 === errors;valid25 = valid25 || _valid3;if(!valid25){const _errs91 = errors;if(!((typeof data23 == "number") && (isFinite(data23)))){const err48 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i1,schemaPath:"#/$defs/value/anyOf/1/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}var _valid3 = _errs91 === errors;valid25 = valid25 || _valid3;if(!valid25){const _errs93 = errors;if(typeof data23 !== "boolean"){const err49 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i1,schemaPath:"#/$defs/value/anyOf/2/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}var _valid3 = _errs93 === errors;valid25 = valid25 || _valid3;if(!valid25){const _errs95 = errors;if(!(Array.isArray(data23))){const err50 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i1,schemaPath:"#/$defs/value/anyOf/3/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}var _valid3 = _errs95 === errors;valid25 = valid25 || _valid3;if(!valid25){const _errs97 = errors;if(!(data23 && typeof data23 == "object" && !Array.isArray(data23))){const err51 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i1,schemaPath:"#/$defs/value/anyOf/4/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}var _valid3 = _errs97 === errors;valid25 = valid25 || _valid3;}}}}if(!valid25){const err52 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i1,schemaPath:"#/$defs/value/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}else {errors = _errs88;if(vErrors !== null){if(_errs88){vErrors.length = _errs88;}else {vErrors = null;}}}var valid23 = _errs86 === errors;if(!valid23){break;}}}else {const err53 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/3/properties/modification/properties/items/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}}var valid21 = _errs84 === errors;}else {var valid21 = true;}}}}}}else {const err54 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/3/properties/modification/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}}var valid20 = _errs73 === errors;}else {var valid20 = true;}if(valid20){if(data1.description !== undefined){let data24 = data1.description;const _errs99 = errors;const _errs100 = errors;if(errors === _errs100){if(typeof data24 === "string"){if(func2(data24) < 2){const err55 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err55];}else {vErrors.push(err55);}errors++;}}else {const err56 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err56];}else {vErrors.push(err56);}errors++;}}var valid20 = _errs99 === errors;}else {var valid20 = true;}}}else {const err57 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/3/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err57];}else {vErrors.push(err57);}errors++;}}var _valid0 = _errs71 === errors;if(_valid0 && valid2){valid2 = false;passing0 = [passing0, 3];}else {if(_valid0){valid2 = true;passing0 = 3;}const _errs102 = errors;if(errors === _errs102){if(data1 && typeof data1 == "object" && !Array.isArray(data1)){if(data1.modification !== undefined){let data25 = data1.modification;const _errs104 = errors;if(errors === _errs104){if(data25 && typeof data25 == "object" && !Array.isArray(data25)){if(data25.action !== undefined){let data26 = data25.action;const _errs106 = errors;if(typeof data26 !== "string"){const err58 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/4/properties/modification/properties/action/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err58];}else {vErrors.push(err58);}errors++;}if("push" !== data26){const err59 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/action",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/4/properties/modification/properties/action/const",keyword:"const",params:{allowedValue: "push"},message:"must be equal to constant"};if(vErrors === null){vErrors = [err59];}else {vErrors.push(err59);}errors++;}var valid28 = _errs106 === errors;}else {var valid28 = true;}if(valid28){if(data25.path !== undefined){let data27 = data25.path;const _errs108 = errors;const _errs109 = errors;if(errors === _errs109){if(typeof data27 === "string"){if(func2(data27) < 2){const err60 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err60];}else {vErrors.push(err60);}errors++;}}else {const err61 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/path",schemaPath:"#/$defs/path/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err61];}else {vErrors.push(err61);}errors++;}}var valid28 = _errs108 === errors;}else {var valid28 = true;}if(valid28){if(data25.items !== undefined){let data28 = data25.items;const _errs111 = errors;if(errors === _errs111){if(Array.isArray(data28)){var valid30 = true;const len2 = data28.length;for(let i2=0; i2<len2; i2++){let data29 = data28[i2];const _errs113 = errors;const _errs115 = errors;let valid32 = false;const _errs116 = errors;if(errors === _errs116){if(typeof data29 === "string"){if(func2(data29) < 1){const err62 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i2,schemaPath:"#/$defs/value/anyOf/0/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters"};if(vErrors === null){vErrors = [err62];}else {vErrors.push(err62);}errors++;}}else {const err63 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i2,schemaPath:"#/$defs/value/anyOf/0/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err63];}else {vErrors.push(err63);}errors++;}}var _valid4 = _errs116 === errors;valid32 = valid32 || _valid4;if(!valid32){const _errs118 = errors;if(!((typeof data29 == "number") && (isFinite(data29)))){const err64 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i2,schemaPath:"#/$defs/value/anyOf/1/type",keyword:"type",params:{type: "number"},message:"must be number"};if(vErrors === null){vErrors = [err64];}else {vErrors.push(err64);}errors++;}var _valid4 = _errs118 === errors;valid32 = valid32 || _valid4;if(!valid32){const _errs120 = errors;if(typeof data29 !== "boolean"){const err65 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i2,schemaPath:"#/$defs/value/anyOf/2/type",keyword:"type",params:{type: "boolean"},message:"must be boolean"};if(vErrors === null){vErrors = [err65];}else {vErrors.push(err65);}errors++;}var _valid4 = _errs120 === errors;valid32 = valid32 || _valid4;if(!valid32){const _errs122 = errors;if(!(Array.isArray(data29))){const err66 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i2,schemaPath:"#/$defs/value/anyOf/3/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err66];}else {vErrors.push(err66);}errors++;}var _valid4 = _errs122 === errors;valid32 = valid32 || _valid4;if(!valid32){const _errs124 = errors;if(!(data29 && typeof data29 == "object" && !Array.isArray(data29))){const err67 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i2,schemaPath:"#/$defs/value/anyOf/4/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err67];}else {vErrors.push(err67);}errors++;}var _valid4 = _errs124 === errors;valid32 = valid32 || _valid4;}}}}if(!valid32){const err68 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items/" + i2,schemaPath:"#/$defs/value/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};if(vErrors === null){vErrors = [err68];}else {vErrors.push(err68);}errors++;}else {errors = _errs115;if(vErrors !== null){if(_errs115){vErrors.length = _errs115;}else {vErrors = null;}}}var valid30 = _errs113 === errors;if(!valid30){break;}}}else {const err69 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification/items",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/4/properties/modification/properties/items/type",keyword:"type",params:{type: "array"},message:"must be array"};if(vErrors === null){vErrors = [err69];}else {vErrors.push(err69);}errors++;}}var valid28 = _errs111 === errors;}else {var valid28 = true;}}}}else {const err70 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/modification",schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/4/properties/modification/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err70];}else {vErrors.push(err70);}errors++;}}var valid27 = _errs104 === errors;}else {var valid27 = true;}if(valid27){if(data1.description !== undefined){let data30 = data1.description;const _errs126 = errors;const _errs127 = errors;if(errors === _errs127){if(typeof data30 === "string"){if(func2(data30) < 2){const err71 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/minLength",keyword:"minLength",params:{limit: 2},message:"must NOT have fewer than 2 characters"};if(vErrors === null){vErrors = [err71];}else {vErrors.push(err71);}errors++;}}else {const err72 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0+"/description",schemaPath:"#/$defs/description/type",keyword:"type",params:{type: "string"},message:"must be string"};if(vErrors === null){vErrors = [err72];}else {vErrors.push(err72);}errors++;}}var valid27 = _errs126 === errors;}else {var valid27 = true;}}}else {const err73 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf/4/type",keyword:"type",params:{type: "object"},message:"must be object"};if(vErrors === null){vErrors = [err73];}else {vErrors.push(err73);}errors++;}}var _valid0 = _errs102 === errors;if(_valid0 && valid2){valid2 = false;passing0 = [passing0, 4];}else {if(_valid0){valid2 = true;passing0 = 4;}}}}}if(!valid2){const err74 = {instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1")+"/" + i0,schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/items/oneOf",keyword:"oneOf",params:{passingSchemas: passing0},message:"must match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err74];}else {vErrors.push(err74);}errors++;validate23.errors = vErrors;return false;}else {errors = _errs5;if(vErrors !== null){if(_errs5){vErrors.length = _errs5;}else {vErrors = null;}}}var valid1 = _errs3 === errors;if(!valid1){break;}}}else {validate23.errors = [{instancePath:instancePath+"/" + key0.replace(/~/g, "~0").replace(/\//g, "~1"),schemaPath:"#/patternProperties/%5E.%7B2%2C%7D%24/type",keyword:"type",params:{type: "array"},message:"must be array"}];return false;}}var valid0 = _errs1 === errors;if(!valid0){break;}}}}else {validate23.errors = [{instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object"}];return false;}}validate23.errors = vErrors;return errors === 0;} \ No newline at end of file diff --git a/vendor/yomitan/lib/z-worker.js b/vendor/yomitan/lib/z-worker.js deleted file mode 100644 index 9d31f5cc..00000000 --- a/vendor/yomitan/lib/z-worker.js +++ /dev/null @@ -1,6457 +0,0 @@ -// @ts-nocheck - -// node_modules/@zip.js/zip.js/lib/core/constants.js -var END_OF_CENTRAL_DIR_LENGTH = 22; -var ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH = 20; -var ZIP64_END_OF_CENTRAL_DIR_LENGTH = 56; -var ZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH = END_OF_CENTRAL_DIR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LENGTH; -var MAX_DATE = new Date(2107, 11, 31); -var MIN_DATE = new Date(1980, 0, 1); -var UNDEFINED_VALUE = void 0; -var UNDEFINED_TYPE = "undefined"; -var FUNCTION_TYPE = "function"; - -// node_modules/@zip.js/zip.js/lib/core/streams/stream-adapter.js -var StreamAdapter = class { - constructor(Codec) { - return class extends TransformStream { - constructor(_format, options) { - const codec2 = new Codec(options); - super({ - transform(chunk, controller) { - controller.enqueue(codec2.append(chunk)); - }, - flush(controller) { - const chunk = codec2.flush(); - if (chunk) { - controller.enqueue(chunk); - } - } - }); - } - }; - } -}; - -// node_modules/@zip.js/zip.js/lib/core/streams/codecs/crc32.js -var table = []; -for (let i = 0; i < 256; i++) { - let t = i; - for (let j = 0; j < 8; j++) { - if (t & 1) { - t = t >>> 1 ^ 3988292384; - } else { - t = t >>> 1; - } - } - table[i] = t; -} -var Crc32 = class { - constructor(crc) { - this.crc = crc || -1; - } - append(data) { - let crc = this.crc | 0; - for (let offset = 0, length = data.length | 0; offset < length; offset++) { - crc = crc >>> 8 ^ table[(crc ^ data[offset]) & 255]; - } - this.crc = crc; - } - get() { - return ~this.crc; - } -}; - -// node_modules/@zip.js/zip.js/lib/core/streams/crc32-stream.js -var Crc32Stream = class extends TransformStream { - constructor() { - let stream; - const crc32 = new Crc32(); - super({ - transform(chunk, controller) { - crc32.append(chunk); - controller.enqueue(chunk); - }, - flush() { - const value = new Uint8Array(4); - const dataView = new DataView(value.buffer); - dataView.setUint32(0, crc32.get()); - stream.value = value; - } - }); - stream = this; - } -}; - -// node_modules/@zip.js/zip.js/lib/core/util/encode-text.js -function encodeText(value) { - if (typeof TextEncoder == UNDEFINED_TYPE) { - value = unescape(encodeURIComponent(value)); - const result = new Uint8Array(value.length); - for (let i = 0; i < result.length; i++) { - result[i] = value.charCodeAt(i); - } - return result; - } else { - return new TextEncoder().encode(value); - } -} - -// node_modules/@zip.js/zip.js/lib/core/streams/codecs/sjcl.js -var bitArray = { - /** - * Concatenate two bit arrays. - * @param {bitArray} a1 The first array. - * @param {bitArray} a2 The second array. - * @return {bitArray} The concatenation of a1 and a2. - */ - concat(a1, a2) { - if (a1.length === 0 || a2.length === 0) { - return a1.concat(a2); - } - const last = a1[a1.length - 1], shift = bitArray.getPartial(last); - if (shift === 32) { - return a1.concat(a2); - } else { - return bitArray._shiftRight(a2, shift, last | 0, a1.slice(0, a1.length - 1)); - } - }, - /** - * Find the length of an array of bits. - * @param {bitArray} a The array. - * @return {Number} The length of a, in bits. - */ - bitLength(a) { - const l = a.length; - if (l === 0) { - return 0; - } - const x = a[l - 1]; - return (l - 1) * 32 + bitArray.getPartial(x); - }, - /** - * Truncate an array. - * @param {bitArray} a The array. - * @param {Number} len The length to truncate to, in bits. - * @return {bitArray} A new array, truncated to len bits. - */ - clamp(a, len) { - if (a.length * 32 < len) { - return a; - } - a = a.slice(0, Math.ceil(len / 32)); - const l = a.length; - len = len & 31; - if (l > 0 && len) { - a[l - 1] = bitArray.partial(len, a[l - 1] & 2147483648 >> len - 1, 1); - } - return a; - }, - /** - * Make a partial word for a bit array. - * @param {Number} len The number of bits in the word. - * @param {Number} x The bits. - * @param {Number} [_end=0] Pass 1 if x has already been shifted to the high side. - * @return {Number} The partial word. - */ - partial(len, x, _end) { - if (len === 32) { - return x; - } - return (_end ? x | 0 : x << 32 - len) + len * 1099511627776; - }, - /** - * Get the number of bits used by a partial word. - * @param {Number} x The partial word. - * @return {Number} The number of bits used by the partial word. - */ - getPartial(x) { - return Math.round(x / 1099511627776) || 32; - }, - /** Shift an array right. - * @param {bitArray} a The array to shift. - * @param {Number} shift The number of bits to shift. - * @param {Number} [carry=0] A byte to carry in - * @param {bitArray} [out=[]] An array to prepend to the output. - * @private - */ - _shiftRight(a, shift, carry, out) { - if (out === void 0) { - out = []; - } - for (; shift >= 32; shift -= 32) { - out.push(carry); - carry = 0; - } - if (shift === 0) { - return out.concat(a); - } - for (let i = 0; i < a.length; i++) { - out.push(carry | a[i] >>> shift); - carry = a[i] << 32 - shift; - } - const last2 = a.length ? a[a.length - 1] : 0; - const shift2 = bitArray.getPartial(last2); - out.push(bitArray.partial(shift + shift2 & 31, shift + shift2 > 32 ? carry : out.pop(), 1)); - return out; - } -}; -var codec = { - bytes: { - /** Convert from a bitArray to an array of bytes. */ - fromBits(arr) { - const bl = bitArray.bitLength(arr); - const byteLength = bl / 8; - const out = new Uint8Array(byteLength); - let tmp; - for (let i = 0; i < byteLength; i++) { - if ((i & 3) === 0) { - tmp = arr[i / 4]; - } - out[i] = tmp >>> 24; - tmp <<= 8; - } - return out; - }, - /** Convert from an array of bytes to a bitArray. */ - toBits(bytes) { - const out = []; - let i; - let tmp = 0; - for (i = 0; i < bytes.length; i++) { - tmp = tmp << 8 | bytes[i]; - if ((i & 3) === 3) { - out.push(tmp); - tmp = 0; - } - } - if (i & 3) { - out.push(bitArray.partial(8 * (i & 3), tmp)); - } - return out; - } - } -}; -var hash = {}; -hash.sha1 = class { - constructor(hash2) { - const sha1 = this; - sha1.blockSize = 512; - sha1._init = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; - sha1._key = [1518500249, 1859775393, 2400959708, 3395469782]; - if (hash2) { - sha1._h = hash2._h.slice(0); - sha1._buffer = hash2._buffer.slice(0); - sha1._length = hash2._length; - } else { - sha1.reset(); - } - } - /** - * Reset the hash state. - * @return this - */ - reset() { - const sha1 = this; - sha1._h = sha1._init.slice(0); - sha1._buffer = []; - sha1._length = 0; - return sha1; - } - /** - * Input several words to the hash. - * @param {bitArray|String} data the data to hash. - * @return this - */ - update(data) { - const sha1 = this; - if (typeof data === "string") { - data = codec.utf8String.toBits(data); - } - const b = sha1._buffer = bitArray.concat(sha1._buffer, data); - const ol = sha1._length; - const nl = sha1._length = ol + bitArray.bitLength(data); - if (nl > 9007199254740991) { - throw new Error("Cannot hash more than 2^53 - 1 bits"); - } - const c = new Uint32Array(b); - let j = 0; - for (let i = sha1.blockSize + ol - (sha1.blockSize + ol & sha1.blockSize - 1); i <= nl; i += sha1.blockSize) { - sha1._block(c.subarray(16 * j, 16 * (j + 1))); - j += 1; - } - b.splice(0, 16 * j); - return sha1; - } - /** - * Complete hashing and output the hash value. - * @return {bitArray} The hash value, an array of 5 big-endian words. TODO - */ - finalize() { - const sha1 = this; - let b = sha1._buffer; - const h = sha1._h; - b = bitArray.concat(b, [bitArray.partial(1, 1)]); - for (let i = b.length + 2; i & 15; i++) { - b.push(0); - } - b.push(Math.floor(sha1._length / 4294967296)); - b.push(sha1._length | 0); - while (b.length) { - sha1._block(b.splice(0, 16)); - } - sha1.reset(); - return h; - } - /** - * The SHA-1 logical functions f(0), f(1), ..., f(79). - * @private - */ - _f(t, b, c, d) { - if (t <= 19) { - return b & c | ~b & d; - } else if (t <= 39) { - return b ^ c ^ d; - } else if (t <= 59) { - return b & c | b & d | c & d; - } else if (t <= 79) { - return b ^ c ^ d; - } - } - /** - * Circular left-shift operator. - * @private - */ - _S(n, x) { - return x << n | x >>> 32 - n; - } - /** - * Perform one cycle of SHA-1. - * @param {Uint32Array|bitArray} words one block of words. - * @private - */ - _block(words) { - const sha1 = this; - const h = sha1._h; - const w = Array(80); - for (let j = 0; j < 16; j++) { - w[j] = words[j]; - } - let a = h[0]; - let b = h[1]; - let c = h[2]; - let d = h[3]; - let e = h[4]; - for (let t = 0; t <= 79; t++) { - if (t >= 16) { - w[t] = sha1._S(1, w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]); - } - const tmp = sha1._S(5, a) + sha1._f(t, b, c, d) + e + w[t] + sha1._key[Math.floor(t / 20)] | 0; - e = d; - d = c; - c = sha1._S(30, b); - b = a; - a = tmp; - } - h[0] = h[0] + a | 0; - h[1] = h[1] + b | 0; - h[2] = h[2] + c | 0; - h[3] = h[3] + d | 0; - h[4] = h[4] + e | 0; - } -}; -var cipher = {}; -cipher.aes = class { - constructor(key) { - const aes = this; - aes._tables = [[[], [], [], [], []], [[], [], [], [], []]]; - if (!aes._tables[0][0][0]) { - aes._precompute(); - } - const sbox = aes._tables[0][4]; - const decTable = aes._tables[1]; - const keyLen = key.length; - let i, encKey, decKey, rcon = 1; - if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) { - throw new Error("invalid aes key size"); - } - aes._key = [encKey = key.slice(0), decKey = []]; - for (i = keyLen; i < 4 * keyLen + 28; i++) { - let tmp = encKey[i - 1]; - if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) { - tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255]; - if (i % keyLen === 0) { - tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24; - rcon = rcon << 1 ^ (rcon >> 7) * 283; - } - } - encKey[i] = encKey[i - keyLen] ^ tmp; - } - for (let j = 0; i; j++, i--) { - const tmp = encKey[j & 3 ? i : i - 4]; - if (i <= 4 || j < 4) { - decKey[j] = tmp; - } else { - decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]]; - } - } - } - // public - /* Something like this might appear here eventually - name: "AES", - blockSize: 4, - keySizes: [4,6,8], - */ - /** - * Encrypt an array of 4 big-endian words. - * @param {Array} data The plaintext. - * @return {Array} The ciphertext. - */ - encrypt(data) { - return this._crypt(data, 0); - } - /** - * Decrypt an array of 4 big-endian words. - * @param {Array} data The ciphertext. - * @return {Array} The plaintext. - */ - decrypt(data) { - return this._crypt(data, 1); - } - /** - * Expand the S-box tables. - * - * @private - */ - _precompute() { - const encTable = this._tables[0]; - const decTable = this._tables[1]; - const sbox = encTable[4]; - const sboxInv = decTable[4]; - const d = []; - const th = []; - let xInv, x2, x4, x8; - for (let i = 0; i < 256; i++) { - th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i; - } - for (let x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) { - let s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4; - s = s >> 8 ^ s & 255 ^ 99; - sbox[x] = s; - sboxInv[s] = x; - x8 = d[x4 = d[x2 = d[x]]]; - let tDec = x8 * 16843009 ^ x4 * 65537 ^ x2 * 257 ^ x * 16843008; - let tEnc = d[s] * 257 ^ s * 16843008; - for (let i = 0; i < 4; i++) { - encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8; - decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8; - } - } - for (let i = 0; i < 5; i++) { - encTable[i] = encTable[i].slice(0); - decTable[i] = decTable[i].slice(0); - } - } - /** - * Encryption and decryption core. - * @param {Array} input Four words to be encrypted or decrypted. - * @param dir The direction, 0 for encrypt and 1 for decrypt. - * @return {Array} The four encrypted or decrypted words. - * @private - */ - _crypt(input, dir) { - if (input.length !== 4) { - throw new Error("invalid aes block size"); - } - const key = this._key[dir]; - const nInnerRounds = key.length / 4 - 2; - const out = [0, 0, 0, 0]; - const table2 = this._tables[dir]; - const t0 = table2[0]; - const t1 = table2[1]; - const t2 = table2[2]; - const t3 = table2[3]; - const sbox = table2[4]; - let a = input[0] ^ key[0]; - let b = input[dir ? 3 : 1] ^ key[1]; - let c = input[2] ^ key[2]; - let d = input[dir ? 1 : 3] ^ key[3]; - let kIndex = 4; - let a2, b2, c2; - for (let i = 0; i < nInnerRounds; i++) { - a2 = t0[a >>> 24] ^ t1[b >> 16 & 255] ^ t2[c >> 8 & 255] ^ t3[d & 255] ^ key[kIndex]; - b2 = t0[b >>> 24] ^ t1[c >> 16 & 255] ^ t2[d >> 8 & 255] ^ t3[a & 255] ^ key[kIndex + 1]; - c2 = t0[c >>> 24] ^ t1[d >> 16 & 255] ^ t2[a >> 8 & 255] ^ t3[b & 255] ^ key[kIndex + 2]; - d = t0[d >>> 24] ^ t1[a >> 16 & 255] ^ t2[b >> 8 & 255] ^ t3[c & 255] ^ key[kIndex + 3]; - kIndex += 4; - a = a2; - b = b2; - c = c2; - } - for (let i = 0; i < 4; i++) { - out[dir ? 3 & -i : i] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++]; - a2 = a; - a = b; - b = c; - c = d; - d = a2; - } - return out; - } -}; -var random = { - /** - * Generate random words with pure js, cryptographically not as strong & safe as native implementation. - * @param {TypedArray} typedArray The array to fill. - * @return {TypedArray} The random values. - */ - getRandomValues(typedArray) { - const words = new Uint32Array(typedArray.buffer); - const r = (m_w) => { - let m_z = 987654321; - const mask = 4294967295; - return function() { - m_z = 36969 * (m_z & 65535) + (m_z >> 16) & mask; - m_w = 18e3 * (m_w & 65535) + (m_w >> 16) & mask; - const result = ((m_z << 16) + m_w & mask) / 4294967296 + 0.5; - return result * (Math.random() > 0.5 ? 1 : -1); - }; - }; - for (let i = 0, rcache; i < typedArray.length; i += 4) { - const _r = r((rcache || Math.random()) * 4294967296); - rcache = _r() * 987654071; - words[i / 4] = _r() * 4294967296 | 0; - } - return typedArray; - } -}; -var mode = {}; -mode.ctrGladman = class { - constructor(prf, iv) { - this._prf = prf; - this._initIv = iv; - this._iv = iv; - } - reset() { - this._iv = this._initIv; - } - /** Input some data to calculate. - * @param {bitArray} data the data to process, it must be intergral multiple of 128 bits unless it's the last. - */ - update(data) { - return this.calculate(this._prf, data, this._iv); - } - incWord(word) { - if ((word >> 24 & 255) === 255) { - let b1 = word >> 16 & 255; - let b2 = word >> 8 & 255; - let b3 = word & 255; - if (b1 === 255) { - b1 = 0; - if (b2 === 255) { - b2 = 0; - if (b3 === 255) { - b3 = 0; - } else { - ++b3; - } - } else { - ++b2; - } - } else { - ++b1; - } - word = 0; - word += b1 << 16; - word += b2 << 8; - word += b3; - } else { - word += 1 << 24; - } - return word; - } - incCounter(counter) { - if ((counter[0] = this.incWord(counter[0])) === 0) { - counter[1] = this.incWord(counter[1]); - } - } - calculate(prf, data, iv) { - let l; - if (!(l = data.length)) { - return []; - } - const bl = bitArray.bitLength(data); - for (let i = 0; i < l; i += 4) { - this.incCounter(iv); - const e = prf.encrypt(iv); - data[i] ^= e[0]; - data[i + 1] ^= e[1]; - data[i + 2] ^= e[2]; - data[i + 3] ^= e[3]; - } - return bitArray.clamp(data, bl); - } -}; -var misc = { - importKey(password) { - return new misc.hmacSha1(codec.bytes.toBits(password)); - }, - pbkdf2(prf, salt, count, length) { - count = count || 1e4; - if (length < 0 || count < 0) { - throw new Error("invalid params to pbkdf2"); - } - const byteLength = (length >> 5) + 1 << 2; - let u, ui, i, j, k; - const arrayBuffer = new ArrayBuffer(byteLength); - const out = new DataView(arrayBuffer); - let outLength = 0; - const b = bitArray; - salt = codec.bytes.toBits(salt); - for (k = 1; outLength < (byteLength || 1); k++) { - u = ui = prf.encrypt(b.concat(salt, [k])); - for (i = 1; i < count; i++) { - ui = prf.encrypt(ui); - for (j = 0; j < ui.length; j++) { - u[j] ^= ui[j]; - } - } - for (i = 0; outLength < (byteLength || 1) && i < u.length; i++) { - out.setInt32(outLength, u[i]); - outLength += 4; - } - } - return arrayBuffer.slice(0, length / 8); - } -}; -misc.hmacSha1 = class { - constructor(key) { - const hmac = this; - const Hash = hmac._hash = hash.sha1; - const exKey = [[], []]; - hmac._baseHash = [new Hash(), new Hash()]; - const bs = hmac._baseHash[0].blockSize / 32; - if (key.length > bs) { - key = new Hash().update(key).finalize(); - } - for (let i = 0; i < bs; i++) { - exKey[0][i] = key[i] ^ 909522486; - exKey[1][i] = key[i] ^ 1549556828; - } - hmac._baseHash[0].update(exKey[0]); - hmac._baseHash[1].update(exKey[1]); - hmac._resultHash = new Hash(hmac._baseHash[0]); - } - reset() { - const hmac = this; - hmac._resultHash = new hmac._hash(hmac._baseHash[0]); - hmac._updated = false; - } - update(data) { - const hmac = this; - hmac._updated = true; - hmac._resultHash.update(data); - } - digest() { - const hmac = this; - const w = hmac._resultHash.finalize(); - const result = new hmac._hash(hmac._baseHash[1]).update(w).finalize(); - hmac.reset(); - return result; - } - encrypt(data) { - if (!this._updated) { - this.update(data); - return this.digest(data); - } else { - throw new Error("encrypt on already updated hmac called!"); - } - } -}; - -// node_modules/@zip.js/zip.js/lib/core/streams/common-crypto.js -var GET_RANDOM_VALUES_SUPPORTED = typeof crypto != UNDEFINED_TYPE && typeof crypto.getRandomValues == FUNCTION_TYPE; -var ERR_INVALID_PASSWORD = "Invalid password"; -var ERR_INVALID_SIGNATURE = "Invalid signature"; -var ERR_ABORT_CHECK_PASSWORD = "zipjs-abort-check-password"; -function getRandomValues(array) { - if (GET_RANDOM_VALUES_SUPPORTED) { - return crypto.getRandomValues(array); - } else { - return random.getRandomValues(array); - } -} - -// node_modules/@zip.js/zip.js/lib/core/streams/aes-crypto-stream.js -var BLOCK_LENGTH = 16; -var RAW_FORMAT = "raw"; -var PBKDF2_ALGORITHM = { name: "PBKDF2" }; -var HASH_ALGORITHM = { name: "HMAC" }; -var HASH_FUNCTION = "SHA-1"; -var BASE_KEY_ALGORITHM = Object.assign({ hash: HASH_ALGORITHM }, PBKDF2_ALGORITHM); -var DERIVED_BITS_ALGORITHM = Object.assign({ iterations: 1e3, hash: { name: HASH_FUNCTION } }, PBKDF2_ALGORITHM); -var DERIVED_BITS_USAGE = ["deriveBits"]; -var SALT_LENGTH = [8, 12, 16]; -var KEY_LENGTH = [16, 24, 32]; -var SIGNATURE_LENGTH = 10; -var COUNTER_DEFAULT_VALUE = [0, 0, 0, 0]; -var CRYPTO_API_SUPPORTED = typeof crypto != UNDEFINED_TYPE; -var subtle = CRYPTO_API_SUPPORTED && crypto.subtle; -var SUBTLE_API_SUPPORTED = CRYPTO_API_SUPPORTED && typeof subtle != UNDEFINED_TYPE; -var codecBytes = codec.bytes; -var Aes = cipher.aes; -var CtrGladman = mode.ctrGladman; -var HmacSha1 = misc.hmacSha1; -var IMPORT_KEY_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.importKey == FUNCTION_TYPE; -var DERIVE_BITS_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.deriveBits == FUNCTION_TYPE; -var AESDecryptionStream = class extends TransformStream { - constructor({ password, rawPassword, signed, encryptionStrength, checkPasswordOnly }) { - super({ - start() { - Object.assign(this, { - ready: new Promise((resolve) => this.resolveReady = resolve), - password: encodePassword(password, rawPassword), - signed, - strength: encryptionStrength - 1, - pending: new Uint8Array() - }); - }, - async transform(chunk, controller) { - const aesCrypto = this; - const { - password: password2, - strength, - resolveReady, - ready - } = aesCrypto; - if (password2) { - await createDecryptionKeys(aesCrypto, strength, password2, subarray(chunk, 0, SALT_LENGTH[strength] + 2)); - chunk = subarray(chunk, SALT_LENGTH[strength] + 2); - if (checkPasswordOnly) { - controller.error(new Error(ERR_ABORT_CHECK_PASSWORD)); - } else { - resolveReady(); - } - } else { - await ready; - } - const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - (chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH); - controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true)); - }, - async flush(controller) { - const { - signed: signed2, - ctr, - hmac, - pending, - ready - } = this; - if (hmac && ctr) { - await ready; - const chunkToDecrypt = subarray(pending, 0, pending.length - SIGNATURE_LENGTH); - const originalSignature = subarray(pending, pending.length - SIGNATURE_LENGTH); - let decryptedChunkArray = new Uint8Array(); - if (chunkToDecrypt.length) { - const encryptedChunk = toBits(codecBytes, chunkToDecrypt); - hmac.update(encryptedChunk); - const decryptedChunk = ctr.update(encryptedChunk); - decryptedChunkArray = fromBits(codecBytes, decryptedChunk); - } - if (signed2) { - const signature = subarray(fromBits(codecBytes, hmac.digest()), 0, SIGNATURE_LENGTH); - for (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) { - if (signature[indexSignature] != originalSignature[indexSignature]) { - throw new Error(ERR_INVALID_SIGNATURE); - } - } - } - controller.enqueue(decryptedChunkArray); - } - } - }); - } -}; -var AESEncryptionStream = class extends TransformStream { - constructor({ password, rawPassword, encryptionStrength }) { - let stream; - super({ - start() { - Object.assign(this, { - ready: new Promise((resolve) => this.resolveReady = resolve), - password: encodePassword(password, rawPassword), - strength: encryptionStrength - 1, - pending: new Uint8Array() - }); - }, - async transform(chunk, controller) { - const aesCrypto = this; - const { - password: password2, - strength, - resolveReady, - ready - } = aesCrypto; - let preamble = new Uint8Array(); - if (password2) { - preamble = await createEncryptionKeys(aesCrypto, strength, password2); - resolveReady(); - } else { - await ready; - } - const output = new Uint8Array(preamble.length + chunk.length - chunk.length % BLOCK_LENGTH); - output.set(preamble, 0); - controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0)); - }, - async flush(controller) { - const { - ctr, - hmac, - pending, - ready - } = this; - if (hmac && ctr) { - await ready; - let encryptedChunkArray = new Uint8Array(); - if (pending.length) { - const encryptedChunk = ctr.update(toBits(codecBytes, pending)); - hmac.update(encryptedChunk); - encryptedChunkArray = fromBits(codecBytes, encryptedChunk); - } - stream.signature = fromBits(codecBytes, hmac.digest()).slice(0, SIGNATURE_LENGTH); - controller.enqueue(concat(encryptedChunkArray, stream.signature)); - } - } - }); - stream = this; - } -}; -function append(aesCrypto, input, output, paddingStart, paddingEnd, verifySignature) { - const { - ctr, - hmac, - pending - } = aesCrypto; - const inputLength = input.length - paddingEnd; - if (pending.length) { - input = concat(pending, input); - output = expand(output, inputLength - inputLength % BLOCK_LENGTH); - } - let offset; - for (offset = 0; offset <= inputLength - BLOCK_LENGTH; offset += BLOCK_LENGTH) { - const inputChunk = toBits(codecBytes, subarray(input, offset, offset + BLOCK_LENGTH)); - if (verifySignature) { - hmac.update(inputChunk); - } - const outputChunk = ctr.update(inputChunk); - if (!verifySignature) { - hmac.update(outputChunk); - } - output.set(fromBits(codecBytes, outputChunk), offset + paddingStart); - } - aesCrypto.pending = subarray(input, offset); - return output; -} -async function createDecryptionKeys(decrypt2, strength, password, preamble) { - const passwordVerificationKey = await createKeys(decrypt2, strength, password, subarray(preamble, 0, SALT_LENGTH[strength])); - const passwordVerification = subarray(preamble, SALT_LENGTH[strength]); - if (passwordVerificationKey[0] != passwordVerification[0] || passwordVerificationKey[1] != passwordVerification[1]) { - throw new Error(ERR_INVALID_PASSWORD); - } -} -async function createEncryptionKeys(encrypt2, strength, password) { - const salt = getRandomValues(new Uint8Array(SALT_LENGTH[strength])); - const passwordVerification = await createKeys(encrypt2, strength, password, salt); - return concat(salt, passwordVerification); -} -async function createKeys(aesCrypto, strength, password, salt) { - aesCrypto.password = null; - const baseKey = await importKey(RAW_FORMAT, password, BASE_KEY_ALGORITHM, false, DERIVED_BITS_USAGE); - const derivedBits = await deriveBits(Object.assign({ salt }, DERIVED_BITS_ALGORITHM), baseKey, 8 * (KEY_LENGTH[strength] * 2 + 2)); - const compositeKey = new Uint8Array(derivedBits); - const key = toBits(codecBytes, subarray(compositeKey, 0, KEY_LENGTH[strength])); - const authentication = toBits(codecBytes, subarray(compositeKey, KEY_LENGTH[strength], KEY_LENGTH[strength] * 2)); - const passwordVerification = subarray(compositeKey, KEY_LENGTH[strength] * 2); - Object.assign(aesCrypto, { - keys: { - key, - authentication, - passwordVerification - }, - ctr: new CtrGladman(new Aes(key), Array.from(COUNTER_DEFAULT_VALUE)), - hmac: new HmacSha1(authentication) - }); - return passwordVerification; -} -async function importKey(format, password, algorithm, extractable, keyUsages) { - if (IMPORT_KEY_SUPPORTED) { - try { - return await subtle.importKey(format, password, algorithm, extractable, keyUsages); - } catch (_error) { - IMPORT_KEY_SUPPORTED = false; - return misc.importKey(password); - } - } else { - return misc.importKey(password); - } -} -async function deriveBits(algorithm, baseKey, length) { - if (DERIVE_BITS_SUPPORTED) { - try { - return await subtle.deriveBits(algorithm, baseKey, length); - } catch (_error) { - DERIVE_BITS_SUPPORTED = false; - return misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length); - } - } else { - return misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length); - } -} -function encodePassword(password, rawPassword) { - if (rawPassword === UNDEFINED_VALUE) { - return encodeText(password); - } else { - return rawPassword; - } -} -function concat(leftArray, rightArray) { - let array = leftArray; - if (leftArray.length + rightArray.length) { - array = new Uint8Array(leftArray.length + rightArray.length); - array.set(leftArray, 0); - array.set(rightArray, leftArray.length); - } - return array; -} -function expand(inputArray, length) { - if (length && length > inputArray.length) { - const array = inputArray; - inputArray = new Uint8Array(length); - inputArray.set(array, 0); - } - return inputArray; -} -function subarray(array, begin, end) { - return array.subarray(begin, end); -} -function fromBits(codecBytes2, chunk) { - return codecBytes2.fromBits(chunk); -} -function toBits(codecBytes2, chunk) { - return codecBytes2.toBits(chunk); -} - -// node_modules/@zip.js/zip.js/lib/core/streams/zip-crypto-stream.js -var HEADER_LENGTH = 12; -var ZipCryptoDecryptionStream = class extends TransformStream { - constructor({ password, passwordVerification, checkPasswordOnly }) { - super({ - start() { - Object.assign(this, { - password, - passwordVerification - }); - createKeys2(this, password); - }, - transform(chunk, controller) { - const zipCrypto = this; - if (zipCrypto.password) { - const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH)); - zipCrypto.password = null; - if (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) { - throw new Error(ERR_INVALID_PASSWORD); - } - chunk = chunk.subarray(HEADER_LENGTH); - } - if (checkPasswordOnly) { - controller.error(new Error(ERR_ABORT_CHECK_PASSWORD)); - } else { - controller.enqueue(decrypt(zipCrypto, chunk)); - } - } - }); - } -}; -var ZipCryptoEncryptionStream = class extends TransformStream { - constructor({ password, passwordVerification }) { - super({ - start() { - Object.assign(this, { - password, - passwordVerification - }); - createKeys2(this, password); - }, - transform(chunk, controller) { - const zipCrypto = this; - let output; - let offset; - if (zipCrypto.password) { - zipCrypto.password = null; - const header = getRandomValues(new Uint8Array(HEADER_LENGTH)); - header[HEADER_LENGTH - 1] = zipCrypto.passwordVerification; - output = new Uint8Array(chunk.length + header.length); - output.set(encrypt(zipCrypto, header), 0); - offset = HEADER_LENGTH; - } else { - output = new Uint8Array(chunk.length); - offset = 0; - } - output.set(encrypt(zipCrypto, chunk), offset); - controller.enqueue(output); - } - }); - } -}; -function decrypt(target, input) { - const output = new Uint8Array(input.length); - for (let index = 0; index < input.length; index++) { - output[index] = getByte(target) ^ input[index]; - updateKeys(target, output[index]); - } - return output; -} -function encrypt(target, input) { - const output = new Uint8Array(input.length); - for (let index = 0; index < input.length; index++) { - output[index] = getByte(target) ^ input[index]; - updateKeys(target, input[index]); - } - return output; -} -function createKeys2(target, password) { - const keys = [305419896, 591751049, 878082192]; - Object.assign(target, { - keys, - crcKey0: new Crc32(keys[0]), - crcKey2: new Crc32(keys[2]) - }); - for (let index = 0; index < password.length; index++) { - updateKeys(target, password.charCodeAt(index)); - } -} -function updateKeys(target, byte) { - let [key0, key1, key2] = target.keys; - target.crcKey0.append([byte]); - key0 = ~target.crcKey0.get(); - key1 = getInt32(Math.imul(getInt32(key1 + getInt8(key0)), 134775813) + 1); - target.crcKey2.append([key1 >>> 24]); - key2 = ~target.crcKey2.get(); - target.keys = [key0, key1, key2]; -} -function getByte(target) { - const temp = target.keys[2] | 2; - return getInt8(Math.imul(temp, temp ^ 1) >>> 8); -} -function getInt8(number) { - return number & 255; -} -function getInt32(number) { - return number & 4294967295; -} - -// node_modules/@zip.js/zip.js/lib/core/streams/zip-entry-stream.js -var COMPRESSION_FORMAT = "deflate-raw"; -var DeflateStream = class extends TransformStream { - constructor(options, { chunkSize, CompressionStream, CompressionStreamNative }) { - super({}); - const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level } = options; - const stream = this; - let crc32Stream, encryptionStream; - let readable = filterEmptyChunks(super.readable); - if ((!encrypted || zipCrypto) && signed) { - crc32Stream = new Crc32Stream(); - readable = pipeThrough(readable, crc32Stream); - } - if (compressed) { - readable = pipeThroughCommpressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStreamNative, CompressionStream); - } - if (encrypted) { - if (zipCrypto) { - readable = pipeThrough(readable, new ZipCryptoEncryptionStream(options)); - } else { - encryptionStream = new AESEncryptionStream(options); - readable = pipeThrough(readable, encryptionStream); - } - } - setReadable(stream, readable, () => { - let signature; - if (encrypted && !zipCrypto) { - signature = encryptionStream.signature; - } - if ((!encrypted || zipCrypto) && signed) { - signature = new DataView(crc32Stream.value.buffer).getUint32(0); - } - stream.signature = signature; - }); - } -}; -var InflateStream = class extends TransformStream { - constructor(options, { chunkSize, DecompressionStream, DecompressionStreamNative }) { - super({}); - const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream } = options; - let crc32Stream, decryptionStream; - let readable = filterEmptyChunks(super.readable); - if (encrypted) { - if (zipCrypto) { - readable = pipeThrough(readable, new ZipCryptoDecryptionStream(options)); - } else { - decryptionStream = new AESDecryptionStream(options); - readable = pipeThrough(readable, decryptionStream); - } - } - if (compressed) { - readable = pipeThroughCommpressionStream(readable, useCompressionStream, { chunkSize }, DecompressionStreamNative, DecompressionStream); - } - if ((!encrypted || zipCrypto) && signed) { - crc32Stream = new Crc32Stream(); - readable = pipeThrough(readable, crc32Stream); - } - setReadable(this, readable, () => { - if ((!encrypted || zipCrypto) && signed) { - const dataViewSignature = new DataView(crc32Stream.value.buffer); - if (signature != dataViewSignature.getUint32(0, false)) { - throw new Error(ERR_INVALID_SIGNATURE); - } - } - }); - } -}; -function filterEmptyChunks(readable) { - return pipeThrough(readable, new TransformStream({ - transform(chunk, controller) { - if (chunk && chunk.length) { - controller.enqueue(chunk); - } - } - })); -} -function setReadable(stream, readable, flush) { - readable = pipeThrough(readable, new TransformStream({ flush })); - Object.defineProperty(stream, "readable", { - get() { - return readable; - } - }); -} -function pipeThroughCommpressionStream(readable, useCompressionStream, options, CodecStreamNative, CodecStream2) { - try { - const CompressionStream = useCompressionStream && CodecStreamNative ? CodecStreamNative : CodecStream2; - readable = pipeThrough(readable, new CompressionStream(COMPRESSION_FORMAT, options)); - } catch (_error) { - if (useCompressionStream) { - try { - readable = pipeThrough(readable, new CodecStream2(COMPRESSION_FORMAT, options)); - } catch (_error2) { - return readable; - } - } else { - return readable; - } - } - return readable; -} -function pipeThrough(readable, transformStream) { - return readable.pipeThrough(transformStream); -} - -// node_modules/@zip.js/zip.js/lib/core/streams/codec-stream.js -var MESSAGE_EVENT_TYPE = "message"; -var MESSAGE_START = "start"; -var MESSAGE_PULL = "pull"; -var MESSAGE_DATA = "data"; -var MESSAGE_ACK_DATA = "ack"; -var MESSAGE_CLOSE = "close"; -var CODEC_DEFLATE = "deflate"; -var CODEC_INFLATE = "inflate"; -var CodecStream = class extends TransformStream { - constructor(options, config) { - super({}); - const codec2 = this; - const { codecType } = options; - let Stream; - if (codecType.startsWith(CODEC_DEFLATE)) { - Stream = DeflateStream; - } else if (codecType.startsWith(CODEC_INFLATE)) { - Stream = InflateStream; - } - let outputSize = 0; - let inputSize = 0; - const stream = new Stream(options, config); - const readable = super.readable; - const inputSizeStream = new TransformStream({ - transform(chunk, controller) { - if (chunk && chunk.length) { - inputSize += chunk.length; - controller.enqueue(chunk); - } - }, - flush() { - Object.assign(codec2, { - inputSize - }); - } - }); - const outputSizeStream = new TransformStream({ - transform(chunk, controller) { - if (chunk && chunk.length) { - outputSize += chunk.length; - controller.enqueue(chunk); - } - }, - flush() { - const { signature } = stream; - Object.assign(codec2, { - signature, - outputSize, - inputSize - }); - } - }); - Object.defineProperty(codec2, "readable", { - get() { - return readable.pipeThrough(inputSizeStream).pipeThrough(stream).pipeThrough(outputSizeStream); - } - }); - } -}; -var ChunkStream = class extends TransformStream { - constructor(chunkSize) { - let pendingChunk; - super({ - transform, - flush(controller) { - if (pendingChunk && pendingChunk.length) { - controller.enqueue(pendingChunk); - } - } - }); - function transform(chunk, controller) { - if (pendingChunk) { - const newChunk = new Uint8Array(pendingChunk.length + chunk.length); - newChunk.set(pendingChunk); - newChunk.set(chunk, pendingChunk.length); - chunk = newChunk; - pendingChunk = null; - } - if (chunk.length > chunkSize) { - controller.enqueue(chunk.slice(0, chunkSize)); - transform(chunk.slice(chunkSize), controller); - } else { - pendingChunk = chunk; - } - } - } -}; - -// node_modules/@zip.js/zip.js/lib/core/z-worker-core.js -var pendingPullMessages = /* @__PURE__ */ new Map(); -var pendingDataMessages = /* @__PURE__ */ new Map(); -var abortController; -var messageId = 0; -var importScriptSupported = true; -addEventListener(MESSAGE_EVENT_TYPE, ({ data }) => { - const { type, messageId: messageId2, value, done } = data; - try { - if (type == MESSAGE_START) { - init(data); - } - if (type == MESSAGE_DATA) { - const resolve = pendingPullMessages.get(messageId2); - pendingPullMessages.delete(messageId2); - resolve({ value: new Uint8Array(value), done }); - } - if (type == MESSAGE_ACK_DATA) { - const resolve = pendingDataMessages.get(messageId2); - pendingDataMessages.delete(messageId2); - resolve(); - } - if (type == MESSAGE_CLOSE) { - abortController.abort(); - } - } catch (error) { - sendErrorMessage(error); - } -}); -async function init(message) { - try { - const { options, scripts, config } = message; - if (scripts && scripts.length) { - try { - if (importScriptSupported) { - importScripts.apply(UNDEFINED_VALUE, scripts); - } else { - await imporModuleScripts(scripts); - } - } catch (_error) { - importScriptSupported = false; - await imporModuleScripts(scripts); - } - } - if (self.initCodec) { - self.initCodec(); - } - config.CompressionStreamNative = self.CompressionStream; - config.DecompressionStreamNative = self.DecompressionStream; - if (self.Deflate) { - config.CompressionStream = new StreamAdapter(self.Deflate); - } - if (self.Inflate) { - config.DecompressionStream = new StreamAdapter(self.Inflate); - } - const strategy = { highWaterMark: 1 }; - const readable = message.readable || new ReadableStream({ - async pull(controller) { - const result = new Promise((resolve) => pendingPullMessages.set(messageId, resolve)); - sendMessage({ type: MESSAGE_PULL, messageId }); - messageId = (messageId + 1) % Number.MAX_SAFE_INTEGER; - const { value, done } = await result; - controller.enqueue(value); - if (done) { - controller.close(); - } - } - }, strategy); - const writable = message.writable || new WritableStream({ - async write(value) { - let resolveAckData; - const ackData = new Promise((resolve) => resolveAckData = resolve); - pendingDataMessages.set(messageId, resolveAckData); - sendMessage({ type: MESSAGE_DATA, value, messageId }); - messageId = (messageId + 1) % Number.MAX_SAFE_INTEGER; - await ackData; - } - }, strategy); - const codecStream = new CodecStream(options, config); - abortController = new AbortController(); - const { signal } = abortController; - await readable.pipeThrough(codecStream).pipeThrough(new ChunkStream(config.chunkSize)).pipeTo(writable, { signal, preventClose: true, preventAbort: true }); - await writable.getWriter().close(); - const { - signature, - inputSize, - outputSize - } = codecStream; - sendMessage({ - type: MESSAGE_CLOSE, - result: { - signature, - inputSize, - outputSize - } - }); - } catch (error) { - sendErrorMessage(error); - } -} -async function imporModuleScripts(scripts) { - for (const script of scripts) { - await import(script); - } -} -function sendMessage(message) { - let { value } = message; - if (value) { - if (value.length) { - try { - value = new Uint8Array(value); - message.value = value.buffer; - postMessage(message, [message.value]); - } catch (_error) { - postMessage(message); - } - } else { - postMessage(message); - } - } else { - postMessage(message); - } -} -function sendErrorMessage(error = new Error("Unknown error")) { - const { message, stack, code, name } = error; - postMessage({ error: { message, stack, code, name } }); -} - -// node_modules/@zip.js/zip.js/lib/core/streams/codecs/deflate.js -var MAX_BITS = 15; -var D_CODES = 30; -var BL_CODES = 19; -var LENGTH_CODES = 29; -var LITERALS = 256; -var L_CODES = LITERALS + 1 + LENGTH_CODES; -var HEAP_SIZE = 2 * L_CODES + 1; -var END_BLOCK = 256; -var MAX_BL_BITS = 7; -var REP_3_6 = 16; -var REPZ_3_10 = 17; -var REPZ_11_138 = 18; -var Buf_size = 8 * 2; -var Z_DEFAULT_COMPRESSION = -1; -var Z_FILTERED = 1; -var Z_HUFFMAN_ONLY = 2; -var Z_DEFAULT_STRATEGY = 0; -var Z_NO_FLUSH = 0; -var Z_PARTIAL_FLUSH = 1; -var Z_FULL_FLUSH = 3; -var Z_FINISH = 4; -var Z_OK = 0; -var Z_STREAM_END = 1; -var Z_NEED_DICT = 2; -var Z_STREAM_ERROR = -2; -var Z_DATA_ERROR = -3; -var Z_BUF_ERROR = -5; -function extractArray(array) { - return flatArray(array.map(([length, value]) => new Array(length).fill(value, 0, length))); -} -function flatArray(array) { - return array.reduce((a, b) => a.concat(Array.isArray(b) ? flatArray(b) : b), []); -} -var _dist_code = [0, 1, 2, 3].concat(...extractArray([ - [2, 4], - [2, 5], - [4, 6], - [4, 7], - [8, 8], - [8, 9], - [16, 10], - [16, 11], - [32, 12], - [32, 13], - [64, 14], - [64, 15], - [2, 0], - [1, 16], - [1, 17], - [2, 18], - [2, 19], - [4, 20], - [4, 21], - [8, 22], - [8, 23], - [16, 24], - [16, 25], - [32, 26], - [32, 27], - [64, 28], - [64, 29] -])); -function Tree() { - const that = this; - function gen_bitlen(s) { - const tree = that.dyn_tree; - const stree = that.stat_desc.static_tree; - const extra = that.stat_desc.extra_bits; - const base = that.stat_desc.extra_base; - const max_length = that.stat_desc.max_length; - let h; - let n, m; - let bits; - let xbits; - let f; - let overflow = 0; - for (bits = 0; bits <= MAX_BITS; bits++) - s.bl_count[bits] = 0; - tree[s.heap[s.heap_max] * 2 + 1] = 0; - for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { - n = s.heap[h]; - bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n * 2 + 1] = bits; - if (n > that.max_code) - continue; - s.bl_count[bits]++; - xbits = 0; - if (n >= base) - xbits = extra[n - base]; - f = tree[n * 2]; - s.opt_len += f * (bits + xbits); - if (stree) - s.static_len += f * (stree[n * 2 + 1] + xbits); - } - if (overflow === 0) - return; - do { - bits = max_length - 1; - while (s.bl_count[bits] === 0) - bits--; - s.bl_count[bits]--; - s.bl_count[bits + 1] += 2; - s.bl_count[max_length]--; - overflow -= 2; - } while (overflow > 0); - for (bits = max_length; bits !== 0; bits--) { - n = s.bl_count[bits]; - while (n !== 0) { - m = s.heap[--h]; - if (m > that.max_code) - continue; - if (tree[m * 2 + 1] != bits) { - s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; - tree[m * 2 + 1] = bits; - } - n--; - } - } - } - function bi_reverse(code, len) { - let res = 0; - do { - res |= code & 1; - code >>>= 1; - res <<= 1; - } while (--len > 0); - return res >>> 1; - } - function gen_codes(tree, max_code, bl_count) { - const next_code = []; - let code = 0; - let bits; - let n; - let len; - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = code + bl_count[bits - 1] << 1; - } - for (n = 0; n <= max_code; n++) { - len = tree[n * 2 + 1]; - if (len === 0) - continue; - tree[n * 2] = bi_reverse(next_code[len]++, len); - } - } - that.build_tree = function(s) { - const tree = that.dyn_tree; - const stree = that.stat_desc.static_tree; - const elems = that.stat_desc.elems; - let n, m; - let max_code = -1; - let node; - s.heap_len = 0; - s.heap_max = HEAP_SIZE; - for (n = 0; n < elems; n++) { - if (tree[n * 2] !== 0) { - s.heap[++s.heap_len] = max_code = n; - s.depth[n] = 0; - } else { - tree[n * 2 + 1] = 0; - } - } - while (s.heap_len < 2) { - node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0; - tree[node * 2] = 1; - s.depth[node] = 0; - s.opt_len--; - if (stree) - s.static_len -= stree[node * 2 + 1]; - } - that.max_code = max_code; - for (n = Math.floor(s.heap_len / 2); n >= 1; n--) - s.pqdownheap(tree, n); - node = elems; - do { - n = s.heap[1]; - s.heap[1] = s.heap[s.heap_len--]; - s.pqdownheap(tree, 1); - m = s.heap[1]; - s.heap[--s.heap_max] = n; - s.heap[--s.heap_max] = m; - tree[node * 2] = tree[n * 2] + tree[m * 2]; - s.depth[node] = Math.max(s.depth[n], s.depth[m]) + 1; - tree[n * 2 + 1] = tree[m * 2 + 1] = node; - s.heap[1] = node++; - s.pqdownheap(tree, 1); - } while (s.heap_len >= 2); - s.heap[--s.heap_max] = s.heap[1]; - gen_bitlen(s); - gen_codes(tree, that.max_code, s.bl_count); - }; -} -Tree._length_code = [0, 1, 2, 3, 4, 5, 6, 7].concat(...extractArray([ - [2, 8], - [2, 9], - [2, 10], - [2, 11], - [4, 12], - [4, 13], - [4, 14], - [4, 15], - [8, 16], - [8, 17], - [8, 18], - [8, 19], - [16, 20], - [16, 21], - [16, 22], - [16, 23], - [32, 24], - [32, 25], - [32, 26], - [31, 27], - [1, 28] -])); -Tree.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0]; -Tree.base_dist = [ - 0, - 1, - 2, - 3, - 4, - 6, - 8, - 12, - 16, - 24, - 32, - 48, - 64, - 96, - 128, - 192, - 256, - 384, - 512, - 768, - 1024, - 1536, - 2048, - 3072, - 4096, - 6144, - 8192, - 12288, - 16384, - 24576 -]; -Tree.d_code = function(dist) { - return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; -}; -Tree.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]; -Tree.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]; -Tree.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]; -Tree.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; -function StaticTree(static_tree, extra_bits, extra_base, elems, max_length) { - const that = this; - that.static_tree = static_tree; - that.extra_bits = extra_bits; - that.extra_base = extra_base; - that.elems = elems; - that.max_length = max_length; -} -var static_ltree2_first_part = [ - 12, - 140, - 76, - 204, - 44, - 172, - 108, - 236, - 28, - 156, - 92, - 220, - 60, - 188, - 124, - 252, - 2, - 130, - 66, - 194, - 34, - 162, - 98, - 226, - 18, - 146, - 82, - 210, - 50, - 178, - 114, - 242, - 10, - 138, - 74, - 202, - 42, - 170, - 106, - 234, - 26, - 154, - 90, - 218, - 58, - 186, - 122, - 250, - 6, - 134, - 70, - 198, - 38, - 166, - 102, - 230, - 22, - 150, - 86, - 214, - 54, - 182, - 118, - 246, - 14, - 142, - 78, - 206, - 46, - 174, - 110, - 238, - 30, - 158, - 94, - 222, - 62, - 190, - 126, - 254, - 1, - 129, - 65, - 193, - 33, - 161, - 97, - 225, - 17, - 145, - 81, - 209, - 49, - 177, - 113, - 241, - 9, - 137, - 73, - 201, - 41, - 169, - 105, - 233, - 25, - 153, - 89, - 217, - 57, - 185, - 121, - 249, - 5, - 133, - 69, - 197, - 37, - 165, - 101, - 229, - 21, - 149, - 85, - 213, - 53, - 181, - 117, - 245, - 13, - 141, - 77, - 205, - 45, - 173, - 109, - 237, - 29, - 157, - 93, - 221, - 61, - 189, - 125, - 253, - 19, - 275, - 147, - 403, - 83, - 339, - 211, - 467, - 51, - 307, - 179, - 435, - 115, - 371, - 243, - 499, - 11, - 267, - 139, - 395, - 75, - 331, - 203, - 459, - 43, - 299, - 171, - 427, - 107, - 363, - 235, - 491, - 27, - 283, - 155, - 411, - 91, - 347, - 219, - 475, - 59, - 315, - 187, - 443, - 123, - 379, - 251, - 507, - 7, - 263, - 135, - 391, - 71, - 327, - 199, - 455, - 39, - 295, - 167, - 423, - 103, - 359, - 231, - 487, - 23, - 279, - 151, - 407, - 87, - 343, - 215, - 471, - 55, - 311, - 183, - 439, - 119, - 375, - 247, - 503, - 15, - 271, - 143, - 399, - 79, - 335, - 207, - 463, - 47, - 303, - 175, - 431, - 111, - 367, - 239, - 495, - 31, - 287, - 159, - 415, - 95, - 351, - 223, - 479, - 63, - 319, - 191, - 447, - 127, - 383, - 255, - 511, - 0, - 64, - 32, - 96, - 16, - 80, - 48, - 112, - 8, - 72, - 40, - 104, - 24, - 88, - 56, - 120, - 4, - 68, - 36, - 100, - 20, - 84, - 52, - 116, - 3, - 131, - 67, - 195, - 35, - 163, - 99, - 227 -]; -var static_ltree2_second_part = extractArray([[144, 8], [112, 9], [24, 7], [8, 8]]); -StaticTree.static_ltree = flatArray(static_ltree2_first_part.map((value, index) => [value, static_ltree2_second_part[index]])); -var static_dtree_first_part = [0, 16, 8, 24, 4, 20, 12, 28, 2, 18, 10, 26, 6, 22, 14, 30, 1, 17, 9, 25, 5, 21, 13, 29, 3, 19, 11, 27, 7, 23]; -var static_dtree_second_part = extractArray([[30, 5]]); -StaticTree.static_dtree = flatArray(static_dtree_first_part.map((value, index) => [value, static_dtree_second_part[index]])); -StaticTree.static_l_desc = new StaticTree(StaticTree.static_ltree, Tree.extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); -StaticTree.static_d_desc = new StaticTree(StaticTree.static_dtree, Tree.extra_dbits, 0, D_CODES, MAX_BITS); -StaticTree.static_bl_desc = new StaticTree(null, Tree.extra_blbits, 0, BL_CODES, MAX_BL_BITS); -var MAX_MEM_LEVEL = 9; -var DEF_MEM_LEVEL = 8; -function Config(good_length, max_lazy, nice_length, max_chain, func) { - const that = this; - that.good_length = good_length; - that.max_lazy = max_lazy; - that.nice_length = nice_length; - that.max_chain = max_chain; - that.func = func; -} -var STORED = 0; -var FAST = 1; -var SLOW = 2; -var config_table = [ - new Config(0, 0, 0, 0, STORED), - new Config(4, 4, 8, 4, FAST), - new Config(4, 5, 16, 8, FAST), - new Config(4, 6, 32, 32, FAST), - new Config(4, 4, 16, 16, SLOW), - new Config(8, 16, 32, 32, SLOW), - new Config(8, 16, 128, 128, SLOW), - new Config(8, 32, 128, 256, SLOW), - new Config(32, 128, 258, 1024, SLOW), - new Config(32, 258, 258, 4096, SLOW) -]; -var z_errmsg = [ - "need dictionary", - // Z_NEED_DICT - // 2 - "stream end", - // Z_STREAM_END 1 - "", - // Z_OK 0 - "", - // Z_ERRNO (-1) - "stream error", - // Z_STREAM_ERROR (-2) - "data error", - // Z_DATA_ERROR (-3) - "", - // Z_MEM_ERROR (-4) - "buffer error", - // Z_BUF_ERROR (-5) - "", - // Z_VERSION_ERROR (-6) - "" -]; -var NeedMore = 0; -var BlockDone = 1; -var FinishStarted = 2; -var FinishDone = 3; -var PRESET_DICT = 32; -var INIT_STATE = 42; -var BUSY_STATE = 113; -var FINISH_STATE = 666; -var Z_DEFLATED = 8; -var STORED_BLOCK = 0; -var STATIC_TREES = 1; -var DYN_TREES = 2; -var MIN_MATCH = 3; -var MAX_MATCH = 258; -var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; -function smaller(tree, n, m, depth) { - const tn2 = tree[n * 2]; - const tm2 = tree[m * 2]; - return tn2 < tm2 || tn2 == tm2 && depth[n] <= depth[m]; -} -function Deflate() { - const that = this; - let strm; - let status; - let pending_buf_size; - let last_flush; - let w_size; - let w_bits; - let w_mask; - let win; - let window_size; - let prev; - let head; - let ins_h; - let hash_size; - let hash_bits; - let hash_mask; - let hash_shift; - let block_start; - let match_length; - let prev_match; - let match_available; - let strstart; - let match_start; - let lookahead; - let prev_length; - let max_chain_length; - let max_lazy_match; - let level; - let strategy; - let good_match; - let nice_match; - let dyn_ltree; - let dyn_dtree; - let bl_tree; - const l_desc = new Tree(); - const d_desc = new Tree(); - const bl_desc = new Tree(); - that.depth = []; - let lit_bufsize; - let last_lit; - let matches; - let last_eob_len; - let bi_buf; - let bi_valid; - that.bl_count = []; - that.heap = []; - dyn_ltree = []; - dyn_dtree = []; - bl_tree = []; - function lm_init() { - window_size = 2 * w_size; - head[hash_size - 1] = 0; - for (let i = 0; i < hash_size - 1; i++) { - head[i] = 0; - } - max_lazy_match = config_table[level].max_lazy; - good_match = config_table[level].good_length; - nice_match = config_table[level].nice_length; - max_chain_length = config_table[level].max_chain; - strstart = 0; - block_start = 0; - lookahead = 0; - match_length = prev_length = MIN_MATCH - 1; - match_available = 0; - ins_h = 0; - } - function init_block() { - let i; - for (i = 0; i < L_CODES; i++) - dyn_ltree[i * 2] = 0; - for (i = 0; i < D_CODES; i++) - dyn_dtree[i * 2] = 0; - for (i = 0; i < BL_CODES; i++) - bl_tree[i * 2] = 0; - dyn_ltree[END_BLOCK * 2] = 1; - that.opt_len = that.static_len = 0; - last_lit = matches = 0; - } - function tr_init() { - l_desc.dyn_tree = dyn_ltree; - l_desc.stat_desc = StaticTree.static_l_desc; - d_desc.dyn_tree = dyn_dtree; - d_desc.stat_desc = StaticTree.static_d_desc; - bl_desc.dyn_tree = bl_tree; - bl_desc.stat_desc = StaticTree.static_bl_desc; - bi_buf = 0; - bi_valid = 0; - last_eob_len = 8; - init_block(); - } - that.pqdownheap = function(tree, k) { - const heap = that.heap; - const v = heap[k]; - let j = k << 1; - while (j <= that.heap_len) { - if (j < that.heap_len && smaller(tree, heap[j + 1], heap[j], that.depth)) { - j++; - } - if (smaller(tree, v, heap[j], that.depth)) - break; - heap[k] = heap[j]; - k = j; - j <<= 1; - } - heap[k] = v; - }; - function scan_tree(tree, max_code) { - let prevlen = -1; - let curlen; - let nextlen = tree[0 * 2 + 1]; - let count = 0; - let max_count = 7; - let min_count = 4; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - tree[(max_code + 1) * 2 + 1] = 65535; - for (let n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - bl_tree[curlen * 2] += count; - } else if (curlen !== 0) { - if (curlen != prevlen) - bl_tree[curlen * 2]++; - bl_tree[REP_3_6 * 2]++; - } else if (count <= 10) { - bl_tree[REPZ_3_10 * 2]++; - } else { - bl_tree[REPZ_11_138 * 2]++; - } - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - } - function build_bl_tree() { - let max_blindex; - scan_tree(dyn_ltree, l_desc.max_code); - scan_tree(dyn_dtree, d_desc.max_code); - bl_desc.build_tree(that); - for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (bl_tree[Tree.bl_order[max_blindex] * 2 + 1] !== 0) - break; - } - that.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - return max_blindex; - } - function put_byte(p) { - that.pending_buf[that.pending++] = p; - } - function put_short(w) { - put_byte(w & 255); - put_byte(w >>> 8 & 255); - } - function putShortMSB(b) { - put_byte(b >> 8 & 255); - put_byte(b & 255 & 255); - } - function send_bits(value, length) { - let val; - const len = length; - if (bi_valid > Buf_size - len) { - val = value; - bi_buf |= val << bi_valid & 65535; - put_short(bi_buf); - bi_buf = val >>> Buf_size - bi_valid; - bi_valid += len - Buf_size; - } else { - bi_buf |= value << bi_valid & 65535; - bi_valid += len; - } - } - function send_code(c, tree) { - const c2 = c * 2; - send_bits(tree[c2] & 65535, tree[c2 + 1] & 65535); - } - function send_tree(tree, max_code) { - let n; - let prevlen = -1; - let curlen; - let nextlen = tree[0 * 2 + 1]; - let count = 0; - let max_count = 7; - let min_count = 4; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { - send_code(curlen, bl_tree); - } while (--count !== 0); - } else if (curlen !== 0) { - if (curlen != prevlen) { - send_code(curlen, bl_tree); - count--; - } - send_code(REP_3_6, bl_tree); - send_bits(count - 3, 2); - } else if (count <= 10) { - send_code(REPZ_3_10, bl_tree); - send_bits(count - 3, 3); - } else { - send_code(REPZ_11_138, bl_tree); - send_bits(count - 11, 7); - } - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - } - function send_all_trees(lcodes, dcodes, blcodes) { - let rank; - send_bits(lcodes - 257, 5); - send_bits(dcodes - 1, 5); - send_bits(blcodes - 4, 4); - for (rank = 0; rank < blcodes; rank++) { - send_bits(bl_tree[Tree.bl_order[rank] * 2 + 1], 3); - } - send_tree(dyn_ltree, lcodes - 1); - send_tree(dyn_dtree, dcodes - 1); - } - function bi_flush() { - if (bi_valid == 16) { - put_short(bi_buf); - bi_buf = 0; - bi_valid = 0; - } else if (bi_valid >= 8) { - put_byte(bi_buf & 255); - bi_buf >>>= 8; - bi_valid -= 8; - } - } - function _tr_align() { - send_bits(STATIC_TREES << 1, 3); - send_code(END_BLOCK, StaticTree.static_ltree); - bi_flush(); - if (1 + last_eob_len + 10 - bi_valid < 9) { - send_bits(STATIC_TREES << 1, 3); - send_code(END_BLOCK, StaticTree.static_ltree); - bi_flush(); - } - last_eob_len = 7; - } - function _tr_tally(dist, lc) { - let out_length, in_length, dcode; - that.dist_buf[last_lit] = dist; - that.lc_buf[last_lit] = lc & 255; - last_lit++; - if (dist === 0) { - dyn_ltree[lc * 2]++; - } else { - matches++; - dist--; - dyn_ltree[(Tree._length_code[lc] + LITERALS + 1) * 2]++; - dyn_dtree[Tree.d_code(dist) * 2]++; - } - if ((last_lit & 8191) === 0 && level > 2) { - out_length = last_lit * 8; - in_length = strstart - block_start; - for (dcode = 0; dcode < D_CODES; dcode++) { - out_length += dyn_dtree[dcode * 2] * (5 + Tree.extra_dbits[dcode]); - } - out_length >>>= 3; - if (matches < Math.floor(last_lit / 2) && out_length < Math.floor(in_length / 2)) - return true; - } - return last_lit == lit_bufsize - 1; - } - function compress_block(ltree, dtree) { - let dist; - let lc; - let lx = 0; - let code; - let extra; - if (last_lit !== 0) { - do { - dist = that.dist_buf[lx]; - lc = that.lc_buf[lx]; - lx++; - if (dist === 0) { - send_code(lc, ltree); - } else { - code = Tree._length_code[lc]; - send_code(code + LITERALS + 1, ltree); - extra = Tree.extra_lbits[code]; - if (extra !== 0) { - lc -= Tree.base_length[code]; - send_bits(lc, extra); - } - dist--; - code = Tree.d_code(dist); - send_code(code, dtree); - extra = Tree.extra_dbits[code]; - if (extra !== 0) { - dist -= Tree.base_dist[code]; - send_bits(dist, extra); - } - } - } while (lx < last_lit); - } - send_code(END_BLOCK, ltree); - last_eob_len = ltree[END_BLOCK * 2 + 1]; - } - function bi_windup() { - if (bi_valid > 8) { - put_short(bi_buf); - } else if (bi_valid > 0) { - put_byte(bi_buf & 255); - } - bi_buf = 0; - bi_valid = 0; - } - function copy_block(buf, len, header) { - bi_windup(); - last_eob_len = 8; - if (header) { - put_short(len); - put_short(~len); - } - that.pending_buf.set(win.subarray(buf, buf + len), that.pending); - that.pending += len; - } - function _tr_stored_block(buf, stored_len, eof) { - send_bits((STORED_BLOCK << 1) + (eof ? 1 : 0), 3); - copy_block(buf, stored_len, true); - } - function _tr_flush_block(buf, stored_len, eof) { - let opt_lenb, static_lenb; - let max_blindex = 0; - if (level > 0) { - l_desc.build_tree(that); - d_desc.build_tree(that); - max_blindex = build_bl_tree(); - opt_lenb = that.opt_len + 3 + 7 >>> 3; - static_lenb = that.static_len + 3 + 7 >>> 3; - if (static_lenb <= opt_lenb) - opt_lenb = static_lenb; - } else { - opt_lenb = static_lenb = stored_len + 5; - } - if (stored_len + 4 <= opt_lenb && buf != -1) { - _tr_stored_block(buf, stored_len, eof); - } else if (static_lenb == opt_lenb) { - send_bits((STATIC_TREES << 1) + (eof ? 1 : 0), 3); - compress_block(StaticTree.static_ltree, StaticTree.static_dtree); - } else { - send_bits((DYN_TREES << 1) + (eof ? 1 : 0), 3); - send_all_trees(l_desc.max_code + 1, d_desc.max_code + 1, max_blindex + 1); - compress_block(dyn_ltree, dyn_dtree); - } - init_block(); - if (eof) { - bi_windup(); - } - } - function flush_block_only(eof) { - _tr_flush_block(block_start >= 0 ? block_start : -1, strstart - block_start, eof); - block_start = strstart; - strm.flush_pending(); - } - function fill_window() { - let n, m; - let p; - let more; - do { - more = window_size - lookahead - strstart; - if (more === 0 && strstart === 0 && lookahead === 0) { - more = w_size; - } else if (more == -1) { - more--; - } else if (strstart >= w_size + w_size - MIN_LOOKAHEAD) { - win.set(win.subarray(w_size, w_size + w_size), 0); - match_start -= w_size; - strstart -= w_size; - block_start -= w_size; - n = hash_size; - p = n; - do { - m = head[--p] & 65535; - head[p] = m >= w_size ? m - w_size : 0; - } while (--n !== 0); - n = w_size; - p = n; - do { - m = prev[--p] & 65535; - prev[p] = m >= w_size ? m - w_size : 0; - } while (--n !== 0); - more += w_size; - } - if (strm.avail_in === 0) - return; - n = strm.read_buf(win, strstart + lookahead, more); - lookahead += n; - if (lookahead >= MIN_MATCH) { - ins_h = win[strstart] & 255; - ins_h = (ins_h << hash_shift ^ win[strstart + 1] & 255) & hash_mask; - } - } while (lookahead < MIN_LOOKAHEAD && strm.avail_in !== 0); - } - function deflate_stored(flush) { - let max_block_size = 65535; - let max_start; - if (max_block_size > pending_buf_size - 5) { - max_block_size = pending_buf_size - 5; - } - while (true) { - if (lookahead <= 1) { - fill_window(); - if (lookahead === 0 && flush == Z_NO_FLUSH) - return NeedMore; - if (lookahead === 0) - break; - } - strstart += lookahead; - lookahead = 0; - max_start = block_start + max_block_size; - if (strstart === 0 || strstart >= max_start) { - lookahead = strstart - max_start; - strstart = max_start; - flush_block_only(false); - if (strm.avail_out === 0) - return NeedMore; - } - if (strstart - block_start >= w_size - MIN_LOOKAHEAD) { - flush_block_only(false); - if (strm.avail_out === 0) - return NeedMore; - } - } - flush_block_only(flush == Z_FINISH); - if (strm.avail_out === 0) - return flush == Z_FINISH ? FinishStarted : NeedMore; - return flush == Z_FINISH ? FinishDone : BlockDone; - } - function longest_match(cur_match) { - let chain_length = max_chain_length; - let scan = strstart; - let match; - let len; - let best_len = prev_length; - const limit = strstart > w_size - MIN_LOOKAHEAD ? strstart - (w_size - MIN_LOOKAHEAD) : 0; - let _nice_match = nice_match; - const wmask = w_mask; - const strend = strstart + MAX_MATCH; - let scan_end1 = win[scan + best_len - 1]; - let scan_end = win[scan + best_len]; - if (prev_length >= good_match) { - chain_length >>= 2; - } - if (_nice_match > lookahead) - _nice_match = lookahead; - do { - match = cur_match; - if (win[match + best_len] != scan_end || win[match + best_len - 1] != scan_end1 || win[match] != win[scan] || win[++match] != win[scan + 1]) - continue; - scan += 2; - match++; - do { - } while (win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match] && scan < strend); - len = MAX_MATCH - (strend - scan); - scan = strend - MAX_MATCH; - if (len > best_len) { - match_start = cur_match; - best_len = len; - if (len >= _nice_match) - break; - scan_end1 = win[scan + best_len - 1]; - scan_end = win[scan + best_len]; - } - } while ((cur_match = prev[cur_match & wmask] & 65535) > limit && --chain_length !== 0); - if (best_len <= lookahead) - return best_len; - return lookahead; - } - function deflate_fast(flush) { - let hash_head = 0; - let bflush; - while (true) { - if (lookahead < MIN_LOOKAHEAD) { - fill_window(); - if (lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return NeedMore; - } - if (lookahead === 0) - break; - } - if (lookahead >= MIN_MATCH) { - ins_h = (ins_h << hash_shift ^ win[strstart + (MIN_MATCH - 1)] & 255) & hash_mask; - hash_head = head[ins_h] & 65535; - prev[strstart & w_mask] = head[ins_h]; - head[ins_h] = strstart; - } - if (hash_head !== 0 && (strstart - hash_head & 65535) <= w_size - MIN_LOOKAHEAD) { - if (strategy != Z_HUFFMAN_ONLY) { - match_length = longest_match(hash_head); - } - } - if (match_length >= MIN_MATCH) { - bflush = _tr_tally(strstart - match_start, match_length - MIN_MATCH); - lookahead -= match_length; - if (match_length <= max_lazy_match && lookahead >= MIN_MATCH) { - match_length--; - do { - strstart++; - ins_h = (ins_h << hash_shift ^ win[strstart + (MIN_MATCH - 1)] & 255) & hash_mask; - hash_head = head[ins_h] & 65535; - prev[strstart & w_mask] = head[ins_h]; - head[ins_h] = strstart; - } while (--match_length !== 0); - strstart++; - } else { - strstart += match_length; - match_length = 0; - ins_h = win[strstart] & 255; - ins_h = (ins_h << hash_shift ^ win[strstart + 1] & 255) & hash_mask; - } - } else { - bflush = _tr_tally(0, win[strstart] & 255); - lookahead--; - strstart++; - } - if (bflush) { - flush_block_only(false); - if (strm.avail_out === 0) - return NeedMore; - } - } - flush_block_only(flush == Z_FINISH); - if (strm.avail_out === 0) { - if (flush == Z_FINISH) - return FinishStarted; - else - return NeedMore; - } - return flush == Z_FINISH ? FinishDone : BlockDone; - } - function deflate_slow(flush) { - let hash_head = 0; - let bflush; - let max_insert; - while (true) { - if (lookahead < MIN_LOOKAHEAD) { - fill_window(); - if (lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return NeedMore; - } - if (lookahead === 0) - break; - } - if (lookahead >= MIN_MATCH) { - ins_h = (ins_h << hash_shift ^ win[strstart + (MIN_MATCH - 1)] & 255) & hash_mask; - hash_head = head[ins_h] & 65535; - prev[strstart & w_mask] = head[ins_h]; - head[ins_h] = strstart; - } - prev_length = match_length; - prev_match = match_start; - match_length = MIN_MATCH - 1; - if (hash_head !== 0 && prev_length < max_lazy_match && (strstart - hash_head & 65535) <= w_size - MIN_LOOKAHEAD) { - if (strategy != Z_HUFFMAN_ONLY) { - match_length = longest_match(hash_head); - } - if (match_length <= 5 && (strategy == Z_FILTERED || match_length == MIN_MATCH && strstart - match_start > 4096)) { - match_length = MIN_MATCH - 1; - } - } - if (prev_length >= MIN_MATCH && match_length <= prev_length) { - max_insert = strstart + lookahead - MIN_MATCH; - bflush = _tr_tally(strstart - 1 - prev_match, prev_length - MIN_MATCH); - lookahead -= prev_length - 1; - prev_length -= 2; - do { - if (++strstart <= max_insert) { - ins_h = (ins_h << hash_shift ^ win[strstart + (MIN_MATCH - 1)] & 255) & hash_mask; - hash_head = head[ins_h] & 65535; - prev[strstart & w_mask] = head[ins_h]; - head[ins_h] = strstart; - } - } while (--prev_length !== 0); - match_available = 0; - match_length = MIN_MATCH - 1; - strstart++; - if (bflush) { - flush_block_only(false); - if (strm.avail_out === 0) - return NeedMore; - } - } else if (match_available !== 0) { - bflush = _tr_tally(0, win[strstart - 1] & 255); - if (bflush) { - flush_block_only(false); - } - strstart++; - lookahead--; - if (strm.avail_out === 0) - return NeedMore; - } else { - match_available = 1; - strstart++; - lookahead--; - } - } - if (match_available !== 0) { - bflush = _tr_tally(0, win[strstart - 1] & 255); - match_available = 0; - } - flush_block_only(flush == Z_FINISH); - if (strm.avail_out === 0) { - if (flush == Z_FINISH) - return FinishStarted; - else - return NeedMore; - } - return flush == Z_FINISH ? FinishDone : BlockDone; - } - function deflateReset(strm2) { - strm2.total_in = strm2.total_out = 0; - strm2.msg = null; - that.pending = 0; - that.pending_out = 0; - status = BUSY_STATE; - last_flush = Z_NO_FLUSH; - tr_init(); - lm_init(); - return Z_OK; - } - that.deflateInit = function(strm2, _level, bits, _method, memLevel, _strategy) { - if (!_method) - _method = Z_DEFLATED; - if (!memLevel) - memLevel = DEF_MEM_LEVEL; - if (!_strategy) - _strategy = Z_DEFAULT_STRATEGY; - strm2.msg = null; - if (_level == Z_DEFAULT_COMPRESSION) - _level = 6; - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || _method != Z_DEFLATED || bits < 9 || bits > 15 || _level < 0 || _level > 9 || _strategy < 0 || _strategy > Z_HUFFMAN_ONLY) { - return Z_STREAM_ERROR; - } - strm2.dstate = that; - w_bits = bits; - w_size = 1 << w_bits; - w_mask = w_size - 1; - hash_bits = memLevel + 7; - hash_size = 1 << hash_bits; - hash_mask = hash_size - 1; - hash_shift = Math.floor((hash_bits + MIN_MATCH - 1) / MIN_MATCH); - win = new Uint8Array(w_size * 2); - prev = []; - head = []; - lit_bufsize = 1 << memLevel + 6; - that.pending_buf = new Uint8Array(lit_bufsize * 4); - pending_buf_size = lit_bufsize * 4; - that.dist_buf = new Uint16Array(lit_bufsize); - that.lc_buf = new Uint8Array(lit_bufsize); - level = _level; - strategy = _strategy; - return deflateReset(strm2); - }; - that.deflateEnd = function() { - if (status != INIT_STATE && status != BUSY_STATE && status != FINISH_STATE) { - return Z_STREAM_ERROR; - } - that.lc_buf = null; - that.dist_buf = null; - that.pending_buf = null; - head = null; - prev = null; - win = null; - that.dstate = null; - return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; - }; - that.deflateParams = function(strm2, _level, _strategy) { - let err = Z_OK; - if (_level == Z_DEFAULT_COMPRESSION) { - _level = 6; - } - if (_level < 0 || _level > 9 || _strategy < 0 || _strategy > Z_HUFFMAN_ONLY) { - return Z_STREAM_ERROR; - } - if (config_table[level].func != config_table[_level].func && strm2.total_in !== 0) { - err = strm2.deflate(Z_PARTIAL_FLUSH); - } - if (level != _level) { - level = _level; - max_lazy_match = config_table[level].max_lazy; - good_match = config_table[level].good_length; - nice_match = config_table[level].nice_length; - max_chain_length = config_table[level].max_chain; - } - strategy = _strategy; - return err; - }; - that.deflateSetDictionary = function(_strm, dictionary, dictLength) { - let length = dictLength; - let n, index = 0; - if (!dictionary || status != INIT_STATE) - return Z_STREAM_ERROR; - if (length < MIN_MATCH) - return Z_OK; - if (length > w_size - MIN_LOOKAHEAD) { - length = w_size - MIN_LOOKAHEAD; - index = dictLength - length; - } - win.set(dictionary.subarray(index, index + length), 0); - strstart = length; - block_start = length; - ins_h = win[0] & 255; - ins_h = (ins_h << hash_shift ^ win[1] & 255) & hash_mask; - for (n = 0; n <= length - MIN_MATCH; n++) { - ins_h = (ins_h << hash_shift ^ win[n + (MIN_MATCH - 1)] & 255) & hash_mask; - prev[n & w_mask] = head[ins_h]; - head[ins_h] = n; - } - return Z_OK; - }; - that.deflate = function(_strm, flush) { - let i, header, level_flags, old_flush, bstate; - if (flush > Z_FINISH || flush < 0) { - return Z_STREAM_ERROR; - } - if (!_strm.next_out || !_strm.next_in && _strm.avail_in !== 0 || status == FINISH_STATE && flush != Z_FINISH) { - _strm.msg = z_errmsg[Z_NEED_DICT - Z_STREAM_ERROR]; - return Z_STREAM_ERROR; - } - if (_strm.avail_out === 0) { - _strm.msg = z_errmsg[Z_NEED_DICT - Z_BUF_ERROR]; - return Z_BUF_ERROR; - } - strm = _strm; - old_flush = last_flush; - last_flush = flush; - if (status == INIT_STATE) { - header = Z_DEFLATED + (w_bits - 8 << 4) << 8; - level_flags = (level - 1 & 255) >> 1; - if (level_flags > 3) - level_flags = 3; - header |= level_flags << 6; - if (strstart !== 0) - header |= PRESET_DICT; - header += 31 - header % 31; - status = BUSY_STATE; - putShortMSB(header); - } - if (that.pending !== 0) { - strm.flush_pending(); - if (strm.avail_out === 0) { - last_flush = -1; - return Z_OK; - } - } else if (strm.avail_in === 0 && flush <= old_flush && flush != Z_FINISH) { - strm.msg = z_errmsg[Z_NEED_DICT - Z_BUF_ERROR]; - return Z_BUF_ERROR; - } - if (status == FINISH_STATE && strm.avail_in !== 0) { - _strm.msg = z_errmsg[Z_NEED_DICT - Z_BUF_ERROR]; - return Z_BUF_ERROR; - } - if (strm.avail_in !== 0 || lookahead !== 0 || flush != Z_NO_FLUSH && status != FINISH_STATE) { - bstate = -1; - switch (config_table[level].func) { - case STORED: - bstate = deflate_stored(flush); - break; - case FAST: - bstate = deflate_fast(flush); - break; - case SLOW: - bstate = deflate_slow(flush); - break; - default: - } - if (bstate == FinishStarted || bstate == FinishDone) { - status = FINISH_STATE; - } - if (bstate == NeedMore || bstate == FinishStarted) { - if (strm.avail_out === 0) { - last_flush = -1; - } - return Z_OK; - } - if (bstate == BlockDone) { - if (flush == Z_PARTIAL_FLUSH) { - _tr_align(); - } else { - _tr_stored_block(0, 0, false); - if (flush == Z_FULL_FLUSH) { - for (i = 0; i < hash_size; i++) - head[i] = 0; - } - } - strm.flush_pending(); - if (strm.avail_out === 0) { - last_flush = -1; - return Z_OK; - } - } - } - if (flush != Z_FINISH) - return Z_OK; - return Z_STREAM_END; - }; -} -function ZStream() { - const that = this; - that.next_in_index = 0; - that.next_out_index = 0; - that.avail_in = 0; - that.total_in = 0; - that.avail_out = 0; - that.total_out = 0; -} -ZStream.prototype = { - deflateInit(level, bits) { - const that = this; - that.dstate = new Deflate(); - if (!bits) - bits = MAX_BITS; - return that.dstate.deflateInit(that, level, bits); - }, - deflate(flush) { - const that = this; - if (!that.dstate) { - return Z_STREAM_ERROR; - } - return that.dstate.deflate(that, flush); - }, - deflateEnd() { - const that = this; - if (!that.dstate) - return Z_STREAM_ERROR; - const ret = that.dstate.deflateEnd(); - that.dstate = null; - return ret; - }, - deflateParams(level, strategy) { - const that = this; - if (!that.dstate) - return Z_STREAM_ERROR; - return that.dstate.deflateParams(that, level, strategy); - }, - deflateSetDictionary(dictionary, dictLength) { - const that = this; - if (!that.dstate) - return Z_STREAM_ERROR; - return that.dstate.deflateSetDictionary(that, dictionary, dictLength); - }, - // Read a new buffer from the current input stream, update the - // total number of bytes read. All deflate() input goes through - // this function so some applications may wish to modify it to avoid - // allocating a large strm->next_in buffer and copying from it. - // (See also flush_pending()). - read_buf(buf, start, size) { - const that = this; - let len = that.avail_in; - if (len > size) - len = size; - if (len === 0) - return 0; - that.avail_in -= len; - buf.set(that.next_in.subarray(that.next_in_index, that.next_in_index + len), start); - that.next_in_index += len; - that.total_in += len; - return len; - }, - // Flush as much pending output as possible. All deflate() output goes - // through this function so some applications may wish to modify it - // to avoid allocating a large strm->next_out buffer and copying into it. - // (See also read_buf()). - flush_pending() { - const that = this; - let len = that.dstate.pending; - if (len > that.avail_out) - len = that.avail_out; - if (len === 0) - return; - that.next_out.set(that.dstate.pending_buf.subarray(that.dstate.pending_out, that.dstate.pending_out + len), that.next_out_index); - that.next_out_index += len; - that.dstate.pending_out += len; - that.total_out += len; - that.avail_out -= len; - that.dstate.pending -= len; - if (that.dstate.pending === 0) { - that.dstate.pending_out = 0; - } - } -}; -function ZipDeflate(options) { - const that = this; - const z = new ZStream(); - const bufsize = getMaximumCompressedSize(options && options.chunkSize ? options.chunkSize : 64 * 1024); - const flush = Z_NO_FLUSH; - const buf = new Uint8Array(bufsize); - let level = options ? options.level : Z_DEFAULT_COMPRESSION; - if (typeof level == "undefined") - level = Z_DEFAULT_COMPRESSION; - z.deflateInit(level); - z.next_out = buf; - that.append = function(data, onprogress) { - let err, array, lastIndex = 0, bufferIndex = 0, bufferSize = 0; - const buffers = []; - if (!data.length) - return; - z.next_in_index = 0; - z.next_in = data; - z.avail_in = data.length; - do { - z.next_out_index = 0; - z.avail_out = bufsize; - err = z.deflate(flush); - if (err != Z_OK) - throw new Error("deflating: " + z.msg); - if (z.next_out_index) - if (z.next_out_index == bufsize) - buffers.push(new Uint8Array(buf)); - else - buffers.push(buf.subarray(0, z.next_out_index)); - bufferSize += z.next_out_index; - if (onprogress && z.next_in_index > 0 && z.next_in_index != lastIndex) { - onprogress(z.next_in_index); - lastIndex = z.next_in_index; - } - } while (z.avail_in > 0 || z.avail_out === 0); - if (buffers.length > 1) { - array = new Uint8Array(bufferSize); - buffers.forEach(function(chunk) { - array.set(chunk, bufferIndex); - bufferIndex += chunk.length; - }); - } else { - array = buffers[0] ? new Uint8Array(buffers[0]) : new Uint8Array(); - } - return array; - }; - that.flush = function() { - let err, array, bufferIndex = 0, bufferSize = 0; - const buffers = []; - do { - z.next_out_index = 0; - z.avail_out = bufsize; - err = z.deflate(Z_FINISH); - if (err != Z_STREAM_END && err != Z_OK) - throw new Error("deflating: " + z.msg); - if (bufsize - z.avail_out > 0) - buffers.push(buf.slice(0, z.next_out_index)); - bufferSize += z.next_out_index; - } while (z.avail_in > 0 || z.avail_out === 0); - z.deflateEnd(); - array = new Uint8Array(bufferSize); - buffers.forEach(function(chunk) { - array.set(chunk, bufferIndex); - bufferIndex += chunk.length; - }); - return array; - }; -} -function getMaximumCompressedSize(uncompressedSize) { - return uncompressedSize + 5 * (Math.floor(uncompressedSize / 16383) + 1); -} - -// node_modules/@zip.js/zip.js/lib/core/streams/codecs/inflate.js -var MAX_BITS2 = 15; -var Z_OK2 = 0; -var Z_STREAM_END2 = 1; -var Z_NEED_DICT2 = 2; -var Z_STREAM_ERROR2 = -2; -var Z_DATA_ERROR2 = -3; -var Z_MEM_ERROR = -4; -var Z_BUF_ERROR2 = -5; -var inflate_mask = [ - 0, - 1, - 3, - 7, - 15, - 31, - 63, - 127, - 255, - 511, - 1023, - 2047, - 4095, - 8191, - 16383, - 32767, - 65535 -]; -var MANY = 1440; -var Z_NO_FLUSH2 = 0; -var Z_FINISH2 = 4; -var fixed_bl = 9; -var fixed_bd = 5; -var fixed_tl = [ - 96, - 7, - 256, - 0, - 8, - 80, - 0, - 8, - 16, - 84, - 8, - 115, - 82, - 7, - 31, - 0, - 8, - 112, - 0, - 8, - 48, - 0, - 9, - 192, - 80, - 7, - 10, - 0, - 8, - 96, - 0, - 8, - 32, - 0, - 9, - 160, - 0, - 8, - 0, - 0, - 8, - 128, - 0, - 8, - 64, - 0, - 9, - 224, - 80, - 7, - 6, - 0, - 8, - 88, - 0, - 8, - 24, - 0, - 9, - 144, - 83, - 7, - 59, - 0, - 8, - 120, - 0, - 8, - 56, - 0, - 9, - 208, - 81, - 7, - 17, - 0, - 8, - 104, - 0, - 8, - 40, - 0, - 9, - 176, - 0, - 8, - 8, - 0, - 8, - 136, - 0, - 8, - 72, - 0, - 9, - 240, - 80, - 7, - 4, - 0, - 8, - 84, - 0, - 8, - 20, - 85, - 8, - 227, - 83, - 7, - 43, - 0, - 8, - 116, - 0, - 8, - 52, - 0, - 9, - 200, - 81, - 7, - 13, - 0, - 8, - 100, - 0, - 8, - 36, - 0, - 9, - 168, - 0, - 8, - 4, - 0, - 8, - 132, - 0, - 8, - 68, - 0, - 9, - 232, - 80, - 7, - 8, - 0, - 8, - 92, - 0, - 8, - 28, - 0, - 9, - 152, - 84, - 7, - 83, - 0, - 8, - 124, - 0, - 8, - 60, - 0, - 9, - 216, - 82, - 7, - 23, - 0, - 8, - 108, - 0, - 8, - 44, - 0, - 9, - 184, - 0, - 8, - 12, - 0, - 8, - 140, - 0, - 8, - 76, - 0, - 9, - 248, - 80, - 7, - 3, - 0, - 8, - 82, - 0, - 8, - 18, - 85, - 8, - 163, - 83, - 7, - 35, - 0, - 8, - 114, - 0, - 8, - 50, - 0, - 9, - 196, - 81, - 7, - 11, - 0, - 8, - 98, - 0, - 8, - 34, - 0, - 9, - 164, - 0, - 8, - 2, - 0, - 8, - 130, - 0, - 8, - 66, - 0, - 9, - 228, - 80, - 7, - 7, - 0, - 8, - 90, - 0, - 8, - 26, - 0, - 9, - 148, - 84, - 7, - 67, - 0, - 8, - 122, - 0, - 8, - 58, - 0, - 9, - 212, - 82, - 7, - 19, - 0, - 8, - 106, - 0, - 8, - 42, - 0, - 9, - 180, - 0, - 8, - 10, - 0, - 8, - 138, - 0, - 8, - 74, - 0, - 9, - 244, - 80, - 7, - 5, - 0, - 8, - 86, - 0, - 8, - 22, - 192, - 8, - 0, - 83, - 7, - 51, - 0, - 8, - 118, - 0, - 8, - 54, - 0, - 9, - 204, - 81, - 7, - 15, - 0, - 8, - 102, - 0, - 8, - 38, - 0, - 9, - 172, - 0, - 8, - 6, - 0, - 8, - 134, - 0, - 8, - 70, - 0, - 9, - 236, - 80, - 7, - 9, - 0, - 8, - 94, - 0, - 8, - 30, - 0, - 9, - 156, - 84, - 7, - 99, - 0, - 8, - 126, - 0, - 8, - 62, - 0, - 9, - 220, - 82, - 7, - 27, - 0, - 8, - 110, - 0, - 8, - 46, - 0, - 9, - 188, - 0, - 8, - 14, - 0, - 8, - 142, - 0, - 8, - 78, - 0, - 9, - 252, - 96, - 7, - 256, - 0, - 8, - 81, - 0, - 8, - 17, - 85, - 8, - 131, - 82, - 7, - 31, - 0, - 8, - 113, - 0, - 8, - 49, - 0, - 9, - 194, - 80, - 7, - 10, - 0, - 8, - 97, - 0, - 8, - 33, - 0, - 9, - 162, - 0, - 8, - 1, - 0, - 8, - 129, - 0, - 8, - 65, - 0, - 9, - 226, - 80, - 7, - 6, - 0, - 8, - 89, - 0, - 8, - 25, - 0, - 9, - 146, - 83, - 7, - 59, - 0, - 8, - 121, - 0, - 8, - 57, - 0, - 9, - 210, - 81, - 7, - 17, - 0, - 8, - 105, - 0, - 8, - 41, - 0, - 9, - 178, - 0, - 8, - 9, - 0, - 8, - 137, - 0, - 8, - 73, - 0, - 9, - 242, - 80, - 7, - 4, - 0, - 8, - 85, - 0, - 8, - 21, - 80, - 8, - 258, - 83, - 7, - 43, - 0, - 8, - 117, - 0, - 8, - 53, - 0, - 9, - 202, - 81, - 7, - 13, - 0, - 8, - 101, - 0, - 8, - 37, - 0, - 9, - 170, - 0, - 8, - 5, - 0, - 8, - 133, - 0, - 8, - 69, - 0, - 9, - 234, - 80, - 7, - 8, - 0, - 8, - 93, - 0, - 8, - 29, - 0, - 9, - 154, - 84, - 7, - 83, - 0, - 8, - 125, - 0, - 8, - 61, - 0, - 9, - 218, - 82, - 7, - 23, - 0, - 8, - 109, - 0, - 8, - 45, - 0, - 9, - 186, - 0, - 8, - 13, - 0, - 8, - 141, - 0, - 8, - 77, - 0, - 9, - 250, - 80, - 7, - 3, - 0, - 8, - 83, - 0, - 8, - 19, - 85, - 8, - 195, - 83, - 7, - 35, - 0, - 8, - 115, - 0, - 8, - 51, - 0, - 9, - 198, - 81, - 7, - 11, - 0, - 8, - 99, - 0, - 8, - 35, - 0, - 9, - 166, - 0, - 8, - 3, - 0, - 8, - 131, - 0, - 8, - 67, - 0, - 9, - 230, - 80, - 7, - 7, - 0, - 8, - 91, - 0, - 8, - 27, - 0, - 9, - 150, - 84, - 7, - 67, - 0, - 8, - 123, - 0, - 8, - 59, - 0, - 9, - 214, - 82, - 7, - 19, - 0, - 8, - 107, - 0, - 8, - 43, - 0, - 9, - 182, - 0, - 8, - 11, - 0, - 8, - 139, - 0, - 8, - 75, - 0, - 9, - 246, - 80, - 7, - 5, - 0, - 8, - 87, - 0, - 8, - 23, - 192, - 8, - 0, - 83, - 7, - 51, - 0, - 8, - 119, - 0, - 8, - 55, - 0, - 9, - 206, - 81, - 7, - 15, - 0, - 8, - 103, - 0, - 8, - 39, - 0, - 9, - 174, - 0, - 8, - 7, - 0, - 8, - 135, - 0, - 8, - 71, - 0, - 9, - 238, - 80, - 7, - 9, - 0, - 8, - 95, - 0, - 8, - 31, - 0, - 9, - 158, - 84, - 7, - 99, - 0, - 8, - 127, - 0, - 8, - 63, - 0, - 9, - 222, - 82, - 7, - 27, - 0, - 8, - 111, - 0, - 8, - 47, - 0, - 9, - 190, - 0, - 8, - 15, - 0, - 8, - 143, - 0, - 8, - 79, - 0, - 9, - 254, - 96, - 7, - 256, - 0, - 8, - 80, - 0, - 8, - 16, - 84, - 8, - 115, - 82, - 7, - 31, - 0, - 8, - 112, - 0, - 8, - 48, - 0, - 9, - 193, - 80, - 7, - 10, - 0, - 8, - 96, - 0, - 8, - 32, - 0, - 9, - 161, - 0, - 8, - 0, - 0, - 8, - 128, - 0, - 8, - 64, - 0, - 9, - 225, - 80, - 7, - 6, - 0, - 8, - 88, - 0, - 8, - 24, - 0, - 9, - 145, - 83, - 7, - 59, - 0, - 8, - 120, - 0, - 8, - 56, - 0, - 9, - 209, - 81, - 7, - 17, - 0, - 8, - 104, - 0, - 8, - 40, - 0, - 9, - 177, - 0, - 8, - 8, - 0, - 8, - 136, - 0, - 8, - 72, - 0, - 9, - 241, - 80, - 7, - 4, - 0, - 8, - 84, - 0, - 8, - 20, - 85, - 8, - 227, - 83, - 7, - 43, - 0, - 8, - 116, - 0, - 8, - 52, - 0, - 9, - 201, - 81, - 7, - 13, - 0, - 8, - 100, - 0, - 8, - 36, - 0, - 9, - 169, - 0, - 8, - 4, - 0, - 8, - 132, - 0, - 8, - 68, - 0, - 9, - 233, - 80, - 7, - 8, - 0, - 8, - 92, - 0, - 8, - 28, - 0, - 9, - 153, - 84, - 7, - 83, - 0, - 8, - 124, - 0, - 8, - 60, - 0, - 9, - 217, - 82, - 7, - 23, - 0, - 8, - 108, - 0, - 8, - 44, - 0, - 9, - 185, - 0, - 8, - 12, - 0, - 8, - 140, - 0, - 8, - 76, - 0, - 9, - 249, - 80, - 7, - 3, - 0, - 8, - 82, - 0, - 8, - 18, - 85, - 8, - 163, - 83, - 7, - 35, - 0, - 8, - 114, - 0, - 8, - 50, - 0, - 9, - 197, - 81, - 7, - 11, - 0, - 8, - 98, - 0, - 8, - 34, - 0, - 9, - 165, - 0, - 8, - 2, - 0, - 8, - 130, - 0, - 8, - 66, - 0, - 9, - 229, - 80, - 7, - 7, - 0, - 8, - 90, - 0, - 8, - 26, - 0, - 9, - 149, - 84, - 7, - 67, - 0, - 8, - 122, - 0, - 8, - 58, - 0, - 9, - 213, - 82, - 7, - 19, - 0, - 8, - 106, - 0, - 8, - 42, - 0, - 9, - 181, - 0, - 8, - 10, - 0, - 8, - 138, - 0, - 8, - 74, - 0, - 9, - 245, - 80, - 7, - 5, - 0, - 8, - 86, - 0, - 8, - 22, - 192, - 8, - 0, - 83, - 7, - 51, - 0, - 8, - 118, - 0, - 8, - 54, - 0, - 9, - 205, - 81, - 7, - 15, - 0, - 8, - 102, - 0, - 8, - 38, - 0, - 9, - 173, - 0, - 8, - 6, - 0, - 8, - 134, - 0, - 8, - 70, - 0, - 9, - 237, - 80, - 7, - 9, - 0, - 8, - 94, - 0, - 8, - 30, - 0, - 9, - 157, - 84, - 7, - 99, - 0, - 8, - 126, - 0, - 8, - 62, - 0, - 9, - 221, - 82, - 7, - 27, - 0, - 8, - 110, - 0, - 8, - 46, - 0, - 9, - 189, - 0, - 8, - 14, - 0, - 8, - 142, - 0, - 8, - 78, - 0, - 9, - 253, - 96, - 7, - 256, - 0, - 8, - 81, - 0, - 8, - 17, - 85, - 8, - 131, - 82, - 7, - 31, - 0, - 8, - 113, - 0, - 8, - 49, - 0, - 9, - 195, - 80, - 7, - 10, - 0, - 8, - 97, - 0, - 8, - 33, - 0, - 9, - 163, - 0, - 8, - 1, - 0, - 8, - 129, - 0, - 8, - 65, - 0, - 9, - 227, - 80, - 7, - 6, - 0, - 8, - 89, - 0, - 8, - 25, - 0, - 9, - 147, - 83, - 7, - 59, - 0, - 8, - 121, - 0, - 8, - 57, - 0, - 9, - 211, - 81, - 7, - 17, - 0, - 8, - 105, - 0, - 8, - 41, - 0, - 9, - 179, - 0, - 8, - 9, - 0, - 8, - 137, - 0, - 8, - 73, - 0, - 9, - 243, - 80, - 7, - 4, - 0, - 8, - 85, - 0, - 8, - 21, - 80, - 8, - 258, - 83, - 7, - 43, - 0, - 8, - 117, - 0, - 8, - 53, - 0, - 9, - 203, - 81, - 7, - 13, - 0, - 8, - 101, - 0, - 8, - 37, - 0, - 9, - 171, - 0, - 8, - 5, - 0, - 8, - 133, - 0, - 8, - 69, - 0, - 9, - 235, - 80, - 7, - 8, - 0, - 8, - 93, - 0, - 8, - 29, - 0, - 9, - 155, - 84, - 7, - 83, - 0, - 8, - 125, - 0, - 8, - 61, - 0, - 9, - 219, - 82, - 7, - 23, - 0, - 8, - 109, - 0, - 8, - 45, - 0, - 9, - 187, - 0, - 8, - 13, - 0, - 8, - 141, - 0, - 8, - 77, - 0, - 9, - 251, - 80, - 7, - 3, - 0, - 8, - 83, - 0, - 8, - 19, - 85, - 8, - 195, - 83, - 7, - 35, - 0, - 8, - 115, - 0, - 8, - 51, - 0, - 9, - 199, - 81, - 7, - 11, - 0, - 8, - 99, - 0, - 8, - 35, - 0, - 9, - 167, - 0, - 8, - 3, - 0, - 8, - 131, - 0, - 8, - 67, - 0, - 9, - 231, - 80, - 7, - 7, - 0, - 8, - 91, - 0, - 8, - 27, - 0, - 9, - 151, - 84, - 7, - 67, - 0, - 8, - 123, - 0, - 8, - 59, - 0, - 9, - 215, - 82, - 7, - 19, - 0, - 8, - 107, - 0, - 8, - 43, - 0, - 9, - 183, - 0, - 8, - 11, - 0, - 8, - 139, - 0, - 8, - 75, - 0, - 9, - 247, - 80, - 7, - 5, - 0, - 8, - 87, - 0, - 8, - 23, - 192, - 8, - 0, - 83, - 7, - 51, - 0, - 8, - 119, - 0, - 8, - 55, - 0, - 9, - 207, - 81, - 7, - 15, - 0, - 8, - 103, - 0, - 8, - 39, - 0, - 9, - 175, - 0, - 8, - 7, - 0, - 8, - 135, - 0, - 8, - 71, - 0, - 9, - 239, - 80, - 7, - 9, - 0, - 8, - 95, - 0, - 8, - 31, - 0, - 9, - 159, - 84, - 7, - 99, - 0, - 8, - 127, - 0, - 8, - 63, - 0, - 9, - 223, - 82, - 7, - 27, - 0, - 8, - 111, - 0, - 8, - 47, - 0, - 9, - 191, - 0, - 8, - 15, - 0, - 8, - 143, - 0, - 8, - 79, - 0, - 9, - 255 -]; -var fixed_td = [ - 80, - 5, - 1, - 87, - 5, - 257, - 83, - 5, - 17, - 91, - 5, - 4097, - 81, - 5, - 5, - 89, - 5, - 1025, - 85, - 5, - 65, - 93, - 5, - 16385, - 80, - 5, - 3, - 88, - 5, - 513, - 84, - 5, - 33, - 92, - 5, - 8193, - 82, - 5, - 9, - 90, - 5, - 2049, - 86, - 5, - 129, - 192, - 5, - 24577, - 80, - 5, - 2, - 87, - 5, - 385, - 83, - 5, - 25, - 91, - 5, - 6145, - 81, - 5, - 7, - 89, - 5, - 1537, - 85, - 5, - 97, - 93, - 5, - 24577, - 80, - 5, - 4, - 88, - 5, - 769, - 84, - 5, - 49, - 92, - 5, - 12289, - 82, - 5, - 13, - 90, - 5, - 3073, - 86, - 5, - 193, - 192, - 5, - 24577 -]; -var cplens = [ - // Copy lengths for literal codes 257..285 - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 13, - 15, - 17, - 19, - 23, - 27, - 31, - 35, - 43, - 51, - 59, - 67, - 83, - 99, - 115, - 131, - 163, - 195, - 227, - 258, - 0, - 0 -]; -var cplext = [ - // Extra bits for literal codes 257..285 - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 3, - 3, - 3, - 3, - 4, - 4, - 4, - 4, - 5, - 5, - 5, - 5, - 0, - 112, - 112 - // 112==invalid -]; -var cpdist = [ - // Copy offsets for distance codes 0..29 - 1, - 2, - 3, - 4, - 5, - 7, - 9, - 13, - 17, - 25, - 33, - 49, - 65, - 97, - 129, - 193, - 257, - 385, - 513, - 769, - 1025, - 1537, - 2049, - 3073, - 4097, - 6145, - 8193, - 12289, - 16385, - 24577 -]; -var cpdext = [ - // Extra bits for distance codes - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 2, - 3, - 3, - 4, - 4, - 5, - 5, - 6, - 6, - 7, - 7, - 8, - 8, - 9, - 9, - 10, - 10, - 11, - 11, - 12, - 12, - 13, - 13 -]; -var BMAX = 15; -function InfTree() { - const that = this; - let hn; - let v; - let c; - let r; - let u; - let x; - function huft_build(b, bindex, n, s, d, e, t, m, hp, hn2, v2) { - let a; - let f; - let g; - let h; - let i; - let j; - let k; - let l; - let mask; - let p; - let q; - let w; - let xp; - let y; - let z; - p = 0; - i = n; - do { - c[b[bindex + p]]++; - p++; - i--; - } while (i !== 0); - if (c[0] == n) { - t[0] = -1; - m[0] = 0; - return Z_OK2; - } - l = m[0]; - for (j = 1; j <= BMAX; j++) - if (c[j] !== 0) - break; - k = j; - if (l < j) { - l = j; - } - for (i = BMAX; i !== 0; i--) { - if (c[i] !== 0) - break; - } - g = i; - if (l > i) { - l = i; - } - m[0] = l; - for (y = 1 << j; j < i; j++, y <<= 1) { - if ((y -= c[j]) < 0) { - return Z_DATA_ERROR2; - } - } - if ((y -= c[i]) < 0) { - return Z_DATA_ERROR2; - } - c[i] += y; - x[1] = j = 0; - p = 1; - xp = 2; - while (--i !== 0) { - x[xp] = j += c[p]; - xp++; - p++; - } - i = 0; - p = 0; - do { - if ((j = b[bindex + p]) !== 0) { - v2[x[j]++] = i; - } - p++; - } while (++i < n); - n = x[g]; - x[0] = i = 0; - p = 0; - h = -1; - w = -l; - u[0] = 0; - q = 0; - z = 0; - for (; k <= g; k++) { - a = c[k]; - while (a-- !== 0) { - while (k > w + l) { - h++; - w += l; - z = g - w; - z = z > l ? l : z; - if ((f = 1 << (j = k - w)) > a + 1) { - f -= a + 1; - xp = k; - if (j < z) { - while (++j < z) { - if ((f <<= 1) <= c[++xp]) - break; - f -= c[xp]; - } - } - } - z = 1 << j; - if (hn2[0] + z > MANY) { - return Z_DATA_ERROR2; - } - u[h] = q = /* hp+ */ - hn2[0]; - hn2[0] += z; - if (h !== 0) { - x[h] = i; - r[0] = /* (byte) */ - j; - r[1] = /* (byte) */ - l; - j = i >>> w - l; - r[2] = /* (int) */ - q - u[h - 1] - j; - hp.set(r, (u[h - 1] + j) * 3); - } else { - t[0] = q; - } - } - r[1] = /* (byte) */ - k - w; - if (p >= n) { - r[0] = 128 + 64; - } else if (v2[p] < s) { - r[0] = /* (byte) */ - v2[p] < 256 ? 0 : 32 + 64; - r[2] = v2[p++]; - } else { - r[0] = /* (byte) */ - e[v2[p] - s] + 16 + 64; - r[2] = d[v2[p++] - s]; - } - f = 1 << k - w; - for (j = i >>> w; j < z; j += f) { - hp.set(r, (q + j) * 3); - } - for (j = 1 << k - 1; (i & j) !== 0; j >>>= 1) { - i ^= j; - } - i ^= j; - mask = (1 << w) - 1; - while ((i & mask) != x[h]) { - h--; - w -= l; - mask = (1 << w) - 1; - } - } - } - return y !== 0 && g != 1 ? Z_BUF_ERROR2 : Z_OK2; - } - function initWorkArea(vsize) { - let i; - if (!hn) { - hn = []; - v = []; - c = new Int32Array(BMAX + 1); - r = []; - u = new Int32Array(BMAX); - x = new Int32Array(BMAX + 1); - } - if (v.length < vsize) { - v = []; - } - for (i = 0; i < vsize; i++) { - v[i] = 0; - } - for (i = 0; i < BMAX + 1; i++) { - c[i] = 0; - } - for (i = 0; i < 3; i++) { - r[i] = 0; - } - u.set(c.subarray(0, BMAX), 0); - x.set(c.subarray(0, BMAX + 1), 0); - } - that.inflate_trees_bits = function(c2, bb, tb, hp, z) { - let result; - initWorkArea(19); - hn[0] = 0; - result = huft_build(c2, 0, 19, 19, null, null, tb, bb, hp, hn, v); - if (result == Z_DATA_ERROR2) { - z.msg = "oversubscribed dynamic bit lengths tree"; - } else if (result == Z_BUF_ERROR2 || bb[0] === 0) { - z.msg = "incomplete dynamic bit lengths tree"; - result = Z_DATA_ERROR2; - } - return result; - }; - that.inflate_trees_dynamic = function(nl, nd, c2, bl, bd, tl, td, hp, z) { - let result; - initWorkArea(288); - hn[0] = 0; - result = huft_build(c2, 0, nl, 257, cplens, cplext, tl, bl, hp, hn, v); - if (result != Z_OK2 || bl[0] === 0) { - if (result == Z_DATA_ERROR2) { - z.msg = "oversubscribed literal/length tree"; - } else if (result != Z_MEM_ERROR) { - z.msg = "incomplete literal/length tree"; - result = Z_DATA_ERROR2; - } - return result; - } - initWorkArea(288); - result = huft_build(c2, nl, nd, 0, cpdist, cpdext, td, bd, hp, hn, v); - if (result != Z_OK2 || bd[0] === 0 && nl > 257) { - if (result == Z_DATA_ERROR2) { - z.msg = "oversubscribed distance tree"; - } else if (result == Z_BUF_ERROR2) { - z.msg = "incomplete distance tree"; - result = Z_DATA_ERROR2; - } else if (result != Z_MEM_ERROR) { - z.msg = "empty distance tree with lengths"; - result = Z_DATA_ERROR2; - } - return result; - } - return Z_OK2; - }; -} -InfTree.inflate_trees_fixed = function(bl, bd, tl, td) { - bl[0] = fixed_bl; - bd[0] = fixed_bd; - tl[0] = fixed_tl; - td[0] = fixed_td; - return Z_OK2; -}; -var START = 0; -var LEN = 1; -var LENEXT = 2; -var DIST = 3; -var DISTEXT = 4; -var COPY = 5; -var LIT = 6; -var WASH = 7; -var END = 8; -var BADCODE = 9; -function InfCodes() { - const that = this; - let mode2; - let len = 0; - let tree; - let tree_index = 0; - let need = 0; - let lit = 0; - let get = 0; - let dist = 0; - let lbits = 0; - let dbits = 0; - let ltree; - let ltree_index = 0; - let dtree; - let dtree_index = 0; - function inflate_fast(bl, bd, tl, tl_index, td, td_index, s, z) { - let t; - let tp; - let tp_index; - let e; - let b; - let k; - let p; - let n; - let q; - let m; - let ml; - let md; - let c; - let d; - let r; - let tp_index_t_3; - p = z.next_in_index; - n = z.avail_in; - b = s.bitb; - k = s.bitk; - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - ml = inflate_mask[bl]; - md = inflate_mask[bd]; - do { - while (k < 20) { - n--; - b |= (z.read_byte(p++) & 255) << k; - k += 8; - } - t = b & ml; - tp = tl; - tp_index = tl_index; - tp_index_t_3 = (tp_index + t) * 3; - if ((e = tp[tp_index_t_3]) === 0) { - b >>= tp[tp_index_t_3 + 1]; - k -= tp[tp_index_t_3 + 1]; - s.win[q++] = /* (byte) */ - tp[tp_index_t_3 + 2]; - m--; - continue; - } - do { - b >>= tp[tp_index_t_3 + 1]; - k -= tp[tp_index_t_3 + 1]; - if ((e & 16) !== 0) { - e &= 15; - c = tp[tp_index_t_3 + 2] + /* (int) */ - (b & inflate_mask[e]); - b >>= e; - k -= e; - while (k < 15) { - n--; - b |= (z.read_byte(p++) & 255) << k; - k += 8; - } - t = b & md; - tp = td; - tp_index = td_index; - tp_index_t_3 = (tp_index + t) * 3; - e = tp[tp_index_t_3]; - do { - b >>= tp[tp_index_t_3 + 1]; - k -= tp[tp_index_t_3 + 1]; - if ((e & 16) !== 0) { - e &= 15; - while (k < e) { - n--; - b |= (z.read_byte(p++) & 255) << k; - k += 8; - } - d = tp[tp_index_t_3 + 2] + (b & inflate_mask[e]); - b >>= e; - k -= e; - m -= c; - if (q >= d) { - r = q - d; - if (q - r > 0 && 2 > q - r) { - s.win[q++] = s.win[r++]; - s.win[q++] = s.win[r++]; - c -= 2; - } else { - s.win.set(s.win.subarray(r, r + 2), q); - q += 2; - r += 2; - c -= 2; - } - } else { - r = q - d; - do { - r += s.end; - } while (r < 0); - e = s.end - r; - if (c > e) { - c -= e; - if (q - r > 0 && e > q - r) { - do { - s.win[q++] = s.win[r++]; - } while (--e !== 0); - } else { - s.win.set(s.win.subarray(r, r + e), q); - q += e; - r += e; - e = 0; - } - r = 0; - } - } - if (q - r > 0 && c > q - r) { - do { - s.win[q++] = s.win[r++]; - } while (--c !== 0); - } else { - s.win.set(s.win.subarray(r, r + c), q); - q += c; - r += c; - c = 0; - } - break; - } else if ((e & 64) === 0) { - t += tp[tp_index_t_3 + 2]; - t += b & inflate_mask[e]; - tp_index_t_3 = (tp_index + t) * 3; - e = tp[tp_index_t_3]; - } else { - z.msg = "invalid distance code"; - c = z.avail_in - n; - c = k >> 3 < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return Z_DATA_ERROR2; - } - } while (true); - break; - } - if ((e & 64) === 0) { - t += tp[tp_index_t_3 + 2]; - t += b & inflate_mask[e]; - tp_index_t_3 = (tp_index + t) * 3; - if ((e = tp[tp_index_t_3]) === 0) { - b >>= tp[tp_index_t_3 + 1]; - k -= tp[tp_index_t_3 + 1]; - s.win[q++] = /* (byte) */ - tp[tp_index_t_3 + 2]; - m--; - break; - } - } else if ((e & 32) !== 0) { - c = z.avail_in - n; - c = k >> 3 < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return Z_STREAM_END2; - } else { - z.msg = "invalid literal/length code"; - c = z.avail_in - n; - c = k >> 3 < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return Z_DATA_ERROR2; - } - } while (true); - } while (m >= 258 && n >= 10); - c = z.avail_in - n; - c = k >> 3 < c ? k >> 3 : c; - n += c; - p -= c; - k -= c << 3; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return Z_OK2; - } - that.init = function(bl, bd, tl, tl_index, td, td_index) { - mode2 = START; - lbits = /* (byte) */ - bl; - dbits = /* (byte) */ - bd; - ltree = tl; - ltree_index = tl_index; - dtree = td; - dtree_index = td_index; - tree = null; - }; - that.proc = function(s, z, r) { - let j; - let tindex; - let e; - let b = 0; - let k = 0; - let p = 0; - let n; - let q; - let m; - let f; - p = z.next_in_index; - n = z.avail_in; - b = s.bitb; - k = s.bitk; - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - while (true) { - switch (mode2) { - // waiting for "i:"=input, "o:"=output, "x:"=nothing - case START: - if (m >= 258 && n >= 10) { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - r = inflate_fast(lbits, dbits, ltree, ltree_index, dtree, dtree_index, s, z); - p = z.next_in_index; - n = z.avail_in; - b = s.bitb; - k = s.bitk; - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - if (r != Z_OK2) { - mode2 = r == Z_STREAM_END2 ? WASH : BADCODE; - break; - } - } - need = lbits; - tree = ltree; - tree_index = ltree_index; - mode2 = LEN; - /* falls through */ - case LEN: - j = need; - while (k < j) { - if (n !== 0) - r = Z_OK2; - else { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 255) << k; - k += 8; - } - tindex = (tree_index + (b & inflate_mask[j])) * 3; - b >>>= tree[tindex + 1]; - k -= tree[tindex + 1]; - e = tree[tindex]; - if (e === 0) { - lit = tree[tindex + 2]; - mode2 = LIT; - break; - } - if ((e & 16) !== 0) { - get = e & 15; - len = tree[tindex + 2]; - mode2 = LENEXT; - break; - } - if ((e & 64) === 0) { - need = e; - tree_index = tindex / 3 + tree[tindex + 2]; - break; - } - if ((e & 32) !== 0) { - mode2 = WASH; - break; - } - mode2 = BADCODE; - z.msg = "invalid literal/length code"; - r = Z_DATA_ERROR2; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - case LENEXT: - j = get; - while (k < j) { - if (n !== 0) - r = Z_OK2; - else { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 255) << k; - k += 8; - } - len += b & inflate_mask[j]; - b >>= j; - k -= j; - need = dbits; - tree = dtree; - tree_index = dtree_index; - mode2 = DIST; - /* falls through */ - case DIST: - j = need; - while (k < j) { - if (n !== 0) - r = Z_OK2; - else { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 255) << k; - k += 8; - } - tindex = (tree_index + (b & inflate_mask[j])) * 3; - b >>= tree[tindex + 1]; - k -= tree[tindex + 1]; - e = tree[tindex]; - if ((e & 16) !== 0) { - get = e & 15; - dist = tree[tindex + 2]; - mode2 = DISTEXT; - break; - } - if ((e & 64) === 0) { - need = e; - tree_index = tindex / 3 + tree[tindex + 2]; - break; - } - mode2 = BADCODE; - z.msg = "invalid distance code"; - r = Z_DATA_ERROR2; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - case DISTEXT: - j = get; - while (k < j) { - if (n !== 0) - r = Z_OK2; - else { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - n--; - b |= (z.read_byte(p++) & 255) << k; - k += 8; - } - dist += b & inflate_mask[j]; - b >>= j; - k -= j; - mode2 = COPY; - /* falls through */ - case COPY: - f = q - dist; - while (f < 0) { - f += s.end; - } - while (len !== 0) { - if (m === 0) { - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - if (m === 0) { - s.write = q; - r = s.inflate_flush(z, r); - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - if (m === 0) { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - } - } - s.win[q++] = s.win[f++]; - m--; - if (f == s.end) - f = 0; - len--; - } - mode2 = START; - break; - case LIT: - if (m === 0) { - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - if (m === 0) { - s.write = q; - r = s.inflate_flush(z, r); - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - if (q == s.end && s.read !== 0) { - q = 0; - m = q < s.read ? s.read - q - 1 : s.end - q; - } - if (m === 0) { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - } - } - r = Z_OK2; - s.win[q++] = /* (byte) */ - lit; - m--; - mode2 = START; - break; - case WASH: - if (k > 7) { - k -= 8; - n++; - p--; - } - s.write = q; - r = s.inflate_flush(z, r); - q = s.write; - m = q < s.read ? s.read - q - 1 : s.end - q; - if (s.read != s.write) { - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - mode2 = END; - /* falls through */ - case END: - r = Z_STREAM_END2; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - case BADCODE: - r = Z_DATA_ERROR2; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - default: - r = Z_STREAM_ERROR2; - s.bitb = b; - s.bitk = k; - z.avail_in = n; - z.total_in += p - z.next_in_index; - z.next_in_index = p; - s.write = q; - return s.inflate_flush(z, r); - } - } - }; - that.free = function() { - }; -} -var border = [ - // Order of the bit length code lengths - 16, - 17, - 18, - 0, - 8, - 7, - 9, - 6, - 10, - 5, - 11, - 4, - 12, - 3, - 13, - 2, - 14, - 1, - 15 -]; -var TYPE = 0; -var LENS = 1; -var STORED2 = 2; -var TABLE = 3; -var BTREE = 4; -var DTREE = 5; -var CODES = 6; -var DRY = 7; -var DONELOCKS = 8; -var BADBLOCKS = 9; -function InfBlocks(z, w) { - const that = this; - let mode2 = TYPE; - let left = 0; - let table2 = 0; - let index = 0; - let blens; - const bb = [0]; - const tb = [0]; - const codes = new InfCodes(); - let last = 0; - let hufts = new Int32Array(MANY * 3); - const check = 0; - const inftree = new InfTree(); - that.bitk = 0; - that.bitb = 0; - that.win = new Uint8Array(w); - that.end = w; - that.read = 0; - that.write = 0; - that.reset = function(z2, c) { - if (c) - c[0] = check; - if (mode2 == CODES) { - codes.free(z2); - } - mode2 = TYPE; - that.bitk = 0; - that.bitb = 0; - that.read = that.write = 0; - }; - that.reset(z, null); - that.inflate_flush = function(z2, r) { - let n; - let p; - let q; - p = z2.next_out_index; - q = that.read; - n = /* (int) */ - (q <= that.write ? that.write : that.end) - q; - if (n > z2.avail_out) - n = z2.avail_out; - if (n !== 0 && r == Z_BUF_ERROR2) - r = Z_OK2; - z2.avail_out -= n; - z2.total_out += n; - z2.next_out.set(that.win.subarray(q, q + n), p); - p += n; - q += n; - if (q == that.end) { - q = 0; - if (that.write == that.end) - that.write = 0; - n = that.write - q; - if (n > z2.avail_out) - n = z2.avail_out; - if (n !== 0 && r == Z_BUF_ERROR2) - r = Z_OK2; - z2.avail_out -= n; - z2.total_out += n; - z2.next_out.set(that.win.subarray(q, q + n), p); - p += n; - q += n; - } - z2.next_out_index = p; - that.read = q; - return r; - }; - that.proc = function(z2, r) { - let t; - let b; - let k; - let p; - let n; - let q; - let m; - let i; - p = z2.next_in_index; - n = z2.avail_in; - b = that.bitb; - k = that.bitk; - q = that.write; - m = /* (int) */ - q < that.read ? that.read - q - 1 : that.end - q; - while (true) { - let bl, bd, tl, td, bl_, bd_, tl_, td_; - switch (mode2) { - case TYPE: - while (k < 3) { - if (n !== 0) { - r = Z_OK2; - } else { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - n--; - b |= (z2.read_byte(p++) & 255) << k; - k += 8; - } - t = /* (int) */ - b & 7; - last = t & 1; - switch (t >>> 1) { - case 0: - b >>>= 3; - k -= 3; - t = k & 7; - b >>>= t; - k -= t; - mode2 = LENS; - break; - case 1: - bl = []; - bd = []; - tl = [[]]; - td = [[]]; - InfTree.inflate_trees_fixed(bl, bd, tl, td); - codes.init(bl[0], bd[0], tl[0], 0, td[0], 0); - b >>>= 3; - k -= 3; - mode2 = CODES; - break; - case 2: - b >>>= 3; - k -= 3; - mode2 = TABLE; - break; - case 3: - b >>>= 3; - k -= 3; - mode2 = BADBLOCKS; - z2.msg = "invalid block type"; - r = Z_DATA_ERROR2; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - break; - case LENS: - while (k < 32) { - if (n !== 0) { - r = Z_OK2; - } else { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - n--; - b |= (z2.read_byte(p++) & 255) << k; - k += 8; - } - if ((~b >>> 16 & 65535) != (b & 65535)) { - mode2 = BADBLOCKS; - z2.msg = "invalid stored block lengths"; - r = Z_DATA_ERROR2; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - left = b & 65535; - b = k = 0; - mode2 = left !== 0 ? STORED2 : last !== 0 ? DRY : TYPE; - break; - case STORED2: - if (n === 0) { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - if (m === 0) { - if (q == that.end && that.read !== 0) { - q = 0; - m = /* (int) */ - q < that.read ? that.read - q - 1 : that.end - q; - } - if (m === 0) { - that.write = q; - r = that.inflate_flush(z2, r); - q = that.write; - m = /* (int) */ - q < that.read ? that.read - q - 1 : that.end - q; - if (q == that.end && that.read !== 0) { - q = 0; - m = /* (int) */ - q < that.read ? that.read - q - 1 : that.end - q; - } - if (m === 0) { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - } - } - r = Z_OK2; - t = left; - if (t > n) - t = n; - if (t > m) - t = m; - that.win.set(z2.read_buf(p, t), q); - p += t; - n -= t; - q += t; - m -= t; - if ((left -= t) !== 0) - break; - mode2 = last !== 0 ? DRY : TYPE; - break; - case TABLE: - while (k < 14) { - if (n !== 0) { - r = Z_OK2; - } else { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - n--; - b |= (z2.read_byte(p++) & 255) << k; - k += 8; - } - table2 = t = b & 16383; - if ((t & 31) > 29 || (t >> 5 & 31) > 29) { - mode2 = BADBLOCKS; - z2.msg = "too many length or distance symbols"; - r = Z_DATA_ERROR2; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - t = 258 + (t & 31) + (t >> 5 & 31); - if (!blens || blens.length < t) { - blens = []; - } else { - for (i = 0; i < t; i++) { - blens[i] = 0; - } - } - b >>>= 14; - k -= 14; - index = 0; - mode2 = BTREE; - /* falls through */ - case BTREE: - while (index < 4 + (table2 >>> 10)) { - while (k < 3) { - if (n !== 0) { - r = Z_OK2; - } else { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - n--; - b |= (z2.read_byte(p++) & 255) << k; - k += 8; - } - blens[border[index++]] = b & 7; - b >>>= 3; - k -= 3; - } - while (index < 19) { - blens[border[index++]] = 0; - } - bb[0] = 7; - t = inftree.inflate_trees_bits(blens, bb, tb, hufts, z2); - if (t != Z_OK2) { - r = t; - if (r == Z_DATA_ERROR2) { - blens = null; - mode2 = BADBLOCKS; - } - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - index = 0; - mode2 = DTREE; - /* falls through */ - case DTREE: - while (true) { - t = table2; - if (index >= 258 + (t & 31) + (t >> 5 & 31)) { - break; - } - let j, c; - t = bb[0]; - while (k < t) { - if (n !== 0) { - r = Z_OK2; - } else { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - n--; - b |= (z2.read_byte(p++) & 255) << k; - k += 8; - } - t = hufts[(tb[0] + (b & inflate_mask[t])) * 3 + 1]; - c = hufts[(tb[0] + (b & inflate_mask[t])) * 3 + 2]; - if (c < 16) { - b >>>= t; - k -= t; - blens[index++] = c; - } else { - i = c == 18 ? 7 : c - 14; - j = c == 18 ? 11 : 3; - while (k < t + i) { - if (n !== 0) { - r = Z_OK2; - } else { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - n--; - b |= (z2.read_byte(p++) & 255) << k; - k += 8; - } - b >>>= t; - k -= t; - j += b & inflate_mask[i]; - b >>>= i; - k -= i; - i = index; - t = table2; - if (i + j > 258 + (t & 31) + (t >> 5 & 31) || c == 16 && i < 1) { - blens = null; - mode2 = BADBLOCKS; - z2.msg = "invalid bit length repeat"; - r = Z_DATA_ERROR2; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - c = c == 16 ? blens[i - 1] : 0; - do { - blens[i++] = c; - } while (--j !== 0); - index = i; - } - } - tb[0] = -1; - bl_ = []; - bd_ = []; - tl_ = []; - td_ = []; - bl_[0] = 9; - bd_[0] = 6; - t = table2; - t = inftree.inflate_trees_dynamic(257 + (t & 31), 1 + (t >> 5 & 31), blens, bl_, bd_, tl_, td_, hufts, z2); - if (t != Z_OK2) { - if (t == Z_DATA_ERROR2) { - blens = null; - mode2 = BADBLOCKS; - } - r = t; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - codes.init(bl_[0], bd_[0], hufts, tl_[0], hufts, td_[0]); - mode2 = CODES; - /* falls through */ - case CODES: - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - if ((r = codes.proc(that, z2, r)) != Z_STREAM_END2) { - return that.inflate_flush(z2, r); - } - r = Z_OK2; - codes.free(z2); - p = z2.next_in_index; - n = z2.avail_in; - b = that.bitb; - k = that.bitk; - q = that.write; - m = /* (int) */ - q < that.read ? that.read - q - 1 : that.end - q; - if (last === 0) { - mode2 = TYPE; - break; - } - mode2 = DRY; - /* falls through */ - case DRY: - that.write = q; - r = that.inflate_flush(z2, r); - q = that.write; - m = /* (int) */ - q < that.read ? that.read - q - 1 : that.end - q; - if (that.read != that.write) { - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - mode2 = DONELOCKS; - /* falls through */ - case DONELOCKS: - r = Z_STREAM_END2; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - case BADBLOCKS: - r = Z_DATA_ERROR2; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - default: - r = Z_STREAM_ERROR2; - that.bitb = b; - that.bitk = k; - z2.avail_in = n; - z2.total_in += p - z2.next_in_index; - z2.next_in_index = p; - that.write = q; - return that.inflate_flush(z2, r); - } - } - }; - that.free = function(z2) { - that.reset(z2, null); - that.win = null; - hufts = null; - }; - that.set_dictionary = function(d, start, n) { - that.win.set(d.subarray(start, start + n), 0); - that.read = that.write = n; - }; - that.sync_point = function() { - return mode2 == LENS ? 1 : 0; - }; -} -var PRESET_DICT2 = 32; -var Z_DEFLATED2 = 8; -var METHOD = 0; -var FLAG = 1; -var DICT4 = 2; -var DICT3 = 3; -var DICT2 = 4; -var DICT1 = 5; -var DICT0 = 6; -var BLOCKS = 7; -var DONE = 12; -var BAD = 13; -var mark = [0, 0, 255, 255]; -function Inflate() { - const that = this; - that.mode = 0; - that.method = 0; - that.was = [0]; - that.need = 0; - that.marker = 0; - that.wbits = 0; - function inflateReset(z) { - if (!z || !z.istate) - return Z_STREAM_ERROR2; - z.total_in = z.total_out = 0; - z.msg = null; - z.istate.mode = BLOCKS; - z.istate.blocks.reset(z, null); - return Z_OK2; - } - that.inflateEnd = function(z) { - if (that.blocks) - that.blocks.free(z); - that.blocks = null; - return Z_OK2; - }; - that.inflateInit = function(z, w) { - z.msg = null; - that.blocks = null; - if (w < 8 || w > 15) { - that.inflateEnd(z); - return Z_STREAM_ERROR2; - } - that.wbits = w; - z.istate.blocks = new InfBlocks(z, 1 << w); - inflateReset(z); - return Z_OK2; - }; - that.inflate = function(z, f) { - let r; - let b; - if (!z || !z.istate || !z.next_in) - return Z_STREAM_ERROR2; - const istate = z.istate; - f = f == Z_FINISH2 ? Z_BUF_ERROR2 : Z_OK2; - r = Z_BUF_ERROR2; - while (true) { - switch (istate.mode) { - case METHOD: - if (z.avail_in === 0) - return r; - r = f; - z.avail_in--; - z.total_in++; - if (((istate.method = z.read_byte(z.next_in_index++)) & 15) != Z_DEFLATED2) { - istate.mode = BAD; - z.msg = "unknown compression method"; - istate.marker = 5; - break; - } - if ((istate.method >> 4) + 8 > istate.wbits) { - istate.mode = BAD; - z.msg = "invalid win size"; - istate.marker = 5; - break; - } - istate.mode = FLAG; - /* falls through */ - case FLAG: - if (z.avail_in === 0) - return r; - r = f; - z.avail_in--; - z.total_in++; - b = z.read_byte(z.next_in_index++) & 255; - if (((istate.method << 8) + b) % 31 !== 0) { - istate.mode = BAD; - z.msg = "incorrect header check"; - istate.marker = 5; - break; - } - if ((b & PRESET_DICT2) === 0) { - istate.mode = BLOCKS; - break; - } - istate.mode = DICT4; - /* falls through */ - case DICT4: - if (z.avail_in === 0) - return r; - r = f; - z.avail_in--; - z.total_in++; - istate.need = (z.read_byte(z.next_in_index++) & 255) << 24 & 4278190080; - istate.mode = DICT3; - /* falls through */ - case DICT3: - if (z.avail_in === 0) - return r; - r = f; - z.avail_in--; - z.total_in++; - istate.need += (z.read_byte(z.next_in_index++) & 255) << 16 & 16711680; - istate.mode = DICT2; - /* falls through */ - case DICT2: - if (z.avail_in === 0) - return r; - r = f; - z.avail_in--; - z.total_in++; - istate.need += (z.read_byte(z.next_in_index++) & 255) << 8 & 65280; - istate.mode = DICT1; - /* falls through */ - case DICT1: - if (z.avail_in === 0) - return r; - r = f; - z.avail_in--; - z.total_in++; - istate.need += z.read_byte(z.next_in_index++) & 255; - istate.mode = DICT0; - return Z_NEED_DICT2; - case DICT0: - istate.mode = BAD; - z.msg = "need dictionary"; - istate.marker = 0; - return Z_STREAM_ERROR2; - case BLOCKS: - r = istate.blocks.proc(z, r); - if (r == Z_DATA_ERROR2) { - istate.mode = BAD; - istate.marker = 0; - break; - } - if (r == Z_OK2) { - r = f; - } - if (r != Z_STREAM_END2) { - return r; - } - r = f; - istate.blocks.reset(z, istate.was); - istate.mode = DONE; - /* falls through */ - case DONE: - z.avail_in = 0; - return Z_STREAM_END2; - case BAD: - return Z_DATA_ERROR2; - default: - return Z_STREAM_ERROR2; - } - } - }; - that.inflateSetDictionary = function(z, dictionary, dictLength) { - let index = 0, length = dictLength; - if (!z || !z.istate || z.istate.mode != DICT0) - return Z_STREAM_ERROR2; - const istate = z.istate; - if (length >= 1 << istate.wbits) { - length = (1 << istate.wbits) - 1; - index = dictLength - length; - } - istate.blocks.set_dictionary(dictionary, index, length); - istate.mode = BLOCKS; - return Z_OK2; - }; - that.inflateSync = function(z) { - let n; - let p; - let m; - let r, w; - if (!z || !z.istate) - return Z_STREAM_ERROR2; - const istate = z.istate; - if (istate.mode != BAD) { - istate.mode = BAD; - istate.marker = 0; - } - if ((n = z.avail_in) === 0) - return Z_BUF_ERROR2; - p = z.next_in_index; - m = istate.marker; - while (n !== 0 && m < 4) { - if (z.read_byte(p) == mark[m]) { - m++; - } else if (z.read_byte(p) !== 0) { - m = 0; - } else { - m = 4 - m; - } - p++; - n--; - } - z.total_in += p - z.next_in_index; - z.next_in_index = p; - z.avail_in = n; - istate.marker = m; - if (m != 4) { - return Z_DATA_ERROR2; - } - r = z.total_in; - w = z.total_out; - inflateReset(z); - z.total_in = r; - z.total_out = w; - istate.mode = BLOCKS; - return Z_OK2; - }; - that.inflateSyncPoint = function(z) { - if (!z || !z.istate || !z.istate.blocks) - return Z_STREAM_ERROR2; - return z.istate.blocks.sync_point(); - }; -} -function ZStream2() { -} -ZStream2.prototype = { - inflateInit(bits) { - const that = this; - that.istate = new Inflate(); - if (!bits) - bits = MAX_BITS2; - return that.istate.inflateInit(that, bits); - }, - inflate(f) { - const that = this; - if (!that.istate) - return Z_STREAM_ERROR2; - return that.istate.inflate(that, f); - }, - inflateEnd() { - const that = this; - if (!that.istate) - return Z_STREAM_ERROR2; - const ret = that.istate.inflateEnd(that); - that.istate = null; - return ret; - }, - inflateSync() { - const that = this; - if (!that.istate) - return Z_STREAM_ERROR2; - return that.istate.inflateSync(that); - }, - inflateSetDictionary(dictionary, dictLength) { - const that = this; - if (!that.istate) - return Z_STREAM_ERROR2; - return that.istate.inflateSetDictionary(that, dictionary, dictLength); - }, - read_byte(start) { - const that = this; - return that.next_in[start]; - }, - read_buf(start, size) { - const that = this; - return that.next_in.subarray(start, start + size); - } -}; -function ZipInflate(options) { - const that = this; - const z = new ZStream2(); - const bufsize = options && options.chunkSize ? Math.floor(options.chunkSize * 2) : 128 * 1024; - const flush = Z_NO_FLUSH2; - const buf = new Uint8Array(bufsize); - let nomoreinput = false; - z.inflateInit(); - z.next_out = buf; - that.append = function(data, onprogress) { - const buffers = []; - let err, array, lastIndex = 0, bufferIndex = 0, bufferSize = 0; - if (data.length === 0) - return; - z.next_in_index = 0; - z.next_in = data; - z.avail_in = data.length; - do { - z.next_out_index = 0; - z.avail_out = bufsize; - if (z.avail_in === 0 && !nomoreinput) { - z.next_in_index = 0; - nomoreinput = true; - } - err = z.inflate(flush); - if (nomoreinput && err === Z_BUF_ERROR2) { - if (z.avail_in !== 0) - throw new Error("inflating: bad input"); - } else if (err !== Z_OK2 && err !== Z_STREAM_END2) - throw new Error("inflating: " + z.msg); - if ((nomoreinput || err === Z_STREAM_END2) && z.avail_in === data.length) - throw new Error("inflating: bad input"); - if (z.next_out_index) - if (z.next_out_index === bufsize) - buffers.push(new Uint8Array(buf)); - else - buffers.push(buf.subarray(0, z.next_out_index)); - bufferSize += z.next_out_index; - if (onprogress && z.next_in_index > 0 && z.next_in_index != lastIndex) { - onprogress(z.next_in_index); - lastIndex = z.next_in_index; - } - } while (z.avail_in > 0 || z.avail_out === 0); - if (buffers.length > 1) { - array = new Uint8Array(bufferSize); - buffers.forEach(function(chunk) { - array.set(chunk, bufferIndex); - bufferIndex += chunk.length; - }); - } else { - array = buffers[0] ? new Uint8Array(buffers[0]) : new Uint8Array(); - } - return array; - }; - that.flush = function() { - z.inflateEnd(); - }; -} - -// node_modules/@zip.js/zip.js/lib/z-worker.js -self.initCodec = () => { - self.Deflate = ZipDeflate; - self.Inflate = ZipInflate; -}; -//# sourceMappingURL=z-worker.js.map diff --git a/vendor/yomitan/lib/z-worker.js.map b/vendor/yomitan/lib/z-worker.js.map deleted file mode 100644 index 7aa89601..00000000 --- a/vendor/yomitan/lib/z-worker.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/@zip.js/zip.js/lib/core/constants.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/stream-adapter.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codecs/crc32.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/crc32-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/util/encode-text.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codecs/sjcl.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/common-crypto.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/aes-crypto-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/zip-crypto-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/zip-entry-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codec-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/z-worker-core.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codecs/deflate.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codecs/inflate.js", "../../node_modules/@zip.js/zip.js/lib/z-worker.js"], - "sourcesContent": ["/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst MAX_32_BITS = 0xffffffff;\nconst MAX_16_BITS = 0xffff;\nconst COMPRESSION_METHOD_DEFLATE = 0x08;\nconst COMPRESSION_METHOD_STORE = 0x00;\nconst COMPRESSION_METHOD_AES = 0x63;\n\nconst LOCAL_FILE_HEADER_SIGNATURE = 0x04034b50;\nconst SPLIT_ZIP_FILE_SIGNATURE = 0x08074b50;\nconst DATA_DESCRIPTOR_RECORD_SIGNATURE = SPLIT_ZIP_FILE_SIGNATURE;\nconst CENTRAL_FILE_HEADER_SIGNATURE = 0x02014b50;\nconst END_OF_CENTRAL_DIR_SIGNATURE = 0x06054b50;\nconst ZIP64_END_OF_CENTRAL_DIR_SIGNATURE = 0x06064b50;\nconst ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE = 0x07064b50;\nconst END_OF_CENTRAL_DIR_LENGTH = 22;\nconst ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH = 20;\nconst ZIP64_END_OF_CENTRAL_DIR_LENGTH = 56;\nconst ZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH = END_OF_CENTRAL_DIR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LENGTH;\n\nconst EXTRAFIELD_TYPE_ZIP64 = 0x0001;\nconst EXTRAFIELD_TYPE_AES = 0x9901;\nconst EXTRAFIELD_TYPE_NTFS = 0x000a;\nconst EXTRAFIELD_TYPE_NTFS_TAG1 = 0x0001;\nconst EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP = 0x5455;\nconst EXTRAFIELD_TYPE_UNICODE_PATH = 0x7075;\nconst EXTRAFIELD_TYPE_UNICODE_COMMENT = 0x6375;\nconst EXTRAFIELD_TYPE_USDZ = 0x1986;\n\nconst BITFLAG_ENCRYPTED = 0x01;\nconst BITFLAG_LEVEL = 0x06;\nconst BITFLAG_DATA_DESCRIPTOR = 0x0008;\nconst BITFLAG_LANG_ENCODING_FLAG = 0x0800;\nconst FILE_ATTR_MSDOS_DIR_MASK = 0x10;\n\nconst VERSION_DEFLATE = 0x14;\nconst VERSION_ZIP64 = 0x2D;\nconst VERSION_AES = 0x33;\n\nconst DIRECTORY_SIGNATURE = \"/\";\n\nconst MAX_DATE = new Date(2107, 11, 31);\nconst MIN_DATE = new Date(1980, 0, 1);\n\nconst UNDEFINED_VALUE = undefined;\nconst UNDEFINED_TYPE = \"undefined\";\nconst FUNCTION_TYPE = \"function\";\n\nexport {\n\tMAX_32_BITS,\n\tMAX_16_BITS,\n\tCOMPRESSION_METHOD_DEFLATE,\n\tCOMPRESSION_METHOD_STORE,\n\tCOMPRESSION_METHOD_AES,\n\tSPLIT_ZIP_FILE_SIGNATURE,\n\tLOCAL_FILE_HEADER_SIGNATURE,\n\tDATA_DESCRIPTOR_RECORD_SIGNATURE,\n\tCENTRAL_FILE_HEADER_SIGNATURE,\n\tEND_OF_CENTRAL_DIR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_SIGNATURE,\n\tEXTRAFIELD_TYPE_ZIP64,\n\tEXTRAFIELD_TYPE_AES,\n\tEXTRAFIELD_TYPE_NTFS,\n\tEXTRAFIELD_TYPE_NTFS_TAG1,\n\tEXTRAFIELD_TYPE_EXTENDED_TIMESTAMP,\n\tEXTRAFIELD_TYPE_UNICODE_PATH,\n\tEXTRAFIELD_TYPE_UNICODE_COMMENT,\n\tEXTRAFIELD_TYPE_USDZ,\n\tEND_OF_CENTRAL_DIR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH,\n\tBITFLAG_ENCRYPTED,\n\tBITFLAG_LEVEL,\n\tBITFLAG_DATA_DESCRIPTOR,\n\tBITFLAG_LANG_ENCODING_FLAG,\n\tFILE_ATTR_MSDOS_DIR_MASK,\n\tVERSION_DEFLATE,\n\tVERSION_ZIP64,\n\tVERSION_AES,\n\tDIRECTORY_SIGNATURE,\n\tMIN_DATE,\n\tMAX_DATE,\n\tUNDEFINED_VALUE,\n\tUNDEFINED_TYPE,\n\tFUNCTION_TYPE\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n\nexport {\n\tStreamAdapter\n};\n\nclass StreamAdapter {\n\n\tconstructor(Codec) {\n\t\treturn class extends TransformStream {\n\t\t\tconstructor(_format, options) {\n\t\t\t\tconst codec = new Codec(options);\n\t\t\t\tsuper({\n\t\t\t\t\ttransform(chunk, controller) {\n\t\t\t\t\t\tcontroller.enqueue(codec.append(chunk));\n\t\t\t\t\t},\n\t\t\t\t\tflush(controller) {\n\t\t\t\t\t\tconst chunk = codec.flush();\n\t\t\t\t\t\tif (chunk) {\n\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst table = [];\nfor (let i = 0; i < 256; i++) {\n\tlet t = i;\n\tfor (let j = 0; j < 8; j++) {\n\t\tif (t & 1) {\n\t\t\tt = (t >>> 1) ^ 0xEDB88320;\n\t\t} else {\n\t\t\tt = t >>> 1;\n\t\t}\n\t}\n\ttable[i] = t;\n}\n\nclass Crc32 {\n\n\tconstructor(crc) {\n\t\tthis.crc = crc || -1;\n\t}\n\n\tappend(data) {\n\t\tlet crc = this.crc | 0;\n\t\tfor (let offset = 0, length = data.length | 0; offset < length; offset++) {\n\t\t\tcrc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF];\n\t\t}\n\t\tthis.crc = crc;\n\t}\n\n\tget() {\n\t\treturn ~this.crc;\n\t}\n}\n\nexport {\n\tCrc32\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n\nimport { Crc32 } from \"./codecs/crc32.js\";\n\nclass Crc32Stream extends TransformStream {\n\n\tconstructor() {\n\t\t// deno-lint-ignore prefer-const\n\t\tlet stream;\n\t\tconst crc32 = new Crc32();\n\t\tsuper({\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tcrc32.append(chunk);\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t\tflush() {\n\t\t\t\tconst value = new Uint8Array(4);\n\t\t\t\tconst dataView = new DataView(value.buffer);\n\t\t\t\tdataView.setUint32(0, crc32.get());\n\t\t\t\tstream.value = value;\n\t\t\t}\n\t\t});\n\t\tstream = this;\n\t}\n}\n\nexport {\n\tCrc32Stream\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TextEncoder */\n\nimport { UNDEFINED_TYPE } from \"../constants.js\";\n\nexport {\n\tencodeText\n};\n\nfunction encodeText(value) {\n\t// deno-lint-ignore valid-typeof\n\tif (typeof TextEncoder == UNDEFINED_TYPE) {\n\t\tvalue = unescape(encodeURIComponent(value));\n\t\tconst result = new Uint8Array(value.length);\n\t\tfor (let i = 0; i < result.length; i++) {\n\t\t\tresult[i] = value.charCodeAt(i);\n\t\t}\n\t\treturn result;\n\t} else {\n\t\treturn new TextEncoder().encode(value);\n\t}\n}", "// Derived from https://github.com/xqdoo00o/jszip/blob/master/lib/sjcl.js and https://github.com/bitwiseshiftleft/sjcl\n\n// deno-lint-ignore-file no-this-alias\n\n/*\n * SJCL is open. You can use, modify and redistribute it under a BSD\n * license or under the GNU GPL, version 2.0.\n */\n\n/** @fileOverview Javascript cryptography implementation.\n *\n * Crush to remove comments, shorten variable names and\n * generally reduce transmission size.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */\n\n/** @fileOverview Arrays of bits, encoded as arrays of Numbers.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/**\n * Arrays of bits, encoded as arrays of Numbers.\n * @namespace\n * @description\n * <p>\n * These objects are the currency accepted by SJCL's crypto functions.\n * </p>\n *\n * <p>\n * Most of our crypto primitives operate on arrays of 4-byte words internally,\n * but many of them can take arguments that are not a multiple of 4 bytes.\n * This library encodes arrays of bits (whose size need not be a multiple of 8\n * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an\n * array of words, 32 bits at a time. Since the words are double-precision\n * floating point numbers, they fit some extra data. We use this (in a private,\n * possibly-changing manner) to encode the number of bits actually present\n * in the last word of the array.\n * </p>\n *\n * <p>\n * Because bitwise ops clear this out-of-band data, these arrays can be passed\n * to ciphers like AES which want arrays of words.\n * </p>\n */\nconst bitArray = {\n\t/**\n\t * Concatenate two bit arrays.\n\t * @param {bitArray} a1 The first array.\n\t * @param {bitArray} a2 The second array.\n\t * @return {bitArray} The concatenation of a1 and a2.\n\t */\n\tconcat(a1, a2) {\n\t\tif (a1.length === 0 || a2.length === 0) {\n\t\t\treturn a1.concat(a2);\n\t\t}\n\n\t\tconst last = a1[a1.length - 1], shift = bitArray.getPartial(last);\n\t\tif (shift === 32) {\n\t\t\treturn a1.concat(a2);\n\t\t} else {\n\t\t\treturn bitArray._shiftRight(a2, shift, last | 0, a1.slice(0, a1.length - 1));\n\t\t}\n\t},\n\n\t/**\n\t * Find the length of an array of bits.\n\t * @param {bitArray} a The array.\n\t * @return {Number} The length of a, in bits.\n\t */\n\tbitLength(a) {\n\t\tconst l = a.length;\n\t\tif (l === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tconst x = a[l - 1];\n\t\treturn (l - 1) * 32 + bitArray.getPartial(x);\n\t},\n\n\t/**\n\t * Truncate an array.\n\t * @param {bitArray} a The array.\n\t * @param {Number} len The length to truncate to, in bits.\n\t * @return {bitArray} A new array, truncated to len bits.\n\t */\n\tclamp(a, len) {\n\t\tif (a.length * 32 < len) {\n\t\t\treturn a;\n\t\t}\n\t\ta = a.slice(0, Math.ceil(len / 32));\n\t\tconst l = a.length;\n\t\tlen = len & 31;\n\t\tif (l > 0 && len) {\n\t\t\ta[l - 1] = bitArray.partial(len, a[l - 1] & 0x80000000 >> (len - 1), 1);\n\t\t}\n\t\treturn a;\n\t},\n\n\t/**\n\t * Make a partial word for a bit array.\n\t * @param {Number} len The number of bits in the word.\n\t * @param {Number} x The bits.\n\t * @param {Number} [_end=0] Pass 1 if x has already been shifted to the high side.\n\t * @return {Number} The partial word.\n\t */\n\tpartial(len, x, _end) {\n\t\tif (len === 32) {\n\t\t\treturn x;\n\t\t}\n\t\treturn (_end ? x | 0 : x << (32 - len)) + len * 0x10000000000;\n\t},\n\n\t/**\n\t * Get the number of bits used by a partial word.\n\t * @param {Number} x The partial word.\n\t * @return {Number} The number of bits used by the partial word.\n\t */\n\tgetPartial(x) {\n\t\treturn Math.round(x / 0x10000000000) || 32;\n\t},\n\n\t/** Shift an array right.\n\t * @param {bitArray} a The array to shift.\n\t * @param {Number} shift The number of bits to shift.\n\t * @param {Number} [carry=0] A byte to carry in\n\t * @param {bitArray} [out=[]] An array to prepend to the output.\n\t * @private\n\t */\n\t_shiftRight(a, shift, carry, out) {\n\t\tif (out === undefined) {\n\t\t\tout = [];\n\t\t}\n\n\t\tfor (; shift >= 32; shift -= 32) {\n\t\t\tout.push(carry);\n\t\t\tcarry = 0;\n\t\t}\n\t\tif (shift === 0) {\n\t\t\treturn out.concat(a);\n\t\t}\n\n\t\tfor (let i = 0; i < a.length; i++) {\n\t\t\tout.push(carry | a[i] >>> shift);\n\t\t\tcarry = a[i] << (32 - shift);\n\t\t}\n\t\tconst last2 = a.length ? a[a.length - 1] : 0;\n\t\tconst shift2 = bitArray.getPartial(last2);\n\t\tout.push(bitArray.partial(shift + shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(), 1));\n\t\treturn out;\n\t}\n};\n\n/** @fileOverview Bit array codec implementations.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/**\n * Arrays of bytes\n * @namespace\n */\nconst codec = {\n\tbytes: {\n\t\t/** Convert from a bitArray to an array of bytes. */\n\t\tfromBits(arr) {\n\t\t\tconst bl = bitArray.bitLength(arr);\n\t\t\tconst byteLength = bl / 8;\n\t\t\tconst out = new Uint8Array(byteLength);\n\t\t\tlet tmp;\n\t\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\t\tif ((i & 3) === 0) {\n\t\t\t\t\ttmp = arr[i / 4];\n\t\t\t\t}\n\t\t\t\tout[i] = tmp >>> 24;\n\t\t\t\ttmp <<= 8;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\t/** Convert from an array of bytes to a bitArray. */\n\t\ttoBits(bytes) {\n\t\t\tconst out = [];\n\t\t\tlet i;\n\t\t\tlet tmp = 0;\n\t\t\tfor (i = 0; i < bytes.length; i++) {\n\t\t\t\ttmp = tmp << 8 | bytes[i];\n\t\t\t\tif ((i & 3) === 3) {\n\t\t\t\t\tout.push(tmp);\n\t\t\t\t\ttmp = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (i & 3) {\n\t\t\t\tout.push(bitArray.partial(8 * (i & 3), tmp));\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t}\n};\n\nconst hash = {};\n\n/**\n * Context for a SHA-1 operation in progress.\n * @constructor\n */\nhash.sha1 = class {\n\tconstructor(hash) {\n\t\tconst sha1 = this;\n\t\t/**\n\t\t * The hash's block size, in bits.\n\t\t * @constant\n\t\t */\n\t\tsha1.blockSize = 512;\n\t\t/**\n\t\t * The SHA-1 initialization vector.\n\t\t * @private\n\t\t */\n\t\tsha1._init = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0];\n\t\t/**\n\t\t * The SHA-1 hash key.\n\t\t * @private\n\t\t */\n\t\tsha1._key = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];\n\t\tif (hash) {\n\t\t\tsha1._h = hash._h.slice(0);\n\t\t\tsha1._buffer = hash._buffer.slice(0);\n\t\t\tsha1._length = hash._length;\n\t\t} else {\n\t\t\tsha1.reset();\n\t\t}\n\t}\n\n\t/**\n\t * Reset the hash state.\n\t * @return this\n\t */\n\treset() {\n\t\tconst sha1 = this;\n\t\tsha1._h = sha1._init.slice(0);\n\t\tsha1._buffer = [];\n\t\tsha1._length = 0;\n\t\treturn sha1;\n\t}\n\n\t/**\n\t * Input several words to the hash.\n\t * @param {bitArray|String} data the data to hash.\n\t * @return this\n\t */\n\tupdate(data) {\n\t\tconst sha1 = this;\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = codec.utf8String.toBits(data);\n\t\t}\n\t\tconst b = sha1._buffer = bitArray.concat(sha1._buffer, data);\n\t\tconst ol = sha1._length;\n\t\tconst nl = sha1._length = ol + bitArray.bitLength(data);\n\t\tif (nl > 9007199254740991) {\n\t\t\tthrow new Error(\"Cannot hash more than 2^53 - 1 bits\");\n\t\t}\n\t\tconst c = new Uint32Array(b);\n\t\tlet j = 0;\n\t\tfor (let i = sha1.blockSize + ol - ((sha1.blockSize + ol) & (sha1.blockSize - 1)); i <= nl;\n\t\t\ti += sha1.blockSize) {\n\t\t\tsha1._block(c.subarray(16 * j, 16 * (j + 1)));\n\t\t\tj += 1;\n\t\t}\n\t\tb.splice(0, 16 * j);\n\t\treturn sha1;\n\t}\n\n\t/**\n\t * Complete hashing and output the hash value.\n\t * @return {bitArray} The hash value, an array of 5 big-endian words. TODO\n\t */\n\tfinalize() {\n\t\tconst sha1 = this;\n\t\tlet b = sha1._buffer;\n\t\tconst h = sha1._h;\n\n\t\t// Round out and push the buffer\n\t\tb = bitArray.concat(b, [bitArray.partial(1, 1)]);\n\t\t// Round out the buffer to a multiple of 16 words, less the 2 length words.\n\t\tfor (let i = b.length + 2; i & 15; i++) {\n\t\t\tb.push(0);\n\t\t}\n\n\t\t// append the length\n\t\tb.push(Math.floor(sha1._length / 0x100000000));\n\t\tb.push(sha1._length | 0);\n\n\t\twhile (b.length) {\n\t\t\tsha1._block(b.splice(0, 16));\n\t\t}\n\n\t\tsha1.reset();\n\t\treturn h;\n\t}\n\n\t/**\n\t * The SHA-1 logical functions f(0), f(1), ..., f(79).\n\t * @private\n\t */\n\t_f(t, b, c, d) {\n\t\tif (t <= 19) {\n\t\t\treturn (b & c) | (~b & d);\n\t\t} else if (t <= 39) {\n\t\t\treturn b ^ c ^ d;\n\t\t} else if (t <= 59) {\n\t\t\treturn (b & c) | (b & d) | (c & d);\n\t\t} else if (t <= 79) {\n\t\t\treturn b ^ c ^ d;\n\t\t}\n\t}\n\n\t/**\n\t * Circular left-shift operator.\n\t * @private\n\t */\n\t_S(n, x) {\n\t\treturn (x << n) | (x >>> 32 - n);\n\t}\n\n\t/**\n\t * Perform one cycle of SHA-1.\n\t * @param {Uint32Array|bitArray} words one block of words.\n\t * @private\n\t */\n\t_block(words) {\n\t\tconst sha1 = this;\n\t\tconst h = sha1._h;\n\t\t// When words is passed to _block, it has 16 elements. SHA1 _block\n\t\t// function extends words with new elements (at the end there are 80 elements). \n\t\t// The problem is that if we use Uint32Array instead of Array, \n\t\t// the length of Uint32Array cannot be changed. Thus, we replace words with a \n\t\t// normal Array here.\n\t\tconst w = Array(80); // do not use Uint32Array here as the instantiation is slower\n\t\tfor (let j = 0; j < 16; j++) {\n\t\t\tw[j] = words[j];\n\t\t}\n\n\t\tlet a = h[0];\n\t\tlet b = h[1];\n\t\tlet c = h[2];\n\t\tlet d = h[3];\n\t\tlet e = h[4];\n\n\t\tfor (let t = 0; t <= 79; t++) {\n\t\t\tif (t >= 16) {\n\t\t\t\tw[t] = sha1._S(1, w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]);\n\t\t\t}\n\t\t\tconst tmp = (sha1._S(5, a) + sha1._f(t, b, c, d) + e + w[t] +\n\t\t\t\tsha1._key[Math.floor(t / 20)]) | 0;\n\t\t\te = d;\n\t\t\td = c;\n\t\t\tc = sha1._S(30, b);\n\t\t\tb = a;\n\t\t\ta = tmp;\n\t\t}\n\n\t\th[0] = (h[0] + a) | 0;\n\t\th[1] = (h[1] + b) | 0;\n\t\th[2] = (h[2] + c) | 0;\n\t\th[3] = (h[3] + d) | 0;\n\t\th[4] = (h[4] + e) | 0;\n\t}\n};\n\n/** @fileOverview Low-level AES implementation.\n *\n * This file contains a low-level implementation of AES, optimized for\n * size and for efficiency on several browsers. It is based on\n * OpenSSL's aes_core.c, a public-domain implementation by Vincent\n * Rijmen, Antoon Bosselaers and Paulo Barreto.\n *\n * An older version of this implementation is available in the public\n * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,\n * Stanford University 2008-2010 and BSD-licensed for liability\n * reasons.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\nconst cipher = {};\n\n/**\n * Schedule out an AES key for both encryption and decryption. This\n * is a low-level class. Use a cipher mode to do bulk encryption.\n *\n * @constructor\n * @param {Array} key The key as an array of 4, 6 or 8 words.\n */\ncipher.aes = class {\n\tconstructor(key) {\n\t\t/**\n\t\t * The expanded S-box and inverse S-box tables. These will be computed\n\t\t * on the client so that we don't have to send them down the wire.\n\t\t *\n\t\t * There are two tables, _tables[0] is for encryption and\n\t\t * _tables[1] is for decryption.\n\t\t *\n\t\t * The first 4 sub-tables are the expanded S-box with MixColumns. The\n\t\t * last (_tables[01][4]) is the S-box itself.\n\t\t *\n\t\t * @private\n\t\t */\n\t\tconst aes = this;\n\t\taes._tables = [[[], [], [], [], []], [[], [], [], [], []]];\n\n\t\tif (!aes._tables[0][0][0]) {\n\t\t\taes._precompute();\n\t\t}\n\n\t\tconst sbox = aes._tables[0][4];\n\t\tconst decTable = aes._tables[1];\n\t\tconst keyLen = key.length;\n\n\t\tlet i, encKey, decKey, rcon = 1;\n\n\t\tif (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {\n\t\t\tthrow new Error(\"invalid aes key size\");\n\t\t}\n\n\t\taes._key = [encKey = key.slice(0), decKey = []];\n\n\t\t// schedule encryption keys\n\t\tfor (i = keyLen; i < 4 * keyLen + 28; i++) {\n\t\t\tlet tmp = encKey[i - 1];\n\n\t\t\t// apply sbox\n\t\t\tif (i % keyLen === 0 || (keyLen === 8 && i % keyLen === 4)) {\n\t\t\t\ttmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255];\n\n\t\t\t\t// shift rows and add rcon\n\t\t\t\tif (i % keyLen === 0) {\n\t\t\t\t\ttmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24;\n\t\t\t\t\trcon = rcon << 1 ^ (rcon >> 7) * 283;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tencKey[i] = encKey[i - keyLen] ^ tmp;\n\t\t}\n\n\t\t// schedule decryption keys\n\t\tfor (let j = 0; i; j++, i--) {\n\t\t\tconst tmp = encKey[j & 3 ? i : i - 4];\n\t\t\tif (i <= 4 || j < 4) {\n\t\t\t\tdecKey[j] = tmp;\n\t\t\t} else {\n\t\t\t\tdecKey[j] = decTable[0][sbox[tmp >>> 24]] ^\n\t\t\t\t\tdecTable[1][sbox[tmp >> 16 & 255]] ^\n\t\t\t\t\tdecTable[2][sbox[tmp >> 8 & 255]] ^\n\t\t\t\t\tdecTable[3][sbox[tmp & 255]];\n\t\t\t}\n\t\t}\n\t}\n\t// public\n\t/* Something like this might appear here eventually\n\tname: \"AES\",\n\tblockSize: 4,\n\tkeySizes: [4,6,8],\n\t*/\n\n\t/**\n\t * Encrypt an array of 4 big-endian words.\n\t * @param {Array} data The plaintext.\n\t * @return {Array} The ciphertext.\n\t */\n\tencrypt(data) {\n\t\treturn this._crypt(data, 0);\n\t}\n\n\t/**\n\t * Decrypt an array of 4 big-endian words.\n\t * @param {Array} data The ciphertext.\n\t * @return {Array} The plaintext.\n\t */\n\tdecrypt(data) {\n\t\treturn this._crypt(data, 1);\n\t}\n\n\t/**\n\t * Expand the S-box tables.\n\t *\n\t * @private\n\t */\n\t_precompute() {\n\t\tconst encTable = this._tables[0];\n\t\tconst decTable = this._tables[1];\n\t\tconst sbox = encTable[4];\n\t\tconst sboxInv = decTable[4];\n\t\tconst d = [];\n\t\tconst th = [];\n\t\tlet xInv, x2, x4, x8;\n\n\t\t// Compute double and third tables\n\t\tfor (let i = 0; i < 256; i++) {\n\t\t\tth[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i;\n\t\t}\n\n\t\tfor (let x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {\n\t\t\t// Compute sbox\n\t\t\tlet s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n\t\t\ts = s >> 8 ^ s & 255 ^ 99;\n\t\t\tsbox[x] = s;\n\t\t\tsboxInv[s] = x;\n\n\t\t\t// Compute MixColumns\n\t\t\tx8 = d[x4 = d[x2 = d[x]]];\n\t\t\tlet tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n\t\t\tlet tEnc = d[s] * 0x101 ^ s * 0x1010100;\n\n\t\t\tfor (let i = 0; i < 4; i++) {\n\t\t\t\tencTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n\t\t\t\tdecTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8;\n\t\t\t}\n\t\t}\n\n\t\t// Compactify. Considerable speedup on Firefox.\n\t\tfor (let i = 0; i < 5; i++) {\n\t\t\tencTable[i] = encTable[i].slice(0);\n\t\t\tdecTable[i] = decTable[i].slice(0);\n\t\t}\n\t}\n\n\t/**\n\t * Encryption and decryption core.\n\t * @param {Array} input Four words to be encrypted or decrypted.\n\t * @param dir The direction, 0 for encrypt and 1 for decrypt.\n\t * @return {Array} The four encrypted or decrypted words.\n\t * @private\n\t */\n\t_crypt(input, dir) {\n\t\tif (input.length !== 4) {\n\t\t\tthrow new Error(\"invalid aes block size\");\n\t\t}\n\n\t\tconst key = this._key[dir];\n\n\t\tconst nInnerRounds = key.length / 4 - 2;\n\t\tconst out = [0, 0, 0, 0];\n\t\tconst table = this._tables[dir];\n\n\t\t// load up the tables\n\t\tconst t0 = table[0];\n\t\tconst t1 = table[1];\n\t\tconst t2 = table[2];\n\t\tconst t3 = table[3];\n\t\tconst sbox = table[4];\n\n\t\t// state variables a,b,c,d are loaded with pre-whitened data\n\t\tlet a = input[0] ^ key[0];\n\t\tlet b = input[dir ? 3 : 1] ^ key[1];\n\t\tlet c = input[2] ^ key[2];\n\t\tlet d = input[dir ? 1 : 3] ^ key[3];\n\t\tlet kIndex = 4;\n\t\tlet a2, b2, c2;\n\n\t\t// Inner rounds. Cribbed from OpenSSL.\n\t\tfor (let i = 0; i < nInnerRounds; i++) {\n\t\t\ta2 = t0[a >>> 24] ^ t1[b >> 16 & 255] ^ t2[c >> 8 & 255] ^ t3[d & 255] ^ key[kIndex];\n\t\t\tb2 = t0[b >>> 24] ^ t1[c >> 16 & 255] ^ t2[d >> 8 & 255] ^ t3[a & 255] ^ key[kIndex + 1];\n\t\t\tc2 = t0[c >>> 24] ^ t1[d >> 16 & 255] ^ t2[a >> 8 & 255] ^ t3[b & 255] ^ key[kIndex + 2];\n\t\t\td = t0[d >>> 24] ^ t1[a >> 16 & 255] ^ t2[b >> 8 & 255] ^ t3[c & 255] ^ key[kIndex + 3];\n\t\t\tkIndex += 4;\n\t\t\ta = a2; b = b2; c = c2;\n\t\t}\n\n\t\t// Last round.\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tout[dir ? 3 & -i : i] =\n\t\t\t\tsbox[a >>> 24] << 24 ^\n\t\t\t\tsbox[b >> 16 & 255] << 16 ^\n\t\t\t\tsbox[c >> 8 & 255] << 8 ^\n\t\t\t\tsbox[d & 255] ^\n\t\t\t\tkey[kIndex++];\n\t\t\ta2 = a; a = b; b = c; c = d; d = a2;\n\t\t}\n\n\t\treturn out;\n\t}\n};\n\n/**\n * Random values\n * @namespace\n */\nconst random = {\n\t/** \n\t * Generate random words with pure js, cryptographically not as strong & safe as native implementation.\n\t * @param {TypedArray} typedArray The array to fill.\n\t * @return {TypedArray} The random values.\n\t */\n\tgetRandomValues(typedArray) {\n\t\tconst words = new Uint32Array(typedArray.buffer);\n\t\tconst r = (m_w) => {\n\t\t\tlet m_z = 0x3ade68b1;\n\t\t\tconst mask = 0xffffffff;\n\t\t\treturn function () {\n\t\t\t\tm_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t\t\t\tm_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t\t\t\tconst result = ((((m_z << 0x10) + m_w) & mask) / 0x100000000) + .5;\n\t\t\t\treturn result * (Math.random() > .5 ? 1 : -1);\n\t\t\t};\n\t\t};\n\t\tfor (let i = 0, rcache; i < typedArray.length; i += 4) {\n\t\t\tconst _r = r((rcache || Math.random()) * 0x100000000);\n\t\t\trcache = _r() * 0x3ade67b7;\n\t\t\twords[i / 4] = (_r() * 0x100000000) | 0;\n\t\t}\n\t\treturn typedArray;\n\t}\n};\n\n/** @fileOverview CTR mode implementation.\n *\n * Special thanks to Roy Nicholson for pointing out a bug in our\n * implementation.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/** Brian Gladman's CTR Mode.\n* @constructor\n* @param {Object} _prf The aes instance to generate key.\n* @param {bitArray} _iv The iv for ctr mode, it must be 128 bits.\n*/\n\nconst mode = {};\n\n/**\n * Brian Gladman's CTR Mode.\n * @namespace\n */\nmode.ctrGladman = class {\n\tconstructor(prf, iv) {\n\t\tthis._prf = prf;\n\t\tthis._initIv = iv;\n\t\tthis._iv = iv;\n\t}\n\n\treset() {\n\t\tthis._iv = this._initIv;\n\t}\n\n\t/** Input some data to calculate.\n\t * @param {bitArray} data the data to process, it must be intergral multiple of 128 bits unless it's the last.\n\t */\n\tupdate(data) {\n\t\treturn this.calculate(this._prf, data, this._iv);\n\t}\n\n\tincWord(word) {\n\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tlet b1 = (word >> 16) & 0xff;\n\t\t\tlet b2 = (word >> 8) & 0xff;\n\t\t\tlet b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) { // overflow b1 \n\t\t\t\tb1 = 0;\n\t\t\t\tif (b2 === 0xff) {\n\t\t\t\t\tb2 = 0;\n\t\t\t\t\tif (b3 === 0xff) {\n\t\t\t\t\t\tb3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t++b3;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t++b2;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t} else {\n\t\t\tword += (0x01 << 24);\n\t\t}\n\t\treturn word;\n\t}\n\n\tincCounter(counter) {\n\t\tif ((counter[0] = this.incWord(counter[0])) === 0) {\n\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\tcounter[1] = this.incWord(counter[1]);\n\t\t}\n\t}\n\n\tcalculate(prf, data, iv) {\n\t\tlet l;\n\t\tif (!(l = data.length)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst bl = bitArray.bitLength(data);\n\t\tfor (let i = 0; i < l; i += 4) {\n\t\t\tthis.incCounter(iv);\n\t\t\tconst e = prf.encrypt(iv);\n\t\t\tdata[i] ^= e[0];\n\t\t\tdata[i + 1] ^= e[1];\n\t\t\tdata[i + 2] ^= e[2];\n\t\t\tdata[i + 3] ^= e[3];\n\t\t}\n\t\treturn bitArray.clamp(data, bl);\n\t}\n};\n\nconst misc = {\n\timportKey(password) {\n\t\treturn new misc.hmacSha1(codec.bytes.toBits(password));\n\t},\n\tpbkdf2(prf, salt, count, length) {\n\t\tcount = count || 10000;\n\t\tif (length < 0 || count < 0) {\n\t\t\tthrow new Error(\"invalid params to pbkdf2\");\n\t\t}\n\t\tconst byteLength = ((length >> 5) + 1) << 2;\n\t\tlet u, ui, i, j, k;\n\t\tconst arrayBuffer = new ArrayBuffer(byteLength);\n\t\tconst out = new DataView(arrayBuffer);\n\t\tlet outLength = 0;\n\t\tconst b = bitArray;\n\t\tsalt = codec.bytes.toBits(salt);\n\t\tfor (k = 1; outLength < (byteLength || 1); k++) {\n\t\t\tu = ui = prf.encrypt(b.concat(salt, [k]));\n\t\t\tfor (i = 1; i < count; i++) {\n\t\t\t\tui = prf.encrypt(ui);\n\t\t\t\tfor (j = 0; j < ui.length; j++) {\n\t\t\t\t\tu[j] ^= ui[j];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (i = 0; outLength < (byteLength || 1) && i < u.length; i++) {\n\t\t\t\tout.setInt32(outLength, u[i]);\n\t\t\t\toutLength += 4;\n\t\t\t}\n\t\t}\n\t\treturn arrayBuffer.slice(0, length / 8);\n\t}\n};\n\n/** @fileOverview HMAC implementation.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/** HMAC with the specified hash function.\n * @constructor\n * @param {bitArray} key the key for HMAC.\n * @param {Object} [Hash=hash.sha1] The hash function to use.\n */\nmisc.hmacSha1 = class {\n\n\tconstructor(key) {\n\t\tconst hmac = this;\n\t\tconst Hash = hmac._hash = hash.sha1;\n\t\tconst exKey = [[], []];\n\t\thmac._baseHash = [new Hash(), new Hash()];\n\t\tconst bs = hmac._baseHash[0].blockSize / 32;\n\n\t\tif (key.length > bs) {\n\t\t\tkey = new Hash().update(key).finalize();\n\t\t}\n\n\t\tfor (let i = 0; i < bs; i++) {\n\t\t\texKey[0][i] = key[i] ^ 0x36363636;\n\t\t\texKey[1][i] = key[i] ^ 0x5C5C5C5C;\n\t\t}\n\n\t\thmac._baseHash[0].update(exKey[0]);\n\t\thmac._baseHash[1].update(exKey[1]);\n\t\thmac._resultHash = new Hash(hmac._baseHash[0]);\n\t}\n\treset() {\n\t\tconst hmac = this;\n\t\thmac._resultHash = new hmac._hash(hmac._baseHash[0]);\n\t\thmac._updated = false;\n\t}\n\n\tupdate(data) {\n\t\tconst hmac = this;\n\t\thmac._updated = true;\n\t\thmac._resultHash.update(data);\n\t}\n\n\tdigest() {\n\t\tconst hmac = this;\n\t\tconst w = hmac._resultHash.finalize();\n\t\tconst result = new (hmac._hash)(hmac._baseHash[1]).update(w).finalize();\n\n\t\thmac.reset();\n\n\t\treturn result;\n\t}\n\n\tencrypt(data) {\n\t\tif (!this._updated) {\n\t\t\tthis.update(data);\n\t\t\treturn this.digest(data);\n\t\t} else {\n\t\t\tthrow new Error(\"encrypt on already updated hmac called!\");\n\t\t}\n\t}\n};\n\nexport {\n\tcipher,\n\tcodec,\n\tmisc,\n\tmode,\n\trandom\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global crypto */\n\nimport { FUNCTION_TYPE, UNDEFINED_TYPE } from \"../constants.js\";\nimport {\n\trandom\n} from \"./codecs/sjcl.js\";\n\nconst GET_RANDOM_VALUES_SUPPORTED = typeof crypto != UNDEFINED_TYPE && typeof crypto.getRandomValues == FUNCTION_TYPE;\n\nconst ERR_INVALID_PASSWORD = \"Invalid password\";\nconst ERR_INVALID_SIGNATURE = \"Invalid signature\";\nconst ERR_ABORT_CHECK_PASSWORD = \"zipjs-abort-check-password\";\n\nexport {\n\tgetRandomValues,\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD\n};\n\nfunction getRandomValues(array) {\n\tif (GET_RANDOM_VALUES_SUPPORTED) {\n\t\treturn crypto.getRandomValues(array);\n\t} else {\n\t\treturn random.getRandomValues(array);\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global crypto, TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport { UNDEFINED_VALUE, UNDEFINED_TYPE, FUNCTION_TYPE } from \"../constants.js\";\nimport { encodeText } from \"./../util/encode-text.js\";\nimport {\n\tcipher,\n\tcodec,\n\tmisc,\n\tmode\n} from \"./codecs/sjcl.js\";\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD,\n\tgetRandomValues\n} from \"./common-crypto.js\";\n\nconst BLOCK_LENGTH = 16;\nconst RAW_FORMAT = \"raw\";\nconst PBKDF2_ALGORITHM = { name: \"PBKDF2\" };\nconst HASH_ALGORITHM = { name: \"HMAC\" };\nconst HASH_FUNCTION = \"SHA-1\";\nconst BASE_KEY_ALGORITHM = Object.assign({ hash: HASH_ALGORITHM }, PBKDF2_ALGORITHM);\nconst DERIVED_BITS_ALGORITHM = Object.assign({ iterations: 1000, hash: { name: HASH_FUNCTION } }, PBKDF2_ALGORITHM);\nconst DERIVED_BITS_USAGE = [\"deriveBits\"];\nconst SALT_LENGTH = [8, 12, 16];\nconst KEY_LENGTH = [16, 24, 32];\nconst SIGNATURE_LENGTH = 10;\nconst COUNTER_DEFAULT_VALUE = [0, 0, 0, 0];\n// deno-lint-ignore valid-typeof\nconst CRYPTO_API_SUPPORTED = typeof crypto != UNDEFINED_TYPE;\nconst subtle = CRYPTO_API_SUPPORTED && crypto.subtle;\nconst SUBTLE_API_SUPPORTED = CRYPTO_API_SUPPORTED && typeof subtle != UNDEFINED_TYPE;\nconst codecBytes = codec.bytes;\nconst Aes = cipher.aes;\nconst CtrGladman = mode.ctrGladman;\nconst HmacSha1 = misc.hmacSha1;\n\nlet IMPORT_KEY_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.importKey == FUNCTION_TYPE;\nlet DERIVE_BITS_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.deriveBits == FUNCTION_TYPE;\n\nclass AESDecryptionStream extends TransformStream {\n\n\tconstructor({ password, rawPassword, signed, encryptionStrength, checkPasswordOnly }) {\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tready: new Promise(resolve => this.resolveReady = resolve),\n\t\t\t\t\tpassword: encodePassword(password, rawPassword),\n\t\t\t\t\tsigned,\n\t\t\t\t\tstrength: encryptionStrength - 1,\n\t\t\t\t\tpending: new Uint8Array()\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync transform(chunk, controller) {\n\t\t\t\tconst aesCrypto = this;\n\t\t\t\tconst {\n\t\t\t\t\tpassword,\n\t\t\t\t\tstrength,\n\t\t\t\t\tresolveReady,\n\t\t\t\t\tready\n\t\t\t\t} = aesCrypto;\n\t\t\t\tif (password) {\n\t\t\t\t\tawait createDecryptionKeys(aesCrypto, strength, password, subarray(chunk, 0, SALT_LENGTH[strength] + 2));\n\t\t\t\t\tchunk = subarray(chunk, SALT_LENGTH[strength] + 2);\n\t\t\t\t\tif (checkPasswordOnly) {\n\t\t\t\t\t\tcontroller.error(new Error(ERR_ABORT_CHECK_PASSWORD));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolveReady();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tawait ready;\n\t\t\t\t}\n\t\t\t\tconst output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));\n\t\t\t\tcontroller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));\n\t\t\t},\n\t\t\tasync flush(controller) {\n\t\t\t\tconst {\n\t\t\t\t\tsigned,\n\t\t\t\t\tctr,\n\t\t\t\t\thmac,\n\t\t\t\t\tpending,\n\t\t\t\t\tready\n\t\t\t\t} = this;\n\t\t\t\tif (hmac && ctr) {\n\t\t\t\t\tawait ready;\n\t\t\t\t\tconst chunkToDecrypt = subarray(pending, 0, pending.length - SIGNATURE_LENGTH);\n\t\t\t\t\tconst originalSignature = subarray(pending, pending.length - SIGNATURE_LENGTH);\n\t\t\t\t\tlet decryptedChunkArray = new Uint8Array();\n\t\t\t\t\tif (chunkToDecrypt.length) {\n\t\t\t\t\t\tconst encryptedChunk = toBits(codecBytes, chunkToDecrypt);\n\t\t\t\t\t\thmac.update(encryptedChunk);\n\t\t\t\t\t\tconst decryptedChunk = ctr.update(encryptedChunk);\n\t\t\t\t\t\tdecryptedChunkArray = fromBits(codecBytes, decryptedChunk);\n\t\t\t\t\t}\n\t\t\t\t\tif (signed) {\n\t\t\t\t\t\tconst signature = subarray(fromBits(codecBytes, hmac.digest()), 0, SIGNATURE_LENGTH);\n\t\t\t\t\t\tfor (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) {\n\t\t\t\t\t\t\tif (signature[indexSignature] != originalSignature[indexSignature]) {\n\t\t\t\t\t\t\t\tthrow new Error(ERR_INVALID_SIGNATURE);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontroller.enqueue(decryptedChunkArray);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass AESEncryptionStream extends TransformStream {\n\n\tconstructor({ password, rawPassword, encryptionStrength }) {\n\t\t// deno-lint-ignore prefer-const\n\t\tlet stream;\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tready: new Promise(resolve => this.resolveReady = resolve),\n\t\t\t\t\tpassword: encodePassword(password, rawPassword),\n\t\t\t\t\tstrength: encryptionStrength - 1,\n\t\t\t\t\tpending: new Uint8Array()\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync transform(chunk, controller) {\n\t\t\t\tconst aesCrypto = this;\n\t\t\t\tconst {\n\t\t\t\t\tpassword,\n\t\t\t\t\tstrength,\n\t\t\t\t\tresolveReady,\n\t\t\t\t\tready\n\t\t\t\t} = aesCrypto;\n\t\t\t\tlet preamble = new Uint8Array();\n\t\t\t\tif (password) {\n\t\t\t\t\tpreamble = await createEncryptionKeys(aesCrypto, strength, password);\n\t\t\t\t\tresolveReady();\n\t\t\t\t} else {\n\t\t\t\t\tawait ready;\n\t\t\t\t}\n\t\t\t\tconst output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));\n\t\t\t\toutput.set(preamble, 0);\n\t\t\t\tcontroller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));\n\t\t\t},\n\t\t\tasync flush(controller) {\n\t\t\t\tconst {\n\t\t\t\t\tctr,\n\t\t\t\t\thmac,\n\t\t\t\t\tpending,\n\t\t\t\t\tready\n\t\t\t\t} = this;\n\t\t\t\tif (hmac && ctr) {\n\t\t\t\t\tawait ready;\n\t\t\t\t\tlet encryptedChunkArray = new Uint8Array();\n\t\t\t\t\tif (pending.length) {\n\t\t\t\t\t\tconst encryptedChunk = ctr.update(toBits(codecBytes, pending));\n\t\t\t\t\t\thmac.update(encryptedChunk);\n\t\t\t\t\t\tencryptedChunkArray = fromBits(codecBytes, encryptedChunk);\n\t\t\t\t\t}\n\t\t\t\t\tstream.signature = fromBits(codecBytes, hmac.digest()).slice(0, SIGNATURE_LENGTH);\n\t\t\t\t\tcontroller.enqueue(concat(encryptedChunkArray, stream.signature));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tstream = this;\n\t}\n}\n\nexport {\n\tAESDecryptionStream,\n\tAESEncryptionStream,\n\tERR_INVALID_PASSWORD\n};\n\nfunction append(aesCrypto, input, output, paddingStart, paddingEnd, verifySignature) {\n\tconst {\n\t\tctr,\n\t\thmac,\n\t\tpending\n\t} = aesCrypto;\n\tconst inputLength = input.length - paddingEnd;\n\tif (pending.length) {\n\t\tinput = concat(pending, input);\n\t\toutput = expand(output, inputLength - (inputLength % BLOCK_LENGTH));\n\t}\n\tlet offset;\n\tfor (offset = 0; offset <= inputLength - BLOCK_LENGTH; offset += BLOCK_LENGTH) {\n\t\tconst inputChunk = toBits(codecBytes, subarray(input, offset, offset + BLOCK_LENGTH));\n\t\tif (verifySignature) {\n\t\t\thmac.update(inputChunk);\n\t\t}\n\t\tconst outputChunk = ctr.update(inputChunk);\n\t\tif (!verifySignature) {\n\t\t\thmac.update(outputChunk);\n\t\t}\n\t\toutput.set(fromBits(codecBytes, outputChunk), offset + paddingStart);\n\t}\n\taesCrypto.pending = subarray(input, offset);\n\treturn output;\n}\n\nasync function createDecryptionKeys(decrypt, strength, password, preamble) {\n\tconst passwordVerificationKey = await createKeys(decrypt, strength, password, subarray(preamble, 0, SALT_LENGTH[strength]));\n\tconst passwordVerification = subarray(preamble, SALT_LENGTH[strength]);\n\tif (passwordVerificationKey[0] != passwordVerification[0] || passwordVerificationKey[1] != passwordVerification[1]) {\n\t\tthrow new Error(ERR_INVALID_PASSWORD);\n\t}\n}\n\nasync function createEncryptionKeys(encrypt, strength, password) {\n\tconst salt = getRandomValues(new Uint8Array(SALT_LENGTH[strength]));\n\tconst passwordVerification = await createKeys(encrypt, strength, password, salt);\n\treturn concat(salt, passwordVerification);\n}\n\nasync function createKeys(aesCrypto, strength, password, salt) {\n\taesCrypto.password = null;\n\tconst baseKey = await importKey(RAW_FORMAT, password, BASE_KEY_ALGORITHM, false, DERIVED_BITS_USAGE);\n\tconst derivedBits = await deriveBits(Object.assign({ salt }, DERIVED_BITS_ALGORITHM), baseKey, 8 * ((KEY_LENGTH[strength] * 2) + 2));\n\tconst compositeKey = new Uint8Array(derivedBits);\n\tconst key = toBits(codecBytes, subarray(compositeKey, 0, KEY_LENGTH[strength]));\n\tconst authentication = toBits(codecBytes, subarray(compositeKey, KEY_LENGTH[strength], KEY_LENGTH[strength] * 2));\n\tconst passwordVerification = subarray(compositeKey, KEY_LENGTH[strength] * 2);\n\tObject.assign(aesCrypto, {\n\t\tkeys: {\n\t\t\tkey,\n\t\t\tauthentication,\n\t\t\tpasswordVerification\n\t\t},\n\t\tctr: new CtrGladman(new Aes(key), Array.from(COUNTER_DEFAULT_VALUE)),\n\t\thmac: new HmacSha1(authentication)\n\t});\n\treturn passwordVerification;\n}\n\nasync function importKey(format, password, algorithm, extractable, keyUsages) {\n\tif (IMPORT_KEY_SUPPORTED) {\n\t\ttry {\n\t\t\treturn await subtle.importKey(format, password, algorithm, extractable, keyUsages);\n\t\t} catch (_error) {\n\t\t\tIMPORT_KEY_SUPPORTED = false;\n\t\t\treturn misc.importKey(password);\n\t\t}\n\t} else {\n\t\treturn misc.importKey(password);\n\t}\n}\n\nasync function deriveBits(algorithm, baseKey, length) {\n\tif (DERIVE_BITS_SUPPORTED) {\n\t\ttry {\n\t\t\treturn await subtle.deriveBits(algorithm, baseKey, length);\n\t\t} catch (_error) {\n\t\t\tDERIVE_BITS_SUPPORTED = false;\n\t\t\treturn misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length);\n\t\t}\n\t} else {\n\t\treturn misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length);\n\t}\n}\n\nfunction encodePassword(password, rawPassword) {\n\tif (rawPassword === UNDEFINED_VALUE) {\n\t\treturn encodeText(password);\n\t} else {\n\t\treturn rawPassword;\n\t}\n}\n\nfunction concat(leftArray, rightArray) {\n\tlet array = leftArray;\n\tif (leftArray.length + rightArray.length) {\n\t\tarray = new Uint8Array(leftArray.length + rightArray.length);\n\t\tarray.set(leftArray, 0);\n\t\tarray.set(rightArray, leftArray.length);\n\t}\n\treturn array;\n}\n\nfunction expand(inputArray, length) {\n\tif (length && length > inputArray.length) {\n\t\tconst array = inputArray;\n\t\tinputArray = new Uint8Array(length);\n\t\tinputArray.set(array, 0);\n\t}\n\treturn inputArray;\n}\n\nfunction subarray(array, begin, end) {\n\treturn array.subarray(begin, end);\n}\n\nfunction fromBits(codecBytes, chunk) {\n\treturn codecBytes.fromBits(chunk);\n}\nfunction toBits(codecBytes, chunk) {\n\treturn codecBytes.toBits(chunk);\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport { Crc32 } from \"./codecs/crc32.js\";\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_ABORT_CHECK_PASSWORD,\n\tgetRandomValues\n} from \"./common-crypto.js\";\n\nconst HEADER_LENGTH = 12;\n\nclass ZipCryptoDecryptionStream extends TransformStream {\n\n\tconstructor({ password, passwordVerification, checkPasswordOnly }) {\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tpassword,\n\t\t\t\t\tpasswordVerification\n\t\t\t\t});\n\t\t\t\tcreateKeys(this, password);\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tconst zipCrypto = this;\n\t\t\t\tif (zipCrypto.password) {\n\t\t\t\t\tconst decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));\n\t\t\t\t\tzipCrypto.password = null;\n\t\t\t\t\tif (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) {\n\t\t\t\t\t\tthrow new Error(ERR_INVALID_PASSWORD);\n\t\t\t\t\t}\n\t\t\t\t\tchunk = chunk.subarray(HEADER_LENGTH);\n\t\t\t\t}\n\t\t\t\tif (checkPasswordOnly) {\n\t\t\t\t\tcontroller.error(new Error(ERR_ABORT_CHECK_PASSWORD));\n\t\t\t\t} else {\n\t\t\t\t\tcontroller.enqueue(decrypt(zipCrypto, chunk));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass ZipCryptoEncryptionStream extends TransformStream {\n\n\tconstructor({ password, passwordVerification }) {\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tpassword,\n\t\t\t\t\tpasswordVerification\n\t\t\t\t});\n\t\t\t\tcreateKeys(this, password);\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tconst zipCrypto = this;\n\t\t\t\tlet output;\n\t\t\t\tlet offset;\n\t\t\t\tif (zipCrypto.password) {\n\t\t\t\t\tzipCrypto.password = null;\n\t\t\t\t\tconst header = getRandomValues(new Uint8Array(HEADER_LENGTH));\n\t\t\t\t\theader[HEADER_LENGTH - 1] = zipCrypto.passwordVerification;\n\t\t\t\t\toutput = new Uint8Array(chunk.length + header.length);\n\t\t\t\t\toutput.set(encrypt(zipCrypto, header), 0);\n\t\t\t\t\toffset = HEADER_LENGTH;\n\t\t\t\t} else {\n\t\t\t\t\toutput = new Uint8Array(chunk.length);\n\t\t\t\t\toffset = 0;\n\t\t\t\t}\n\t\t\t\toutput.set(encrypt(zipCrypto, chunk), offset);\n\t\t\t\tcontroller.enqueue(output);\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport {\n\tZipCryptoDecryptionStream,\n\tZipCryptoEncryptionStream,\n\tERR_INVALID_PASSWORD\n};\n\nfunction decrypt(target, input) {\n\tconst output = new Uint8Array(input.length);\n\tfor (let index = 0; index < input.length; index++) {\n\t\toutput[index] = getByte(target) ^ input[index];\n\t\tupdateKeys(target, output[index]);\n\t}\n\treturn output;\n}\n\nfunction encrypt(target, input) {\n\tconst output = new Uint8Array(input.length);\n\tfor (let index = 0; index < input.length; index++) {\n\t\toutput[index] = getByte(target) ^ input[index];\n\t\tupdateKeys(target, input[index]);\n\t}\n\treturn output;\n}\n\nfunction createKeys(target, password) {\n\tconst keys = [0x12345678, 0x23456789, 0x34567890];\n\tObject.assign(target, {\n\t\tkeys,\n\t\tcrcKey0: new Crc32(keys[0]),\n\t\tcrcKey2: new Crc32(keys[2]),\n\t});\n\tfor (let index = 0; index < password.length; index++) {\n\t\tupdateKeys(target, password.charCodeAt(index));\n\t}\n}\n\nfunction updateKeys(target, byte) {\n\tlet [key0, key1, key2] = target.keys;\n\ttarget.crcKey0.append([byte]);\n\tkey0 = ~target.crcKey0.get();\n\tkey1 = getInt32(Math.imul(getInt32(key1 + getInt8(key0)), 134775813) + 1);\n\ttarget.crcKey2.append([key1 >>> 24]);\n\tkey2 = ~target.crcKey2.get();\n\ttarget.keys = [key0, key1, key2];\n}\n\nfunction getByte(target) {\n\tconst temp = target.keys[2] | 2;\n\treturn getInt8(Math.imul(temp, (temp ^ 1)) >>> 8);\n}\n\nfunction getInt8(number) {\n\treturn number & 0xFF;\n}\n\nfunction getInt32(number) {\n\treturn number & 0xFFFFFFFF;\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport { Crc32Stream } from \"./crc32-stream.js\";\nimport {\n\tAESEncryptionStream,\n\tAESDecryptionStream\n} from \"./aes-crypto-stream.js\";\nimport {\n\tZipCryptoEncryptionStream,\n\tZipCryptoDecryptionStream\n} from \"./zip-crypto-stream.js\";\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD\n} from \"./common-crypto.js\";\n\nconst COMPRESSION_FORMAT = \"deflate-raw\";\n\nclass DeflateStream extends TransformStream {\n\n\tconstructor(options, { chunkSize, CompressionStream, CompressionStreamNative }) {\n\t\tsuper({});\n\t\tconst { compressed, encrypted, useCompressionStream, zipCrypto, signed, level } = options;\n\t\tconst stream = this;\n\t\tlet crc32Stream, encryptionStream;\n\t\tlet readable = filterEmptyChunks(super.readable);\n\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\tcrc32Stream = new Crc32Stream();\n\t\t\treadable = pipeThrough(readable, crc32Stream);\n\t\t}\n\t\tif (compressed) {\n\t\t\treadable = pipeThroughCommpressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStreamNative, CompressionStream);\n\t\t}\n\t\tif (encrypted) {\n\t\t\tif (zipCrypto) {\n\t\t\t\treadable = pipeThrough(readable, new ZipCryptoEncryptionStream(options));\n\t\t\t} else {\n\t\t\t\tencryptionStream = new AESEncryptionStream(options);\n\t\t\t\treadable = pipeThrough(readable, encryptionStream);\n\t\t\t}\n\t\t}\n\t\tsetReadable(stream, readable, () => {\n\t\t\tlet signature;\n\t\t\tif (encrypted && !zipCrypto) {\n\t\t\t\tsignature = encryptionStream.signature;\n\t\t\t}\n\t\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\t\tsignature = new DataView(crc32Stream.value.buffer).getUint32(0);\n\t\t\t}\n\t\t\tstream.signature = signature;\n\t\t});\n\t}\n}\n\nclass InflateStream extends TransformStream {\n\n\tconstructor(options, { chunkSize, DecompressionStream, DecompressionStreamNative }) {\n\t\tsuper({});\n\t\tconst { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream } = options;\n\t\tlet crc32Stream, decryptionStream;\n\t\tlet readable = filterEmptyChunks(super.readable);\n\t\tif (encrypted) {\n\t\t\tif (zipCrypto) {\n\t\t\t\treadable = pipeThrough(readable, new ZipCryptoDecryptionStream(options));\n\t\t\t} else {\n\t\t\t\tdecryptionStream = new AESDecryptionStream(options);\n\t\t\t\treadable = pipeThrough(readable, decryptionStream);\n\t\t\t}\n\t\t}\n\t\tif (compressed) {\n\t\t\treadable = pipeThroughCommpressionStream(readable, useCompressionStream, { chunkSize }, DecompressionStreamNative, DecompressionStream);\n\t\t}\n\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\tcrc32Stream = new Crc32Stream();\n\t\t\treadable = pipeThrough(readable, crc32Stream);\n\t\t}\n\t\tsetReadable(this, readable, () => {\n\t\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\t\tconst dataViewSignature = new DataView(crc32Stream.value.buffer);\n\t\t\t\tif (signature != dataViewSignature.getUint32(0, false)) {\n\t\t\t\t\tthrow new Error(ERR_INVALID_SIGNATURE);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport {\n\tDeflateStream,\n\tInflateStream,\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD\n};\n\nfunction filterEmptyChunks(readable) {\n\treturn pipeThrough(readable, new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tif (chunk && chunk.length) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t}\n\t\t}\n\t}));\n}\n\nfunction setReadable(stream, readable, flush) {\n\treadable = pipeThrough(readable, new TransformStream({ flush }));\n\tObject.defineProperty(stream, \"readable\", {\n\t\tget() {\n\t\t\treturn readable;\n\t\t}\n\t});\n}\n\nfunction pipeThroughCommpressionStream(readable, useCompressionStream, options, CodecStreamNative, CodecStream) {\n\ttry {\n\t\tconst CompressionStream = useCompressionStream && CodecStreamNative ? CodecStreamNative : CodecStream;\n\t\treadable = pipeThrough(readable, new CompressionStream(COMPRESSION_FORMAT, options));\n\t} catch (_error) {\n\t\tif (useCompressionStream) {\n\t\t\ttry {\n\t\t\t\treadable = pipeThrough(readable, new CodecStream(COMPRESSION_FORMAT, options));\n\t\t\t} catch (_error) {\n\t\t\t\treturn readable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn readable;\n\t\t}\n\t}\n\treturn readable;\n}\n\nfunction pipeThrough(readable, transformStream) {\n\treturn readable.pipeThrough(transformStream);\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * This program is based on JZlib 1.0.2 ymnk, JCraft,Inc.\n * JZlib is based on zlib-1.1.3, so all credit should go authors\n * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu)\n * and contributors of zlib.\n */\n\n/* global TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD,\n\tInflateStream,\n\tDeflateStream\n} from \"./zip-entry-stream.js\";\n\nconst MESSAGE_EVENT_TYPE = \"message\";\nconst MESSAGE_START = \"start\";\nconst MESSAGE_PULL = \"pull\";\nconst MESSAGE_DATA = \"data\";\nconst MESSAGE_ACK_DATA = \"ack\";\nconst MESSAGE_CLOSE = \"close\";\nconst CODEC_DEFLATE = \"deflate\";\nconst CODEC_INFLATE = \"inflate\";\n\nexport {\n\tCODEC_DEFLATE,\n\tCODEC_INFLATE,\n\tMESSAGE_EVENT_TYPE,\n\tMESSAGE_START,\n\tMESSAGE_PULL,\n\tMESSAGE_DATA,\n\tMESSAGE_ACK_DATA,\n\tMESSAGE_CLOSE,\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD,\n\tCodecStream,\n\tChunkStream\n};\n\nclass CodecStream extends TransformStream {\n\n\tconstructor(options, config) {\n\t\tsuper({});\n\t\tconst codec = this;\n\t\tconst { codecType } = options;\n\t\tlet Stream;\n\t\tif (codecType.startsWith(CODEC_DEFLATE)) {\n\t\t\tStream = DeflateStream;\n\t\t} else if (codecType.startsWith(CODEC_INFLATE)) {\n\t\t\tStream = InflateStream;\n\t\t}\n\t\tlet outputSize = 0;\n\t\tlet inputSize = 0;\n\t\tconst stream = new Stream(options, config);\n\t\tconst readable = super.readable;\n\t\tconst inputSizeStream = new TransformStream({\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tif (chunk && chunk.length) {\n\t\t\t\t\tinputSize += chunk.length;\n\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t}\n\t\t\t},\n\t\t\tflush() {\n\t\t\t\tObject.assign(codec, {\n\t\t\t\t\tinputSize\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tconst outputSizeStream = new TransformStream({\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tif (chunk && chunk.length) {\n\t\t\t\t\toutputSize += chunk.length;\n\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t}\n\t\t\t},\n\t\t\tflush() {\n\t\t\t\tconst { signature } = stream;\n\t\t\t\tObject.assign(codec, {\n\t\t\t\t\tsignature,\n\t\t\t\t\toutputSize,\n\t\t\t\t\tinputSize\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(codec, \"readable\", {\n\t\t\tget() {\n\t\t\t\treturn readable.pipeThrough(inputSizeStream).pipeThrough(stream).pipeThrough(outputSizeStream);\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass ChunkStream extends TransformStream {\n\n\tconstructor(chunkSize) {\n\t\tlet pendingChunk;\n\t\tsuper({\n\t\t\ttransform,\n\t\t\tflush(controller) {\n\t\t\t\tif (pendingChunk && pendingChunk.length) {\n\t\t\t\t\tcontroller.enqueue(pendingChunk);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tfunction transform(chunk, controller) {\n\t\t\tif (pendingChunk) {\n\t\t\t\tconst newChunk = new Uint8Array(pendingChunk.length + chunk.length);\n\t\t\t\tnewChunk.set(pendingChunk);\n\t\t\t\tnewChunk.set(chunk, pendingChunk.length);\n\t\t\t\tchunk = newChunk;\n\t\t\t\tpendingChunk = null;\n\t\t\t}\n\t\t\tif (chunk.length > chunkSize) {\n\t\t\t\tcontroller.enqueue(chunk.slice(0, chunkSize));\n\t\t\t\ttransform(chunk.slice(chunkSize), controller);\n\t\t\t} else {\n\t\t\t\tpendingChunk = chunk;\n\t\t\t}\n\t\t}\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global self, importScripts, addEventListener, postMessage, ReadableStream, WritableStream, AbortController */\n\nimport { UNDEFINED_VALUE } from \"./constants.js\";\nimport { StreamAdapter } from \"./streams/stream-adapter.js\";\nimport {\n\tCodecStream,\n\tChunkStream,\n\tMESSAGE_EVENT_TYPE,\n\tMESSAGE_START,\n\tMESSAGE_PULL,\n\tMESSAGE_DATA,\n\tMESSAGE_ACK_DATA,\n\tMESSAGE_CLOSE\n} from \"./streams/codec-stream.js\";\n\nconst pendingPullMessages = new Map();\nconst pendingDataMessages = new Map();\n\nlet abortController, messageId = 0, importScriptSupported = true;\n\naddEventListener(MESSAGE_EVENT_TYPE, ({ data }) => {\n\tconst { type, messageId, value, done } = data;\n\ttry {\n\t\tif (type == MESSAGE_START) {\n\t\t\tinit(data);\n\t\t}\n\t\tif (type == MESSAGE_DATA) {\n\t\t\tconst resolve = pendingPullMessages.get(messageId);\n\t\t\tpendingPullMessages.delete(messageId);\n\t\t\tresolve({ value: new Uint8Array(value), done });\n\t\t}\n\t\tif (type == MESSAGE_ACK_DATA) {\n\t\t\tconst resolve = pendingDataMessages.get(messageId);\n\t\t\tpendingDataMessages.delete(messageId);\n\t\t\tresolve();\n\t\t}\n\t\tif (type == MESSAGE_CLOSE) {\n\t\t\tabortController.abort();\n\t\t}\n\t} catch (error) {\n\t\tsendErrorMessage(error);\n\t}\n});\n\nasync function init(message) {\n\ttry {\n\t\tconst { options, scripts, config } = message;\n\t\tif (scripts && scripts.length) {\n\t\t\ttry {\n\t\t\t\tif (importScriptSupported) {\n\t\t\t\t\timportScripts.apply(UNDEFINED_VALUE, scripts);\n\t\t\t\t} else {\n\t\t\t\t\tawait imporModuleScripts(scripts);\n\t\t\t\t}\n\t\t\t} catch (_error) {\n\t\t\t\timportScriptSupported = false;\n\t\t\t\tawait imporModuleScripts(scripts);\n\t\t\t}\n\t\t}\n\t\tif (self.initCodec) {\n\t\t\tself.initCodec();\n\t\t}\n\t\tconfig.CompressionStreamNative = self.CompressionStream;\n\t\tconfig.DecompressionStreamNative = self.DecompressionStream;\n\t\tif (self.Deflate) {\n\t\t\tconfig.CompressionStream = new StreamAdapter(self.Deflate);\n\t\t}\n\t\tif (self.Inflate) {\n\t\t\tconfig.DecompressionStream = new StreamAdapter(self.Inflate);\n\t\t}\n\t\tconst strategy = { highWaterMark: 1 };\n\t\tconst readable = message.readable || new ReadableStream({\n\t\t\tasync pull(controller) {\n\t\t\t\tconst result = new Promise(resolve => pendingPullMessages.set(messageId, resolve));\n\t\t\t\tsendMessage({ type: MESSAGE_PULL, messageId });\n\t\t\t\tmessageId = (messageId + 1) % Number.MAX_SAFE_INTEGER;\n\t\t\t\tconst { value, done } = await result;\n\t\t\t\tcontroller.enqueue(value);\n\t\t\t\tif (done) {\n\t\t\t\t\tcontroller.close();\n\t\t\t\t}\n\t\t\t}\n\t\t}, strategy);\n\t\tconst writable = message.writable || new WritableStream({\n\t\t\tasync write(value) {\n\t\t\t\tlet resolveAckData;\n\t\t\t\tconst ackData = new Promise(resolve => resolveAckData = resolve);\n\t\t\t\tpendingDataMessages.set(messageId, resolveAckData);\n\t\t\t\tsendMessage({ type: MESSAGE_DATA, value, messageId });\n\t\t\t\tmessageId = (messageId + 1) % Number.MAX_SAFE_INTEGER;\n\t\t\t\tawait ackData;\n\t\t\t}\n\t\t}, strategy);\n\t\tconst codecStream = new CodecStream(options, config);\n\t\tabortController = new AbortController();\n\t\tconst { signal } = abortController;\n\t\tawait readable\n\t\t\t.pipeThrough(codecStream)\n\t\t\t.pipeThrough(new ChunkStream(config.chunkSize))\n\t\t\t.pipeTo(writable, { signal, preventClose: true, preventAbort: true });\n\t\tawait writable.getWriter().close();\n\t\tconst {\n\t\t\tsignature,\n\t\t\tinputSize,\n\t\t\toutputSize\n\t\t} = codecStream;\n\t\tsendMessage({\n\t\t\ttype: MESSAGE_CLOSE,\n\t\t\tresult: {\n\t\t\t\tsignature,\n\t\t\t\tinputSize,\n\t\t\t\toutputSize\n\t\t\t}\n\t\t});\n\t} catch (error) {\n\t\tsendErrorMessage(error);\n\t}\n}\n\nasync function imporModuleScripts(scripts) {\n\tfor (const script of scripts) {\n\t\tawait import(script);\n\t}\n}\n\nfunction sendMessage(message) {\n\tlet { value } = message;\n\tif (value) {\n\t\tif (value.length) {\n\t\t\ttry {\n\t\t\t\tvalue = new Uint8Array(value);\n\t\t\t\tmessage.value = value.buffer;\n\t\t\t\tpostMessage(message, [message.value]);\n\t\t\t} catch (_error) {\n\t\t\t\tpostMessage(message);\n\t\t\t}\n\t\t} else {\n\t\t\tpostMessage(message);\n\t\t}\n\t} else {\n\t\tpostMessage(message);\n\t}\n}\n\nfunction sendErrorMessage(error = new Error(\"Unknown error\")) {\n\tconst { message, stack, code, name } = error;\n\tpostMessage({ error: { message, stack, code, name } });\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * This program is based on JZlib 1.0.2 ymnk, JCraft,Inc.\n * JZlib is based on zlib-1.1.3, so all credit should go authors\n * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu)\n * and contributors of zlib.\n */\n\n// deno-lint-ignore-file no-this-alias prefer-const\n\n// Global\n\nconst MAX_BITS = 15;\nconst D_CODES = 30;\nconst BL_CODES = 19;\n\nconst LENGTH_CODES = 29;\nconst LITERALS = 256;\nconst L_CODES = (LITERALS + 1 + LENGTH_CODES);\nconst HEAP_SIZE = (2 * L_CODES + 1);\n\nconst END_BLOCK = 256;\n\n// Bit length codes must not exceed MAX_BL_BITS bits\nconst MAX_BL_BITS = 7;\n\n// repeat previous bit length 3-6 times (2 bits of repeat count)\nconst REP_3_6 = 16;\n\n// repeat a zero length 3-10 times (3 bits of repeat count)\nconst REPZ_3_10 = 17;\n\n// repeat a zero length 11-138 times (7 bits of repeat count)\nconst REPZ_11_138 = 18;\n\n// The lengths of the bit length codes are sent in order of decreasing\n// probability, to avoid transmitting the lengths for unused bit\n// length codes.\n\nconst Buf_size = 8 * 2;\n\n// JZlib version : \"1.0.2\"\nconst Z_DEFAULT_COMPRESSION = -1;\n\n// compression strategy\nconst Z_FILTERED = 1;\nconst Z_HUFFMAN_ONLY = 2;\nconst Z_DEFAULT_STRATEGY = 0;\n\nconst Z_NO_FLUSH = 0;\nconst Z_PARTIAL_FLUSH = 1;\nconst Z_FULL_FLUSH = 3;\nconst Z_FINISH = 4;\n\nconst Z_OK = 0;\nconst Z_STREAM_END = 1;\nconst Z_NEED_DICT = 2;\nconst Z_STREAM_ERROR = -2;\nconst Z_DATA_ERROR = -3;\nconst Z_BUF_ERROR = -5;\n\n// Tree\n\nfunction extractArray(array) {\n\treturn flatArray(array.map(([length, value]) => (new Array(length)).fill(value, 0, length)));\n}\n\nfunction flatArray(array) {\n\treturn array.reduce((a, b) => a.concat(Array.isArray(b) ? flatArray(b) : b), []);\n}\n\n// see definition of array dist_code below\nconst _dist_code = [0, 1, 2, 3].concat(...extractArray([\n\t[2, 4], [2, 5], [4, 6], [4, 7], [8, 8], [8, 9], [16, 10], [16, 11], [32, 12], [32, 13], [64, 14], [64, 15], [2, 0], [1, 16],\n\t[1, 17], [2, 18], [2, 19], [4, 20], [4, 21], [8, 22], [8, 23], [16, 24], [16, 25], [32, 26], [32, 27], [64, 28], [64, 29]\n]));\n\nfunction Tree() {\n\tconst that = this;\n\n\t// dyn_tree; // the dynamic tree\n\t// max_code; // largest code with non zero frequency\n\t// stat_desc; // the corresponding static tree\n\n\t// Compute the optimal bit lengths for a tree and update the total bit\n\t// length\n\t// for the current block.\n\t// IN assertion: the fields freq and dad are set, heap[heap_max] and\n\t// above are the tree nodes sorted by increasing frequency.\n\t// OUT assertions: the field len is set to the optimal bit length, the\n\t// array bl_count contains the frequencies for each bit length.\n\t// The length opt_len is updated; static_len is also updated if stree is\n\t// not null.\n\tfunction gen_bitlen(s) {\n\t\tconst tree = that.dyn_tree;\n\t\tconst stree = that.stat_desc.static_tree;\n\t\tconst extra = that.stat_desc.extra_bits;\n\t\tconst base = that.stat_desc.extra_base;\n\t\tconst max_length = that.stat_desc.max_length;\n\t\tlet h; // heap index\n\t\tlet n, m; // iterate over the tree elements\n\t\tlet bits; // bit length\n\t\tlet xbits; // extra bits\n\t\tlet f; // frequency\n\t\tlet overflow = 0; // number of elements with bit length too large\n\n\t\tfor (bits = 0; bits <= MAX_BITS; bits++)\n\t\t\ts.bl_count[bits] = 0;\n\n\t\t// In a first pass, compute the optimal bit lengths (which may\n\t\t// overflow in the case of the bit length tree).\n\t\ttree[s.heap[s.heap_max] * 2 + 1] = 0; // root of the heap\n\n\t\tfor (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n\t\t\tn = s.heap[h];\n\t\t\tbits = tree[tree[n * 2 + 1] * 2 + 1] + 1;\n\t\t\tif (bits > max_length) {\n\t\t\t\tbits = max_length;\n\t\t\t\toverflow++;\n\t\t\t}\n\t\t\ttree[n * 2 + 1] = bits;\n\t\t\t// We overwrite tree[n*2+1] which is no longer needed\n\n\t\t\tif (n > that.max_code)\n\t\t\t\tcontinue; // not a leaf node\n\n\t\t\ts.bl_count[bits]++;\n\t\t\txbits = 0;\n\t\t\tif (n >= base)\n\t\t\t\txbits = extra[n - base];\n\t\t\tf = tree[n * 2];\n\t\t\ts.opt_len += f * (bits + xbits);\n\t\t\tif (stree)\n\t\t\t\ts.static_len += f * (stree[n * 2 + 1] + xbits);\n\t\t}\n\t\tif (overflow === 0)\n\t\t\treturn;\n\n\t\t// This happens for example on obj2 and pic of the Calgary corpus\n\t\t// Find the first bit length which could increase:\n\t\tdo {\n\t\t\tbits = max_length - 1;\n\t\t\twhile (s.bl_count[bits] === 0)\n\t\t\t\tbits--;\n\t\t\ts.bl_count[bits]--; // move one leaf down the tree\n\t\t\ts.bl_count[bits + 1] += 2; // move one overflow item as its brother\n\t\t\ts.bl_count[max_length]--;\n\t\t\t// The brother of the overflow item also moves one step up,\n\t\t\t// but this does not affect bl_count[max_length]\n\t\t\toverflow -= 2;\n\t\t} while (overflow > 0);\n\n\t\tfor (bits = max_length; bits !== 0; bits--) {\n\t\t\tn = s.bl_count[bits];\n\t\t\twhile (n !== 0) {\n\t\t\t\tm = s.heap[--h];\n\t\t\t\tif (m > that.max_code)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (tree[m * 2 + 1] != bits) {\n\t\t\t\t\ts.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];\n\t\t\t\t\ttree[m * 2 + 1] = bits;\n\t\t\t\t}\n\t\t\t\tn--;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Reverse the first len bits of a code, using straightforward code (a\n\t// faster\n\t// method would use a table)\n\t// IN assertion: 1 <= len <= 15\n\tfunction bi_reverse(code, // the value to invert\n\t\tlen // its bit length\n\t) {\n\t\tlet res = 0;\n\t\tdo {\n\t\t\tres |= code & 1;\n\t\t\tcode >>>= 1;\n\t\t\tres <<= 1;\n\t\t} while (--len > 0);\n\t\treturn res >>> 1;\n\t}\n\n\t// Generate the codes for a given tree and bit counts (which need not be\n\t// optimal).\n\t// IN assertion: the array bl_count contains the bit length statistics for\n\t// the given tree and the field len is set for all tree elements.\n\t// OUT assertion: the field code is set for all tree elements of non\n\t// zero code length.\n\tfunction gen_codes(tree, // the tree to decorate\n\t\tmax_code, // largest code with non zero frequency\n\t\tbl_count // number of codes at each bit length\n\t) {\n\t\tconst next_code = []; // next code value for each\n\t\t// bit length\n\t\tlet code = 0; // running code value\n\t\tlet bits; // bit index\n\t\tlet n; // code index\n\t\tlet len;\n\n\t\t// The distribution counts are first used to generate the code values\n\t\t// without bit reversal.\n\t\tfor (bits = 1; bits <= MAX_BITS; bits++) {\n\t\t\tnext_code[bits] = code = ((code + bl_count[bits - 1]) << 1);\n\t\t}\n\n\t\t// Check that the bit counts in bl_count are consistent. The last code\n\t\t// must be all ones.\n\t\t// Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n\t\t// \"inconsistent bit counts\");\n\t\t// Tracev((stderr,\"gen_codes: max_code %d \", max_code));\n\n\t\tfor (n = 0; n <= max_code; n++) {\n\t\t\tlen = tree[n * 2 + 1];\n\t\t\tif (len === 0)\n\t\t\t\tcontinue;\n\t\t\t// Now reverse the bits\n\t\t\ttree[n * 2] = bi_reverse(next_code[len]++, len);\n\t\t}\n\t}\n\n\t// Construct one Huffman tree and assigns the code bit strings and lengths.\n\t// Update the total bit length for the current block.\n\t// IN assertion: the field freq is set for all tree elements.\n\t// OUT assertions: the fields len and code are set to the optimal bit length\n\t// and corresponding code. The length opt_len is updated; static_len is\n\t// also updated if stree is not null. The field max_code is set.\n\tthat.build_tree = function (s) {\n\t\tconst tree = that.dyn_tree;\n\t\tconst stree = that.stat_desc.static_tree;\n\t\tconst elems = that.stat_desc.elems;\n\t\tlet n, m; // iterate over heap elements\n\t\tlet max_code = -1; // largest code with non zero frequency\n\t\tlet node; // new node being created\n\n\t\t// Construct the initial heap, with least frequent element in\n\t\t// heap[1]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n\t\t// heap[0] is not used.\n\t\ts.heap_len = 0;\n\t\ts.heap_max = HEAP_SIZE;\n\n\t\tfor (n = 0; n < elems; n++) {\n\t\t\tif (tree[n * 2] !== 0) {\n\t\t\t\ts.heap[++s.heap_len] = max_code = n;\n\t\t\t\ts.depth[n] = 0;\n\t\t\t} else {\n\t\t\t\ttree[n * 2 + 1] = 0;\n\t\t\t}\n\t\t}\n\n\t\t// The pkzip format requires that at least one distance code exists,\n\t\t// and that at least one bit should be sent even if there is only one\n\t\t// possible code. So to avoid special checks later on we force at least\n\t\t// two codes of non zero frequency.\n\t\twhile (s.heap_len < 2) {\n\t\t\tnode = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;\n\t\t\ttree[node * 2] = 1;\n\t\t\ts.depth[node] = 0;\n\t\t\ts.opt_len--;\n\t\t\tif (stree)\n\t\t\t\ts.static_len -= stree[node * 2 + 1];\n\t\t\t// node is 0 or 1 so it does not have extra bits\n\t\t}\n\t\tthat.max_code = max_code;\n\n\t\t// The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n\t\t// establish sub-heaps of increasing lengths:\n\n\t\tfor (n = Math.floor(s.heap_len / 2); n >= 1; n--)\n\t\t\ts.pqdownheap(tree, n);\n\n\t\t// Construct the Huffman tree by repeatedly combining the least two\n\t\t// frequent nodes.\n\n\t\tnode = elems; // next internal node of the tree\n\t\tdo {\n\t\t\t// n = node of least frequency\n\t\t\tn = s.heap[1];\n\t\t\ts.heap[1] = s.heap[s.heap_len--];\n\t\t\ts.pqdownheap(tree, 1);\n\t\t\tm = s.heap[1]; // m = node of next least frequency\n\n\t\t\ts.heap[--s.heap_max] = n; // keep the nodes sorted by frequency\n\t\t\ts.heap[--s.heap_max] = m;\n\n\t\t\t// Create a new node father of n and m\n\t\t\ttree[node * 2] = (tree[n * 2] + tree[m * 2]);\n\t\t\ts.depth[node] = Math.max(s.depth[n], s.depth[m]) + 1;\n\t\t\ttree[n * 2 + 1] = tree[m * 2 + 1] = node;\n\n\t\t\t// and insert the new node in the heap\n\t\t\ts.heap[1] = node++;\n\t\t\ts.pqdownheap(tree, 1);\n\t\t} while (s.heap_len >= 2);\n\n\t\ts.heap[--s.heap_max] = s.heap[1];\n\n\t\t// At this point, the fields freq and dad are set. We can now\n\t\t// generate the bit lengths.\n\n\t\tgen_bitlen(s);\n\n\t\t// The field len is now set, we can generate the bit codes\n\t\tgen_codes(tree, that.max_code, s.bl_count);\n\t};\n\n}\n\nTree._length_code = [0, 1, 2, 3, 4, 5, 6, 7].concat(...extractArray([\n\t[2, 8], [2, 9], [2, 10], [2, 11], [4, 12], [4, 13], [4, 14], [4, 15], [8, 16], [8, 17], [8, 18], [8, 19],\n\t[16, 20], [16, 21], [16, 22], [16, 23], [32, 24], [32, 25], [32, 26], [31, 27], [1, 28]]));\n\nTree.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0];\n\nTree.base_dist = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384,\n\t24576];\n\n// Mapping from a distance to a distance code. dist is the distance - 1 and\n// must not have side effects. _dist_code[256] and _dist_code[257] are never\n// used.\nTree.d_code = function (dist) {\n\treturn ((dist) < 256 ? _dist_code[dist] : _dist_code[256 + ((dist) >>> 7)]);\n};\n\n// extra bits for each length code\nTree.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];\n\n// extra bits for each distance code\nTree.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];\n\n// extra bits for each bit length code\nTree.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7];\n\nTree.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n\n// StaticTree\n\nfunction StaticTree(static_tree, extra_bits, extra_base, elems, max_length) {\n\tconst that = this;\n\tthat.static_tree = static_tree;\n\tthat.extra_bits = extra_bits;\n\tthat.extra_base = extra_base;\n\tthat.elems = elems;\n\tthat.max_length = max_length;\n}\n\nconst static_ltree2_first_part = [12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82,\n\t210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86,\n\t214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81,\n\t209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85,\n\t213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 19, 275, 147, 403, 83, 339, 211, 467, 51, 307,\n\t179, 435, 115, 371, 243, 499, 11, 267, 139, 395, 75, 331, 203, 459, 43, 299, 171, 427, 107, 363, 235, 491, 27, 283, 155, 411, 91, 347, 219, 475,\n\t59, 315, 187, 443, 123, 379, 251, 507, 7, 263, 135, 391, 71, 327, 199, 455, 39, 295, 167, 423, 103, 359, 231, 487, 23, 279, 151, 407, 87, 343, 215,\n\t471, 55, 311, 183, 439, 119, 375, 247, 503, 15, 271, 143, 399, 79, 335, 207, 463, 47, 303, 175, 431, 111, 367, 239, 495, 31, 287, 159, 415, 95,\n\t351, 223, 479, 63, 319, 191, 447, 127, 383, 255, 511, 0, 64, 32, 96, 16, 80, 48, 112, 8, 72, 40, 104, 24, 88, 56, 120, 4, 68, 36, 100, 20, 84, 52,\n\t116, 3, 131, 67, 195, 35, 163, 99, 227];\nconst static_ltree2_second_part = extractArray([[144, 8], [112, 9], [24, 7], [8, 8]]);\nStaticTree.static_ltree = flatArray(static_ltree2_first_part.map((value, index) => [value, static_ltree2_second_part[index]]));\n\nconst static_dtree_first_part = [0, 16, 8, 24, 4, 20, 12, 28, 2, 18, 10, 26, 6, 22, 14, 30, 1, 17, 9, 25, 5, 21, 13, 29, 3, 19, 11, 27, 7, 23];\nconst static_dtree_second_part = extractArray([[30, 5]]);\nStaticTree.static_dtree = flatArray(static_dtree_first_part.map((value, index) => [value, static_dtree_second_part[index]]));\n\nStaticTree.static_l_desc = new StaticTree(StaticTree.static_ltree, Tree.extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n\nStaticTree.static_d_desc = new StaticTree(StaticTree.static_dtree, Tree.extra_dbits, 0, D_CODES, MAX_BITS);\n\nStaticTree.static_bl_desc = new StaticTree(null, Tree.extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n// Deflate\n\nconst MAX_MEM_LEVEL = 9;\nconst DEF_MEM_LEVEL = 8;\n\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\tconst that = this;\n\tthat.good_length = good_length;\n\tthat.max_lazy = max_lazy;\n\tthat.nice_length = nice_length;\n\tthat.max_chain = max_chain;\n\tthat.func = func;\n}\n\nconst STORED = 0;\nconst FAST = 1;\nconst SLOW = 2;\nconst config_table = [\n\tnew Config(0, 0, 0, 0, STORED),\n\tnew Config(4, 4, 8, 4, FAST),\n\tnew Config(4, 5, 16, 8, FAST),\n\tnew Config(4, 6, 32, 32, FAST),\n\tnew Config(4, 4, 16, 16, SLOW),\n\tnew Config(8, 16, 32, 32, SLOW),\n\tnew Config(8, 16, 128, 128, SLOW),\n\tnew Config(8, 32, 128, 256, SLOW),\n\tnew Config(32, 128, 258, 1024, SLOW),\n\tnew Config(32, 258, 258, 4096, SLOW)\n];\n\nconst z_errmsg = [\"need dictionary\", // Z_NEED_DICT\n\t// 2\n\t\"stream end\", // Z_STREAM_END 1\n\t\"\", // Z_OK 0\n\t\"\", // Z_ERRNO (-1)\n\t\"stream error\", // Z_STREAM_ERROR (-2)\n\t\"data error\", // Z_DATA_ERROR (-3)\n\t\"\", // Z_MEM_ERROR (-4)\n\t\"buffer error\", // Z_BUF_ERROR (-5)\n\t\"\",// Z_VERSION_ERROR (-6)\n\t\"\"];\n\n// block not completed, need more input or more output\nconst NeedMore = 0;\n\n// block flush performed\nconst BlockDone = 1;\n\n// finish started, need only more output at next deflate\nconst FinishStarted = 2;\n\n// finish done, accept no more input or output\nconst FinishDone = 3;\n\n// preset dictionary flag in zlib header\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42;\nconst BUSY_STATE = 113;\nconst FINISH_STATE = 666;\n\n// The deflate compression method\nconst Z_DEFLATED = 8;\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nfunction smaller(tree, n, m, depth) {\n\tconst tn2 = tree[n * 2];\n\tconst tm2 = tree[m * 2];\n\treturn (tn2 < tm2 || (tn2 == tm2 && depth[n] <= depth[m]));\n}\n\nfunction Deflate() {\n\n\tconst that = this;\n\tlet strm; // pointer back to this zlib stream\n\tlet status; // as the name implies\n\t// pending_buf; // output still pending\n\tlet pending_buf_size; // size of pending_buf\n\t// pending_out; // next pending byte to output to the stream\n\t// pending; // nb of bytes in the pending buffer\n\n\t// dist_buf; // buffer for distances\n\t// lc_buf; // buffer for literals or lengths\n\t// To simplify the code, dist_buf and lc_buf have the same number of elements.\n\t// To use different lengths, an extra flag array would be necessary.\n\n\tlet last_flush; // value of flush param for previous deflate call\n\n\tlet w_size; // LZ77 win size (32K by default)\n\tlet w_bits; // log2(w_size) (8..16)\n\tlet w_mask; // w_size - 1\n\n\tlet win;\n\t// Sliding win. Input bytes are read into the second half of the win,\n\t// and move to the first half later to keep a dictionary of at least wSize\n\t// bytes. With this organization, matches are limited to a distance of\n\t// wSize-MAX_MATCH bytes, but this ensures that IO is always\n\t// performed with a length multiple of the block size. Also, it limits\n\t// the win size to 64K, which is quite useful on MSDOS.\n\t// To do: use the user input buffer as sliding win.\n\n\tlet window_size;\n\t// Actual size of win: 2*wSize, except when the user input buffer\n\t// is directly used as sliding win.\n\n\tlet prev;\n\t// Link to older string with same hash index. To limit the size of this\n\t// array to 64K, this link is maintained only for the last 32K strings.\n\t// An index in this array is thus a win index modulo 32K.\n\n\tlet head; // Heads of the hash chains or NIL.\n\n\tlet ins_h; // hash index of string to be inserted\n\tlet hash_size; // number of elements in hash table\n\tlet hash_bits; // log2(hash_size)\n\tlet hash_mask; // hash_size-1\n\n\t// Number of bits by which ins_h must be shifted at each input\n\t// step. It must be such that after MIN_MATCH steps, the oldest\n\t// byte no longer takes part in the hash key, that is:\n\t// hash_shift * MIN_MATCH >= hash_bits\n\tlet hash_shift;\n\n\t// Window position at the beginning of the current output block. Gets\n\t// negative when the win is moved backwards.\n\n\tlet block_start;\n\n\tlet match_length; // length of best match\n\tlet prev_match; // previous match\n\tlet match_available; // set if previous match exists\n\tlet strstart; // start of string to insert\n\tlet match_start; // start of matching string\n\tlet lookahead; // number of valid bytes ahead in win\n\n\t// Length of the best match at previous step. Matches not greater than this\n\t// are discarded. This is used in the lazy match evaluation.\n\tlet prev_length;\n\n\t// To speed up deflation, hash chains are never searched beyond this\n\t// length. A higher limit improves compression ratio but degrades the speed.\n\tlet max_chain_length;\n\n\t// Attempt to find a better match only when the current match is strictly\n\t// smaller than this value. This mechanism is used only for compression\n\t// levels >= 4.\n\tlet max_lazy_match;\n\n\t// Insert new strings in the hash table only if the match length is not\n\t// greater than this length. This saves time but degrades compression.\n\t// max_insert_length is used only for compression levels <= 3.\n\n\tlet level; // compression level (1..9)\n\tlet strategy; // favor or force Huffman coding\n\n\t// Use a faster search when the previous match is longer than this\n\tlet good_match;\n\n\t// Stop searching when current match exceeds this\n\tlet nice_match;\n\n\tlet dyn_ltree; // literal and length tree\n\tlet dyn_dtree; // distance tree\n\tlet bl_tree; // Huffman tree for bit lengths\n\n\tconst l_desc = new Tree(); // desc for literal tree\n\tconst d_desc = new Tree(); // desc for distance tree\n\tconst bl_desc = new Tree(); // desc for bit length tree\n\n\t// that.heap_len; // number of elements in the heap\n\t// that.heap_max; // element of largest frequency\n\t// The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n\t// The same heap array is used to build all trees.\n\n\t// Depth of each subtree used as tie breaker for trees of equal frequency\n\tthat.depth = [];\n\n\t// Size of match buffer for literals/lengths. There are 4 reasons for\n\t// limiting lit_bufsize to 64K:\n\t// - frequencies can be kept in 16 bit counters\n\t// - if compression is not successful for the first block, all input\n\t// data is still in the win so we can still emit a stored block even\n\t// when input comes from standard input. (This can also be done for\n\t// all blocks if lit_bufsize is not greater than 32K.)\n\t// - if compression is not successful for a file smaller than 64K, we can\n\t// even emit a stored file instead of a stored block (saving 5 bytes).\n\t// This is applicable only for zip (not gzip or zlib).\n\t// - creating new Huffman trees less frequently may not provide fast\n\t// adaptation to changes in the input data statistics. (Take for\n\t// example a binary file with poorly compressible code followed by\n\t// a highly compressible string table.) Smaller buffer sizes give\n\t// fast adaptation but have of course the overhead of transmitting\n\t// trees more frequently.\n\t// - I can't count above 4\n\tlet lit_bufsize;\n\n\tlet last_lit; // running index in dist_buf and lc_buf\n\n\t// that.opt_len; // bit length of current block with optimal trees\n\t// that.static_len; // bit length of current block with static trees\n\tlet matches; // number of string matches in current block\n\tlet last_eob_len; // bit length of EOB code for last block\n\n\t// Output buffer. bits are inserted starting at the bottom (least\n\t// significant bits).\n\tlet bi_buf;\n\n\t// Number of valid bits in bi_buf. All bits above the last valid bit\n\t// are always zero.\n\tlet bi_valid;\n\n\t// number of codes at each bit length for an optimal tree\n\tthat.bl_count = [];\n\n\t// heap used to build the Huffman trees\n\tthat.heap = [];\n\n\tdyn_ltree = [];\n\tdyn_dtree = [];\n\tbl_tree = [];\n\n\tfunction lm_init() {\n\t\twindow_size = 2 * w_size;\n\n\t\thead[hash_size - 1] = 0;\n\t\tfor (let i = 0; i < hash_size - 1; i++) {\n\t\t\thead[i] = 0;\n\t\t}\n\n\t\t// Set the default configuration parameters:\n\t\tmax_lazy_match = config_table[level].max_lazy;\n\t\tgood_match = config_table[level].good_length;\n\t\tnice_match = config_table[level].nice_length;\n\t\tmax_chain_length = config_table[level].max_chain;\n\n\t\tstrstart = 0;\n\t\tblock_start = 0;\n\t\tlookahead = 0;\n\t\tmatch_length = prev_length = MIN_MATCH - 1;\n\t\tmatch_available = 0;\n\t\tins_h = 0;\n\t}\n\n\tfunction init_block() {\n\t\tlet i;\n\t\t// Initialize the trees.\n\t\tfor (i = 0; i < L_CODES; i++)\n\t\t\tdyn_ltree[i * 2] = 0;\n\t\tfor (i = 0; i < D_CODES; i++)\n\t\t\tdyn_dtree[i * 2] = 0;\n\t\tfor (i = 0; i < BL_CODES; i++)\n\t\t\tbl_tree[i * 2] = 0;\n\n\t\tdyn_ltree[END_BLOCK * 2] = 1;\n\t\tthat.opt_len = that.static_len = 0;\n\t\tlast_lit = matches = 0;\n\t}\n\n\t// Initialize the tree data structures for a new zlib stream.\n\tfunction tr_init() {\n\n\t\tl_desc.dyn_tree = dyn_ltree;\n\t\tl_desc.stat_desc = StaticTree.static_l_desc;\n\n\t\td_desc.dyn_tree = dyn_dtree;\n\t\td_desc.stat_desc = StaticTree.static_d_desc;\n\n\t\tbl_desc.dyn_tree = bl_tree;\n\t\tbl_desc.stat_desc = StaticTree.static_bl_desc;\n\n\t\tbi_buf = 0;\n\t\tbi_valid = 0;\n\t\tlast_eob_len = 8; // enough lookahead for inflate\n\n\t\t// Initialize the first block of the first file:\n\t\tinit_block();\n\t}\n\n\t// Restore the heap property by moving down the tree starting at node k,\n\t// exchanging a node with the smallest of its two sons if necessary,\n\t// stopping\n\t// when the heap property is re-established (each father smaller than its\n\t// two sons).\n\tthat.pqdownheap = function (tree, // the tree to restore\n\t\tk // node to move down\n\t) {\n\t\tconst heap = that.heap;\n\t\tconst v = heap[k];\n\t\tlet j = k << 1; // left son of k\n\t\twhile (j <= that.heap_len) {\n\t\t\t// Set j to the smallest of the two sons:\n\t\t\tif (j < that.heap_len && smaller(tree, heap[j + 1], heap[j], that.depth)) {\n\t\t\t\tj++;\n\t\t\t}\n\t\t\t// Exit if v is smaller than both sons\n\t\t\tif (smaller(tree, v, heap[j], that.depth))\n\t\t\t\tbreak;\n\n\t\t\t// Exchange v with the smallest son\n\t\t\theap[k] = heap[j];\n\t\t\tk = j;\n\t\t\t// And continue down the tree, setting j to the left son of k\n\t\t\tj <<= 1;\n\t\t}\n\t\theap[k] = v;\n\t};\n\n\t// Scan a literal or distance tree to determine the frequencies of the codes\n\t// in the bit length tree.\n\tfunction scan_tree(tree,// the tree to be scanned\n\t\tmax_code // and its largest code of non zero frequency\n\t) {\n\t\tlet prevlen = -1; // last emitted length\n\t\tlet curlen; // length of current code\n\t\tlet nextlen = tree[0 * 2 + 1]; // length of next code\n\t\tlet count = 0; // repeat count of the current code\n\t\tlet max_count = 7; // max repeat count\n\t\tlet min_count = 4; // min repeat count\n\n\t\tif (nextlen === 0) {\n\t\t\tmax_count = 138;\n\t\t\tmin_count = 3;\n\t\t}\n\t\ttree[(max_code + 1) * 2 + 1] = 0xffff; // guard\n\n\t\tfor (let n = 0; n <= max_code; n++) {\n\t\t\tcurlen = nextlen;\n\t\t\tnextlen = tree[(n + 1) * 2 + 1];\n\t\t\tif (++count < max_count && curlen == nextlen) {\n\t\t\t\tcontinue;\n\t\t\t} else if (count < min_count) {\n\t\t\t\tbl_tree[curlen * 2] += count;\n\t\t\t} else if (curlen !== 0) {\n\t\t\t\tif (curlen != prevlen)\n\t\t\t\t\tbl_tree[curlen * 2]++;\n\t\t\t\tbl_tree[REP_3_6 * 2]++;\n\t\t\t} else if (count <= 10) {\n\t\t\t\tbl_tree[REPZ_3_10 * 2]++;\n\t\t\t} else {\n\t\t\t\tbl_tree[REPZ_11_138 * 2]++;\n\t\t\t}\n\t\t\tcount = 0;\n\t\t\tprevlen = curlen;\n\t\t\tif (nextlen === 0) {\n\t\t\t\tmax_count = 138;\n\t\t\t\tmin_count = 3;\n\t\t\t} else if (curlen == nextlen) {\n\t\t\t\tmax_count = 6;\n\t\t\t\tmin_count = 3;\n\t\t\t} else {\n\t\t\t\tmax_count = 7;\n\t\t\t\tmin_count = 4;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Construct the Huffman tree for the bit lengths and return the index in\n\t// bl_order of the last bit length code to send.\n\tfunction build_bl_tree() {\n\t\tlet max_blindex; // index of last bit length code of non zero freq\n\n\t\t// Determine the bit length frequencies for literal and distance trees\n\t\tscan_tree(dyn_ltree, l_desc.max_code);\n\t\tscan_tree(dyn_dtree, d_desc.max_code);\n\n\t\t// Build the bit length tree:\n\t\tbl_desc.build_tree(that);\n\t\t// opt_len now includes the length of the tree representations, except\n\t\t// the lengths of the bit lengths codes and the 5+5+4 bits for the\n\t\t// counts.\n\n\t\t// Determine the number of bit length codes to send. The pkzip format\n\t\t// requires that at least 4 bit length codes be sent. (appnote.txt says\n\t\t// 3 but the actual value used is 4.)\n\t\tfor (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n\t\t\tif (bl_tree[Tree.bl_order[max_blindex] * 2 + 1] !== 0)\n\t\t\t\tbreak;\n\t\t}\n\t\t// Update opt_len to include the bit length tree and counts\n\t\tthat.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n\n\t\treturn max_blindex;\n\t}\n\n\t// Output a byte on the stream.\n\t// IN assertion: there is enough room in pending_buf.\n\tfunction put_byte(p) {\n\t\tthat.pending_buf[that.pending++] = p;\n\t}\n\n\tfunction put_short(w) {\n\t\tput_byte(w & 0xff);\n\t\tput_byte((w >>> 8) & 0xff);\n\t}\n\n\tfunction putShortMSB(b) {\n\t\tput_byte((b >> 8) & 0xff);\n\t\tput_byte((b & 0xff) & 0xff);\n\t}\n\n\tfunction send_bits(value, length) {\n\t\tlet val;\n\t\tconst len = length;\n\t\tif (bi_valid > Buf_size - len) {\n\t\t\tval = value;\n\t\t\t// bi_buf |= (val << bi_valid);\n\t\t\tbi_buf |= ((val << bi_valid) & 0xffff);\n\t\t\tput_short(bi_buf);\n\t\t\tbi_buf = val >>> (Buf_size - bi_valid);\n\t\t\tbi_valid += len - Buf_size;\n\t\t} else {\n\t\t\t// bi_buf |= (value) << bi_valid;\n\t\t\tbi_buf |= (((value) << bi_valid) & 0xffff);\n\t\t\tbi_valid += len;\n\t\t}\n\t}\n\n\tfunction send_code(c, tree) {\n\t\tconst c2 = c * 2;\n\t\tsend_bits(tree[c2] & 0xffff, tree[c2 + 1] & 0xffff);\n\t}\n\n\t// Send a literal or distance tree in compressed form, using the codes in\n\t// bl_tree.\n\tfunction send_tree(tree,// the tree to be sent\n\t\tmax_code // and its largest code of non zero frequency\n\t) {\n\t\tlet n; // iterates over all tree elements\n\t\tlet prevlen = -1; // last emitted length\n\t\tlet curlen; // length of current code\n\t\tlet nextlen = tree[0 * 2 + 1]; // length of next code\n\t\tlet count = 0; // repeat count of the current code\n\t\tlet max_count = 7; // max repeat count\n\t\tlet min_count = 4; // min repeat count\n\n\t\tif (nextlen === 0) {\n\t\t\tmax_count = 138;\n\t\t\tmin_count = 3;\n\t\t}\n\n\t\tfor (n = 0; n <= max_code; n++) {\n\t\t\tcurlen = nextlen;\n\t\t\tnextlen = tree[(n + 1) * 2 + 1];\n\t\t\tif (++count < max_count && curlen == nextlen) {\n\t\t\t\tcontinue;\n\t\t\t} else if (count < min_count) {\n\t\t\t\tdo {\n\t\t\t\t\tsend_code(curlen, bl_tree);\n\t\t\t\t} while (--count !== 0);\n\t\t\t} else if (curlen !== 0) {\n\t\t\t\tif (curlen != prevlen) {\n\t\t\t\t\tsend_code(curlen, bl_tree);\n\t\t\t\t\tcount--;\n\t\t\t\t}\n\t\t\t\tsend_code(REP_3_6, bl_tree);\n\t\t\t\tsend_bits(count - 3, 2);\n\t\t\t} else if (count <= 10) {\n\t\t\t\tsend_code(REPZ_3_10, bl_tree);\n\t\t\t\tsend_bits(count - 3, 3);\n\t\t\t} else {\n\t\t\t\tsend_code(REPZ_11_138, bl_tree);\n\t\t\t\tsend_bits(count - 11, 7);\n\t\t\t}\n\t\t\tcount = 0;\n\t\t\tprevlen = curlen;\n\t\t\tif (nextlen === 0) {\n\t\t\t\tmax_count = 138;\n\t\t\t\tmin_count = 3;\n\t\t\t} else if (curlen == nextlen) {\n\t\t\t\tmax_count = 6;\n\t\t\t\tmin_count = 3;\n\t\t\t} else {\n\t\t\t\tmax_count = 7;\n\t\t\t\tmin_count = 4;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Send the header for a block using dynamic Huffman trees: the counts, the\n\t// lengths of the bit length codes, the literal tree and the distance tree.\n\t// IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n\tfunction send_all_trees(lcodes, dcodes, blcodes) {\n\t\tlet rank; // index in bl_order\n\n\t\tsend_bits(lcodes - 257, 5); // not +255 as stated in appnote.txt\n\t\tsend_bits(dcodes - 1, 5);\n\t\tsend_bits(blcodes - 4, 4); // not -3 as stated in appnote.txt\n\t\tfor (rank = 0; rank < blcodes; rank++) {\n\t\t\tsend_bits(bl_tree[Tree.bl_order[rank] * 2 + 1], 3);\n\t\t}\n\t\tsend_tree(dyn_ltree, lcodes - 1); // literal tree\n\t\tsend_tree(dyn_dtree, dcodes - 1); // distance tree\n\t}\n\n\t// Flush the bit buffer, keeping at most 7 bits in it.\n\tfunction bi_flush() {\n\t\tif (bi_valid == 16) {\n\t\t\tput_short(bi_buf);\n\t\t\tbi_buf = 0;\n\t\t\tbi_valid = 0;\n\t\t} else if (bi_valid >= 8) {\n\t\t\tput_byte(bi_buf & 0xff);\n\t\t\tbi_buf >>>= 8;\n\t\t\tbi_valid -= 8;\n\t\t}\n\t}\n\n\t// Send one empty static block to give enough lookahead for inflate.\n\t// This takes 10 bits, of which 7 may remain in the bit buffer.\n\t// The current inflate code requires 9 bits of lookahead. If the\n\t// last two codes for the previous block (real code plus EOB) were coded\n\t// on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode\n\t// the last real code. In this case we send two empty static blocks instead\n\t// of one. (There are no problems if the previous block is stored or fixed.)\n\t// To simplify the code, we assume the worst case of last real code encoded\n\t// on one bit only.\n\tfunction _tr_align() {\n\t\tsend_bits(STATIC_TREES << 1, 3);\n\t\tsend_code(END_BLOCK, StaticTree.static_ltree);\n\n\t\tbi_flush();\n\n\t\t// Of the 10 bits for the empty block, we have already sent\n\t\t// (10 - bi_valid) bits. The lookahead for the last real code (before\n\t\t// the EOB of the previous block) was thus at least one plus the length\n\t\t// of the EOB plus what we have just sent of the empty static block.\n\t\tif (1 + last_eob_len + 10 - bi_valid < 9) {\n\t\t\tsend_bits(STATIC_TREES << 1, 3);\n\t\t\tsend_code(END_BLOCK, StaticTree.static_ltree);\n\t\t\tbi_flush();\n\t\t}\n\t\tlast_eob_len = 7;\n\t}\n\n\t// Save the match info and tally the frequency counts. Return true if\n\t// the current block must be flushed.\n\tfunction _tr_tally(dist, // distance of matched string\n\t\tlc // match length-MIN_MATCH or unmatched char (if dist==0)\n\t) {\n\t\tlet out_length, in_length, dcode;\n\t\tthat.dist_buf[last_lit] = dist;\n\t\tthat.lc_buf[last_lit] = lc & 0xff;\n\t\tlast_lit++;\n\n\t\tif (dist === 0) {\n\t\t\t// lc is the unmatched char\n\t\t\tdyn_ltree[lc * 2]++;\n\t\t} else {\n\t\t\tmatches++;\n\t\t\t// Here, lc is the match length - MIN_MATCH\n\t\t\tdist--; // dist = match distance - 1\n\t\t\tdyn_ltree[(Tree._length_code[lc] + LITERALS + 1) * 2]++;\n\t\t\tdyn_dtree[Tree.d_code(dist) * 2]++;\n\t\t}\n\n\t\tif ((last_lit & 0x1fff) === 0 && level > 2) {\n\t\t\t// Compute an upper bound for the compressed length\n\t\t\tout_length = last_lit * 8;\n\t\t\tin_length = strstart - block_start;\n\t\t\tfor (dcode = 0; dcode < D_CODES; dcode++) {\n\t\t\t\tout_length += dyn_dtree[dcode * 2] * (5 + Tree.extra_dbits[dcode]);\n\t\t\t}\n\t\t\tout_length >>>= 3;\n\t\t\tif ((matches < Math.floor(last_lit / 2)) && out_length < Math.floor(in_length / 2))\n\t\t\t\treturn true;\n\t\t}\n\n\t\treturn (last_lit == lit_bufsize - 1);\n\t\t// We avoid equality with lit_bufsize because of wraparound at 64K\n\t\t// on 16 bit machines and because stored blocks are restricted to\n\t\t// 64K-1 bytes.\n\t}\n\n\t// Send the block data compressed using the given Huffman trees\n\tfunction compress_block(ltree, dtree) {\n\t\tlet dist; // distance of matched string\n\t\tlet lc; // match length or unmatched char (if dist === 0)\n\t\tlet lx = 0; // running index in dist_buf and lc_buf\n\t\tlet code; // the code to send\n\t\tlet extra; // number of extra bits to send\n\n\t\tif (last_lit !== 0) {\n\t\t\tdo {\n\t\t\t\tdist = that.dist_buf[lx];\n\t\t\t\tlc = that.lc_buf[lx];\n\t\t\t\tlx++;\n\n\t\t\t\tif (dist === 0) {\n\t\t\t\t\tsend_code(lc, ltree); // send a literal byte\n\t\t\t\t} else {\n\t\t\t\t\t// Here, lc is the match length - MIN_MATCH\n\t\t\t\t\tcode = Tree._length_code[lc];\n\n\t\t\t\t\tsend_code(code + LITERALS + 1, ltree); // send the length\n\t\t\t\t\t// code\n\t\t\t\t\textra = Tree.extra_lbits[code];\n\t\t\t\t\tif (extra !== 0) {\n\t\t\t\t\t\tlc -= Tree.base_length[code];\n\t\t\t\t\t\tsend_bits(lc, extra); // send the extra length bits\n\t\t\t\t\t}\n\t\t\t\t\tdist--; // dist is now the match distance - 1\n\t\t\t\t\tcode = Tree.d_code(dist);\n\n\t\t\t\t\tsend_code(code, dtree); // send the distance code\n\t\t\t\t\textra = Tree.extra_dbits[code];\n\t\t\t\t\tif (extra !== 0) {\n\t\t\t\t\t\tdist -= Tree.base_dist[code];\n\t\t\t\t\t\tsend_bits(dist, extra); // send the extra distance bits\n\t\t\t\t\t}\n\t\t\t\t} // literal or match pair ?\n\t\t\t} while (lx < last_lit);\n\t\t}\n\n\t\tsend_code(END_BLOCK, ltree);\n\t\tlast_eob_len = ltree[END_BLOCK * 2 + 1];\n\t}\n\n\t// Flush the bit buffer and align the output on a byte boundary\n\tfunction bi_windup() {\n\t\tif (bi_valid > 8) {\n\t\t\tput_short(bi_buf);\n\t\t} else if (bi_valid > 0) {\n\t\t\tput_byte(bi_buf & 0xff);\n\t\t}\n\t\tbi_buf = 0;\n\t\tbi_valid = 0;\n\t}\n\n\t// Copy a stored block, storing first the length and its\n\t// one's complement if requested.\n\tfunction copy_block(buf, // the input data\n\t\tlen, // its length\n\t\theader // true if block header must be written\n\t) {\n\t\tbi_windup(); // align on byte boundary\n\t\tlast_eob_len = 8; // enough lookahead for inflate\n\n\t\tif (header) {\n\t\t\tput_short(len);\n\t\t\tput_short(~len);\n\t\t}\n\n\t\tthat.pending_buf.set(win.subarray(buf, buf + len), that.pending);\n\t\tthat.pending += len;\n\t}\n\n\t// Send a stored block\n\tfunction _tr_stored_block(buf, // input block\n\t\tstored_len, // length of input block\n\t\teof // true if this is the last block for a file\n\t) {\n\t\tsend_bits((STORED_BLOCK << 1) + (eof ? 1 : 0), 3); // send block type\n\t\tcopy_block(buf, stored_len, true); // with header\n\t}\n\n\t// Determine the best encoding for the current block: dynamic trees, static\n\t// trees or store, and output the encoded block to the zip file.\n\tfunction _tr_flush_block(buf, // input block, or NULL if too old\n\t\tstored_len, // length of input block\n\t\teof // true if this is the last block for a file\n\t) {\n\t\tlet opt_lenb, static_lenb;// opt_len and static_len in bytes\n\t\tlet max_blindex = 0; // index of last bit length code of non zero freq\n\n\t\t// Build the Huffman trees unless a stored block is forced\n\t\tif (level > 0) {\n\t\t\t// Construct the literal and distance trees\n\t\t\tl_desc.build_tree(that);\n\n\t\t\td_desc.build_tree(that);\n\n\t\t\t// At this point, opt_len and static_len are the total bit lengths\n\t\t\t// of\n\t\t\t// the compressed block data, excluding the tree representations.\n\n\t\t\t// Build the bit length tree for the above two trees, and get the\n\t\t\t// index\n\t\t\t// in bl_order of the last bit length code to send.\n\t\t\tmax_blindex = build_bl_tree();\n\n\t\t\t// Determine the best encoding. Compute first the block length in\n\t\t\t// bytes\n\t\t\topt_lenb = (that.opt_len + 3 + 7) >>> 3;\n\t\t\tstatic_lenb = (that.static_len + 3 + 7) >>> 3;\n\n\t\t\tif (static_lenb <= opt_lenb)\n\t\t\t\topt_lenb = static_lenb;\n\t\t} else {\n\t\t\topt_lenb = static_lenb = stored_len + 5; // force a stored block\n\t\t}\n\n\t\tif ((stored_len + 4 <= opt_lenb) && buf != -1) {\n\t\t\t// 4: two words for the lengths\n\t\t\t// The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n\t\t\t// Otherwise we can't have processed more than WSIZE input bytes\n\t\t\t// since\n\t\t\t// the last block flush, because compression would have been\n\t\t\t// successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n\t\t\t// transform a block into a stored block.\n\t\t\t_tr_stored_block(buf, stored_len, eof);\n\t\t} else if (static_lenb == opt_lenb) {\n\t\t\tsend_bits((STATIC_TREES << 1) + (eof ? 1 : 0), 3);\n\t\t\tcompress_block(StaticTree.static_ltree, StaticTree.static_dtree);\n\t\t} else {\n\t\t\tsend_bits((DYN_TREES << 1) + (eof ? 1 : 0), 3);\n\t\t\tsend_all_trees(l_desc.max_code + 1, d_desc.max_code + 1, max_blindex + 1);\n\t\t\tcompress_block(dyn_ltree, dyn_dtree);\n\t\t}\n\n\t\t// The above check is made mod 2^32, for files larger than 512 MB\n\t\t// and uLong implemented on 32 bits.\n\n\t\tinit_block();\n\n\t\tif (eof) {\n\t\t\tbi_windup();\n\t\t}\n\t}\n\n\tfunction flush_block_only(eof) {\n\t\t_tr_flush_block(block_start >= 0 ? block_start : -1, strstart - block_start, eof);\n\t\tblock_start = strstart;\n\t\tstrm.flush_pending();\n\t}\n\n\t// Fill the win when the lookahead becomes insufficient.\n\t// Updates strstart and lookahead.\n\t//\n\t// IN assertion: lookahead < MIN_LOOKAHEAD\n\t// OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n\t// At least one byte has been read, or avail_in === 0; reads are\n\t// performed for at least two bytes (required for the zip translate_eol\n\t// option -- not supported here).\n\tfunction fill_window() {\n\t\tlet n, m;\n\t\tlet p;\n\t\tlet more; // Amount of free space at the end of the win.\n\n\t\tdo {\n\t\t\tmore = (window_size - lookahead - strstart);\n\n\t\t\t// Deal with !@#$% 64K limit:\n\t\t\tif (more === 0 && strstart === 0 && lookahead === 0) {\n\t\t\t\tmore = w_size;\n\t\t\t} else if (more == -1) {\n\t\t\t\t// Very unlikely, but possible on 16 bit machine if strstart ==\n\t\t\t\t// 0\n\t\t\t\t// and lookahead == 1 (input done one byte at time)\n\t\t\t\tmore--;\n\n\t\t\t\t// If the win is almost full and there is insufficient\n\t\t\t\t// lookahead,\n\t\t\t\t// move the upper half to the lower one to make room in the\n\t\t\t\t// upper half.\n\t\t\t} else if (strstart >= w_size + w_size - MIN_LOOKAHEAD) {\n\t\t\t\twin.set(win.subarray(w_size, w_size + w_size), 0);\n\n\t\t\t\tmatch_start -= w_size;\n\t\t\t\tstrstart -= w_size; // we now have strstart >= MAX_DIST\n\t\t\t\tblock_start -= w_size;\n\n\t\t\t\t// Slide the hash table (could be avoided with 32 bit values\n\t\t\t\t// at the expense of memory usage). We slide even when level ==\n\t\t\t\t// 0\n\t\t\t\t// to keep the hash table consistent if we switch back to level\n\t\t\t\t// > 0\n\t\t\t\t// later. (Using level 0 permanently is not an optimal usage of\n\t\t\t\t// zlib, so we don't care about this pathological case.)\n\n\t\t\t\tn = hash_size;\n\t\t\t\tp = n;\n\t\t\t\tdo {\n\t\t\t\t\tm = (head[--p] & 0xffff);\n\t\t\t\t\thead[p] = (m >= w_size ? m - w_size : 0);\n\t\t\t\t} while (--n !== 0);\n\n\t\t\t\tn = w_size;\n\t\t\t\tp = n;\n\t\t\t\tdo {\n\t\t\t\t\tm = (prev[--p] & 0xffff);\n\t\t\t\t\tprev[p] = (m >= w_size ? m - w_size : 0);\n\t\t\t\t\t// If n is not on any hash chain, prev[n] is garbage but\n\t\t\t\t\t// its value will never be used.\n\t\t\t\t} while (--n !== 0);\n\t\t\t\tmore += w_size;\n\t\t\t}\n\n\t\t\tif (strm.avail_in === 0)\n\t\t\t\treturn;\n\n\t\t\t// If there was no sliding:\n\t\t\t// strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n\t\t\t// more == window_size - lookahead - strstart\n\t\t\t// => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n\t\t\t// => more >= window_size - 2*WSIZE + 2\n\t\t\t// In the BIG_MEM or MMAP case (not yet supported),\n\t\t\t// window_size == input_size + MIN_LOOKAHEAD &&\n\t\t\t// strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n\t\t\t// Otherwise, window_size == 2*WSIZE so more >= 2.\n\t\t\t// If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n\n\t\t\tn = strm.read_buf(win, strstart + lookahead, more);\n\t\t\tlookahead += n;\n\n\t\t\t// Initialize the hash value now that we have some input:\n\t\t\tif (lookahead >= MIN_MATCH) {\n\t\t\t\tins_h = win[strstart] & 0xff;\n\t\t\t\tins_h = (((ins_h) << hash_shift) ^ (win[strstart + 1] & 0xff)) & hash_mask;\n\t\t\t}\n\t\t\t// If the whole input has less than MIN_MATCH bytes, ins_h is\n\t\t\t// garbage,\n\t\t\t// but this is not important since only literal bytes will be\n\t\t\t// emitted.\n\t\t} while (lookahead < MIN_LOOKAHEAD && strm.avail_in !== 0);\n\t}\n\n\t// Copy without compression as much as possible from the input stream,\n\t// return\n\t// the current block state.\n\t// This function does not insert new strings in the dictionary since\n\t// uncompressible data is probably not useful. This function is used\n\t// only for the level=0 compression option.\n\t// NOTE: this function should be optimized to avoid extra copying from\n\t// win to pending_buf.\n\tfunction deflate_stored(flush) {\n\t\t// Stored blocks are limited to 0xffff bytes, pending_buf is limited\n\t\t// to pending_buf_size, and each stored block has a 5 byte header:\n\n\t\tlet max_block_size = 0xffff;\n\t\tlet max_start;\n\n\t\tif (max_block_size > pending_buf_size - 5) {\n\t\t\tmax_block_size = pending_buf_size - 5;\n\t\t}\n\n\t\t// Copy as much as possible from input to output:\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\t// Fill the win as much as possible:\n\t\t\tif (lookahead <= 1) {\n\t\t\t\tfill_window();\n\t\t\t\tif (lookahead === 0 && flush == Z_NO_FLUSH)\n\t\t\t\t\treturn NeedMore;\n\t\t\t\tif (lookahead === 0)\n\t\t\t\t\tbreak; // flush the current block\n\t\t\t}\n\n\t\t\tstrstart += lookahead;\n\t\t\tlookahead = 0;\n\n\t\t\t// Emit a stored block if pending_buf will be full:\n\t\t\tmax_start = block_start + max_block_size;\n\t\t\tif (strstart === 0 || strstart >= max_start) {\n\t\t\t\t// strstart === 0 is possible when wraparound on 16-bit machine\n\t\t\t\tlookahead = (strstart - max_start);\n\t\t\t\tstrstart = max_start;\n\n\t\t\t\tflush_block_only(false);\n\t\t\t\tif (strm.avail_out === 0)\n\t\t\t\t\treturn NeedMore;\n\n\t\t\t}\n\n\t\t\t// Flush if we may have to slide, otherwise block_start may become\n\t\t\t// negative and the data will be gone:\n\t\t\tif (strstart - block_start >= w_size - MIN_LOOKAHEAD) {\n\t\t\t\tflush_block_only(false);\n\t\t\t\tif (strm.avail_out === 0)\n\t\t\t\t\treturn NeedMore;\n\t\t\t}\n\t\t}\n\n\t\tflush_block_only(flush == Z_FINISH);\n\t\tif (strm.avail_out === 0)\n\t\t\treturn (flush == Z_FINISH) ? FinishStarted : NeedMore;\n\n\t\treturn flush == Z_FINISH ? FinishDone : BlockDone;\n\t}\n\n\tfunction longest_match(cur_match) {\n\t\tlet chain_length = max_chain_length; // max hash chain length\n\t\tlet scan = strstart; // current string\n\t\tlet match; // matched string\n\t\tlet len; // length of current match\n\t\tlet best_len = prev_length; // best match length so far\n\t\tconst limit = strstart > (w_size - MIN_LOOKAHEAD) ? strstart - (w_size - MIN_LOOKAHEAD) : 0;\n\t\tlet _nice_match = nice_match;\n\n\t\t// Stop when cur_match becomes <= limit. To simplify the code,\n\t\t// we prevent matches with the string of win index 0.\n\n\t\tconst wmask = w_mask;\n\n\t\tconst strend = strstart + MAX_MATCH;\n\t\tlet scan_end1 = win[scan + best_len - 1];\n\t\tlet scan_end = win[scan + best_len];\n\n\t\t// The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of\n\t\t// 16.\n\t\t// It is easy to get rid of this optimization if necessary.\n\n\t\t// Do not waste too much time if we already have a good match:\n\t\tif (prev_length >= good_match) {\n\t\t\tchain_length >>= 2;\n\t\t}\n\n\t\t// Do not look for matches beyond the end of the input. This is\n\t\t// necessary\n\t\t// to make deflate deterministic.\n\t\tif (_nice_match > lookahead)\n\t\t\t_nice_match = lookahead;\n\n\t\tdo {\n\t\t\tmatch = cur_match;\n\n\t\t\t// Skip to next match if the match length cannot increase\n\t\t\t// or if the match length is less than 2:\n\t\t\tif (win[match + best_len] != scan_end || win[match + best_len - 1] != scan_end1 || win[match] != win[scan]\n\t\t\t\t|| win[++match] != win[scan + 1])\n\t\t\t\tcontinue;\n\n\t\t\t// The check at best_len-1 can be removed because it will be made\n\t\t\t// again later. (This heuristic is not always a win.)\n\t\t\t// It is not necessary to compare scan[2] and match[2] since they\n\t\t\t// are always equal when the other bytes match, given that\n\t\t\t// the hash keys are equal and that HASH_BITS >= 8.\n\t\t\tscan += 2;\n\t\t\tmatch++;\n\n\t\t\t// We check for insufficient lookahead only every 8th comparison;\n\t\t\t// the 256th check will be made at strstart+258.\n\t\t\t// eslint-disable-next-line no-empty\n\t\t\tdo {\n\t\t\t\t// empty block\n\t\t\t} while (win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match]\n\t\t\t&& win[++scan] == win[++match] && win[++scan] == win[++match] && win[++scan] == win[++match]\n\t\t\t&& win[++scan] == win[++match] && win[++scan] == win[++match] && scan < strend);\n\n\t\t\tlen = MAX_MATCH - (strend - scan);\n\t\t\tscan = strend - MAX_MATCH;\n\n\t\t\tif (len > best_len) {\n\t\t\t\tmatch_start = cur_match;\n\t\t\t\tbest_len = len;\n\t\t\t\tif (len >= _nice_match)\n\t\t\t\t\tbreak;\n\t\t\t\tscan_end1 = win[scan + best_len - 1];\n\t\t\t\tscan_end = win[scan + best_len];\n\t\t\t}\n\n\t\t} while ((cur_match = (prev[cur_match & wmask] & 0xffff)) > limit && --chain_length !== 0);\n\n\t\tif (best_len <= lookahead)\n\t\t\treturn best_len;\n\t\treturn lookahead;\n\t}\n\n\t// Compress as much as possible from the input stream, return the current\n\t// block state.\n\t// This function does not perform lazy evaluation of matches and inserts\n\t// new strings in the dictionary only for unmatched strings or for short\n\t// matches. It is used only for the fast compression options.\n\tfunction deflate_fast(flush) {\n\t\t// short hash_head = 0; // head of the hash chain\n\t\tlet hash_head = 0; // head of the hash chain\n\t\tlet bflush; // set if current block must be flushed\n\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\t// Make sure that we always have enough lookahead, except\n\t\t\t// at the end of the input file. We need MAX_MATCH bytes\n\t\t\t// for the next match, plus MIN_MATCH bytes to insert the\n\t\t\t// string following the next match.\n\t\t\tif (lookahead < MIN_LOOKAHEAD) {\n\t\t\t\tfill_window();\n\t\t\t\tif (lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {\n\t\t\t\t\treturn NeedMore;\n\t\t\t\t}\n\t\t\t\tif (lookahead === 0)\n\t\t\t\t\tbreak; // flush the current block\n\t\t\t}\n\n\t\t\t// Insert the string win[strstart .. strstart+2] in the\n\t\t\t// dictionary, and set hash_head to the head of the hash chain:\n\t\t\tif (lookahead >= MIN_MATCH) {\n\t\t\t\tins_h = (((ins_h) << hash_shift) ^ (win[(strstart) + (MIN_MATCH - 1)] & 0xff)) & hash_mask;\n\n\t\t\t\t// prev[strstart&w_mask]=hash_head=head[ins_h];\n\t\t\t\thash_head = (head[ins_h] & 0xffff);\n\t\t\t\tprev[strstart & w_mask] = head[ins_h];\n\t\t\t\thead[ins_h] = strstart;\n\t\t\t}\n\n\t\t\t// Find the longest match, discarding those <= prev_length.\n\t\t\t// At this point we have always match_length < MIN_MATCH\n\n\t\t\tif (hash_head !== 0 && ((strstart - hash_head) & 0xffff) <= w_size - MIN_LOOKAHEAD) {\n\t\t\t\t// To simplify the code, we prevent matches with the string\n\t\t\t\t// of win index 0 (in particular we have to avoid a match\n\t\t\t\t// of the string with itself at the start of the input file).\n\t\t\t\tif (strategy != Z_HUFFMAN_ONLY) {\n\t\t\t\t\tmatch_length = longest_match(hash_head);\n\t\t\t\t}\n\t\t\t\t// longest_match() sets match_start\n\t\t\t}\n\t\t\tif (match_length >= MIN_MATCH) {\n\t\t\t\t// check_match(strstart, match_start, match_length);\n\n\t\t\t\tbflush = _tr_tally(strstart - match_start, match_length - MIN_MATCH);\n\n\t\t\t\tlookahead -= match_length;\n\n\t\t\t\t// Insert new strings in the hash table only if the match length\n\t\t\t\t// is not too large. This saves time but degrades compression.\n\t\t\t\tif (match_length <= max_lazy_match && lookahead >= MIN_MATCH) {\n\t\t\t\t\tmatch_length--; // string at strstart already in hash table\n\t\t\t\t\tdo {\n\t\t\t\t\t\tstrstart++;\n\n\t\t\t\t\t\tins_h = ((ins_h << hash_shift) ^ (win[(strstart) + (MIN_MATCH - 1)] & 0xff)) & hash_mask;\n\t\t\t\t\t\t// prev[strstart&w_mask]=hash_head=head[ins_h];\n\t\t\t\t\t\thash_head = (head[ins_h] & 0xffff);\n\t\t\t\t\t\tprev[strstart & w_mask] = head[ins_h];\n\t\t\t\t\t\thead[ins_h] = strstart;\n\n\t\t\t\t\t\t// strstart never exceeds WSIZE-MAX_MATCH, so there are\n\t\t\t\t\t\t// always MIN_MATCH bytes ahead.\n\t\t\t\t\t} while (--match_length !== 0);\n\t\t\t\t\tstrstart++;\n\t\t\t\t} else {\n\t\t\t\t\tstrstart += match_length;\n\t\t\t\t\tmatch_length = 0;\n\t\t\t\t\tins_h = win[strstart] & 0xff;\n\n\t\t\t\t\tins_h = (((ins_h) << hash_shift) ^ (win[strstart + 1] & 0xff)) & hash_mask;\n\t\t\t\t\t// If lookahead < MIN_MATCH, ins_h is garbage, but it does\n\t\t\t\t\t// not\n\t\t\t\t\t// matter since it will be recomputed at next deflate call.\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// No match, output a literal byte\n\n\t\t\t\tbflush = _tr_tally(0, win[strstart] & 0xff);\n\t\t\t\tlookahead--;\n\t\t\t\tstrstart++;\n\t\t\t}\n\t\t\tif (bflush) {\n\n\t\t\t\tflush_block_only(false);\n\t\t\t\tif (strm.avail_out === 0)\n\t\t\t\t\treturn NeedMore;\n\t\t\t}\n\t\t}\n\n\t\tflush_block_only(flush == Z_FINISH);\n\t\tif (strm.avail_out === 0) {\n\t\t\tif (flush == Z_FINISH)\n\t\t\t\treturn FinishStarted;\n\t\t\telse\n\t\t\t\treturn NeedMore;\n\t\t}\n\t\treturn flush == Z_FINISH ? FinishDone : BlockDone;\n\t}\n\n\t// Same as above, but achieves better compression. We use a lazy\n\t// evaluation for matches: a match is finally adopted only if there is\n\t// no better match at the next win position.\n\tfunction deflate_slow(flush) {\n\t\t// short hash_head = 0; // head of hash chain\n\t\tlet hash_head = 0; // head of hash chain\n\t\tlet bflush; // set if current block must be flushed\n\t\tlet max_insert;\n\n\t\t// Process the input block.\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\t// Make sure that we always have enough lookahead, except\n\t\t\t// at the end of the input file. We need MAX_MATCH bytes\n\t\t\t// for the next match, plus MIN_MATCH bytes to insert the\n\t\t\t// string following the next match.\n\n\t\t\tif (lookahead < MIN_LOOKAHEAD) {\n\t\t\t\tfill_window();\n\t\t\t\tif (lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {\n\t\t\t\t\treturn NeedMore;\n\t\t\t\t}\n\t\t\t\tif (lookahead === 0)\n\t\t\t\t\tbreak; // flush the current block\n\t\t\t}\n\n\t\t\t// Insert the string win[strstart .. strstart+2] in the\n\t\t\t// dictionary, and set hash_head to the head of the hash chain:\n\n\t\t\tif (lookahead >= MIN_MATCH) {\n\t\t\t\tins_h = (((ins_h) << hash_shift) ^ (win[(strstart) + (MIN_MATCH - 1)] & 0xff)) & hash_mask;\n\t\t\t\t// prev[strstart&w_mask]=hash_head=head[ins_h];\n\t\t\t\thash_head = (head[ins_h] & 0xffff);\n\t\t\t\tprev[strstart & w_mask] = head[ins_h];\n\t\t\t\thead[ins_h] = strstart;\n\t\t\t}\n\n\t\t\t// Find the longest match, discarding those <= prev_length.\n\t\t\tprev_length = match_length;\n\t\t\tprev_match = match_start;\n\t\t\tmatch_length = MIN_MATCH - 1;\n\n\t\t\tif (hash_head !== 0 && prev_length < max_lazy_match && ((strstart - hash_head) & 0xffff) <= w_size - MIN_LOOKAHEAD) {\n\t\t\t\t// To simplify the code, we prevent matches with the string\n\t\t\t\t// of win index 0 (in particular we have to avoid a match\n\t\t\t\t// of the string with itself at the start of the input file).\n\n\t\t\t\tif (strategy != Z_HUFFMAN_ONLY) {\n\t\t\t\t\tmatch_length = longest_match(hash_head);\n\t\t\t\t}\n\t\t\t\t// longest_match() sets match_start\n\n\t\t\t\tif (match_length <= 5 && (strategy == Z_FILTERED || (match_length == MIN_MATCH && strstart - match_start > 4096))) {\n\n\t\t\t\t\t// If prev_match is also MIN_MATCH, match_start is garbage\n\t\t\t\t\t// but we will ignore the current match anyway.\n\t\t\t\t\tmatch_length = MIN_MATCH - 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If there was a match at the previous step and the current\n\t\t\t// match is not better, output the previous match:\n\t\t\tif (prev_length >= MIN_MATCH && match_length <= prev_length) {\n\t\t\t\tmax_insert = strstart + lookahead - MIN_MATCH;\n\t\t\t\t// Do not insert strings in hash table beyond this.\n\n\t\t\t\t// check_match(strstart-1, prev_match, prev_length);\n\n\t\t\t\tbflush = _tr_tally(strstart - 1 - prev_match, prev_length - MIN_MATCH);\n\n\t\t\t\t// Insert in hash table all strings up to the end of the match.\n\t\t\t\t// strstart-1 and strstart are already inserted. If there is not\n\t\t\t\t// enough lookahead, the last two strings are not inserted in\n\t\t\t\t// the hash table.\n\t\t\t\tlookahead -= prev_length - 1;\n\t\t\t\tprev_length -= 2;\n\t\t\t\tdo {\n\t\t\t\t\tif (++strstart <= max_insert) {\n\t\t\t\t\t\tins_h = (((ins_h) << hash_shift) ^ (win[(strstart) + (MIN_MATCH - 1)] & 0xff)) & hash_mask;\n\t\t\t\t\t\t// prev[strstart&w_mask]=hash_head=head[ins_h];\n\t\t\t\t\t\thash_head = (head[ins_h] & 0xffff);\n\t\t\t\t\t\tprev[strstart & w_mask] = head[ins_h];\n\t\t\t\t\t\thead[ins_h] = strstart;\n\t\t\t\t\t}\n\t\t\t\t} while (--prev_length !== 0);\n\t\t\t\tmatch_available = 0;\n\t\t\t\tmatch_length = MIN_MATCH - 1;\n\t\t\t\tstrstart++;\n\n\t\t\t\tif (bflush) {\n\t\t\t\t\tflush_block_only(false);\n\t\t\t\t\tif (strm.avail_out === 0)\n\t\t\t\t\t\treturn NeedMore;\n\t\t\t\t}\n\t\t\t} else if (match_available !== 0) {\n\n\t\t\t\t// If there was no match at the previous position, output a\n\t\t\t\t// single literal. If there was a match but the current match\n\t\t\t\t// is longer, truncate the previous match to a single literal.\n\n\t\t\t\tbflush = _tr_tally(0, win[strstart - 1] & 0xff);\n\n\t\t\t\tif (bflush) {\n\t\t\t\t\tflush_block_only(false);\n\t\t\t\t}\n\t\t\t\tstrstart++;\n\t\t\t\tlookahead--;\n\t\t\t\tif (strm.avail_out === 0)\n\t\t\t\t\treturn NeedMore;\n\t\t\t} else {\n\t\t\t\t// There is no previous match to compare with, wait for\n\t\t\t\t// the next step to decide.\n\n\t\t\t\tmatch_available = 1;\n\t\t\t\tstrstart++;\n\t\t\t\tlookahead--;\n\t\t\t}\n\t\t}\n\n\t\tif (match_available !== 0) {\n\t\t\tbflush = _tr_tally(0, win[strstart - 1] & 0xff);\n\t\t\tmatch_available = 0;\n\t\t}\n\t\tflush_block_only(flush == Z_FINISH);\n\n\t\tif (strm.avail_out === 0) {\n\t\t\tif (flush == Z_FINISH)\n\t\t\t\treturn FinishStarted;\n\t\t\telse\n\t\t\t\treturn NeedMore;\n\t\t}\n\n\t\treturn flush == Z_FINISH ? FinishDone : BlockDone;\n\t}\n\n\tfunction deflateReset(strm) {\n\t\tstrm.total_in = strm.total_out = 0;\n\t\tstrm.msg = null; //\n\n\t\tthat.pending = 0;\n\t\tthat.pending_out = 0;\n\n\t\tstatus = BUSY_STATE;\n\n\t\tlast_flush = Z_NO_FLUSH;\n\n\t\ttr_init();\n\t\tlm_init();\n\t\treturn Z_OK;\n\t}\n\n\tthat.deflateInit = function (strm, _level, bits, _method, memLevel, _strategy) {\n\t\tif (!_method)\n\t\t\t_method = Z_DEFLATED;\n\t\tif (!memLevel)\n\t\t\tmemLevel = DEF_MEM_LEVEL;\n\t\tif (!_strategy)\n\t\t\t_strategy = Z_DEFAULT_STRATEGY;\n\n\t\t// byte[] my_version=ZLIB_VERSION;\n\n\t\t//\n\t\t// if (!version || version[0] != my_version[0]\n\t\t// || stream_size != sizeof(z_stream)) {\n\t\t// return Z_VERSION_ERROR;\n\t\t// }\n\n\t\tstrm.msg = null;\n\n\t\tif (_level == Z_DEFAULT_COMPRESSION)\n\t\t\t_level = 6;\n\n\t\tif (memLevel < 1 || memLevel > MAX_MEM_LEVEL || _method != Z_DEFLATED || bits < 9 || bits > 15 || _level < 0 || _level > 9 || _strategy < 0\n\t\t\t|| _strategy > Z_HUFFMAN_ONLY) {\n\t\t\treturn Z_STREAM_ERROR;\n\t\t}\n\n\t\tstrm.dstate = that;\n\n\t\tw_bits = bits;\n\t\tw_size = 1 << w_bits;\n\t\tw_mask = w_size - 1;\n\n\t\thash_bits = memLevel + 7;\n\t\thash_size = 1 << hash_bits;\n\t\thash_mask = hash_size - 1;\n\t\thash_shift = Math.floor((hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n\t\twin = new Uint8Array(w_size * 2);\n\t\tprev = [];\n\t\thead = [];\n\n\t\tlit_bufsize = 1 << (memLevel + 6); // 16K elements by default\n\n\t\tthat.pending_buf = new Uint8Array(lit_bufsize * 4);\n\t\tpending_buf_size = lit_bufsize * 4;\n\n\t\tthat.dist_buf = new Uint16Array(lit_bufsize);\n\t\tthat.lc_buf = new Uint8Array(lit_bufsize);\n\n\t\tlevel = _level;\n\n\t\tstrategy = _strategy;\n\n\t\treturn deflateReset(strm);\n\t};\n\n\tthat.deflateEnd = function () {\n\t\tif (status != INIT_STATE && status != BUSY_STATE && status != FINISH_STATE) {\n\t\t\treturn Z_STREAM_ERROR;\n\t\t}\n\t\t// Deallocate in reverse order of allocations:\n\t\tthat.lc_buf = null;\n\t\tthat.dist_buf = null;\n\t\tthat.pending_buf = null;\n\t\thead = null;\n\t\tprev = null;\n\t\twin = null;\n\t\t// free\n\t\tthat.dstate = null;\n\t\treturn status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;\n\t};\n\n\tthat.deflateParams = function (strm, _level, _strategy) {\n\t\tlet err = Z_OK;\n\n\t\tif (_level == Z_DEFAULT_COMPRESSION) {\n\t\t\t_level = 6;\n\t\t}\n\t\tif (_level < 0 || _level > 9 || _strategy < 0 || _strategy > Z_HUFFMAN_ONLY) {\n\t\t\treturn Z_STREAM_ERROR;\n\t\t}\n\n\t\tif (config_table[level].func != config_table[_level].func && strm.total_in !== 0) {\n\t\t\t// Flush the last buffer:\n\t\t\terr = strm.deflate(Z_PARTIAL_FLUSH);\n\t\t}\n\n\t\tif (level != _level) {\n\t\t\tlevel = _level;\n\t\t\tmax_lazy_match = config_table[level].max_lazy;\n\t\t\tgood_match = config_table[level].good_length;\n\t\t\tnice_match = config_table[level].nice_length;\n\t\t\tmax_chain_length = config_table[level].max_chain;\n\t\t}\n\t\tstrategy = _strategy;\n\t\treturn err;\n\t};\n\n\tthat.deflateSetDictionary = function (_strm, dictionary, dictLength) {\n\t\tlet length = dictLength;\n\t\tlet n, index = 0;\n\n\t\tif (!dictionary || status != INIT_STATE)\n\t\t\treturn Z_STREAM_ERROR;\n\n\t\tif (length < MIN_MATCH)\n\t\t\treturn Z_OK;\n\t\tif (length > w_size - MIN_LOOKAHEAD) {\n\t\t\tlength = w_size - MIN_LOOKAHEAD;\n\t\t\tindex = dictLength - length; // use the tail of the dictionary\n\t\t}\n\t\twin.set(dictionary.subarray(index, index + length), 0);\n\n\t\tstrstart = length;\n\t\tblock_start = length;\n\n\t\t// Insert all strings in the hash table (except for the last two bytes).\n\t\t// s->lookahead stays null, so s->ins_h will be recomputed at the next\n\t\t// call of fill_window.\n\n\t\tins_h = win[0] & 0xff;\n\t\tins_h = (((ins_h) << hash_shift) ^ (win[1] & 0xff)) & hash_mask;\n\n\t\tfor (n = 0; n <= length - MIN_MATCH; n++) {\n\t\t\tins_h = (((ins_h) << hash_shift) ^ (win[(n) + (MIN_MATCH - 1)] & 0xff)) & hash_mask;\n\t\t\tprev[n & w_mask] = head[ins_h];\n\t\t\thead[ins_h] = n;\n\t\t}\n\t\treturn Z_OK;\n\t};\n\n\tthat.deflate = function (_strm, flush) {\n\t\tlet i, header, level_flags, old_flush, bstate;\n\n\t\tif (flush > Z_FINISH || flush < 0) {\n\t\t\treturn Z_STREAM_ERROR;\n\t\t}\n\n\t\tif (!_strm.next_out || (!_strm.next_in && _strm.avail_in !== 0) || (status == FINISH_STATE && flush != Z_FINISH)) {\n\t\t\t_strm.msg = z_errmsg[Z_NEED_DICT - (Z_STREAM_ERROR)];\n\t\t\treturn Z_STREAM_ERROR;\n\t\t}\n\t\tif (_strm.avail_out === 0) {\n\t\t\t_strm.msg = z_errmsg[Z_NEED_DICT - (Z_BUF_ERROR)];\n\t\t\treturn Z_BUF_ERROR;\n\t\t}\n\n\t\tstrm = _strm; // just in case\n\t\told_flush = last_flush;\n\t\tlast_flush = flush;\n\n\t\t// Write the zlib header\n\t\tif (status == INIT_STATE) {\n\t\t\theader = (Z_DEFLATED + ((w_bits - 8) << 4)) << 8;\n\t\t\tlevel_flags = ((level - 1) & 0xff) >> 1;\n\n\t\t\tif (level_flags > 3)\n\t\t\t\tlevel_flags = 3;\n\t\t\theader |= (level_flags << 6);\n\t\t\tif (strstart !== 0)\n\t\t\t\theader |= PRESET_DICT;\n\t\t\theader += 31 - (header % 31);\n\n\t\t\tstatus = BUSY_STATE;\n\t\t\tputShortMSB(header);\n\t\t}\n\n\t\t// Flush as much pending output as possible\n\t\tif (that.pending !== 0) {\n\t\t\tstrm.flush_pending();\n\t\t\tif (strm.avail_out === 0) {\n\t\t\t\t// console.log(\" avail_out==0\");\n\t\t\t\t// Since avail_out is 0, deflate will be called again with\n\t\t\t\t// more output space, but possibly with both pending and\n\t\t\t\t// avail_in equal to zero. There won't be anything to do,\n\t\t\t\t// but this is not an error situation so make sure we\n\t\t\t\t// return OK instead of BUF_ERROR at next call of deflate:\n\t\t\t\tlast_flush = -1;\n\t\t\t\treturn Z_OK;\n\t\t\t}\n\n\t\t\t// Make sure there is something to do and avoid duplicate\n\t\t\t// consecutive\n\t\t\t// flushes. For repeated and useless calls with Z_FINISH, we keep\n\t\t\t// returning Z_STREAM_END instead of Z_BUFF_ERROR.\n\t\t} else if (strm.avail_in === 0 && flush <= old_flush && flush != Z_FINISH) {\n\t\t\tstrm.msg = z_errmsg[Z_NEED_DICT - (Z_BUF_ERROR)];\n\t\t\treturn Z_BUF_ERROR;\n\t\t}\n\n\t\t// User must not provide more input after the first FINISH:\n\t\tif (status == FINISH_STATE && strm.avail_in !== 0) {\n\t\t\t_strm.msg = z_errmsg[Z_NEED_DICT - (Z_BUF_ERROR)];\n\t\t\treturn Z_BUF_ERROR;\n\t\t}\n\n\t\t// Start a new block or continue the current one.\n\t\tif (strm.avail_in !== 0 || lookahead !== 0 || (flush != Z_NO_FLUSH && status != FINISH_STATE)) {\n\t\t\tbstate = -1;\n\t\t\tswitch (config_table[level].func) {\n\t\t\t\tcase STORED:\n\t\t\t\t\tbstate = deflate_stored(flush);\n\t\t\t\t\tbreak;\n\t\t\t\tcase FAST:\n\t\t\t\t\tbstate = deflate_fast(flush);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SLOW:\n\t\t\t\t\tbstate = deflate_slow(flush);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}\n\n\t\t\tif (bstate == FinishStarted || bstate == FinishDone) {\n\t\t\t\tstatus = FINISH_STATE;\n\t\t\t}\n\t\t\tif (bstate == NeedMore || bstate == FinishStarted) {\n\t\t\t\tif (strm.avail_out === 0) {\n\t\t\t\t\tlast_flush = -1; // avoid BUF_ERROR next call, see above\n\t\t\t\t}\n\t\t\t\treturn Z_OK;\n\t\t\t\t// If flush != Z_NO_FLUSH && avail_out === 0, the next call\n\t\t\t\t// of deflate should use the same flush parameter to make sure\n\t\t\t\t// that the flush is complete. So we don't have to output an\n\t\t\t\t// empty block here, this will be done at next call. This also\n\t\t\t\t// ensures that for a very small output buffer, we emit at most\n\t\t\t\t// one empty block.\n\t\t\t}\n\n\t\t\tif (bstate == BlockDone) {\n\t\t\t\tif (flush == Z_PARTIAL_FLUSH) {\n\t\t\t\t\t_tr_align();\n\t\t\t\t} else { // FULL_FLUSH or SYNC_FLUSH\n\t\t\t\t\t_tr_stored_block(0, 0, false);\n\t\t\t\t\t// For a full flush, this empty block will be recognized\n\t\t\t\t\t// as a special marker by inflate_sync().\n\t\t\t\t\tif (flush == Z_FULL_FLUSH) {\n\t\t\t\t\t\t// state.head[s.hash_size-1]=0;\n\t\t\t\t\t\tfor (i = 0; i < hash_size/*-1*/; i++)\n\t\t\t\t\t\t\t// forget history\n\t\t\t\t\t\t\thead[i] = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstrm.flush_pending();\n\t\t\t\tif (strm.avail_out === 0) {\n\t\t\t\t\tlast_flush = -1; // avoid BUF_ERROR at next call, see above\n\t\t\t\t\treturn Z_OK;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (flush != Z_FINISH)\n\t\t\treturn Z_OK;\n\t\treturn Z_STREAM_END;\n\t};\n}\n\n// ZStream\n\nfunction ZStream() {\n\tconst that = this;\n\tthat.next_in_index = 0;\n\tthat.next_out_index = 0;\n\t// that.next_in; // next input byte\n\tthat.avail_in = 0; // number of bytes available at next_in\n\tthat.total_in = 0; // total nb of input bytes read so far\n\t// that.next_out; // next output byte should be put there\n\tthat.avail_out = 0; // remaining free space at next_out\n\tthat.total_out = 0; // total nb of bytes output so far\n\t// that.msg;\n\t// that.dstate;\n}\n\nZStream.prototype = {\n\tdeflateInit(level, bits) {\n\t\tconst that = this;\n\t\tthat.dstate = new Deflate();\n\t\tif (!bits)\n\t\t\tbits = MAX_BITS;\n\t\treturn that.dstate.deflateInit(that, level, bits);\n\t},\n\n\tdeflate(flush) {\n\t\tconst that = this;\n\t\tif (!that.dstate) {\n\t\t\treturn Z_STREAM_ERROR;\n\t\t}\n\t\treturn that.dstate.deflate(that, flush);\n\t},\n\n\tdeflateEnd() {\n\t\tconst that = this;\n\t\tif (!that.dstate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\tconst ret = that.dstate.deflateEnd();\n\t\tthat.dstate = null;\n\t\treturn ret;\n\t},\n\n\tdeflateParams(level, strategy) {\n\t\tconst that = this;\n\t\tif (!that.dstate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\treturn that.dstate.deflateParams(that, level, strategy);\n\t},\n\n\tdeflateSetDictionary(dictionary, dictLength) {\n\t\tconst that = this;\n\t\tif (!that.dstate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\treturn that.dstate.deflateSetDictionary(that, dictionary, dictLength);\n\t},\n\n\t// Read a new buffer from the current input stream, update the\n\t// total number of bytes read. All deflate() input goes through\n\t// this function so some applications may wish to modify it to avoid\n\t// allocating a large strm->next_in buffer and copying from it.\n\t// (See also flush_pending()).\n\tread_buf(buf, start, size) {\n\t\tconst that = this;\n\t\tlet len = that.avail_in;\n\t\tif (len > size)\n\t\t\tlen = size;\n\t\tif (len === 0)\n\t\t\treturn 0;\n\t\tthat.avail_in -= len;\n\t\tbuf.set(that.next_in.subarray(that.next_in_index, that.next_in_index + len), start);\n\t\tthat.next_in_index += len;\n\t\tthat.total_in += len;\n\t\treturn len;\n\t},\n\n\t// Flush as much pending output as possible. All deflate() output goes\n\t// through this function so some applications may wish to modify it\n\t// to avoid allocating a large strm->next_out buffer and copying into it.\n\t// (See also read_buf()).\n\tflush_pending() {\n\t\tconst that = this;\n\t\tlet len = that.dstate.pending;\n\n\t\tif (len > that.avail_out)\n\t\t\tlen = that.avail_out;\n\t\tif (len === 0)\n\t\t\treturn;\n\n\t\t// if (that.dstate.pending_buf.length <= that.dstate.pending_out || that.next_out.length <= that.next_out_index\n\t\t// || that.dstate.pending_buf.length < (that.dstate.pending_out + len) || that.next_out.length < (that.next_out_index +\n\t\t// len)) {\n\t\t// console.log(that.dstate.pending_buf.length + \", \" + that.dstate.pending_out + \", \" + that.next_out.length + \", \" +\n\t\t// that.next_out_index + \", \" + len);\n\t\t// console.log(\"avail_out=\" + that.avail_out);\n\t\t// }\n\n\t\tthat.next_out.set(that.dstate.pending_buf.subarray(that.dstate.pending_out, that.dstate.pending_out + len), that.next_out_index);\n\n\t\tthat.next_out_index += len;\n\t\tthat.dstate.pending_out += len;\n\t\tthat.total_out += len;\n\t\tthat.avail_out -= len;\n\t\tthat.dstate.pending -= len;\n\t\tif (that.dstate.pending === 0) {\n\t\t\tthat.dstate.pending_out = 0;\n\t\t}\n\t}\n};\n\n// Deflate\n\nfunction ZipDeflate(options) {\n\tconst that = this;\n\tconst z = new ZStream();\n\tconst bufsize = getMaximumCompressedSize(options && options.chunkSize ? options.chunkSize : 64 * 1024);\n\tconst flush = Z_NO_FLUSH;\n\tconst buf = new Uint8Array(bufsize);\n\tlet level = options ? options.level : Z_DEFAULT_COMPRESSION;\n\tif (typeof level == \"undefined\")\n\t\tlevel = Z_DEFAULT_COMPRESSION;\n\tz.deflateInit(level);\n\tz.next_out = buf;\n\n\tthat.append = function (data, onprogress) {\n\t\tlet err, array, lastIndex = 0, bufferIndex = 0, bufferSize = 0;\n\t\tconst buffers = [];\n\t\tif (!data.length)\n\t\t\treturn;\n\t\tz.next_in_index = 0;\n\t\tz.next_in = data;\n\t\tz.avail_in = data.length;\n\t\tdo {\n\t\t\tz.next_out_index = 0;\n\t\t\tz.avail_out = bufsize;\n\t\t\terr = z.deflate(flush);\n\t\t\tif (err != Z_OK)\n\t\t\t\tthrow new Error(\"deflating: \" + z.msg);\n\t\t\tif (z.next_out_index)\n\t\t\t\tif (z.next_out_index == bufsize)\n\t\t\t\t\tbuffers.push(new Uint8Array(buf));\n\t\t\t\telse\n\t\t\t\t\tbuffers.push(buf.subarray(0, z.next_out_index));\n\t\t\tbufferSize += z.next_out_index;\n\t\t\tif (onprogress && z.next_in_index > 0 && z.next_in_index != lastIndex) {\n\t\t\t\tonprogress(z.next_in_index);\n\t\t\t\tlastIndex = z.next_in_index;\n\t\t\t}\n\t\t} while (z.avail_in > 0 || z.avail_out === 0);\n\t\tif (buffers.length > 1) {\n\t\t\tarray = new Uint8Array(bufferSize);\n\t\t\tbuffers.forEach(function (chunk) {\n\t\t\t\tarray.set(chunk, bufferIndex);\n\t\t\t\tbufferIndex += chunk.length;\n\t\t\t});\n\t\t} else {\n\t\t\tarray = buffers[0] ? new Uint8Array(buffers[0]) : new Uint8Array();\n\t\t}\n\t\treturn array;\n\t};\n\tthat.flush = function () {\n\t\tlet err, array, bufferIndex = 0, bufferSize = 0;\n\t\tconst buffers = [];\n\t\tdo {\n\t\t\tz.next_out_index = 0;\n\t\t\tz.avail_out = bufsize;\n\t\t\terr = z.deflate(Z_FINISH);\n\t\t\tif (err != Z_STREAM_END && err != Z_OK)\n\t\t\t\tthrow new Error(\"deflating: \" + z.msg);\n\t\t\tif (bufsize - z.avail_out > 0)\n\t\t\t\tbuffers.push(buf.slice(0, z.next_out_index));\n\t\t\tbufferSize += z.next_out_index;\n\t\t} while (z.avail_in > 0 || z.avail_out === 0);\n\t\tz.deflateEnd();\n\t\tarray = new Uint8Array(bufferSize);\n\t\tbuffers.forEach(function (chunk) {\n\t\t\tarray.set(chunk, bufferIndex);\n\t\t\tbufferIndex += chunk.length;\n\t\t});\n\t\treturn array;\n\t};\n}\n\nfunction getMaximumCompressedSize(uncompressedSize) {\n\treturn uncompressedSize + (5 * (Math.floor(uncompressedSize / 16383) + 1));\n}\n\nexport {\n\tZipDeflate as Deflate\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * This program is based on JZlib 1.0.2 ymnk, JCraft,Inc.\n * JZlib is based on zlib-1.1.3, so all credit should go authors\n * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu)\n * and contributors of zlib.\n */\n\n// deno-lint-ignore-file no-this-alias prefer-const\n\n// Global\n\nconst MAX_BITS = 15;\n\nconst Z_OK = 0;\nconst Z_STREAM_END = 1;\nconst Z_NEED_DICT = 2;\nconst Z_STREAM_ERROR = -2;\nconst Z_DATA_ERROR = -3;\nconst Z_MEM_ERROR = -4;\nconst Z_BUF_ERROR = -5;\n\nconst inflate_mask = [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff,\n\t0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff];\n\nconst MANY = 1440;\n\n// JZlib version : \"1.0.2\"\nconst Z_NO_FLUSH = 0;\nconst Z_FINISH = 4;\n\n// InfTree\nconst fixed_bl = 9;\nconst fixed_bd = 5;\n\nconst fixed_tl = [96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 160, 0, 8, 0,\n\t0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40,\n\t0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13,\n\t0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7, 83, 0, 8, 124, 0, 8, 60,\n\t0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7,\n\t35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90, 0, 8,\n\t26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80,\n\t7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0,\n\t8, 70, 0, 9, 236, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0,\n\t8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97,\n\t0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210,\n\t81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117,\n\t0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154,\n\t84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83,\n\t0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230,\n\t80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139,\n\t0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174,\n\t0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111,\n\t0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9,\n\t193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8,\n\t120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8,\n\t227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8,\n\t92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9,\n\t249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8,\n\t130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9,\n\t181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8,\n\t102, 0, 8, 38, 0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9,\n\t221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0,\n\t8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9,\n\t147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8,\n\t85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9,\n\t235, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8,\n\t141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9,\n\t167, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8,\n\t107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9,\n\t207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8,\n\t127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255];\nconst fixed_td = [80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025, 85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5,\n\t8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5,\n\t24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577];\n\n// Tables for deflate from PKZIP's appnote.txt.\nconst cplens = [ // Copy lengths for literal codes 257..285\n\t3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0];\n\n// see note #13 above about 258\nconst cplext = [ // Extra bits for literal codes 257..285\n\t0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112 // 112==invalid\n];\n\nconst cpdist = [ // Copy offsets for distance codes 0..29\n\t1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577];\n\nconst cpdext = [ // Extra bits for distance codes\n\t0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];\n\n// If BMAX needs to be larger than 16, then h and x[] should be uLong.\nconst BMAX = 15; // maximum bit length of any code\n\nfunction InfTree() {\n\tconst that = this;\n\n\tlet hn; // hufts used in space\n\tlet v; // work area for huft_build\n\tlet c; // bit length count table\n\tlet r; // table entry for structure assignment\n\tlet u; // table stack\n\tlet x; // bit offsets, then code stack\n\n\tfunction huft_build(b, // code lengths in bits (all assumed <=\n\t\t// BMAX)\n\t\tbindex, n, // number of codes (assumed <= 288)\n\t\ts, // number of simple-valued codes (0..s-1)\n\t\td, // list of base values for non-simple codes\n\t\te, // list of extra bits for non-simple codes\n\t\tt, // result: starting table\n\t\tm, // maximum lookup bits, returns actual\n\t\thp,// space for trees\n\t\thn,// hufts used in space\n\t\tv // working area: values in order of bit length\n\t) {\n\t\t// Given a list of code lengths and a maximum table size, make a set of\n\t\t// tables to decode that set of codes. Return Z_OK on success,\n\t\t// Z_BUF_ERROR\n\t\t// if the given code set is incomplete (the tables are still built in\n\t\t// this\n\t\t// case), Z_DATA_ERROR if the input is invalid (an over-subscribed set\n\t\t// of\n\t\t// lengths), or Z_MEM_ERROR if not enough memory.\n\n\t\tlet a; // counter for codes of length k\n\t\tlet f; // i repeats in table every f entries\n\t\tlet g; // maximum code length\n\t\tlet h; // table level\n\t\tlet i; // counter, current code\n\t\tlet j; // counter\n\t\tlet k; // number of bits in current code\n\t\tlet l; // bits per table (returned in m)\n\t\tlet mask; // (1 << w) - 1, to avoid cc -O bug on HP\n\t\tlet p; // pointer into c[], b[], or v[]\n\t\tlet q; // points to current table\n\t\tlet w; // bits before this table == (l * h)\n\t\tlet xp; // pointer into x\n\t\tlet y; // number of dummy codes added\n\t\tlet z; // number of entries in current table\n\n\t\t// Generate counts for each bit length\n\n\t\tp = 0;\n\t\ti = n;\n\t\tdo {\n\t\t\tc[b[bindex + p]]++;\n\t\t\tp++;\n\t\t\ti--; // assume all entries <= BMAX\n\t\t} while (i !== 0);\n\n\t\tif (c[0] == n) { // null input--all zero length codes\n\t\t\tt[0] = -1;\n\t\t\tm[0] = 0;\n\t\t\treturn Z_OK;\n\t\t}\n\n\t\t// Find minimum and maximum length, bound *m by those\n\t\tl = m[0];\n\t\tfor (j = 1; j <= BMAX; j++)\n\t\t\tif (c[j] !== 0)\n\t\t\t\tbreak;\n\t\tk = j; // minimum code length\n\t\tif (l < j) {\n\t\t\tl = j;\n\t\t}\n\t\tfor (i = BMAX; i !== 0; i--) {\n\t\t\tif (c[i] !== 0)\n\t\t\t\tbreak;\n\t\t}\n\t\tg = i; // maximum code length\n\t\tif (l > i) {\n\t\t\tl = i;\n\t\t}\n\t\tm[0] = l;\n\n\t\t// Adjust last length count to fill out codes, if needed\n\t\tfor (y = 1 << j; j < i; j++, y <<= 1) {\n\t\t\tif ((y -= c[j]) < 0) {\n\t\t\t\treturn Z_DATA_ERROR;\n\t\t\t}\n\t\t}\n\t\tif ((y -= c[i]) < 0) {\n\t\t\treturn Z_DATA_ERROR;\n\t\t}\n\t\tc[i] += y;\n\n\t\t// Generate starting offsets into the value table for each length\n\t\tx[1] = j = 0;\n\t\tp = 1;\n\t\txp = 2;\n\t\twhile (--i !== 0) { // note that i == g from above\n\t\t\tx[xp] = (j += c[p]);\n\t\t\txp++;\n\t\t\tp++;\n\t\t}\n\n\t\t// Make a table of values in order of bit lengths\n\t\ti = 0;\n\t\tp = 0;\n\t\tdo {\n\t\t\tif ((j = b[bindex + p]) !== 0) {\n\t\t\t\tv[x[j]++] = i;\n\t\t\t}\n\t\t\tp++;\n\t\t} while (++i < n);\n\t\tn = x[g]; // set n to length of v\n\n\t\t// Generate the Huffman codes and for each, make the table entries\n\t\tx[0] = i = 0; // first Huffman code is zero\n\t\tp = 0; // grab values in bit order\n\t\th = -1; // no tables yet--level -1\n\t\tw = -l; // bits decoded == (l * h)\n\t\tu[0] = 0; // just to keep compilers happy\n\t\tq = 0; // ditto\n\t\tz = 0; // ditto\n\n\t\t// go through the bit lengths (k already is bits in shortest code)\n\t\tfor (; k <= g; k++) {\n\t\t\ta = c[k];\n\t\t\twhile (a-- !== 0) {\n\t\t\t\t// here i is the Huffman code of length k bits for value *p\n\t\t\t\t// make tables up to required level\n\t\t\t\twhile (k > w + l) {\n\t\t\t\t\th++;\n\t\t\t\t\tw += l; // previous table always l bits\n\t\t\t\t\t// compute minimum size table less than or equal to l bits\n\t\t\t\t\tz = g - w;\n\t\t\t\t\tz = (z > l) ? l : z; // table size upper limit\n\t\t\t\t\tif ((f = 1 << (j = k - w)) > a + 1) { // try a k-w bit table\n\t\t\t\t\t\t// too few codes for\n\t\t\t\t\t\t// k-w bit table\n\t\t\t\t\t\tf -= a + 1; // deduct codes from patterns left\n\t\t\t\t\t\txp = k;\n\t\t\t\t\t\tif (j < z) {\n\t\t\t\t\t\t\twhile (++j < z) { // try smaller tables up to z bits\n\t\t\t\t\t\t\t\tif ((f <<= 1) <= c[++xp])\n\t\t\t\t\t\t\t\t\tbreak; // enough codes to use up j bits\n\t\t\t\t\t\t\t\tf -= c[xp]; // else deduct codes from patterns\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tz = 1 << j; // table entries for j-bit table\n\n\t\t\t\t\t// allocate new table\n\t\t\t\t\tif (hn[0] + z > MANY) { // (note: doesn't matter for fixed)\n\t\t\t\t\t\treturn Z_DATA_ERROR; // overflow of MANY\n\t\t\t\t\t}\n\t\t\t\t\tu[h] = q = /* hp+ */hn[0]; // DEBUG\n\t\t\t\t\thn[0] += z;\n\n\t\t\t\t\t// connect to last table, if there is one\n\t\t\t\t\tif (h !== 0) {\n\t\t\t\t\t\tx[h] = i; // save pattern for backing up\n\t\t\t\t\t\tr[0] = /* (byte) */j; // bits in this table\n\t\t\t\t\t\tr[1] = /* (byte) */l; // bits to dump before this table\n\t\t\t\t\t\tj = i >>> (w - l);\n\t\t\t\t\t\tr[2] = /* (int) */(q - u[h - 1] - j); // offset to this table\n\t\t\t\t\t\thp.set(r, (u[h - 1] + j) * 3);\n\t\t\t\t\t\t// to\n\t\t\t\t\t\t// last\n\t\t\t\t\t\t// table\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt[0] = q; // first table is returned result\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set up table entry in r\n\t\t\t\tr[1] = /* (byte) */(k - w);\n\t\t\t\tif (p >= n) {\n\t\t\t\t\tr[0] = 128 + 64; // out of values--invalid code\n\t\t\t\t} else if (v[p] < s) {\n\t\t\t\t\tr[0] = /* (byte) */(v[p] < 256 ? 0 : 32 + 64); // 256 is\n\t\t\t\t\t// end-of-block\n\t\t\t\t\tr[2] = v[p++]; // simple code is just the value\n\t\t\t\t} else {\n\t\t\t\t\tr[0] = /* (byte) */(e[v[p] - s] + 16 + 64); // non-simple--look\n\t\t\t\t\t// up in lists\n\t\t\t\t\tr[2] = d[v[p++] - s];\n\t\t\t\t}\n\n\t\t\t\t// fill code-like entries with r\n\t\t\t\tf = 1 << (k - w);\n\t\t\t\tfor (j = i >>> w; j < z; j += f) {\n\t\t\t\t\thp.set(r, (q + j) * 3);\n\t\t\t\t}\n\n\t\t\t\t// backwards increment the k-bit code i\n\t\t\t\tfor (j = 1 << (k - 1); (i & j) !== 0; j >>>= 1) {\n\t\t\t\t\ti ^= j;\n\t\t\t\t}\n\t\t\t\ti ^= j;\n\n\t\t\t\t// backup over finished tables\n\t\t\t\tmask = (1 << w) - 1; // needed on HP, cc -O bug\n\t\t\t\twhile ((i & mask) != x[h]) {\n\t\t\t\t\th--; // don't need to update q\n\t\t\t\t\tw -= l;\n\t\t\t\t\tmask = (1 << w) - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Return Z_BUF_ERROR if we were given an incomplete table\n\t\treturn y !== 0 && g != 1 ? Z_BUF_ERROR : Z_OK;\n\t}\n\n\tfunction initWorkArea(vsize) {\n\t\tlet i;\n\t\tif (!hn) {\n\t\t\thn = []; // []; //new Array(1);\n\t\t\tv = []; // new Array(vsize);\n\t\t\tc = new Int32Array(BMAX + 1); // new Array(BMAX + 1);\n\t\t\tr = []; // new Array(3);\n\t\t\tu = new Int32Array(BMAX); // new Array(BMAX);\n\t\t\tx = new Int32Array(BMAX + 1); // new Array(BMAX + 1);\n\t\t}\n\t\tif (v.length < vsize) {\n\t\t\tv = []; // new Array(vsize);\n\t\t}\n\t\tfor (i = 0; i < vsize; i++) {\n\t\t\tv[i] = 0;\n\t\t}\n\t\tfor (i = 0; i < BMAX + 1; i++) {\n\t\t\tc[i] = 0;\n\t\t}\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\tr[i] = 0;\n\t\t}\n\t\t// for(int i=0; i<BMAX; i++){u[i]=0;}\n\t\tu.set(c.subarray(0, BMAX), 0);\n\t\t// for(int i=0; i<BMAX+1; i++){x[i]=0;}\n\t\tx.set(c.subarray(0, BMAX + 1), 0);\n\t}\n\n\tthat.inflate_trees_bits = function (c, // 19 code lengths\n\t\tbb, // bits tree desired/actual depth\n\t\ttb, // bits tree result\n\t\thp, // space for trees\n\t\tz // for messages\n\t) {\n\t\tlet result;\n\t\tinitWorkArea(19);\n\t\thn[0] = 0;\n\t\tresult = huft_build(c, 0, 19, 19, null, null, tb, bb, hp, hn, v);\n\n\t\tif (result == Z_DATA_ERROR) {\n\t\t\tz.msg = \"oversubscribed dynamic bit lengths tree\";\n\t\t} else if (result == Z_BUF_ERROR || bb[0] === 0) {\n\t\t\tz.msg = \"incomplete dynamic bit lengths tree\";\n\t\t\tresult = Z_DATA_ERROR;\n\t\t}\n\t\treturn result;\n\t};\n\n\tthat.inflate_trees_dynamic = function (nl, // number of literal/length codes\n\t\tnd, // number of distance codes\n\t\tc, // that many (total) code lengths\n\t\tbl, // literal desired/actual bit depth\n\t\tbd, // distance desired/actual bit depth\n\t\ttl, // literal/length tree result\n\t\ttd, // distance tree result\n\t\thp, // space for trees\n\t\tz // for messages\n\t) {\n\t\tlet result;\n\n\t\t// build literal/length tree\n\t\tinitWorkArea(288);\n\t\thn[0] = 0;\n\t\tresult = huft_build(c, 0, nl, 257, cplens, cplext, tl, bl, hp, hn, v);\n\t\tif (result != Z_OK || bl[0] === 0) {\n\t\t\tif (result == Z_DATA_ERROR) {\n\t\t\t\tz.msg = \"oversubscribed literal/length tree\";\n\t\t\t} else if (result != Z_MEM_ERROR) {\n\t\t\t\tz.msg = \"incomplete literal/length tree\";\n\t\t\t\tresult = Z_DATA_ERROR;\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\t// build distance tree\n\t\tinitWorkArea(288);\n\t\tresult = huft_build(c, nl, nd, 0, cpdist, cpdext, td, bd, hp, hn, v);\n\n\t\tif (result != Z_OK || (bd[0] === 0 && nl > 257)) {\n\t\t\tif (result == Z_DATA_ERROR) {\n\t\t\t\tz.msg = \"oversubscribed distance tree\";\n\t\t\t} else if (result == Z_BUF_ERROR) {\n\t\t\t\tz.msg = \"incomplete distance tree\";\n\t\t\t\tresult = Z_DATA_ERROR;\n\t\t\t} else if (result != Z_MEM_ERROR) {\n\t\t\t\tz.msg = \"empty distance tree with lengths\";\n\t\t\t\tresult = Z_DATA_ERROR;\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\treturn Z_OK;\n\t};\n\n}\n\nInfTree.inflate_trees_fixed = function (bl, // literal desired/actual bit depth\n\tbd, // distance desired/actual bit depth\n\ttl,// literal/length tree result\n\ttd// distance tree result\n) {\n\tbl[0] = fixed_bl;\n\tbd[0] = fixed_bd;\n\ttl[0] = fixed_tl;\n\ttd[0] = fixed_td;\n\treturn Z_OK;\n};\n\n// InfCodes\n\n// waiting for \"i:\"=input,\n// \"o:\"=output,\n// \"x:\"=nothing\nconst START = 0; // x: set up for LEN\nconst LEN = 1; // i: get length/literal/eob next\nconst LENEXT = 2; // i: getting length extra (have base)\nconst DIST = 3; // i: get distance next\nconst DISTEXT = 4;// i: getting distance extra\nconst COPY = 5; // o: copying bytes in win, waiting\n// for space\nconst LIT = 6; // o: got literal, waiting for output\n// space\nconst WASH = 7; // o: got eob, possibly still output\n// waiting\nconst END = 8; // x: got eob and all data flushed\nconst BADCODE = 9;// x: got error\n\nfunction InfCodes() {\n\tconst that = this;\n\n\tlet mode; // current inflate_codes mode\n\n\t// mode dependent information\n\tlet len = 0;\n\n\tlet tree; // pointer into tree\n\tlet tree_index = 0;\n\tlet need = 0; // bits needed\n\n\tlet lit = 0;\n\n\t// if EXT or COPY, where and how much\n\tlet get = 0; // bits to get for extra\n\tlet dist = 0; // distance back to copy from\n\n\tlet lbits = 0; // ltree bits decoded per branch\n\tlet dbits = 0; // dtree bits decoder per branch\n\tlet ltree; // literal/length/eob tree\n\tlet ltree_index = 0; // literal/length/eob tree\n\tlet dtree; // distance tree\n\tlet dtree_index = 0; // distance tree\n\n\t// Called with number of bytes left to write in win at least 258\n\t// (the maximum string length) and number of input bytes available\n\t// at least ten. The ten bytes are six bytes for the longest length/\n\t// distance pair plus four bytes for overloading the bit buffer.\n\n\tfunction inflate_fast(bl, bd, tl, tl_index, td, td_index, s, z) {\n\t\tlet t; // temporary pointer\n\t\tlet tp; // temporary pointer\n\t\tlet tp_index; // temporary pointer\n\t\tlet e; // extra bits or operation\n\t\tlet b; // bit buffer\n\t\tlet k; // bits in bit buffer\n\t\tlet p; // input data pointer\n\t\tlet n; // bytes available there\n\t\tlet q; // output win write pointer\n\t\tlet m; // bytes to end of win or read pointer\n\t\tlet ml; // mask for literal/length tree\n\t\tlet md; // mask for distance tree\n\t\tlet c; // bytes to copy\n\t\tlet d; // distance back to copy from\n\t\tlet r; // copy source pointer\n\n\t\tlet tp_index_t_3; // (tp_index+t)*3\n\n\t\t// load input, output, bit values\n\t\tp = z.next_in_index;\n\t\tn = z.avail_in;\n\t\tb = s.bitb;\n\t\tk = s.bitk;\n\t\tq = s.write;\n\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\n\t\t// initialize masks\n\t\tml = inflate_mask[bl];\n\t\tmd = inflate_mask[bd];\n\n\t\t// do until not enough input or output space for fast loop\n\t\tdo { // assume called with m >= 258 && n >= 10\n\t\t\t// get literal/length code\n\t\t\twhile (k < (20)) { // max bits for literal/length code\n\t\t\t\tn--;\n\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\tk += 8;\n\t\t\t}\n\n\t\t\tt = b & ml;\n\t\t\ttp = tl;\n\t\t\ttp_index = tl_index;\n\t\t\ttp_index_t_3 = (tp_index + t) * 3;\n\t\t\tif ((e = tp[tp_index_t_3]) === 0) {\n\t\t\t\tb >>= (tp[tp_index_t_3 + 1]);\n\t\t\t\tk -= (tp[tp_index_t_3 + 1]);\n\n\t\t\t\ts.win[q++] = /* (byte) */tp[tp_index_t_3 + 2];\n\t\t\t\tm--;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdo {\n\n\t\t\t\tb >>= (tp[tp_index_t_3 + 1]);\n\t\t\t\tk -= (tp[tp_index_t_3 + 1]);\n\n\t\t\t\tif ((e & 16) !== 0) {\n\t\t\t\t\te &= 15;\n\t\t\t\t\tc = tp[tp_index_t_3 + 2] + (/* (int) */b & inflate_mask[e]);\n\n\t\t\t\t\tb >>= e;\n\t\t\t\t\tk -= e;\n\n\t\t\t\t\t// decode distance base of block to copy\n\t\t\t\t\twhile (k < (15)) { // max bits for distance code\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\n\t\t\t\t\tt = b & md;\n\t\t\t\t\ttp = td;\n\t\t\t\t\ttp_index = td_index;\n\t\t\t\t\ttp_index_t_3 = (tp_index + t) * 3;\n\t\t\t\t\te = tp[tp_index_t_3];\n\n\t\t\t\t\tdo {\n\n\t\t\t\t\t\tb >>= (tp[tp_index_t_3 + 1]);\n\t\t\t\t\t\tk -= (tp[tp_index_t_3 + 1]);\n\n\t\t\t\t\t\tif ((e & 16) !== 0) {\n\t\t\t\t\t\t\t// get extra bits to add to distance base\n\t\t\t\t\t\t\te &= 15;\n\t\t\t\t\t\t\twhile (k < (e)) { // get extra bits (up to 13)\n\t\t\t\t\t\t\t\tn--;\n\t\t\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\t\t\tk += 8;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\td = tp[tp_index_t_3 + 2] + (b & inflate_mask[e]);\n\n\t\t\t\t\t\t\tb >>= (e);\n\t\t\t\t\t\t\tk -= (e);\n\n\t\t\t\t\t\t\t// do the copy\n\t\t\t\t\t\t\tm -= c;\n\t\t\t\t\t\t\tif (q >= d) { // offset before dest\n\t\t\t\t\t\t\t\t// just copy\n\t\t\t\t\t\t\t\tr = q - d;\n\t\t\t\t\t\t\t\tif (q - r > 0 && 2 > (q - r)) {\n\t\t\t\t\t\t\t\t\ts.win[q++] = s.win[r++]; // minimum\n\t\t\t\t\t\t\t\t\t// count is\n\t\t\t\t\t\t\t\t\t// three,\n\t\t\t\t\t\t\t\t\ts.win[q++] = s.win[r++]; // so unroll\n\t\t\t\t\t\t\t\t\t// loop a\n\t\t\t\t\t\t\t\t\t// little\n\t\t\t\t\t\t\t\t\tc -= 2;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ts.win.set(s.win.subarray(r, r + 2), q);\n\t\t\t\t\t\t\t\t\tq += 2;\n\t\t\t\t\t\t\t\t\tr += 2;\n\t\t\t\t\t\t\t\t\tc -= 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else { // else offset after destination\n\t\t\t\t\t\t\t\tr = q - d;\n\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\tr += s.end; // force pointer in win\n\t\t\t\t\t\t\t\t} while (r < 0); // covers invalid distances\n\t\t\t\t\t\t\t\te = s.end - r;\n\t\t\t\t\t\t\t\tif (c > e) { // if source crosses,\n\t\t\t\t\t\t\t\t\tc -= e; // wrapped copy\n\t\t\t\t\t\t\t\t\tif (q - r > 0 && e > (q - r)) {\n\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\ts.win[q++] = s.win[r++];\n\t\t\t\t\t\t\t\t\t\t} while (--e !== 0);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ts.win.set(s.win.subarray(r, r + e), q);\n\t\t\t\t\t\t\t\t\t\tq += e;\n\t\t\t\t\t\t\t\t\t\tr += e;\n\t\t\t\t\t\t\t\t\t\te = 0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tr = 0; // copy rest from start of win\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// copy all or what's left\n\t\t\t\t\t\t\tif (q - r > 0 && c > (q - r)) {\n\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\ts.win[q++] = s.win[r++];\n\t\t\t\t\t\t\t\t} while (--c !== 0);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts.win.set(s.win.subarray(r, r + c), q);\n\t\t\t\t\t\t\t\tq += c;\n\t\t\t\t\t\t\t\tr += c;\n\t\t\t\t\t\t\t\tc = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if ((e & 64) === 0) {\n\t\t\t\t\t\t\tt += tp[tp_index_t_3 + 2];\n\t\t\t\t\t\t\tt += (b & inflate_mask[e]);\n\t\t\t\t\t\t\ttp_index_t_3 = (tp_index + t) * 3;\n\t\t\t\t\t\t\te = tp[tp_index_t_3];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tz.msg = \"invalid distance code\";\n\n\t\t\t\t\t\t\tc = z.avail_in - n;\n\t\t\t\t\t\t\tc = (k >> 3) < c ? k >> 3 : c;\n\t\t\t\t\t\t\tn += c;\n\t\t\t\t\t\t\tp -= c;\n\t\t\t\t\t\t\tk -= c << 3;\n\n\t\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\ts.write = q;\n\n\t\t\t\t\t\t\treturn Z_DATA_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// eslint-disable-next-line no-constant-condition\n\t\t\t\t\t} while (true);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ((e & 64) === 0) {\n\t\t\t\t\tt += tp[tp_index_t_3 + 2];\n\t\t\t\t\tt += (b & inflate_mask[e]);\n\t\t\t\t\ttp_index_t_3 = (tp_index + t) * 3;\n\t\t\t\t\tif ((e = tp[tp_index_t_3]) === 0) {\n\n\t\t\t\t\t\tb >>= (tp[tp_index_t_3 + 1]);\n\t\t\t\t\t\tk -= (tp[tp_index_t_3 + 1]);\n\n\t\t\t\t\t\ts.win[q++] = /* (byte) */tp[tp_index_t_3 + 2];\n\t\t\t\t\t\tm--;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else if ((e & 32) !== 0) {\n\n\t\t\t\t\tc = z.avail_in - n;\n\t\t\t\t\tc = (k >> 3) < c ? k >> 3 : c;\n\t\t\t\t\tn += c;\n\t\t\t\t\tp -= c;\n\t\t\t\t\tk -= c << 3;\n\n\t\t\t\t\ts.bitb = b;\n\t\t\t\t\ts.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\ts.write = q;\n\n\t\t\t\t\treturn Z_STREAM_END;\n\t\t\t\t} else {\n\t\t\t\t\tz.msg = \"invalid literal/length code\";\n\n\t\t\t\t\tc = z.avail_in - n;\n\t\t\t\t\tc = (k >> 3) < c ? k >> 3 : c;\n\t\t\t\t\tn += c;\n\t\t\t\t\tp -= c;\n\t\t\t\t\tk -= c << 3;\n\n\t\t\t\t\ts.bitb = b;\n\t\t\t\t\ts.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\ts.write = q;\n\n\t\t\t\t\treturn Z_DATA_ERROR;\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-constant-condition\n\t\t\t} while (true);\n\t\t} while (m >= 258 && n >= 10);\n\n\t\t// not enough input or output--restore pointers and return\n\t\tc = z.avail_in - n;\n\t\tc = (k >> 3) < c ? k >> 3 : c;\n\t\tn += c;\n\t\tp -= c;\n\t\tk -= c << 3;\n\n\t\ts.bitb = b;\n\t\ts.bitk = k;\n\t\tz.avail_in = n;\n\t\tz.total_in += p - z.next_in_index;\n\t\tz.next_in_index = p;\n\t\ts.write = q;\n\n\t\treturn Z_OK;\n\t}\n\n\tthat.init = function (bl, bd, tl, tl_index, td, td_index) {\n\t\tmode = START;\n\t\tlbits = /* (byte) */bl;\n\t\tdbits = /* (byte) */bd;\n\t\tltree = tl;\n\t\tltree_index = tl_index;\n\t\tdtree = td;\n\t\tdtree_index = td_index;\n\t\ttree = null;\n\t};\n\n\tthat.proc = function (s, z, r) {\n\t\tlet j; // temporary storage\n\t\tlet tindex; // temporary pointer\n\t\tlet e; // extra bits or operation\n\t\tlet b = 0; // bit buffer\n\t\tlet k = 0; // bits in bit buffer\n\t\tlet p = 0; // input data pointer\n\t\tlet n; // bytes available there\n\t\tlet q; // output win write pointer\n\t\tlet m; // bytes to end of win or read pointer\n\t\tlet f; // pointer to copy strings from\n\n\t\t// copy input/output information to locals (UPDATE macro restores)\n\t\tp = z.next_in_index;\n\t\tn = z.avail_in;\n\t\tb = s.bitb;\n\t\tk = s.bitk;\n\t\tq = s.write;\n\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\n\t\t// process input and output based on current state\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\tswitch (mode) {\n\t\t\t\t// waiting for \"i:\"=input, \"o:\"=output, \"x:\"=nothing\n\t\t\t\tcase START: // x: set up for LEN\n\t\t\t\t\tif (m >= 258 && n >= 10) {\n\n\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\tr = inflate_fast(lbits, dbits, ltree, ltree_index, dtree, dtree_index, s, z);\n\n\t\t\t\t\t\tp = z.next_in_index;\n\t\t\t\t\t\tn = z.avail_in;\n\t\t\t\t\t\tb = s.bitb;\n\t\t\t\t\t\tk = s.bitk;\n\t\t\t\t\t\tq = s.write;\n\t\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\n\t\t\t\t\t\tif (r != Z_OK) {\n\t\t\t\t\t\t\tmode = r == Z_STREAM_END ? WASH : BADCODE;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tneed = lbits;\n\t\t\t\t\ttree = ltree;\n\t\t\t\t\ttree_index = ltree_index;\n\n\t\t\t\t\tmode = LEN;\n\t\t\t\t/* falls through */\n\t\t\t\tcase LEN: // i: get length/literal/eob next\n\t\t\t\t\tj = need;\n\n\t\t\t\t\twhile (k < (j)) {\n\t\t\t\t\t\tif (n !== 0)\n\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\telse {\n\n\t\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\n\t\t\t\t\ttindex = (tree_index + (b & inflate_mask[j])) * 3;\n\n\t\t\t\t\tb >>>= (tree[tindex + 1]);\n\t\t\t\t\tk -= (tree[tindex + 1]);\n\n\t\t\t\t\te = tree[tindex];\n\n\t\t\t\t\tif (e === 0) { // literal\n\t\t\t\t\t\tlit = tree[tindex + 2];\n\t\t\t\t\t\tmode = LIT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif ((e & 16) !== 0) { // length\n\t\t\t\t\t\tget = e & 15;\n\t\t\t\t\t\tlen = tree[tindex + 2];\n\t\t\t\t\t\tmode = LENEXT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif ((e & 64) === 0) { // next table\n\t\t\t\t\t\tneed = e;\n\t\t\t\t\t\ttree_index = tindex / 3 + tree[tindex + 2];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif ((e & 32) !== 0) { // end of block\n\t\t\t\t\t\tmode = WASH;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmode = BADCODE; // invalid code\n\t\t\t\t\tz.msg = \"invalid literal/length code\";\n\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\ts.bitb = b;\n\t\t\t\t\ts.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\ts.write = q;\n\t\t\t\t\treturn s.inflate_flush(z, r);\n\n\t\t\t\tcase LENEXT: // i: getting length extra (have base)\n\t\t\t\t\tj = get;\n\n\t\t\t\t\twhile (k < (j)) {\n\t\t\t\t\t\tif (n !== 0)\n\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\telse {\n\n\t\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\n\t\t\t\t\tlen += (b & inflate_mask[j]);\n\n\t\t\t\t\tb >>= j;\n\t\t\t\t\tk -= j;\n\n\t\t\t\t\tneed = dbits;\n\t\t\t\t\ttree = dtree;\n\t\t\t\t\ttree_index = dtree_index;\n\t\t\t\t\tmode = DIST;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DIST: // i: get distance next\n\t\t\t\t\tj = need;\n\n\t\t\t\t\twhile (k < (j)) {\n\t\t\t\t\t\tif (n !== 0)\n\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\telse {\n\n\t\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\n\t\t\t\t\ttindex = (tree_index + (b & inflate_mask[j])) * 3;\n\n\t\t\t\t\tb >>= tree[tindex + 1];\n\t\t\t\t\tk -= tree[tindex + 1];\n\n\t\t\t\t\te = (tree[tindex]);\n\t\t\t\t\tif ((e & 16) !== 0) { // distance\n\t\t\t\t\t\tget = e & 15;\n\t\t\t\t\t\tdist = tree[tindex + 2];\n\t\t\t\t\t\tmode = DISTEXT;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif ((e & 64) === 0) { // next table\n\t\t\t\t\t\tneed = e;\n\t\t\t\t\t\ttree_index = tindex / 3 + tree[tindex + 2];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmode = BADCODE; // invalid code\n\t\t\t\t\tz.msg = \"invalid distance code\";\n\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\ts.bitb = b;\n\t\t\t\t\ts.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\ts.write = q;\n\t\t\t\t\treturn s.inflate_flush(z, r);\n\n\t\t\t\tcase DISTEXT: // i: getting distance extra\n\t\t\t\t\tj = get;\n\n\t\t\t\t\twhile (k < (j)) {\n\t\t\t\t\t\tif (n !== 0)\n\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\telse {\n\n\t\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\n\t\t\t\t\tdist += (b & inflate_mask[j]);\n\n\t\t\t\t\tb >>= j;\n\t\t\t\t\tk -= j;\n\n\t\t\t\t\tmode = COPY;\n\t\t\t\t/* falls through */\n\t\t\t\tcase COPY: // o: copying bytes in win, waiting for space\n\t\t\t\t\tf = q - dist;\n\t\t\t\t\twhile (f < 0) { // modulo win size-\"while\" instead\n\t\t\t\t\t\tf += s.end; // of \"if\" handles invalid distances\n\t\t\t\t\t}\n\t\t\t\t\twhile (len !== 0) {\n\n\t\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\t\tif (q == s.end && s.read !== 0) {\n\t\t\t\t\t\t\t\tq = 0;\n\t\t\t\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\t\tr = s.inflate_flush(z, r);\n\t\t\t\t\t\t\t\tq = s.write;\n\t\t\t\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\n\t\t\t\t\t\t\t\tif (q == s.end && s.read !== 0) {\n\t\t\t\t\t\t\t\t\tq = 0;\n\t\t\t\t\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ts.win[q++] = s.win[f++];\n\t\t\t\t\t\tm--;\n\n\t\t\t\t\t\tif (f == s.end)\n\t\t\t\t\t\t\tf = 0;\n\t\t\t\t\t\tlen--;\n\t\t\t\t\t}\n\t\t\t\t\tmode = START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LIT: // o: got literal, waiting for output space\n\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\tif (q == s.end && s.read !== 0) {\n\t\t\t\t\t\t\tq = 0;\n\t\t\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\tr = s.inflate_flush(z, r);\n\t\t\t\t\t\t\tq = s.write;\n\t\t\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\n\t\t\t\t\t\t\tif (q == s.end && s.read !== 0) {\n\t\t\t\t\t\t\t\tq = 0;\n\t\t\t\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tr = Z_OK;\n\n\t\t\t\t\ts.win[q++] = /* (byte) */lit;\n\t\t\t\t\tm--;\n\n\t\t\t\t\tmode = START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase WASH: // o: got eob, possibly more output\n\t\t\t\t\tif (k > 7) { // return unused byte, if any\n\t\t\t\t\t\tk -= 8;\n\t\t\t\t\t\tn++;\n\t\t\t\t\t\tp--; // can always return one\n\t\t\t\t\t}\n\n\t\t\t\t\ts.write = q;\n\t\t\t\t\tr = s.inflate_flush(z, r);\n\t\t\t\t\tq = s.write;\n\t\t\t\t\tm = q < s.read ? s.read - q - 1 : s.end - q;\n\n\t\t\t\t\tif (s.read != s.write) {\n\t\t\t\t\t\ts.bitb = b;\n\t\t\t\t\t\ts.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\ts.write = q;\n\t\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t\t\t}\n\t\t\t\t\tmode = END;\n\t\t\t\t/* falls through */\n\t\t\t\tcase END:\n\t\t\t\t\tr = Z_STREAM_END;\n\t\t\t\t\ts.bitb = b;\n\t\t\t\t\ts.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\ts.write = q;\n\t\t\t\t\treturn s.inflate_flush(z, r);\n\n\t\t\t\tcase BADCODE: // x: got error\n\n\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\ts.bitb = b;\n\t\t\t\t\ts.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\ts.write = q;\n\t\t\t\t\treturn s.inflate_flush(z, r);\n\n\t\t\t\tdefault:\n\t\t\t\t\tr = Z_STREAM_ERROR;\n\n\t\t\t\t\ts.bitb = b;\n\t\t\t\t\ts.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\ts.write = q;\n\t\t\t\t\treturn s.inflate_flush(z, r);\n\t\t\t}\n\t\t}\n\t};\n\n\tthat.free = function () {\n\t\t// ZFREE(z, c);\n\t};\n\n}\n\n// InfBlocks\n\n// Table for deflate from PKZIP's appnote.txt.\nconst border = [ // Order of the bit length code lengths\n\t16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n\nconst TYPE = 0; // get type bits (3, including end bit)\nconst LENS = 1; // get lengths for stored\nconst STORED = 2;// processing stored block\nconst TABLE = 3; // get table lengths\nconst BTREE = 4; // get bit lengths tree for a dynamic\n// block\nconst DTREE = 5; // get length, distance trees for a\n// dynamic block\nconst CODES = 6; // processing fixed or dynamic block\nconst DRY = 7; // output remaining win bytes\nconst DONELOCKS = 8; // finished last block, done\nconst BADBLOCKS = 9; // ot a data error--stuck here\n\nfunction InfBlocks(z, w) {\n\tconst that = this;\n\n\tlet mode = TYPE; // current inflate_block mode\n\n\tlet left = 0; // if STORED, bytes left to copy\n\n\tlet table = 0; // table lengths (14 bits)\n\tlet index = 0; // index into blens (or border)\n\tlet blens; // bit lengths of codes\n\tconst bb = [0]; // bit length tree depth\n\tconst tb = [0]; // bit length decoding tree\n\n\tconst codes = new InfCodes(); // if CODES, current state\n\n\tlet last = 0; // true if this block is the last block\n\n\tlet hufts = new Int32Array(MANY * 3); // single malloc for tree space\n\tconst check = 0; // check on output\n\tconst inftree = new InfTree();\n\n\tthat.bitk = 0; // bits in bit buffer\n\tthat.bitb = 0; // bit buffer\n\tthat.win = new Uint8Array(w); // sliding win\n\tthat.end = w; // one byte after sliding win\n\tthat.read = 0; // win read pointer\n\tthat.write = 0; // win write pointer\n\n\tthat.reset = function (z, c) {\n\t\tif (c)\n\t\t\tc[0] = check;\n\t\t// if (mode == BTREE || mode == DTREE) {\n\t\t// }\n\t\tif (mode == CODES) {\n\t\t\tcodes.free(z);\n\t\t}\n\t\tmode = TYPE;\n\t\tthat.bitk = 0;\n\t\tthat.bitb = 0;\n\t\tthat.read = that.write = 0;\n\t};\n\n\tthat.reset(z, null);\n\n\t// copy as much as possible from the sliding win to the output area\n\tthat.inflate_flush = function (z, r) {\n\t\tlet n;\n\t\tlet p;\n\t\tlet q;\n\n\t\t// local copies of source and destination pointers\n\t\tp = z.next_out_index;\n\t\tq = that.read;\n\n\t\t// compute number of bytes to copy as far as end of win\n\t\tn = /* (int) */((q <= that.write ? that.write : that.end) - q);\n\t\tif (n > z.avail_out)\n\t\t\tn = z.avail_out;\n\t\tif (n !== 0 && r == Z_BUF_ERROR)\n\t\t\tr = Z_OK;\n\n\t\t// update counters\n\t\tz.avail_out -= n;\n\t\tz.total_out += n;\n\n\t\t// copy as far as end of win\n\t\tz.next_out.set(that.win.subarray(q, q + n), p);\n\t\tp += n;\n\t\tq += n;\n\n\t\t// see if more to copy at beginning of win\n\t\tif (q == that.end) {\n\t\t\t// wrap pointers\n\t\t\tq = 0;\n\t\t\tif (that.write == that.end)\n\t\t\t\tthat.write = 0;\n\n\t\t\t// compute bytes to copy\n\t\t\tn = that.write - q;\n\t\t\tif (n > z.avail_out)\n\t\t\t\tn = z.avail_out;\n\t\t\tif (n !== 0 && r == Z_BUF_ERROR)\n\t\t\t\tr = Z_OK;\n\n\t\t\t// update counters\n\t\t\tz.avail_out -= n;\n\t\t\tz.total_out += n;\n\n\t\t\t// copy\n\t\t\tz.next_out.set(that.win.subarray(q, q + n), p);\n\t\t\tp += n;\n\t\t\tq += n;\n\t\t}\n\n\t\t// update pointers\n\t\tz.next_out_index = p;\n\t\tthat.read = q;\n\n\t\t// done\n\t\treturn r;\n\t};\n\n\tthat.proc = function (z, r) {\n\t\tlet t; // temporary storage\n\t\tlet b; // bit buffer\n\t\tlet k; // bits in bit buffer\n\t\tlet p; // input data pointer\n\t\tlet n; // bytes available there\n\t\tlet q; // output win write pointer\n\t\tlet m; // bytes to end of win or read pointer\n\n\t\tlet i;\n\n\t\t// copy input/output information to locals (UPDATE macro restores)\n\t\t// {\n\t\tp = z.next_in_index;\n\t\tn = z.avail_in;\n\t\tb = that.bitb;\n\t\tk = that.bitk;\n\t\t// }\n\t\t// {\n\t\tq = that.write;\n\t\tm = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q);\n\t\t// }\n\n\t\t// process input based on current state\n\t\t// DEBUG dtree\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\tlet bl, bd, tl, td, bl_, bd_, tl_, td_;\n\t\t\tswitch (mode) {\n\t\t\t\tcase TYPE:\n\n\t\t\t\t\twhile (k < (3)) {\n\t\t\t\t\t\tif (n !== 0) {\n\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\t\t\t\t\tt = /* (int) */(b & 7);\n\t\t\t\t\tlast = t & 1;\n\n\t\t\t\t\tswitch (t >>> 1) {\n\t\t\t\t\t\tcase 0: // stored\n\t\t\t\t\t\t\t// {\n\t\t\t\t\t\t\tb >>>= (3);\n\t\t\t\t\t\t\tk -= (3);\n\t\t\t\t\t\t\t// }\n\t\t\t\t\t\t\tt = k & 7; // go to byte boundary\n\n\t\t\t\t\t\t\t// {\n\t\t\t\t\t\t\tb >>>= (t);\n\t\t\t\t\t\t\tk -= (t);\n\t\t\t\t\t\t\t// }\n\t\t\t\t\t\t\tmode = LENS; // get length of stored block\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 1: // fixed\n\t\t\t\t\t\t\t// {\n\t\t\t\t\t\t\tbl = []; // new Array(1);\n\t\t\t\t\t\t\tbd = []; // new Array(1);\n\t\t\t\t\t\t\ttl = [[]]; // new Array(1);\n\t\t\t\t\t\t\ttd = [[]]; // new Array(1);\n\n\t\t\t\t\t\t\tInfTree.inflate_trees_fixed(bl, bd, tl, td);\n\t\t\t\t\t\t\tcodes.init(bl[0], bd[0], tl[0], 0, td[0], 0);\n\t\t\t\t\t\t\t// }\n\n\t\t\t\t\t\t\t// {\n\t\t\t\t\t\t\tb >>>= (3);\n\t\t\t\t\t\t\tk -= (3);\n\t\t\t\t\t\t\t// }\n\n\t\t\t\t\t\t\tmode = CODES;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2: // dynamic\n\n\t\t\t\t\t\t\t// {\n\t\t\t\t\t\t\tb >>>= (3);\n\t\t\t\t\t\t\tk -= (3);\n\t\t\t\t\t\t\t// }\n\n\t\t\t\t\t\t\tmode = TABLE;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3: // illegal\n\n\t\t\t\t\t\t\t// {\n\t\t\t\t\t\t\tb >>>= (3);\n\t\t\t\t\t\t\tk -= (3);\n\t\t\t\t\t\t\t// }\n\t\t\t\t\t\t\tmode = BADBLOCKS;\n\t\t\t\t\t\t\tz.msg = \"invalid block type\";\n\t\t\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase LENS:\n\n\t\t\t\t\twhile (k < (32)) {\n\t\t\t\t\t\tif (n !== 0) {\n\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((((~b) >>> 16) & 0xffff) != (b & 0xffff)) {\n\t\t\t\t\t\tmode = BADBLOCKS;\n\t\t\t\t\t\tz.msg = \"invalid stored block lengths\";\n\t\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\t\t\t\t\tleft = (b & 0xffff);\n\t\t\t\t\tb = k = 0; // dump bits\n\t\t\t\t\tmode = left !== 0 ? STORED : (last !== 0 ? DRY : TYPE);\n\t\t\t\t\tbreak;\n\t\t\t\tcase STORED:\n\t\t\t\t\tif (n === 0) {\n\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\tif (q == that.end && that.read !== 0) {\n\t\t\t\t\t\t\tq = 0;\n\t\t\t\t\t\t\tm = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\tr = that.inflate_flush(z, r);\n\t\t\t\t\t\t\tq = that.write;\n\t\t\t\t\t\t\tm = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q);\n\t\t\t\t\t\t\tif (q == that.end && that.read !== 0) {\n\t\t\t\t\t\t\t\tq = 0;\n\t\t\t\t\t\t\t\tm = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (m === 0) {\n\t\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tr = Z_OK;\n\n\t\t\t\t\tt = left;\n\t\t\t\t\tif (t > n)\n\t\t\t\t\t\tt = n;\n\t\t\t\t\tif (t > m)\n\t\t\t\t\t\tt = m;\n\t\t\t\t\tthat.win.set(z.read_buf(p, t), q);\n\t\t\t\t\tp += t;\n\t\t\t\t\tn -= t;\n\t\t\t\t\tq += t;\n\t\t\t\t\tm -= t;\n\t\t\t\t\tif ((left -= t) !== 0)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tmode = last !== 0 ? DRY : TYPE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase TABLE:\n\n\t\t\t\t\twhile (k < (14)) {\n\t\t\t\t\t\tif (n !== 0) {\n\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tn--;\n\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\tk += 8;\n\t\t\t\t\t}\n\n\t\t\t\t\ttable = t = (b & 0x3fff);\n\t\t\t\t\tif ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) {\n\t\t\t\t\t\tmode = BADBLOCKS;\n\t\t\t\t\t\tz.msg = \"too many length or distance symbols\";\n\t\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\t\t\t\t\tt = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);\n\t\t\t\t\tif (!blens || blens.length < t) {\n\t\t\t\t\t\tblens = []; // new Array(t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (i = 0; i < t; i++) {\n\t\t\t\t\t\t\tblens[i] = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// {\n\t\t\t\t\tb >>>= (14);\n\t\t\t\t\tk -= (14);\n\t\t\t\t\t// }\n\n\t\t\t\t\tindex = 0;\n\t\t\t\t\tmode = BTREE;\n\t\t\t\t/* falls through */\n\t\t\t\tcase BTREE:\n\t\t\t\t\twhile (index < 4 + (table >>> 10)) {\n\t\t\t\t\t\twhile (k < (3)) {\n\t\t\t\t\t\t\tif (n !== 0) {\n\t\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tn--;\n\t\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\t\tk += 8;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tblens[border[index++]] = b & 7;\n\n\t\t\t\t\t\t// {\n\t\t\t\t\t\tb >>>= (3);\n\t\t\t\t\t\tk -= (3);\n\t\t\t\t\t\t// }\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (index < 19) {\n\t\t\t\t\t\tblens[border[index++]] = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tbb[0] = 7;\n\t\t\t\t\tt = inftree.inflate_trees_bits(blens, bb, tb, hufts, z);\n\t\t\t\t\tif (t != Z_OK) {\n\t\t\t\t\t\tr = t;\n\t\t\t\t\t\tif (r == Z_DATA_ERROR) {\n\t\t\t\t\t\t\tblens = null;\n\t\t\t\t\t\t\tmode = BADBLOCKS;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\n\t\t\t\t\tindex = 0;\n\t\t\t\t\tmode = DTREE;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DTREE:\n\t\t\t\t\t// eslint-disable-next-line no-constant-condition\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tt = table;\n\t\t\t\t\t\tif (index >= 258 + (t & 0x1f) + ((t >> 5) & 0x1f)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet j, c;\n\n\t\t\t\t\t\tt = bb[0];\n\n\t\t\t\t\t\twhile (k < (t)) {\n\t\t\t\t\t\t\tif (n !== 0) {\n\t\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tn--;\n\t\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\t\tk += 8;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// if (tb[0] == -1) {\n\t\t\t\t\t\t// System.err.println(\"null...\");\n\t\t\t\t\t\t// }\n\n\t\t\t\t\t\tt = hufts[(tb[0] + (b & inflate_mask[t])) * 3 + 1];\n\t\t\t\t\t\tc = hufts[(tb[0] + (b & inflate_mask[t])) * 3 + 2];\n\n\t\t\t\t\t\tif (c < 16) {\n\t\t\t\t\t\t\tb >>>= (t);\n\t\t\t\t\t\t\tk -= (t);\n\t\t\t\t\t\t\tblens[index++] = c;\n\t\t\t\t\t\t} else { // c == 16..18\n\t\t\t\t\t\t\ti = c == 18 ? 7 : c - 14;\n\t\t\t\t\t\t\tj = c == 18 ? 11 : 3;\n\n\t\t\t\t\t\t\twhile (k < (t + i)) {\n\t\t\t\t\t\t\t\tif (n !== 0) {\n\t\t\t\t\t\t\t\t\tr = Z_OK;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tn--;\n\t\t\t\t\t\t\t\tb |= (z.read_byte(p++) & 0xff) << k;\n\t\t\t\t\t\t\t\tk += 8;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tb >>>= (t);\n\t\t\t\t\t\t\tk -= (t);\n\n\t\t\t\t\t\t\tj += (b & inflate_mask[i]);\n\n\t\t\t\t\t\t\tb >>>= (i);\n\t\t\t\t\t\t\tk -= (i);\n\n\t\t\t\t\t\t\ti = index;\n\t\t\t\t\t\t\tt = table;\n\t\t\t\t\t\t\tif (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || (c == 16 && i < 1)) {\n\t\t\t\t\t\t\t\tblens = null;\n\t\t\t\t\t\t\t\tmode = BADBLOCKS;\n\t\t\t\t\t\t\t\tz.msg = \"invalid bit length repeat\";\n\t\t\t\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tc = c == 16 ? blens[i - 1] : 0;\n\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\tblens[i++] = c;\n\t\t\t\t\t\t\t} while (--j !== 0);\n\t\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttb[0] = -1;\n\t\t\t\t\t// {\n\t\t\t\t\tbl_ = []; // new Array(1);\n\t\t\t\t\tbd_ = []; // new Array(1);\n\t\t\t\t\ttl_ = []; // new Array(1);\n\t\t\t\t\ttd_ = []; // new Array(1);\n\t\t\t\t\tbl_[0] = 9; // must be <= 9 for lookahead assumptions\n\t\t\t\t\tbd_[0] = 6; // must be <= 9 for lookahead assumptions\n\n\t\t\t\t\tt = table;\n\t\t\t\t\tt = inftree.inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), blens, bl_, bd_, tl_, td_, hufts, z);\n\n\t\t\t\t\tif (t != Z_OK) {\n\t\t\t\t\t\tif (t == Z_DATA_ERROR) {\n\t\t\t\t\t\t\tblens = null;\n\t\t\t\t\t\t\tmode = BADBLOCKS;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tr = t;\n\n\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\t\t\t\t\tcodes.init(bl_[0], bd_[0], hufts, tl_[0], hufts, td_[0]);\n\t\t\t\t\t// }\n\t\t\t\t\tmode = CODES;\n\t\t\t\t/* falls through */\n\t\t\t\tcase CODES:\n\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\tthat.write = q;\n\n\t\t\t\t\tif ((r = codes.proc(that, z, r)) != Z_STREAM_END) {\n\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\t\t\t\t\tr = Z_OK;\n\t\t\t\t\tcodes.free(z);\n\n\t\t\t\t\tp = z.next_in_index;\n\t\t\t\t\tn = z.avail_in;\n\t\t\t\t\tb = that.bitb;\n\t\t\t\t\tk = that.bitk;\n\t\t\t\t\tq = that.write;\n\t\t\t\t\tm = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q);\n\n\t\t\t\t\tif (last === 0) {\n\t\t\t\t\t\tmode = TYPE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmode = DRY;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DRY:\n\t\t\t\t\tthat.write = q;\n\t\t\t\t\tr = that.inflate_flush(z, r);\n\t\t\t\t\tq = that.write;\n\t\t\t\t\tm = /* (int) */(q < that.read ? that.read - q - 1 : that.end - q);\n\t\t\t\t\tif (that.read != that.write) {\n\t\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\t\tthat.write = q;\n\t\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\t\t}\n\t\t\t\t\tmode = DONELOCKS;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DONELOCKS:\n\t\t\t\t\tr = Z_STREAM_END;\n\n\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\tthat.write = q;\n\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t\tcase BADBLOCKS:\n\t\t\t\t\tr = Z_DATA_ERROR;\n\n\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\tthat.write = q;\n\t\t\t\t\treturn that.inflate_flush(z, r);\n\n\t\t\t\tdefault:\n\t\t\t\t\tr = Z_STREAM_ERROR;\n\n\t\t\t\t\tthat.bitb = b;\n\t\t\t\t\tthat.bitk = k;\n\t\t\t\t\tz.avail_in = n;\n\t\t\t\t\tz.total_in += p - z.next_in_index;\n\t\t\t\t\tz.next_in_index = p;\n\t\t\t\t\tthat.write = q;\n\t\t\t\t\treturn that.inflate_flush(z, r);\n\t\t\t}\n\t\t}\n\t};\n\n\tthat.free = function (z) {\n\t\tthat.reset(z, null);\n\t\tthat.win = null;\n\t\thufts = null;\n\t\t// ZFREE(z, s);\n\t};\n\n\tthat.set_dictionary = function (d, start, n) {\n\t\tthat.win.set(d.subarray(start, start + n), 0);\n\t\tthat.read = that.write = n;\n\t};\n\n\t// Returns true if inflate is currently at the end of a block generated\n\t// by Z_SYNC_FLUSH or Z_FULL_FLUSH.\n\tthat.sync_point = function () {\n\t\treturn mode == LENS ? 1 : 0;\n\t};\n\n}\n\n// Inflate\n\n// preset dictionary flag in zlib header\nconst PRESET_DICT = 0x20;\n\nconst Z_DEFLATED = 8;\n\nconst METHOD = 0; // waiting for method byte\nconst FLAG = 1; // waiting for flag byte\nconst DICT4 = 2; // four dictionary check bytes to go\nconst DICT3 = 3; // three dictionary check bytes to go\nconst DICT2 = 4; // two dictionary check bytes to go\nconst DICT1 = 5; // one dictionary check byte to go\nconst DICT0 = 6; // waiting for inflateSetDictionary\nconst BLOCKS = 7; // decompressing blocks\nconst DONE = 12; // finished check, done\nconst BAD = 13; // got an error--stay here\n\nconst mark = [0, 0, 0xff, 0xff];\n\nfunction Inflate() {\n\tconst that = this;\n\n\tthat.mode = 0; // current inflate mode\n\n\t// mode dependent information\n\tthat.method = 0; // if FLAGS, method byte\n\n\t// if CHECK, check values to compare\n\tthat.was = [0]; // new Array(1); // computed check value\n\tthat.need = 0; // stream check value\n\n\t// if BAD, inflateSync's marker bytes count\n\tthat.marker = 0;\n\n\t// mode independent information\n\tthat.wbits = 0; // log2(win size) (8..15, defaults to 15)\n\n\t// this.blocks; // current inflate_blocks state\n\n\tfunction inflateReset(z) {\n\t\tif (!z || !z.istate)\n\t\t\treturn Z_STREAM_ERROR;\n\n\t\tz.total_in = z.total_out = 0;\n\t\tz.msg = null;\n\t\tz.istate.mode = BLOCKS;\n\t\tz.istate.blocks.reset(z, null);\n\t\treturn Z_OK;\n\t}\n\n\tthat.inflateEnd = function (z) {\n\t\tif (that.blocks)\n\t\t\tthat.blocks.free(z);\n\t\tthat.blocks = null;\n\t\t// ZFREE(z, z->state);\n\t\treturn Z_OK;\n\t};\n\n\tthat.inflateInit = function (z, w) {\n\t\tz.msg = null;\n\t\tthat.blocks = null;\n\n\t\t// set win size\n\t\tif (w < 8 || w > 15) {\n\t\t\tthat.inflateEnd(z);\n\t\t\treturn Z_STREAM_ERROR;\n\t\t}\n\t\tthat.wbits = w;\n\n\t\tz.istate.blocks = new InfBlocks(z, 1 << w);\n\n\t\t// reset state\n\t\tinflateReset(z);\n\t\treturn Z_OK;\n\t};\n\n\tthat.inflate = function (z, f) {\n\t\tlet r;\n\t\tlet b;\n\n\t\tif (!z || !z.istate || !z.next_in)\n\t\t\treturn Z_STREAM_ERROR;\n\t\tconst istate = z.istate;\n\t\tf = f == Z_FINISH ? Z_BUF_ERROR : Z_OK;\n\t\tr = Z_BUF_ERROR;\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\tswitch (istate.mode) {\n\t\t\t\tcase METHOD:\n\n\t\t\t\t\tif (z.avail_in === 0)\n\t\t\t\t\t\treturn r;\n\t\t\t\t\tr = f;\n\n\t\t\t\t\tz.avail_in--;\n\t\t\t\t\tz.total_in++;\n\t\t\t\t\tif (((istate.method = z.read_byte(z.next_in_index++)) & 0xf) != Z_DEFLATED) {\n\t\t\t\t\t\tistate.mode = BAD;\n\t\t\t\t\t\tz.msg = \"unknown compression method\";\n\t\t\t\t\t\tistate.marker = 5; // can't try inflateSync\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif ((istate.method >> 4) + 8 > istate.wbits) {\n\t\t\t\t\t\tistate.mode = BAD;\n\t\t\t\t\t\tz.msg = \"invalid win size\";\n\t\t\t\t\t\tistate.marker = 5; // can't try inflateSync\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tistate.mode = FLAG;\n\t\t\t\t/* falls through */\n\t\t\t\tcase FLAG:\n\n\t\t\t\t\tif (z.avail_in === 0)\n\t\t\t\t\t\treturn r;\n\t\t\t\t\tr = f;\n\n\t\t\t\t\tz.avail_in--;\n\t\t\t\t\tz.total_in++;\n\t\t\t\t\tb = (z.read_byte(z.next_in_index++)) & 0xff;\n\n\t\t\t\t\tif ((((istate.method << 8) + b) % 31) !== 0) {\n\t\t\t\t\t\tistate.mode = BAD;\n\t\t\t\t\t\tz.msg = \"incorrect header check\";\n\t\t\t\t\t\tistate.marker = 5; // can't try inflateSync\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((b & PRESET_DICT) === 0) {\n\t\t\t\t\t\tistate.mode = BLOCKS;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tistate.mode = DICT4;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DICT4:\n\n\t\t\t\t\tif (z.avail_in === 0)\n\t\t\t\t\t\treturn r;\n\t\t\t\t\tr = f;\n\n\t\t\t\t\tz.avail_in--;\n\t\t\t\t\tz.total_in++;\n\t\t\t\t\tistate.need = ((z.read_byte(z.next_in_index++) & 0xff) << 24) & 0xff000000;\n\t\t\t\t\tistate.mode = DICT3;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DICT3:\n\n\t\t\t\t\tif (z.avail_in === 0)\n\t\t\t\t\t\treturn r;\n\t\t\t\t\tr = f;\n\n\t\t\t\t\tz.avail_in--;\n\t\t\t\t\tz.total_in++;\n\t\t\t\t\tistate.need += ((z.read_byte(z.next_in_index++) & 0xff) << 16) & 0xff0000;\n\t\t\t\t\tistate.mode = DICT2;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DICT2:\n\n\t\t\t\t\tif (z.avail_in === 0)\n\t\t\t\t\t\treturn r;\n\t\t\t\t\tr = f;\n\n\t\t\t\t\tz.avail_in--;\n\t\t\t\t\tz.total_in++;\n\t\t\t\t\tistate.need += ((z.read_byte(z.next_in_index++) & 0xff) << 8) & 0xff00;\n\t\t\t\t\tistate.mode = DICT1;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DICT1:\n\n\t\t\t\t\tif (z.avail_in === 0)\n\t\t\t\t\t\treturn r;\n\t\t\t\t\tr = f;\n\n\t\t\t\t\tz.avail_in--;\n\t\t\t\t\tz.total_in++;\n\t\t\t\t\tistate.need += (z.read_byte(z.next_in_index++) & 0xff);\n\t\t\t\t\tistate.mode = DICT0;\n\t\t\t\t\treturn Z_NEED_DICT;\n\t\t\t\tcase DICT0:\n\t\t\t\t\tistate.mode = BAD;\n\t\t\t\t\tz.msg = \"need dictionary\";\n\t\t\t\t\tistate.marker = 0; // can try inflateSync\n\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\tcase BLOCKS:\n\n\t\t\t\t\tr = istate.blocks.proc(z, r);\n\t\t\t\t\tif (r == Z_DATA_ERROR) {\n\t\t\t\t\t\tistate.mode = BAD;\n\t\t\t\t\t\tistate.marker = 0; // can try inflateSync\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (r == Z_OK) {\n\t\t\t\t\t\tr = f;\n\t\t\t\t\t}\n\t\t\t\t\tif (r != Z_STREAM_END) {\n\t\t\t\t\t\treturn r;\n\t\t\t\t\t}\n\t\t\t\t\tr = f;\n\t\t\t\t\tistate.blocks.reset(z, istate.was);\n\t\t\t\t\tistate.mode = DONE;\n\t\t\t\t/* falls through */\n\t\t\t\tcase DONE:\n\t\t\t\t\tz.avail_in = 0;\n\t\t\t\t\treturn Z_STREAM_END;\n\t\t\t\tcase BAD:\n\t\t\t\t\treturn Z_DATA_ERROR;\n\t\t\t\tdefault:\n\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t}\n\t\t}\n\t};\n\n\tthat.inflateSetDictionary = function (z, dictionary, dictLength) {\n\t\tlet index = 0, length = dictLength;\n\t\tif (!z || !z.istate || z.istate.mode != DICT0)\n\t\t\treturn Z_STREAM_ERROR;\n\t\tconst istate = z.istate;\n\t\tif (length >= (1 << istate.wbits)) {\n\t\t\tlength = (1 << istate.wbits) - 1;\n\t\t\tindex = dictLength - length;\n\t\t}\n\t\tistate.blocks.set_dictionary(dictionary, index, length);\n\t\tistate.mode = BLOCKS;\n\t\treturn Z_OK;\n\t};\n\n\tthat.inflateSync = function (z) {\n\t\tlet n; // number of bytes to look at\n\t\tlet p; // pointer to bytes\n\t\tlet m; // number of marker bytes found in a row\n\t\tlet r, w; // temporaries to save total_in and total_out\n\n\t\t// set up\n\t\tif (!z || !z.istate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\tconst istate = z.istate;\n\t\tif (istate.mode != BAD) {\n\t\t\tistate.mode = BAD;\n\t\t\tistate.marker = 0;\n\t\t}\n\t\tif ((n = z.avail_in) === 0)\n\t\t\treturn Z_BUF_ERROR;\n\t\tp = z.next_in_index;\n\t\tm = istate.marker;\n\n\t\t// search\n\t\twhile (n !== 0 && m < 4) {\n\t\t\tif (z.read_byte(p) == mark[m]) {\n\t\t\t\tm++;\n\t\t\t} else if (z.read_byte(p) !== 0) {\n\t\t\t\tm = 0;\n\t\t\t} else {\n\t\t\t\tm = 4 - m;\n\t\t\t}\n\t\t\tp++;\n\t\t\tn--;\n\t\t}\n\n\t\t// restore\n\t\tz.total_in += p - z.next_in_index;\n\t\tz.next_in_index = p;\n\t\tz.avail_in = n;\n\t\tistate.marker = m;\n\n\t\t// return no joy or set up to restart on a new block\n\t\tif (m != 4) {\n\t\t\treturn Z_DATA_ERROR;\n\t\t}\n\t\tr = z.total_in;\n\t\tw = z.total_out;\n\t\tinflateReset(z);\n\t\tz.total_in = r;\n\t\tz.total_out = w;\n\t\tistate.mode = BLOCKS;\n\t\treturn Z_OK;\n\t};\n\n\t// Returns true if inflate is currently at the end of a block generated\n\t// by Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP\n\t// implementation to provide an additional safety check. PPP uses\n\t// Z_SYNC_FLUSH\n\t// but removes the length bytes of the resulting empty stored block. When\n\t// decompressing, PPP checks that at the end of input packet, inflate is\n\t// waiting for these length bytes.\n\tthat.inflateSyncPoint = function (z) {\n\t\tif (!z || !z.istate || !z.istate.blocks)\n\t\t\treturn Z_STREAM_ERROR;\n\t\treturn z.istate.blocks.sync_point();\n\t};\n}\n\n// ZStream\n\nfunction ZStream() {\n}\n\nZStream.prototype = {\n\tinflateInit(bits) {\n\t\tconst that = this;\n\t\tthat.istate = new Inflate();\n\t\tif (!bits)\n\t\t\tbits = MAX_BITS;\n\t\treturn that.istate.inflateInit(that, bits);\n\t},\n\n\tinflate(f) {\n\t\tconst that = this;\n\t\tif (!that.istate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\treturn that.istate.inflate(that, f);\n\t},\n\n\tinflateEnd() {\n\t\tconst that = this;\n\t\tif (!that.istate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\tconst ret = that.istate.inflateEnd(that);\n\t\tthat.istate = null;\n\t\treturn ret;\n\t},\n\n\tinflateSync() {\n\t\tconst that = this;\n\t\tif (!that.istate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\treturn that.istate.inflateSync(that);\n\t},\n\tinflateSetDictionary(dictionary, dictLength) {\n\t\tconst that = this;\n\t\tif (!that.istate)\n\t\t\treturn Z_STREAM_ERROR;\n\t\treturn that.istate.inflateSetDictionary(that, dictionary, dictLength);\n\t},\n\tread_byte(start) {\n\t\tconst that = this;\n\t\treturn that.next_in[start];\n\t},\n\tread_buf(start, size) {\n\t\tconst that = this;\n\t\treturn that.next_in.subarray(start, start + size);\n\t}\n};\n\n// Inflater\n\nfunction ZipInflate(options) {\n\tconst that = this;\n\tconst z = new ZStream();\n\tconst bufsize = options && options.chunkSize ? Math.floor(options.chunkSize * 2) : 128 * 1024;\n\tconst flush = Z_NO_FLUSH;\n\tconst buf = new Uint8Array(bufsize);\n\tlet nomoreinput = false;\n\n\tz.inflateInit();\n\tz.next_out = buf;\n\n\tthat.append = function (data, onprogress) {\n\t\tconst buffers = [];\n\t\tlet err, array, lastIndex = 0, bufferIndex = 0, bufferSize = 0;\n\t\tif (data.length === 0)\n\t\t\treturn;\n\t\tz.next_in_index = 0;\n\t\tz.next_in = data;\n\t\tz.avail_in = data.length;\n\t\tdo {\n\t\t\tz.next_out_index = 0;\n\t\t\tz.avail_out = bufsize;\n\t\t\tif ((z.avail_in === 0) && (!nomoreinput)) { // if buffer is empty and more input is available, refill it\n\t\t\t\tz.next_in_index = 0;\n\t\t\t\tnomoreinput = true;\n\t\t\t}\n\t\t\terr = z.inflate(flush);\n\t\t\tif (nomoreinput && (err === Z_BUF_ERROR)) {\n\t\t\t\tif (z.avail_in !== 0)\n\t\t\t\t\tthrow new Error(\"inflating: bad input\");\n\t\t\t} else if (err !== Z_OK && err !== Z_STREAM_END)\n\t\t\t\tthrow new Error(\"inflating: \" + z.msg);\n\t\t\tif ((nomoreinput || err === Z_STREAM_END) && (z.avail_in === data.length))\n\t\t\t\tthrow new Error(\"inflating: bad input\");\n\t\t\tif (z.next_out_index)\n\t\t\t\tif (z.next_out_index === bufsize)\n\t\t\t\t\tbuffers.push(new Uint8Array(buf));\n\t\t\t\telse\n\t\t\t\t\tbuffers.push(buf.subarray(0, z.next_out_index));\n\t\t\tbufferSize += z.next_out_index;\n\t\t\tif (onprogress && z.next_in_index > 0 && z.next_in_index != lastIndex) {\n\t\t\t\tonprogress(z.next_in_index);\n\t\t\t\tlastIndex = z.next_in_index;\n\t\t\t}\n\t\t} while (z.avail_in > 0 || z.avail_out === 0);\n\t\tif (buffers.length > 1) {\n\t\t\tarray = new Uint8Array(bufferSize);\n\t\t\tbuffers.forEach(function (chunk) {\n\t\t\t\tarray.set(chunk, bufferIndex);\n\t\t\t\tbufferIndex += chunk.length;\n\t\t\t});\n\t\t} else {\n\t\t\tarray = buffers[0] ? new Uint8Array(buffers[0]) : new Uint8Array();\n\t\t}\n\t\treturn array;\n\t};\n\tthat.flush = function () {\n\t\tz.inflateEnd();\n\t};\n}\n\nexport {\n\tZipInflate as Inflate\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global self */\n\nimport \"./core/z-worker-core.js\";\nimport { Deflate } from \"./core/streams/codecs/deflate.js\";\nimport { Inflate } from \"./core/streams/codecs/inflate.js\";\n\nself.initCodec = () => {\n\tself.Deflate = Deflate;\n\tself.Inflate = Inflate;\n};"], - "mappings": ";;;AAyCA,IAAM,4BAA4B;AAClC,IAAM,0CAA0C;AAChD,IAAM,kCAAkC;AACxC,IAAM,wCAAwC,4BAA4B,0CAA0C;AAuBpH,IAAM,WAAW,IAAI,KAAK,MAAM,IAAI,EAAE;AACtC,IAAM,WAAW,IAAI,KAAK,MAAM,GAAG,CAAC;AAEpC,IAAM,kBAAkB;AACxB,IAAM,iBAAiB;AACvB,IAAM,gBAAgB;;;ACtCtB,IAAM,gBAAN,MAAoB;AAAA,EAEnB,YAAY,OAAO;AAClB,WAAO,cAAc,gBAAgB;AAAA,MACpC,YAAY,SAAS,SAAS;AAC7B,cAAMA,SAAQ,IAAI,MAAM,OAAO;AAC/B,cAAM;AAAA,UACL,UAAU,OAAO,YAAY;AAC5B,uBAAW,QAAQA,OAAM,OAAO,KAAK,CAAC;AAAA,UACvC;AAAA,UACA,MAAM,YAAY;AACjB,kBAAM,QAAQA,OAAM,MAAM;AAC1B,gBAAI,OAAO;AACV,yBAAW,QAAQ,KAAK;AAAA,YACzB;AAAA,UACD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;;;AC1BA,IAAM,QAAQ,CAAC;AACf,SAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC7B,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,QAAI,IAAI,GAAG;AACV,UAAK,MAAM,IAAK;AAAA,IACjB,OAAO;AACN,UAAI,MAAM;AAAA,IACX;AAAA,EACD;AACA,QAAM,CAAC,IAAI;AACZ;AAEA,IAAM,QAAN,MAAY;AAAA,EAEX,YAAY,KAAK;AAChB,SAAK,MAAM,OAAO;AAAA,EACnB;AAAA,EAEA,OAAO,MAAM;AACZ,QAAI,MAAM,KAAK,MAAM;AACrB,aAAS,SAAS,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,QAAQ,UAAU;AACzE,YAAO,QAAQ,IAAK,OAAO,MAAM,KAAK,MAAM,KAAK,GAAI;AAAA,IACtD;AACA,SAAK,MAAM;AAAA,EACZ;AAAA,EAEA,MAAM;AACL,WAAO,CAAC,KAAK;AAAA,EACd;AACD;;;AC1BA,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAEzC,cAAc;AAEb,QAAI;AACJ,UAAM,QAAQ,IAAI,MAAM;AACxB,UAAM;AAAA,MACL,UAAU,OAAO,YAAY;AAC5B,cAAM,OAAO,KAAK;AAClB,mBAAW,QAAQ,KAAK;AAAA,MACzB;AAAA,MACA,QAAQ;AACP,cAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,cAAM,WAAW,IAAI,SAAS,MAAM,MAAM;AAC1C,iBAAS,UAAU,GAAG,MAAM,IAAI,CAAC;AACjC,eAAO,QAAQ;AAAA,MAChB;AAAA,IACD,CAAC;AACD,aAAS;AAAA,EACV;AACD;;;AChBA,SAAS,WAAW,OAAO;AAE1B,MAAI,OAAO,eAAe,gBAAgB;AACzC,YAAQ,SAAS,mBAAmB,KAAK,CAAC;AAC1C,UAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACvC,aAAO,CAAC,IAAI,MAAM,WAAW,CAAC;AAAA,IAC/B;AACA,WAAO;AAAA,EACR,OAAO;AACN,WAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AAAA,EACtC;AACD;;;ACIA,IAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhB,OAAO,IAAI,IAAI;AACd,QAAI,GAAG,WAAW,KAAK,GAAG,WAAW,GAAG;AACvC,aAAO,GAAG,OAAO,EAAE;AAAA,IACpB;AAEA,UAAM,OAAO,GAAG,GAAG,SAAS,CAAC,GAAG,QAAQ,SAAS,WAAW,IAAI;AAChE,QAAI,UAAU,IAAI;AACjB,aAAO,GAAG,OAAO,EAAE;AAAA,IACpB,OAAO;AACN,aAAO,SAAS,YAAY,IAAI,OAAO,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC;AAAA,IAC5E;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAU,GAAG;AACZ,UAAM,IAAI,EAAE;AACZ,QAAI,MAAM,GAAG;AACZ,aAAO;AAAA,IACR;AACA,UAAM,IAAI,EAAE,IAAI,CAAC;AACjB,YAAQ,IAAI,KAAK,KAAK,SAAS,WAAW,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,GAAG,KAAK;AACb,QAAI,EAAE,SAAS,KAAK,KAAK;AACxB,aAAO;AAAA,IACR;AACA,QAAI,EAAE,MAAM,GAAG,KAAK,KAAK,MAAM,EAAE,CAAC;AAClC,UAAM,IAAI,EAAE;AACZ,UAAM,MAAM;AACZ,QAAI,IAAI,KAAK,KAAK;AACjB,QAAE,IAAI,CAAC,IAAI,SAAS,QAAQ,KAAK,EAAE,IAAI,CAAC,IAAI,cAAe,MAAM,GAAI,CAAC;AAAA,IACvE;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAQ,KAAK,GAAG,MAAM;AACrB,QAAI,QAAQ,IAAI;AACf,aAAO;AAAA,IACR;AACA,YAAQ,OAAO,IAAI,IAAI,KAAM,KAAK,OAAQ,MAAM;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,GAAG;AACb,WAAO,KAAK,MAAM,IAAI,aAAa,KAAK;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,YAAY,GAAG,OAAO,OAAO,KAAK;AACjC,QAAI,QAAQ,QAAW;AACtB,YAAM,CAAC;AAAA,IACR;AAEA,WAAO,SAAS,IAAI,SAAS,IAAI;AAChC,UAAI,KAAK,KAAK;AACd,cAAQ;AAAA,IACT;AACA,QAAI,UAAU,GAAG;AAChB,aAAO,IAAI,OAAO,CAAC;AAAA,IACpB;AAEA,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAClC,UAAI,KAAK,QAAQ,EAAE,CAAC,MAAM,KAAK;AAC/B,cAAQ,EAAE,CAAC,KAAM,KAAK;AAAA,IACvB;AACA,UAAM,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,IAAI;AAC3C,UAAM,SAAS,SAAS,WAAW,KAAK;AACxC,QAAI,KAAK,SAAS,QAAQ,QAAQ,SAAS,IAAK,QAAQ,SAAS,KAAM,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;AAC5F,WAAO;AAAA,EACR;AACD;AAaA,IAAM,QAAQ;AAAA,EACb,OAAO;AAAA;AAAA,IAEN,SAAS,KAAK;AACb,YAAM,KAAK,SAAS,UAAU,GAAG;AACjC,YAAM,aAAa,KAAK;AACxB,YAAM,MAAM,IAAI,WAAW,UAAU;AACrC,UAAI;AACJ,eAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACpC,aAAK,IAAI,OAAO,GAAG;AAClB,gBAAM,IAAI,IAAI,CAAC;AAAA,QAChB;AACA,YAAI,CAAC,IAAI,QAAQ;AACjB,gBAAQ;AAAA,MACT;AACA,aAAO;AAAA,IACR;AAAA;AAAA,IAEA,OAAO,OAAO;AACb,YAAM,MAAM,CAAC;AACb,UAAI;AACJ,UAAI,MAAM;AACV,WAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAClC,cAAM,OAAO,IAAI,MAAM,CAAC;AACxB,aAAK,IAAI,OAAO,GAAG;AAClB,cAAI,KAAK,GAAG;AACZ,gBAAM;AAAA,QACP;AAAA,MACD;AACA,UAAI,IAAI,GAAG;AACV,YAAI,KAAK,SAAS,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC;AAAA,MAC5C;AACA,aAAO;AAAA,IACR;AAAA,EACD;AACD;AAEA,IAAM,OAAO,CAAC;AAMd,KAAK,OAAO,MAAM;AAAA,EACjB,YAAYC,OAAM;AACjB,UAAM,OAAO;AAKb,SAAK,YAAY;AAKjB,SAAK,QAAQ,CAAC,YAAY,YAAY,YAAY,WAAY,UAAU;AAKxE,SAAK,OAAO,CAAC,YAAY,YAAY,YAAY,UAAU;AAC3D,QAAIA,OAAM;AACT,WAAK,KAAKA,MAAK,GAAG,MAAM,CAAC;AACzB,WAAK,UAAUA,MAAK,QAAQ,MAAM,CAAC;AACnC,WAAK,UAAUA,MAAK;AAAA,IACrB,OAAO;AACN,WAAK,MAAM;AAAA,IACZ;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ;AACP,UAAM,OAAO;AACb,SAAK,KAAK,KAAK,MAAM,MAAM,CAAC;AAC5B,SAAK,UAAU,CAAC;AAChB,SAAK,UAAU;AACf,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,MAAM;AACZ,UAAM,OAAO;AACb,QAAI,OAAO,SAAS,UAAU;AAC7B,aAAO,MAAM,WAAW,OAAO,IAAI;AAAA,IACpC;AACA,UAAM,IAAI,KAAK,UAAU,SAAS,OAAO,KAAK,SAAS,IAAI;AAC3D,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK,UAAU,KAAK,SAAS,UAAU,IAAI;AACtD,QAAI,KAAK,kBAAkB;AAC1B,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACtD;AACA,UAAM,IAAI,IAAI,YAAY,CAAC;AAC3B,QAAI,IAAI;AACR,aAAS,IAAI,KAAK,YAAY,MAAO,KAAK,YAAY,KAAO,KAAK,YAAY,IAAK,KAAK,IACvF,KAAK,KAAK,WAAW;AACrB,WAAK,OAAO,EAAE,SAAS,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;AAC5C,WAAK;AAAA,IACN;AACA,MAAE,OAAO,GAAG,KAAK,CAAC;AAClB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW;AACV,UAAM,OAAO;AACb,QAAI,IAAI,KAAK;AACb,UAAM,IAAI,KAAK;AAGf,QAAI,SAAS,OAAO,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,CAAC,CAAC;AAE/C,aAAS,IAAI,EAAE,SAAS,GAAG,IAAI,IAAI,KAAK;AACvC,QAAE,KAAK,CAAC;AAAA,IACT;AAGA,MAAE,KAAK,KAAK,MAAM,KAAK,UAAU,UAAW,CAAC;AAC7C,MAAE,KAAK,KAAK,UAAU,CAAC;AAEvB,WAAO,EAAE,QAAQ;AAChB,WAAK,OAAO,EAAE,OAAO,GAAG,EAAE,CAAC;AAAA,IAC5B;AAEA,SAAK,MAAM;AACX,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,GAAG,GAAG,GAAG,GAAG,GAAG;AACd,QAAI,KAAK,IAAI;AACZ,aAAQ,IAAI,IAAM,CAAC,IAAI;AAAA,IACxB,WAAW,KAAK,IAAI;AACnB,aAAO,IAAI,IAAI;AAAA,IAChB,WAAW,KAAK,IAAI;AACnB,aAAQ,IAAI,IAAM,IAAI,IAAM,IAAI;AAAA,IACjC,WAAW,KAAK,IAAI;AACnB,aAAO,IAAI,IAAI;AAAA,IAChB;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,GAAG,GAAG,GAAG;AACR,WAAQ,KAAK,IAAM,MAAM,KAAK;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,OAAO;AACb,UAAM,OAAO;AACb,UAAM,IAAI,KAAK;AAMf,UAAM,IAAI,MAAM,EAAE;AAClB,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC5B,QAAE,CAAC,IAAI,MAAM,CAAC;AAAA,IACf;AAEA,QAAI,IAAI,EAAE,CAAC;AACX,QAAI,IAAI,EAAE,CAAC;AACX,QAAI,IAAI,EAAE,CAAC;AACX,QAAI,IAAI,EAAE,CAAC;AACX,QAAI,IAAI,EAAE,CAAC;AAEX,aAAS,IAAI,GAAG,KAAK,IAAI,KAAK;AAC7B,UAAI,KAAK,IAAI;AACZ,UAAE,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAAA,MAC9D;AACA,YAAM,MAAO,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,IACzD,KAAK,KAAK,KAAK,MAAM,IAAI,EAAE,CAAC,IAAK;AAClC,UAAI;AACJ,UAAI;AACJ,UAAI,KAAK,GAAG,IAAI,CAAC;AACjB,UAAI;AACJ,UAAI;AAAA,IACL;AAEA,MAAE,CAAC,IAAK,EAAE,CAAC,IAAI,IAAK;AACpB,MAAE,CAAC,IAAK,EAAE,CAAC,IAAI,IAAK;AACpB,MAAE,CAAC,IAAK,EAAE,CAAC,IAAI,IAAK;AACpB,MAAE,CAAC,IAAK,EAAE,CAAC,IAAI,IAAK;AACpB,MAAE,CAAC,IAAK,EAAE,CAAC,IAAI,IAAK;AAAA,EACrB;AACD;AAmBA,IAAM,SAAS,CAAC;AAShB,OAAO,MAAM,MAAM;AAAA,EAClB,YAAY,KAAK;AAahB,UAAM,MAAM;AACZ,QAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzD,QAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC1B,UAAI,YAAY;AAAA,IACjB;AAEA,UAAM,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC;AAC7B,UAAM,WAAW,IAAI,QAAQ,CAAC;AAC9B,UAAM,SAAS,IAAI;AAEnB,QAAI,GAAG,QAAQ,QAAQ,OAAO;AAE9B,QAAI,WAAW,KAAK,WAAW,KAAK,WAAW,GAAG;AACjD,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AAEA,QAAI,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;AAG9C,SAAK,IAAI,QAAQ,IAAI,IAAI,SAAS,IAAI,KAAK;AAC1C,UAAI,MAAM,OAAO,IAAI,CAAC;AAGtB,UAAI,IAAI,WAAW,KAAM,WAAW,KAAK,IAAI,WAAW,GAAI;AAC3D,cAAM,KAAK,QAAQ,EAAE,KAAK,KAAK,KAAK,OAAO,KAAK,GAAG,KAAK,KAAK,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,GAAG;AAGvG,YAAI,IAAI,WAAW,GAAG;AACrB,gBAAM,OAAO,IAAI,QAAQ,KAAK,QAAQ;AACtC,iBAAO,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAClC;AAAA,MACD;AAEA,aAAO,CAAC,IAAI,OAAO,IAAI,MAAM,IAAI;AAAA,IAClC;AAGA,aAAS,IAAI,GAAG,GAAG,KAAK,KAAK;AAC5B,YAAM,MAAM,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC;AACpC,UAAI,KAAK,KAAK,IAAI,GAAG;AACpB,eAAO,CAAC,IAAI;AAAA,MACb,OAAO;AACN,eAAO,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC,IACvC,SAAS,CAAC,EAAE,KAAK,OAAO,KAAK,GAAG,CAAC,IACjC,SAAS,CAAC,EAAE,KAAK,OAAO,IAAI,GAAG,CAAC,IAChC,SAAS,CAAC,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,MAC7B;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,QAAQ,MAAM;AACb,WAAO,KAAK,OAAO,MAAM,CAAC;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,MAAM;AACb,WAAO,KAAK,OAAO,MAAM,CAAC;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc;AACb,UAAM,WAAW,KAAK,QAAQ,CAAC;AAC/B,UAAM,WAAW,KAAK,QAAQ,CAAC;AAC/B,UAAM,OAAO,SAAS,CAAC;AACvB,UAAM,UAAU,SAAS,CAAC;AAC1B,UAAM,IAAI,CAAC;AACX,UAAM,KAAK,CAAC;AACZ,QAAI,MAAM,IAAI,IAAI;AAGlB,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC7B,UAAI,EAAE,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,OAAO,CAAC,IAAI;AAAA,IAC5C;AAEA,aAAS,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI,KAAK,GAAG;AAEpE,UAAI,IAAI,OAAO,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ;AAC3D,UAAI,KAAK,IAAI,IAAI,MAAM;AACvB,WAAK,CAAC,IAAI;AACV,cAAQ,CAAC,IAAI;AAGb,WAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,UAAI,OAAO,KAAK,WAAY,KAAK,QAAU,KAAK,MAAQ,IAAI;AAC5D,UAAI,OAAO,EAAE,CAAC,IAAI,MAAQ,IAAI;AAE9B,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,iBAAS,CAAC,EAAE,CAAC,IAAI,OAAO,QAAQ,KAAK,SAAS;AAC9C,iBAAS,CAAC,EAAE,CAAC,IAAI,OAAO,QAAQ,KAAK,SAAS;AAAA,MAC/C;AAAA,IACD;AAGA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,eAAS,CAAC,IAAI,SAAS,CAAC,EAAE,MAAM,CAAC;AACjC,eAAS,CAAC,IAAI,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA,IAClC;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,OAAO,KAAK;AAClB,QAAI,MAAM,WAAW,GAAG;AACvB,YAAM,IAAI,MAAM,wBAAwB;AAAA,IACzC;AAEA,UAAM,MAAM,KAAK,KAAK,GAAG;AAEzB,UAAM,eAAe,IAAI,SAAS,IAAI;AACtC,UAAM,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,UAAMC,SAAQ,KAAK,QAAQ,GAAG;AAG9B,UAAM,KAAKA,OAAM,CAAC;AAClB,UAAM,KAAKA,OAAM,CAAC;AAClB,UAAM,KAAKA,OAAM,CAAC;AAClB,UAAM,KAAKA,OAAM,CAAC;AAClB,UAAM,OAAOA,OAAM,CAAC;AAGpB,QAAI,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC;AACxB,QAAI,IAAI,MAAM,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC;AAClC,QAAI,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC;AACxB,QAAI,IAAI,MAAM,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC;AAClC,QAAI,SAAS;AACb,QAAI,IAAI,IAAI;AAGZ,aAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACtC,WAAK,GAAG,MAAM,EAAE,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,MAAM;AACnF,WAAK,GAAG,MAAM,EAAE,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC;AACvF,WAAK,GAAG,MAAM,EAAE,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC;AACvF,UAAI,GAAG,MAAM,EAAE,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC;AACtF,gBAAU;AACV,UAAI;AAAI,UAAI;AAAI,UAAI;AAAA,IACrB;AAGA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,UAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IACnB,KAAK,MAAM,EAAE,KAAK,KAClB,KAAK,KAAK,KAAK,GAAG,KAAK,KACvB,KAAK,KAAK,IAAI,GAAG,KAAK,IACtB,KAAK,IAAI,GAAG,IACZ,IAAI,QAAQ;AACb,WAAK;AAAG,UAAI;AAAG,UAAI;AAAG,UAAI;AAAG,UAAI;AAAA,IAClC;AAEA,WAAO;AAAA,EACR;AACD;AAMA,IAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMd,gBAAgB,YAAY;AAC3B,UAAM,QAAQ,IAAI,YAAY,WAAW,MAAM;AAC/C,UAAM,IAAI,CAAC,QAAQ;AAClB,UAAI,MAAM;AACV,YAAM,OAAO;AACb,aAAO,WAAY;AAClB,cAAO,SAAU,MAAM,UAAW,OAAO,MAAS;AAClD,cAAO,QAAU,MAAM,UAAW,OAAO,MAAS;AAClD,cAAM,WAAa,OAAO,MAAQ,MAAO,QAAQ,aAAe;AAChE,eAAO,UAAU,KAAK,OAAO,IAAI,MAAK,IAAI;AAAA,MAC3C;AAAA,IACD;AACA,aAAS,IAAI,GAAG,QAAQ,IAAI,WAAW,QAAQ,KAAK,GAAG;AACtD,YAAM,KAAK,GAAG,UAAU,KAAK,OAAO,KAAK,UAAW;AACpD,eAAS,GAAG,IAAI;AAChB,YAAM,IAAI,CAAC,IAAK,GAAG,IAAI,aAAe;AAAA,IACvC;AACA,WAAO;AAAA,EACR;AACD;AAkBA,IAAM,OAAO,CAAC;AAMd,KAAK,aAAa,MAAM;AAAA,EACvB,YAAY,KAAK,IAAI;AACpB,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,MAAM;AAAA,EACZ;AAAA,EAEA,QAAQ;AACP,SAAK,MAAM,KAAK;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAM;AACZ,WAAO,KAAK,UAAU,KAAK,MAAM,MAAM,KAAK,GAAG;AAAA,EAChD;AAAA,EAEA,QAAQ,MAAM;AACb,SAAM,QAAQ,KAAM,SAAU,KAAM;AACnC,UAAI,KAAM,QAAQ,KAAM;AACxB,UAAI,KAAM,QAAQ,IAAK;AACvB,UAAI,KAAK,OAAO;AAEhB,UAAI,OAAO,KAAM;AAChB,aAAK;AACL,YAAI,OAAO,KAAM;AAChB,eAAK;AACL,cAAI,OAAO,KAAM;AAChB,iBAAK;AAAA,UACN,OAAO;AACN,cAAE;AAAA,UACH;AAAA,QACD,OAAO;AACN,YAAE;AAAA,QACH;AAAA,MACD,OAAO;AACN,UAAE;AAAA,MACH;AAEA,aAAO;AACP,cAAS,MAAM;AACf,cAAS,MAAM;AACf,cAAQ;AAAA,IACT,OAAO;AACN,cAAS,KAAQ;AAAA,IAClB;AACA,WAAO;AAAA,EACR;AAAA,EAEA,WAAW,SAAS;AACnB,SAAK,QAAQ,CAAC,IAAI,KAAK,QAAQ,QAAQ,CAAC,CAAC,OAAO,GAAG;AAElD,cAAQ,CAAC,IAAI,KAAK,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACrC;AAAA,EACD;AAAA,EAEA,UAAU,KAAK,MAAM,IAAI;AACxB,QAAI;AACJ,QAAI,EAAE,IAAI,KAAK,SAAS;AACvB,aAAO,CAAC;AAAA,IACT;AACA,UAAM,KAAK,SAAS,UAAU,IAAI;AAClC,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AAC9B,WAAK,WAAW,EAAE;AAClB,YAAM,IAAI,IAAI,QAAQ,EAAE;AACxB,WAAK,CAAC,KAAK,EAAE,CAAC;AACd,WAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAClB,WAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAClB,WAAK,IAAI,CAAC,KAAK,EAAE,CAAC;AAAA,IACnB;AACA,WAAO,SAAS,MAAM,MAAM,EAAE;AAAA,EAC/B;AACD;AAEA,IAAM,OAAO;AAAA,EACZ,UAAU,UAAU;AACnB,WAAO,IAAI,KAAK,SAAS,MAAM,MAAM,OAAO,QAAQ,CAAC;AAAA,EACtD;AAAA,EACA,OAAO,KAAK,MAAM,OAAO,QAAQ;AAChC,YAAQ,SAAS;AACjB,QAAI,SAAS,KAAK,QAAQ,GAAG;AAC5B,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC3C;AACA,UAAM,cAAe,UAAU,KAAK,KAAM;AAC1C,QAAI,GAAG,IAAI,GAAG,GAAG;AACjB,UAAM,cAAc,IAAI,YAAY,UAAU;AAC9C,UAAM,MAAM,IAAI,SAAS,WAAW;AACpC,QAAI,YAAY;AAChB,UAAM,IAAI;AACV,WAAO,MAAM,MAAM,OAAO,IAAI;AAC9B,SAAK,IAAI,GAAG,aAAa,cAAc,IAAI,KAAK;AAC/C,UAAI,KAAK,IAAI,QAAQ,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC,WAAK,IAAI,GAAG,IAAI,OAAO,KAAK;AAC3B,aAAK,IAAI,QAAQ,EAAE;AACnB,aAAK,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAC/B,YAAE,CAAC,KAAK,GAAG,CAAC;AAAA,QACb;AAAA,MACD;AACA,WAAK,IAAI,GAAG,aAAa,cAAc,MAAM,IAAI,EAAE,QAAQ,KAAK;AAC/D,YAAI,SAAS,WAAW,EAAE,CAAC,CAAC;AAC5B,qBAAa;AAAA,MACd;AAAA,IACD;AACA,WAAO,YAAY,MAAM,GAAG,SAAS,CAAC;AAAA,EACvC;AACD;AAcA,KAAK,WAAW,MAAM;AAAA,EAErB,YAAY,KAAK;AAChB,UAAM,OAAO;AACb,UAAM,OAAO,KAAK,QAAQ,KAAK;AAC/B,UAAM,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,SAAK,YAAY,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC;AACxC,UAAM,KAAK,KAAK,UAAU,CAAC,EAAE,YAAY;AAEzC,QAAI,IAAI,SAAS,IAAI;AACpB,YAAM,IAAI,KAAK,EAAE,OAAO,GAAG,EAAE,SAAS;AAAA,IACvC;AAEA,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC5B,YAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI;AACvB,YAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI;AAAA,IACxB;AAEA,SAAK,UAAU,CAAC,EAAE,OAAO,MAAM,CAAC,CAAC;AACjC,SAAK,UAAU,CAAC,EAAE,OAAO,MAAM,CAAC,CAAC;AACjC,SAAK,cAAc,IAAI,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA,EAC9C;AAAA,EACA,QAAQ;AACP,UAAM,OAAO;AACb,SAAK,cAAc,IAAI,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC;AACnD,SAAK,WAAW;AAAA,EACjB;AAAA,EAEA,OAAO,MAAM;AACZ,UAAM,OAAO;AACb,SAAK,WAAW;AAChB,SAAK,YAAY,OAAO,IAAI;AAAA,EAC7B;AAAA,EAEA,SAAS;AACR,UAAM,OAAO;AACb,UAAM,IAAI,KAAK,YAAY,SAAS;AACpC,UAAM,SAAS,IAAK,KAAK,MAAO,KAAK,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS;AAEtE,SAAK,MAAM;AAEX,WAAO;AAAA,EACR;AAAA,EAEA,QAAQ,MAAM;AACb,QAAI,CAAC,KAAK,UAAU;AACnB,WAAK,OAAO,IAAI;AAChB,aAAO,KAAK,OAAO,IAAI;AAAA,IACxB,OAAO;AACN,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC1D;AAAA,EACD;AACD;;;AC/wBA,IAAM,8BAA8B,OAAO,UAAU,kBAAkB,OAAO,OAAO,mBAAmB;AAExG,IAAM,uBAAuB;AAC7B,IAAM,wBAAwB;AAC9B,IAAM,2BAA2B;AASjC,SAAS,gBAAgB,OAAO;AAC/B,MAAI,6BAA6B;AAChC,WAAO,OAAO,gBAAgB,KAAK;AAAA,EACpC,OAAO;AACN,WAAO,OAAO,gBAAgB,KAAK;AAAA,EACpC;AACD;;;ACRA,IAAM,eAAe;AACrB,IAAM,aAAa;AACnB,IAAM,mBAAmB,EAAE,MAAM,SAAS;AAC1C,IAAM,iBAAiB,EAAE,MAAM,OAAO;AACtC,IAAM,gBAAgB;AACtB,IAAM,qBAAqB,OAAO,OAAO,EAAE,MAAM,eAAe,GAAG,gBAAgB;AACnF,IAAM,yBAAyB,OAAO,OAAO,EAAE,YAAY,KAAM,MAAM,EAAE,MAAM,cAAc,EAAE,GAAG,gBAAgB;AAClH,IAAM,qBAAqB,CAAC,YAAY;AACxC,IAAM,cAAc,CAAC,GAAG,IAAI,EAAE;AAC9B,IAAM,aAAa,CAAC,IAAI,IAAI,EAAE;AAC9B,IAAM,mBAAmB;AACzB,IAAM,wBAAwB,CAAC,GAAG,GAAG,GAAG,CAAC;AAEzC,IAAM,uBAAuB,OAAO,UAAU;AAC9C,IAAM,SAAS,wBAAwB,OAAO;AAC9C,IAAM,uBAAuB,wBAAwB,OAAO,UAAU;AACtE,IAAM,aAAa,MAAM;AACzB,IAAM,MAAM,OAAO;AACnB,IAAM,aAAa,KAAK;AACxB,IAAM,WAAW,KAAK;AAEtB,IAAI,uBAAuB,wBAAwB,wBAAwB,OAAO,OAAO,aAAa;AACtG,IAAI,wBAAwB,wBAAwB,wBAAwB,OAAO,OAAO,cAAc;AAExG,IAAM,sBAAN,cAAkC,gBAAgB;AAAA,EAEjD,YAAY,EAAE,UAAU,aAAa,QAAQ,oBAAoB,kBAAkB,GAAG;AACrF,UAAM;AAAA,MACL,QAAQ;AACP,eAAO,OAAO,MAAM;AAAA,UACnB,OAAO,IAAI,QAAQ,aAAW,KAAK,eAAe,OAAO;AAAA,UACzD,UAAU,eAAe,UAAU,WAAW;AAAA,UAC9C;AAAA,UACA,UAAU,qBAAqB;AAAA,UAC/B,SAAS,IAAI,WAAW;AAAA,QACzB,CAAC;AAAA,MACF;AAAA,MACA,MAAM,UAAU,OAAO,YAAY;AAClC,cAAM,YAAY;AAClB,cAAM;AAAA,UACL,UAAAC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IAAI;AACJ,YAAIA,WAAU;AACb,gBAAM,qBAAqB,WAAW,UAAUA,WAAU,SAAS,OAAO,GAAG,YAAY,QAAQ,IAAI,CAAC,CAAC;AACvG,kBAAQ,SAAS,OAAO,YAAY,QAAQ,IAAI,CAAC;AACjD,cAAI,mBAAmB;AACtB,uBAAW,MAAM,IAAI,MAAM,wBAAwB,CAAC;AAAA,UACrD,OAAO;AACN,yBAAa;AAAA,UACd;AAAA,QACD,OAAO;AACN,gBAAM;AAAA,QACP;AACA,cAAM,SAAS,IAAI,WAAW,MAAM,SAAS,oBAAqB,MAAM,SAAS,oBAAoB,YAAa;AAClH,mBAAW,QAAQ,OAAO,WAAW,OAAO,QAAQ,GAAG,kBAAkB,IAAI,CAAC;AAAA,MAC/E;AAAA,MACA,MAAM,MAAM,YAAY;AACvB,cAAM;AAAA,UACL,QAAAC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IAAI;AACJ,YAAI,QAAQ,KAAK;AAChB,gBAAM;AACN,gBAAM,iBAAiB,SAAS,SAAS,GAAG,QAAQ,SAAS,gBAAgB;AAC7E,gBAAM,oBAAoB,SAAS,SAAS,QAAQ,SAAS,gBAAgB;AAC7E,cAAI,sBAAsB,IAAI,WAAW;AACzC,cAAI,eAAe,QAAQ;AAC1B,kBAAM,iBAAiB,OAAO,YAAY,cAAc;AACxD,iBAAK,OAAO,cAAc;AAC1B,kBAAM,iBAAiB,IAAI,OAAO,cAAc;AAChD,kCAAsB,SAAS,YAAY,cAAc;AAAA,UAC1D;AACA,cAAIA,SAAQ;AACX,kBAAM,YAAY,SAAS,SAAS,YAAY,KAAK,OAAO,CAAC,GAAG,GAAG,gBAAgB;AACnF,qBAAS,iBAAiB,GAAG,iBAAiB,kBAAkB,kBAAkB;AACjF,kBAAI,UAAU,cAAc,KAAK,kBAAkB,cAAc,GAAG;AACnE,sBAAM,IAAI,MAAM,qBAAqB;AAAA,cACtC;AAAA,YACD;AAAA,UACD;AACA,qBAAW,QAAQ,mBAAmB;AAAA,QACvC;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AACD;AAEA,IAAM,sBAAN,cAAkC,gBAAgB;AAAA,EAEjD,YAAY,EAAE,UAAU,aAAa,mBAAmB,GAAG;AAE1D,QAAI;AACJ,UAAM;AAAA,MACL,QAAQ;AACP,eAAO,OAAO,MAAM;AAAA,UACnB,OAAO,IAAI,QAAQ,aAAW,KAAK,eAAe,OAAO;AAAA,UACzD,UAAU,eAAe,UAAU,WAAW;AAAA,UAC9C,UAAU,qBAAqB;AAAA,UAC/B,SAAS,IAAI,WAAW;AAAA,QACzB,CAAC;AAAA,MACF;AAAA,MACA,MAAM,UAAU,OAAO,YAAY;AAClC,cAAM,YAAY;AAClB,cAAM;AAAA,UACL,UAAAD;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IAAI;AACJ,YAAI,WAAW,IAAI,WAAW;AAC9B,YAAIA,WAAU;AACb,qBAAW,MAAM,qBAAqB,WAAW,UAAUA,SAAQ;AACnE,uBAAa;AAAA,QACd,OAAO;AACN,gBAAM;AAAA,QACP;AACA,cAAM,SAAS,IAAI,WAAW,SAAS,SAAS,MAAM,SAAU,MAAM,SAAS,YAAa;AAC5F,eAAO,IAAI,UAAU,CAAC;AACtB,mBAAW,QAAQ,OAAO,WAAW,OAAO,QAAQ,SAAS,QAAQ,CAAC,CAAC;AAAA,MACxE;AAAA,MACA,MAAM,MAAM,YAAY;AACvB,cAAM;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,IAAI;AACJ,YAAI,QAAQ,KAAK;AAChB,gBAAM;AACN,cAAI,sBAAsB,IAAI,WAAW;AACzC,cAAI,QAAQ,QAAQ;AACnB,kBAAM,iBAAiB,IAAI,OAAO,OAAO,YAAY,OAAO,CAAC;AAC7D,iBAAK,OAAO,cAAc;AAC1B,kCAAsB,SAAS,YAAY,cAAc;AAAA,UAC1D;AACA,iBAAO,YAAY,SAAS,YAAY,KAAK,OAAO,CAAC,EAAE,MAAM,GAAG,gBAAgB;AAChF,qBAAW,QAAQ,OAAO,qBAAqB,OAAO,SAAS,CAAC;AAAA,QACjE;AAAA,MACD;AAAA,IACD,CAAC;AACD,aAAS;AAAA,EACV;AACD;AAQA,SAAS,OAAO,WAAW,OAAO,QAAQ,cAAc,YAAY,iBAAiB;AACpF,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AACJ,QAAM,cAAc,MAAM,SAAS;AACnC,MAAI,QAAQ,QAAQ;AACnB,YAAQ,OAAO,SAAS,KAAK;AAC7B,aAAS,OAAO,QAAQ,cAAe,cAAc,YAAa;AAAA,EACnE;AACA,MAAI;AACJ,OAAK,SAAS,GAAG,UAAU,cAAc,cAAc,UAAU,cAAc;AAC9E,UAAM,aAAa,OAAO,YAAY,SAAS,OAAO,QAAQ,SAAS,YAAY,CAAC;AACpF,QAAI,iBAAiB;AACpB,WAAK,OAAO,UAAU;AAAA,IACvB;AACA,UAAM,cAAc,IAAI,OAAO,UAAU;AACzC,QAAI,CAAC,iBAAiB;AACrB,WAAK,OAAO,WAAW;AAAA,IACxB;AACA,WAAO,IAAI,SAAS,YAAY,WAAW,GAAG,SAAS,YAAY;AAAA,EACpE;AACA,YAAU,UAAU,SAAS,OAAO,MAAM;AAC1C,SAAO;AACR;AAEA,eAAe,qBAAqBE,UAAS,UAAU,UAAU,UAAU;AAC1E,QAAM,0BAA0B,MAAM,WAAWA,UAAS,UAAU,UAAU,SAAS,UAAU,GAAG,YAAY,QAAQ,CAAC,CAAC;AAC1H,QAAM,uBAAuB,SAAS,UAAU,YAAY,QAAQ,CAAC;AACrE,MAAI,wBAAwB,CAAC,KAAK,qBAAqB,CAAC,KAAK,wBAAwB,CAAC,KAAK,qBAAqB,CAAC,GAAG;AACnH,UAAM,IAAI,MAAM,oBAAoB;AAAA,EACrC;AACD;AAEA,eAAe,qBAAqBC,UAAS,UAAU,UAAU;AAChE,QAAM,OAAO,gBAAgB,IAAI,WAAW,YAAY,QAAQ,CAAC,CAAC;AAClE,QAAM,uBAAuB,MAAM,WAAWA,UAAS,UAAU,UAAU,IAAI;AAC/E,SAAO,OAAO,MAAM,oBAAoB;AACzC;AAEA,eAAe,WAAW,WAAW,UAAU,UAAU,MAAM;AAC9D,YAAU,WAAW;AACrB,QAAM,UAAU,MAAM,UAAU,YAAY,UAAU,oBAAoB,OAAO,kBAAkB;AACnG,QAAM,cAAc,MAAM,WAAW,OAAO,OAAO,EAAE,KAAK,GAAG,sBAAsB,GAAG,SAAS,KAAM,WAAW,QAAQ,IAAI,IAAK,EAAE;AACnI,QAAM,eAAe,IAAI,WAAW,WAAW;AAC/C,QAAM,MAAM,OAAO,YAAY,SAAS,cAAc,GAAG,WAAW,QAAQ,CAAC,CAAC;AAC9E,QAAM,iBAAiB,OAAO,YAAY,SAAS,cAAc,WAAW,QAAQ,GAAG,WAAW,QAAQ,IAAI,CAAC,CAAC;AAChH,QAAM,uBAAuB,SAAS,cAAc,WAAW,QAAQ,IAAI,CAAC;AAC5E,SAAO,OAAO,WAAW;AAAA,IACxB,MAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,KAAK,IAAI,WAAW,IAAI,IAAI,GAAG,GAAG,MAAM,KAAK,qBAAqB,CAAC;AAAA,IACnE,MAAM,IAAI,SAAS,cAAc;AAAA,EAClC,CAAC;AACD,SAAO;AACR;AAEA,eAAe,UAAU,QAAQ,UAAU,WAAW,aAAa,WAAW;AAC7E,MAAI,sBAAsB;AACzB,QAAI;AACH,aAAO,MAAM,OAAO,UAAU,QAAQ,UAAU,WAAW,aAAa,SAAS;AAAA,IAClF,SAAS,QAAQ;AAChB,6BAAuB;AACvB,aAAO,KAAK,UAAU,QAAQ;AAAA,IAC/B;AAAA,EACD,OAAO;AACN,WAAO,KAAK,UAAU,QAAQ;AAAA,EAC/B;AACD;AAEA,eAAe,WAAW,WAAW,SAAS,QAAQ;AACrD,MAAI,uBAAuB;AAC1B,QAAI;AACH,aAAO,MAAM,OAAO,WAAW,WAAW,SAAS,MAAM;AAAA,IAC1D,SAAS,QAAQ;AAChB,8BAAwB;AACxB,aAAO,KAAK,OAAO,SAAS,UAAU,MAAM,uBAAuB,YAAY,MAAM;AAAA,IACtF;AAAA,EACD,OAAO;AACN,WAAO,KAAK,OAAO,SAAS,UAAU,MAAM,uBAAuB,YAAY,MAAM;AAAA,EACtF;AACD;AAEA,SAAS,eAAe,UAAU,aAAa;AAC9C,MAAI,gBAAgB,iBAAiB;AACpC,WAAO,WAAW,QAAQ;AAAA,EAC3B,OAAO;AACN,WAAO;AAAA,EACR;AACD;AAEA,SAAS,OAAO,WAAW,YAAY;AACtC,MAAI,QAAQ;AACZ,MAAI,UAAU,SAAS,WAAW,QAAQ;AACzC,YAAQ,IAAI,WAAW,UAAU,SAAS,WAAW,MAAM;AAC3D,UAAM,IAAI,WAAW,CAAC;AACtB,UAAM,IAAI,YAAY,UAAU,MAAM;AAAA,EACvC;AACA,SAAO;AACR;AAEA,SAAS,OAAO,YAAY,QAAQ;AACnC,MAAI,UAAU,SAAS,WAAW,QAAQ;AACzC,UAAM,QAAQ;AACd,iBAAa,IAAI,WAAW,MAAM;AAClC,eAAW,IAAI,OAAO,CAAC;AAAA,EACxB;AACA,SAAO;AACR;AAEA,SAAS,SAAS,OAAO,OAAO,KAAK;AACpC,SAAO,MAAM,SAAS,OAAO,GAAG;AACjC;AAEA,SAAS,SAASC,aAAY,OAAO;AACpC,SAAOA,YAAW,SAAS,KAAK;AACjC;AACA,SAAS,OAAOA,aAAY,OAAO;AAClC,SAAOA,YAAW,OAAO,KAAK;AAC/B;;;AC/RA,IAAM,gBAAgB;AAEtB,IAAM,4BAAN,cAAwC,gBAAgB;AAAA,EAEvD,YAAY,EAAE,UAAU,sBAAsB,kBAAkB,GAAG;AAClE,UAAM;AAAA,MACL,QAAQ;AACP,eAAO,OAAO,MAAM;AAAA,UACnB;AAAA,UACA;AAAA,QACD,CAAC;AACD,QAAAC,YAAW,MAAM,QAAQ;AAAA,MAC1B;AAAA,MACA,UAAU,OAAO,YAAY;AAC5B,cAAM,YAAY;AAClB,YAAI,UAAU,UAAU;AACvB,gBAAM,kBAAkB,QAAQ,WAAW,MAAM,SAAS,GAAG,aAAa,CAAC;AAC3E,oBAAU,WAAW;AACrB,cAAI,gBAAgB,gBAAgB,CAAC,KAAK,UAAU,sBAAsB;AACzE,kBAAM,IAAI,MAAM,oBAAoB;AAAA,UACrC;AACA,kBAAQ,MAAM,SAAS,aAAa;AAAA,QACrC;AACA,YAAI,mBAAmB;AACtB,qBAAW,MAAM,IAAI,MAAM,wBAAwB,CAAC;AAAA,QACrD,OAAO;AACN,qBAAW,QAAQ,QAAQ,WAAW,KAAK,CAAC;AAAA,QAC7C;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AACD;AAEA,IAAM,4BAAN,cAAwC,gBAAgB;AAAA,EAEvD,YAAY,EAAE,UAAU,qBAAqB,GAAG;AAC/C,UAAM;AAAA,MACL,QAAQ;AACP,eAAO,OAAO,MAAM;AAAA,UACnB;AAAA,UACA;AAAA,QACD,CAAC;AACD,QAAAA,YAAW,MAAM,QAAQ;AAAA,MAC1B;AAAA,MACA,UAAU,OAAO,YAAY;AAC5B,cAAM,YAAY;AAClB,YAAI;AACJ,YAAI;AACJ,YAAI,UAAU,UAAU;AACvB,oBAAU,WAAW;AACrB,gBAAM,SAAS,gBAAgB,IAAI,WAAW,aAAa,CAAC;AAC5D,iBAAO,gBAAgB,CAAC,IAAI,UAAU;AACtC,mBAAS,IAAI,WAAW,MAAM,SAAS,OAAO,MAAM;AACpD,iBAAO,IAAI,QAAQ,WAAW,MAAM,GAAG,CAAC;AACxC,mBAAS;AAAA,QACV,OAAO;AACN,mBAAS,IAAI,WAAW,MAAM,MAAM;AACpC,mBAAS;AAAA,QACV;AACA,eAAO,IAAI,QAAQ,WAAW,KAAK,GAAG,MAAM;AAC5C,mBAAW,QAAQ,MAAM;AAAA,MAC1B;AAAA,IACD,CAAC;AAAA,EACF;AACD;AAQA,SAAS,QAAQ,QAAQ,OAAO;AAC/B,QAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAC1C,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS;AAClD,WAAO,KAAK,IAAI,QAAQ,MAAM,IAAI,MAAM,KAAK;AAC7C,eAAW,QAAQ,OAAO,KAAK,CAAC;AAAA,EACjC;AACA,SAAO;AACR;AAEA,SAAS,QAAQ,QAAQ,OAAO;AAC/B,QAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAC1C,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS;AAClD,WAAO,KAAK,IAAI,QAAQ,MAAM,IAAI,MAAM,KAAK;AAC7C,eAAW,QAAQ,MAAM,KAAK,CAAC;AAAA,EAChC;AACA,SAAO;AACR;AAEA,SAASC,YAAW,QAAQ,UAAU;AACrC,QAAM,OAAO,CAAC,WAAY,WAAY,SAAU;AAChD,SAAO,OAAO,QAAQ;AAAA,IACrB;AAAA,IACA,SAAS,IAAI,MAAM,KAAK,CAAC,CAAC;AAAA,IAC1B,SAAS,IAAI,MAAM,KAAK,CAAC,CAAC;AAAA,EAC3B,CAAC;AACD,WAAS,QAAQ,GAAG,QAAQ,SAAS,QAAQ,SAAS;AACrD,eAAW,QAAQ,SAAS,WAAW,KAAK,CAAC;AAAA,EAC9C;AACD;AAEA,SAAS,WAAW,QAAQ,MAAM;AACjC,MAAI,CAAC,MAAM,MAAM,IAAI,IAAI,OAAO;AAChC,SAAO,QAAQ,OAAO,CAAC,IAAI,CAAC;AAC5B,SAAO,CAAC,OAAO,QAAQ,IAAI;AAC3B,SAAO,SAAS,KAAK,KAAK,SAAS,OAAO,QAAQ,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC;AACxE,SAAO,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;AACnC,SAAO,CAAC,OAAO,QAAQ,IAAI;AAC3B,SAAO,OAAO,CAAC,MAAM,MAAM,IAAI;AAChC;AAEA,SAAS,QAAQ,QAAQ;AACxB,QAAM,OAAO,OAAO,KAAK,CAAC,IAAI;AAC9B,SAAO,QAAQ,KAAK,KAAK,MAAO,OAAO,CAAE,MAAM,CAAC;AACjD;AAEA,SAAS,QAAQ,QAAQ;AACxB,SAAO,SAAS;AACjB;AAEA,SAAS,SAAS,QAAQ;AACzB,SAAO,SAAS;AACjB;;;ACnHA,IAAM,qBAAqB;AAE3B,IAAM,gBAAN,cAA4B,gBAAgB;AAAA,EAE3C,YAAY,SAAS,EAAE,WAAW,mBAAmB,wBAAwB,GAAG;AAC/E,UAAM,CAAC,CAAC;AACR,UAAM,EAAE,YAAY,WAAW,sBAAsB,WAAW,QAAQ,MAAM,IAAI;AAClF,UAAM,SAAS;AACf,QAAI,aAAa;AACjB,QAAI,WAAW,kBAAkB,MAAM,QAAQ;AAC/C,SAAK,CAAC,aAAa,cAAc,QAAQ;AACxC,oBAAc,IAAI,YAAY;AAC9B,iBAAW,YAAY,UAAU,WAAW;AAAA,IAC7C;AACA,QAAI,YAAY;AACf,iBAAW,8BAA8B,UAAU,sBAAsB,EAAE,OAAO,UAAU,GAAG,yBAAyB,iBAAiB;AAAA,IAC1I;AACA,QAAI,WAAW;AACd,UAAI,WAAW;AACd,mBAAW,YAAY,UAAU,IAAI,0BAA0B,OAAO,CAAC;AAAA,MACxE,OAAO;AACN,2BAAmB,IAAI,oBAAoB,OAAO;AAClD,mBAAW,YAAY,UAAU,gBAAgB;AAAA,MAClD;AAAA,IACD;AACA,gBAAY,QAAQ,UAAU,MAAM;AACnC,UAAI;AACJ,UAAI,aAAa,CAAC,WAAW;AAC5B,oBAAY,iBAAiB;AAAA,MAC9B;AACA,WAAK,CAAC,aAAa,cAAc,QAAQ;AACxC,oBAAY,IAAI,SAAS,YAAY,MAAM,MAAM,EAAE,UAAU,CAAC;AAAA,MAC/D;AACA,aAAO,YAAY;AAAA,IACpB,CAAC;AAAA,EACF;AACD;AAEA,IAAM,gBAAN,cAA4B,gBAAgB;AAAA,EAE3C,YAAY,SAAS,EAAE,WAAW,qBAAqB,0BAA0B,GAAG;AACnF,UAAM,CAAC,CAAC;AACR,UAAM,EAAE,WAAW,WAAW,QAAQ,WAAW,YAAY,qBAAqB,IAAI;AACtF,QAAI,aAAa;AACjB,QAAI,WAAW,kBAAkB,MAAM,QAAQ;AAC/C,QAAI,WAAW;AACd,UAAI,WAAW;AACd,mBAAW,YAAY,UAAU,IAAI,0BAA0B,OAAO,CAAC;AAAA,MACxE,OAAO;AACN,2BAAmB,IAAI,oBAAoB,OAAO;AAClD,mBAAW,YAAY,UAAU,gBAAgB;AAAA,MAClD;AAAA,IACD;AACA,QAAI,YAAY;AACf,iBAAW,8BAA8B,UAAU,sBAAsB,EAAE,UAAU,GAAG,2BAA2B,mBAAmB;AAAA,IACvI;AACA,SAAK,CAAC,aAAa,cAAc,QAAQ;AACxC,oBAAc,IAAI,YAAY;AAC9B,iBAAW,YAAY,UAAU,WAAW;AAAA,IAC7C;AACA,gBAAY,MAAM,UAAU,MAAM;AACjC,WAAK,CAAC,aAAa,cAAc,QAAQ;AACxC,cAAM,oBAAoB,IAAI,SAAS,YAAY,MAAM,MAAM;AAC/D,YAAI,aAAa,kBAAkB,UAAU,GAAG,KAAK,GAAG;AACvD,gBAAM,IAAI,MAAM,qBAAqB;AAAA,QACtC;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AACD;AAUA,SAAS,kBAAkB,UAAU;AACpC,SAAO,YAAY,UAAU,IAAI,gBAAgB;AAAA,IAChD,UAAU,OAAO,YAAY;AAC5B,UAAI,SAAS,MAAM,QAAQ;AAC1B,mBAAW,QAAQ,KAAK;AAAA,MACzB;AAAA,IACD;AAAA,EACD,CAAC,CAAC;AACH;AAEA,SAAS,YAAY,QAAQ,UAAU,OAAO;AAC7C,aAAW,YAAY,UAAU,IAAI,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC/D,SAAO,eAAe,QAAQ,YAAY;AAAA,IACzC,MAAM;AACL,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AACF;AAEA,SAAS,8BAA8B,UAAU,sBAAsB,SAAS,mBAAmBC,cAAa;AAC/G,MAAI;AACH,UAAM,oBAAoB,wBAAwB,oBAAoB,oBAAoBA;AAC1F,eAAW,YAAY,UAAU,IAAI,kBAAkB,oBAAoB,OAAO,CAAC;AAAA,EACpF,SAAS,QAAQ;AAChB,QAAI,sBAAsB;AACzB,UAAI;AACH,mBAAW,YAAY,UAAU,IAAIA,aAAY,oBAAoB,OAAO,CAAC;AAAA,MAC9E,SAASC,SAAQ;AAChB,eAAO;AAAA,MACR;AAAA,IACD,OAAO;AACN,aAAO;AAAA,IACR;AAAA,EACD;AACA,SAAO;AACR;AAEA,SAAS,YAAY,UAAU,iBAAiB;AAC/C,SAAO,SAAS,YAAY,eAAe;AAC5C;;;ACtHA,IAAM,qBAAqB;AAC3B,IAAM,gBAAgB;AACtB,IAAM,eAAe;AACrB,IAAM,eAAe;AACrB,IAAM,mBAAmB;AACzB,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AAkBtB,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAEzC,YAAY,SAAS,QAAQ;AAC5B,UAAM,CAAC,CAAC;AACR,UAAMC,SAAQ;AACd,UAAM,EAAE,UAAU,IAAI;AACtB,QAAI;AACJ,QAAI,UAAU,WAAW,aAAa,GAAG;AACxC,eAAS;AAAA,IACV,WAAW,UAAU,WAAW,aAAa,GAAG;AAC/C,eAAS;AAAA,IACV;AACA,QAAI,aAAa;AACjB,QAAI,YAAY;AAChB,UAAM,SAAS,IAAI,OAAO,SAAS,MAAM;AACzC,UAAM,WAAW,MAAM;AACvB,UAAM,kBAAkB,IAAI,gBAAgB;AAAA,MAC3C,UAAU,OAAO,YAAY;AAC5B,YAAI,SAAS,MAAM,QAAQ;AAC1B,uBAAa,MAAM;AACnB,qBAAW,QAAQ,KAAK;AAAA,QACzB;AAAA,MACD;AAAA,MACA,QAAQ;AACP,eAAO,OAAOA,QAAO;AAAA,UACpB;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD,CAAC;AACD,UAAM,mBAAmB,IAAI,gBAAgB;AAAA,MAC5C,UAAU,OAAO,YAAY;AAC5B,YAAI,SAAS,MAAM,QAAQ;AAC1B,wBAAc,MAAM;AACpB,qBAAW,QAAQ,KAAK;AAAA,QACzB;AAAA,MACD;AAAA,MACA,QAAQ;AACP,cAAM,EAAE,UAAU,IAAI;AACtB,eAAO,OAAOA,QAAO;AAAA,UACpB;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD,CAAC;AACD,WAAO,eAAeA,QAAO,YAAY;AAAA,MACxC,MAAM;AACL,eAAO,SAAS,YAAY,eAAe,EAAE,YAAY,MAAM,EAAE,YAAY,gBAAgB;AAAA,MAC9F;AAAA,IACD,CAAC;AAAA,EACF;AACD;AAEA,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAEzC,YAAY,WAAW;AACtB,QAAI;AACJ,UAAM;AAAA,MACL;AAAA,MACA,MAAM,YAAY;AACjB,YAAI,gBAAgB,aAAa,QAAQ;AACxC,qBAAW,QAAQ,YAAY;AAAA,QAChC;AAAA,MACD;AAAA,IACD,CAAC;AAED,aAAS,UAAU,OAAO,YAAY;AACrC,UAAI,cAAc;AACjB,cAAM,WAAW,IAAI,WAAW,aAAa,SAAS,MAAM,MAAM;AAClE,iBAAS,IAAI,YAAY;AACzB,iBAAS,IAAI,OAAO,aAAa,MAAM;AACvC,gBAAQ;AACR,uBAAe;AAAA,MAChB;AACA,UAAI,MAAM,SAAS,WAAW;AAC7B,mBAAW,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC;AAC5C,kBAAU,MAAM,MAAM,SAAS,GAAG,UAAU;AAAA,MAC7C,OAAO;AACN,uBAAe;AAAA,MAChB;AAAA,IACD;AAAA,EACD;AACD;;;AC9GA,IAAM,sBAAsB,oBAAI,IAAI;AACpC,IAAM,sBAAsB,oBAAI,IAAI;AAEpC,IAAI;AAAJ,IAAqB,YAAY;AAAjC,IAAoC,wBAAwB;AAE5D,iBAAiB,oBAAoB,CAAC,EAAE,KAAK,MAAM;AAClD,QAAM,EAAE,MAAM,WAAAC,YAAW,OAAO,KAAK,IAAI;AACzC,MAAI;AACH,QAAI,QAAQ,eAAe;AAC1B,WAAK,IAAI;AAAA,IACV;AACA,QAAI,QAAQ,cAAc;AACzB,YAAM,UAAU,oBAAoB,IAAIA,UAAS;AACjD,0BAAoB,OAAOA,UAAS;AACpC,cAAQ,EAAE,OAAO,IAAI,WAAW,KAAK,GAAG,KAAK,CAAC;AAAA,IAC/C;AACA,QAAI,QAAQ,kBAAkB;AAC7B,YAAM,UAAU,oBAAoB,IAAIA,UAAS;AACjD,0BAAoB,OAAOA,UAAS;AACpC,cAAQ;AAAA,IACT;AACA,QAAI,QAAQ,eAAe;AAC1B,sBAAgB,MAAM;AAAA,IACvB;AAAA,EACD,SAAS,OAAO;AACf,qBAAiB,KAAK;AAAA,EACvB;AACD,CAAC;AAED,eAAe,KAAK,SAAS;AAC5B,MAAI;AACH,UAAM,EAAE,SAAS,SAAS,OAAO,IAAI;AACrC,QAAI,WAAW,QAAQ,QAAQ;AAC9B,UAAI;AACH,YAAI,uBAAuB;AAC1B,wBAAc,MAAM,iBAAiB,OAAO;AAAA,QAC7C,OAAO;AACN,gBAAM,mBAAmB,OAAO;AAAA,QACjC;AAAA,MACD,SAAS,QAAQ;AAChB,gCAAwB;AACxB,cAAM,mBAAmB,OAAO;AAAA,MACjC;AAAA,IACD;AACA,QAAI,KAAK,WAAW;AACnB,WAAK,UAAU;AAAA,IAChB;AACA,WAAO,0BAA0B,KAAK;AACtC,WAAO,4BAA4B,KAAK;AACxC,QAAI,KAAK,SAAS;AACjB,aAAO,oBAAoB,IAAI,cAAc,KAAK,OAAO;AAAA,IAC1D;AACA,QAAI,KAAK,SAAS;AACjB,aAAO,sBAAsB,IAAI,cAAc,KAAK,OAAO;AAAA,IAC5D;AACA,UAAM,WAAW,EAAE,eAAe,EAAE;AACpC,UAAM,WAAW,QAAQ,YAAY,IAAI,eAAe;AAAA,MACvD,MAAM,KAAK,YAAY;AACtB,cAAM,SAAS,IAAI,QAAQ,aAAW,oBAAoB,IAAI,WAAW,OAAO,CAAC;AACjF,oBAAY,EAAE,MAAM,cAAc,UAAU,CAAC;AAC7C,qBAAa,YAAY,KAAK,OAAO;AACrC,cAAM,EAAE,OAAO,KAAK,IAAI,MAAM;AAC9B,mBAAW,QAAQ,KAAK;AACxB,YAAI,MAAM;AACT,qBAAW,MAAM;AAAA,QAClB;AAAA,MACD;AAAA,IACD,GAAG,QAAQ;AACX,UAAM,WAAW,QAAQ,YAAY,IAAI,eAAe;AAAA,MACvD,MAAM,MAAM,OAAO;AAClB,YAAI;AACJ,cAAM,UAAU,IAAI,QAAQ,aAAW,iBAAiB,OAAO;AAC/D,4BAAoB,IAAI,WAAW,cAAc;AACjD,oBAAY,EAAE,MAAM,cAAc,OAAO,UAAU,CAAC;AACpD,qBAAa,YAAY,KAAK,OAAO;AACrC,cAAM;AAAA,MACP;AAAA,IACD,GAAG,QAAQ;AACX,UAAM,cAAc,IAAI,YAAY,SAAS,MAAM;AACnD,sBAAkB,IAAI,gBAAgB;AACtC,UAAM,EAAE,OAAO,IAAI;AACnB,UAAM,SACJ,YAAY,WAAW,EACvB,YAAY,IAAI,YAAY,OAAO,SAAS,CAAC,EAC7C,OAAO,UAAU,EAAE,QAAQ,cAAc,MAAM,cAAc,KAAK,CAAC;AACrE,UAAM,SAAS,UAAU,EAAE,MAAM;AACjC,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI;AACJ,gBAAY;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF,SAAS,OAAO;AACf,qBAAiB,KAAK;AAAA,EACvB;AACD;AAEA,eAAe,mBAAmB,SAAS;AAC1C,aAAW,UAAU,SAAS;AAC7B,UAAM,OAAO;AAAA,EACd;AACD;AAEA,SAAS,YAAY,SAAS;AAC7B,MAAI,EAAE,MAAM,IAAI;AAChB,MAAI,OAAO;AACV,QAAI,MAAM,QAAQ;AACjB,UAAI;AACH,gBAAQ,IAAI,WAAW,KAAK;AAC5B,gBAAQ,QAAQ,MAAM;AACtB,oBAAY,SAAS,CAAC,QAAQ,KAAK,CAAC;AAAA,MACrC,SAAS,QAAQ;AAChB,oBAAY,OAAO;AAAA,MACpB;AAAA,IACD,OAAO;AACN,kBAAY,OAAO;AAAA,IACpB;AAAA,EACD,OAAO;AACN,gBAAY,OAAO;AAAA,EACpB;AACD;AAEA,SAAS,iBAAiB,QAAQ,IAAI,MAAM,eAAe,GAAG;AAC7D,QAAM,EAAE,SAAS,OAAO,MAAM,KAAK,IAAI;AACvC,cAAY,EAAE,OAAO,EAAE,SAAS,OAAO,MAAM,KAAK,EAAE,CAAC;AACtD;;;ACxIA,IAAM,WAAW;AACjB,IAAM,UAAU;AAChB,IAAM,WAAW;AAEjB,IAAM,eAAe;AACrB,IAAM,WAAW;AACjB,IAAM,UAAW,WAAW,IAAI;AAChC,IAAM,YAAa,IAAI,UAAU;AAEjC,IAAM,YAAY;AAGlB,IAAM,cAAc;AAGpB,IAAM,UAAU;AAGhB,IAAM,YAAY;AAGlB,IAAM,cAAc;AAMpB,IAAM,WAAW,IAAI;AAGrB,IAAM,wBAAwB;AAG9B,IAAM,aAAa;AACnB,IAAM,iBAAiB;AACvB,IAAM,qBAAqB;AAE3B,IAAM,aAAa;AACnB,IAAM,kBAAkB;AACxB,IAAM,eAAe;AACrB,IAAM,WAAW;AAEjB,IAAM,OAAO;AACb,IAAM,eAAe;AACrB,IAAM,cAAc;AACpB,IAAM,iBAAiB;AACvB,IAAM,eAAe;AACrB,IAAM,cAAc;AAIpB,SAAS,aAAa,OAAO;AAC5B,SAAO,UAAU,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAO,IAAI,MAAM,MAAM,EAAG,KAAK,OAAO,GAAG,MAAM,CAAC,CAAC;AAC5F;AAEA,SAAS,UAAU,OAAO;AACzB,SAAO,MAAM,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,MAAM,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChF;AAGA,IAAM,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,OAAO,GAAG,aAAa;AAAA,EACtD,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAC1H,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AACzH,CAAC,CAAC;AAEF,SAAS,OAAO;AACf,QAAM,OAAO;AAeb,WAAS,WAAW,GAAG;AACtB,UAAM,OAAO,KAAK;AAClB,UAAM,QAAQ,KAAK,UAAU;AAC7B,UAAM,QAAQ,KAAK,UAAU;AAC7B,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,aAAa,KAAK,UAAU;AAClC,QAAI;AACJ,QAAI,GAAG;AACP,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI,WAAW;AAEf,SAAK,OAAO,GAAG,QAAQ,UAAU;AAChC,QAAE,SAAS,IAAI,IAAI;AAIpB,SAAK,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI;AAEnC,SAAK,IAAI,EAAE,WAAW,GAAG,IAAI,WAAW,KAAK;AAC5C,UAAI,EAAE,KAAK,CAAC;AACZ,aAAO,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;AACvC,UAAI,OAAO,YAAY;AACtB,eAAO;AACP;AAAA,MACD;AACA,WAAK,IAAI,IAAI,CAAC,IAAI;AAGlB,UAAI,IAAI,KAAK;AACZ;AAED,QAAE,SAAS,IAAI;AACf,cAAQ;AACR,UAAI,KAAK;AACR,gBAAQ,MAAM,IAAI,IAAI;AACvB,UAAI,KAAK,IAAI,CAAC;AACd,QAAE,WAAW,KAAK,OAAO;AACzB,UAAI;AACH,UAAE,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI;AAAA,IAC1C;AACA,QAAI,aAAa;AAChB;AAID,OAAG;AACF,aAAO,aAAa;AACpB,aAAO,EAAE,SAAS,IAAI,MAAM;AAC3B;AACD,QAAE,SAAS,IAAI;AACf,QAAE,SAAS,OAAO,CAAC,KAAK;AACxB,QAAE,SAAS,UAAU;AAGrB,kBAAY;AAAA,IACb,SAAS,WAAW;AAEpB,SAAK,OAAO,YAAY,SAAS,GAAG,QAAQ;AAC3C,UAAI,EAAE,SAAS,IAAI;AACnB,aAAO,MAAM,GAAG;AACf,YAAI,EAAE,KAAK,EAAE,CAAC;AACd,YAAI,IAAI,KAAK;AACZ;AACD,YAAI,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM;AAC5B,YAAE,YAAY,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;AAClD,eAAK,IAAI,IAAI,CAAC,IAAI;AAAA,QACnB;AACA;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAMA,WAAS,WAAW,MACnB,KACC;AACD,QAAI,MAAM;AACV,OAAG;AACF,aAAO,OAAO;AACd,gBAAU;AACV,cAAQ;AAAA,IACT,SAAS,EAAE,MAAM;AACjB,WAAO,QAAQ;AAAA,EAChB;AAQA,WAAS,UAAU,MAClB,UACA,UACC;AACD,UAAM,YAAY,CAAC;AAEnB,QAAI,OAAO;AACX,QAAI;AACJ,QAAI;AACJ,QAAI;AAIJ,SAAK,OAAO,GAAG,QAAQ,UAAU,QAAQ;AACxC,gBAAU,IAAI,IAAI,OAAS,OAAO,SAAS,OAAO,CAAC,KAAM;AAAA,IAC1D;AAQA,SAAK,IAAI,GAAG,KAAK,UAAU,KAAK;AAC/B,YAAM,KAAK,IAAI,IAAI,CAAC;AACpB,UAAI,QAAQ;AACX;AAED,WAAK,IAAI,CAAC,IAAI,WAAW,UAAU,GAAG,KAAK,GAAG;AAAA,IAC/C;AAAA,EACD;AAQA,OAAK,aAAa,SAAU,GAAG;AAC9B,UAAM,OAAO,KAAK;AAClB,UAAM,QAAQ,KAAK,UAAU;AAC7B,UAAM,QAAQ,KAAK,UAAU;AAC7B,QAAI,GAAG;AACP,QAAI,WAAW;AACf,QAAI;AAKJ,MAAE,WAAW;AACb,MAAE,WAAW;AAEb,SAAK,IAAI,GAAG,IAAI,OAAO,KAAK;AAC3B,UAAI,KAAK,IAAI,CAAC,MAAM,GAAG;AACtB,UAAE,KAAK,EAAE,EAAE,QAAQ,IAAI,WAAW;AAClC,UAAE,MAAM,CAAC,IAAI;AAAA,MACd,OAAO;AACN,aAAK,IAAI,IAAI,CAAC,IAAI;AAAA,MACnB;AAAA,IACD;AAMA,WAAO,EAAE,WAAW,GAAG;AACtB,aAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,IAAI,WAAW,IAAI,EAAE,WAAW;AAC1D,WAAK,OAAO,CAAC,IAAI;AACjB,QAAE,MAAM,IAAI,IAAI;AAChB,QAAE;AACF,UAAI;AACH,UAAE,cAAc,MAAM,OAAO,IAAI,CAAC;AAAA,IAEpC;AACA,SAAK,WAAW;AAKhB,SAAK,IAAI,KAAK,MAAM,EAAE,WAAW,CAAC,GAAG,KAAK,GAAG;AAC5C,QAAE,WAAW,MAAM,CAAC;AAKrB,WAAO;AACP,OAAG;AAEF,UAAI,EAAE,KAAK,CAAC;AACZ,QAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU;AAC/B,QAAE,WAAW,MAAM,CAAC;AACpB,UAAI,EAAE,KAAK,CAAC;AAEZ,QAAE,KAAK,EAAE,EAAE,QAAQ,IAAI;AACvB,QAAE,KAAK,EAAE,EAAE,QAAQ,IAAI;AAGvB,WAAK,OAAO,CAAC,IAAK,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAC1C,QAAE,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI;AACnD,WAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI;AAGpC,QAAE,KAAK,CAAC,IAAI;AACZ,QAAE,WAAW,MAAM,CAAC;AAAA,IACrB,SAAS,EAAE,YAAY;AAEvB,MAAE,KAAK,EAAE,EAAE,QAAQ,IAAI,EAAE,KAAK,CAAC;AAK/B,eAAW,CAAC;AAGZ,cAAU,MAAM,KAAK,UAAU,EAAE,QAAQ;AAAA,EAC1C;AAED;AAEA,KAAK,eAAe,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,OAAO,GAAG,aAAa;AAAA,EACnE,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,CAAC;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAA,EACvG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,IAAI,EAAE;AAAA,EAAG,CAAC,GAAG,EAAE;AAAC,CAAC,CAAC;AAE1F,KAAK,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC;AAEjI,KAAK,YAAY;AAAA,EAAC;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAO;AAAA,EACjJ;AAAK;AAKN,KAAK,SAAS,SAAU,MAAM;AAC7B,SAAS,OAAQ,MAAM,WAAW,IAAI,IAAI,WAAW,OAAQ,SAAU,EAAE;AAC1E;AAGA,KAAK,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAGzG,KAAK,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAGpH,KAAK,eAAe,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE5E,KAAK,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;AAIjF,SAAS,WAAW,aAAa,YAAY,YAAY,OAAO,YAAY;AAC3E,QAAM,OAAO;AACb,OAAK,cAAc;AACnB,OAAK,aAAa;AAClB,OAAK,aAAa;AAClB,OAAK,QAAQ;AACb,OAAK,aAAa;AACnB;AAEA,IAAM,2BAA2B;AAAA,EAAC;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EACvJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAC5I;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAC5I;AAAA,EAAI;AA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AAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EACxJ;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAChJ;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAChJ;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAC9I;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAC9I;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAC9I;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAC/I;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EACjJ;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC7I;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC7I;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAChJ;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAC9I;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAC9I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAC/I;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EACjJ;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EACjJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAChJ;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAG;AAAA,EAAG;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EA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", - "names": ["codec", "hash", "table", "password", "signed", "decrypt", "encrypt", "codecBytes", "createKeys", "createKeys", "CodecStream", "_error", "codec", "messageId", "strm", "MAX_BITS", "Z_OK", "Z_STREAM_END", "Z_NEED_DICT", "Z_STREAM_ERROR", "Z_DATA_ERROR", "Z_BUF_ERROR", "Z_NO_FLUSH", "Z_FINISH", "hn", "v", "c", "mode", "STORED", "table", "z", "PRESET_DICT", "Z_DEFLATED", "ZStream"] -} diff --git a/vendor/yomitan/lib/zip.js b/vendor/yomitan/lib/zip.js deleted file mode 100644 index cdf0424f..00000000 --- a/vendor/yomitan/lib/zip.js +++ /dev/null @@ -1,4233 +0,0 @@ -// @ts-nocheck - -// node_modules/@zip.js/zip.js/lib/core/constants.js -var MAX_32_BITS = 4294967295; -var MAX_16_BITS = 65535; -var COMPRESSION_METHOD_DEFLATE = 8; -var COMPRESSION_METHOD_STORE = 0; -var COMPRESSION_METHOD_AES = 99; -var LOCAL_FILE_HEADER_SIGNATURE = 67324752; -var SPLIT_ZIP_FILE_SIGNATURE = 134695760; -var DATA_DESCRIPTOR_RECORD_SIGNATURE = SPLIT_ZIP_FILE_SIGNATURE; -var CENTRAL_FILE_HEADER_SIGNATURE = 33639248; -var END_OF_CENTRAL_DIR_SIGNATURE = 101010256; -var ZIP64_END_OF_CENTRAL_DIR_SIGNATURE = 101075792; -var ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE = 117853008; -var END_OF_CENTRAL_DIR_LENGTH = 22; -var ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH = 20; -var ZIP64_END_OF_CENTRAL_DIR_LENGTH = 56; -var ZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH = END_OF_CENTRAL_DIR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LENGTH; -var EXTRAFIELD_TYPE_ZIP64 = 1; -var EXTRAFIELD_TYPE_AES = 39169; -var EXTRAFIELD_TYPE_NTFS = 10; -var EXTRAFIELD_TYPE_NTFS_TAG1 = 1; -var EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP = 21589; -var EXTRAFIELD_TYPE_UNICODE_PATH = 28789; -var EXTRAFIELD_TYPE_UNICODE_COMMENT = 25461; -var EXTRAFIELD_TYPE_USDZ = 6534; -var BITFLAG_ENCRYPTED = 1; -var BITFLAG_LEVEL = 6; -var BITFLAG_DATA_DESCRIPTOR = 8; -var BITFLAG_LANG_ENCODING_FLAG = 2048; -var FILE_ATTR_MSDOS_DIR_MASK = 16; -var VERSION_DEFLATE = 20; -var VERSION_ZIP64 = 45; -var VERSION_AES = 51; -var DIRECTORY_SIGNATURE = "/"; -var MAX_DATE = new Date(2107, 11, 31); -var MIN_DATE = new Date(1980, 0, 1); -var UNDEFINED_VALUE = void 0; -var UNDEFINED_TYPE = "undefined"; -var FUNCTION_TYPE = "function"; - -// node_modules/@zip.js/zip.js/lib/core/streams/stream-adapter.js -var StreamAdapter = class { - constructor(Codec) { - return class extends TransformStream { - constructor(_format, options) { - const codec2 = new Codec(options); - super({ - transform(chunk, controller) { - controller.enqueue(codec2.append(chunk)); - }, - flush(controller) { - const chunk = codec2.flush(); - if (chunk) { - controller.enqueue(chunk); - } - } - }); - } - }; - } -}; - -// node_modules/@zip.js/zip.js/lib/core/configuration.js -var MINIMUM_CHUNK_SIZE = 64; -var maxWorkers = 2; -try { - if (typeof navigator != UNDEFINED_TYPE && navigator.hardwareConcurrency) { - maxWorkers = navigator.hardwareConcurrency; - } -} catch (_error) { -} -var DEFAULT_CONFIGURATION = { - chunkSize: 512 * 1024, - maxWorkers, - terminateWorkerTimeout: 5e3, - useWebWorkers: true, - useCompressionStream: true, - workerScripts: UNDEFINED_VALUE, - CompressionStreamNative: typeof CompressionStream != UNDEFINED_TYPE && CompressionStream, - DecompressionStreamNative: typeof DecompressionStream != UNDEFINED_TYPE && DecompressionStream -}; -var config = Object.assign({}, DEFAULT_CONFIGURATION); -function getConfiguration() { - return config; -} -function getChunkSize(config2) { - return Math.max(config2.chunkSize, MINIMUM_CHUNK_SIZE); -} -function configure(configuration) { - const { - baseURL: baseURL2, - chunkSize, - maxWorkers: maxWorkers2, - terminateWorkerTimeout, - useCompressionStream, - useWebWorkers, - Deflate, - Inflate, - CompressionStream: CompressionStream2, - DecompressionStream: DecompressionStream2, - workerScripts - } = configuration; - setIfDefined("baseURL", baseURL2); - setIfDefined("chunkSize", chunkSize); - setIfDefined("maxWorkers", maxWorkers2); - setIfDefined("terminateWorkerTimeout", terminateWorkerTimeout); - setIfDefined("useCompressionStream", useCompressionStream); - setIfDefined("useWebWorkers", useWebWorkers); - if (Deflate) { - config.CompressionStream = new StreamAdapter(Deflate); - } - if (Inflate) { - config.DecompressionStream = new StreamAdapter(Inflate); - } - setIfDefined("CompressionStream", CompressionStream2); - setIfDefined("DecompressionStream", DecompressionStream2); - if (workerScripts !== UNDEFINED_VALUE) { - const { deflate, inflate } = workerScripts; - if (deflate || inflate) { - if (!config.workerScripts) { - config.workerScripts = {}; - } - } - if (deflate) { - if (!Array.isArray(deflate)) { - throw new Error("workerScripts.deflate must be an array"); - } - config.workerScripts.deflate = deflate; - } - if (inflate) { - if (!Array.isArray(inflate)) { - throw new Error("workerScripts.inflate must be an array"); - } - config.workerScripts.inflate = inflate; - } - } -} -function setIfDefined(propertyName, propertyValue) { - if (propertyValue !== UNDEFINED_VALUE) { - config[propertyName] = propertyValue; - } -} - -// node_modules/@zip.js/zip.js/lib/z-worker-inline.js -function e(e2, t = {}) { - const n = 'const{Array:e,Object:t,Number:n,Math:r,Error:s,Uint8Array:i,Uint16Array:o,Uint32Array:c,Int32Array:f,Map:a,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:d,TransformStream:p,ReadableStream:y,WritableStream:m,CompressionStream:b,DecompressionStream:g}=self,k=void 0,v="undefined",S="function";class z{constructor(e){return class extends p{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e))},flush(e){const t=r.flush();t&&e.enqueue(t)}})}}}}const C=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;C[e]=t}class x{constructor(e){this.t=e||-1}append(e){let t=0|this.t;for(let n=0,r=0|e.length;r>n;n++)t=t>>>8^C[255&(t^e[n])];this.t=t}get(){return~this.t}}class A extends p{constructor(){let e;const t=new x;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new i(4);new l(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const _={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=_.i(n);return 32===r?e.concat(t):_.o(t,r,0|n,e.slice(0,e.length-1))},l(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+_.i(n)},u(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,r.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=_.h(t,e[n-1]&2147483648>>t-1,1)),e},h:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,i:e=>r.round(e/1099511627776)||32,o(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let s=0;s<e.length;s++)r.push(n|e[s]>>>t),n=e[s]<<32-t;const s=e.length?e[e.length-1]:0,i=_.i(s);return r.push(_.h(t+i&31,t+i>32?n:r.pop(),1)),r}},I={bytes:{p(e){const t=_.l(e)/8,n=new i(t);let r;for(let s=0;t>s;s++)3&s||(r=e[s/4]),n[s]=r>>>24,r<<=8;return n},m(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(_.h(8*(3&n),r)),t}}},P=class{constructor(e){const t=this;t.blockSize=512,t.k=[1732584193,4023233417,2562383102,271733878,3285377520],t.v=[1518500249,1859775393,2400959708,3395469782],e?(t.S=e.S.slice(0),t.C=e.C.slice(0),t.A=e.A):t.reset()}reset(){const e=this;return e.S=e.k.slice(0),e.C=[],e.A=0,e}update(e){const t=this;"string"==typeof e&&(e=I._.m(e));const n=t.C=_.concat(t.C,e),r=t.A,i=t.A=r+_.l(e);if(i>9007199254740991)throw new s("Cannot hash more than 2^53 - 1 bits");const o=new c(n);let f=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);i>=e;e+=t.blockSize)t.I(o.subarray(16*f,16*(f+1))),f+=1;return n.splice(0,16*f),t}P(){const e=this;let t=e.C;const n=e.S;t=_.concat(t,[_.h(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(r.floor(e.A/4294967296)),t.push(0|e.A);t.length;)e.I(t.splice(0,16));return e.reset(),n}D(e,t,n,r){return e>19?e>39?e>59?e>79?void 0:t^n^r:t&n|t&r|n&r:t^n^r:t&n|~t&r}V(e,t){return t<<e|t>>>32-e}I(t){const n=this,s=n.S,i=e(80);for(let e=0;16>e;e++)i[e]=t[e];let o=s[0],c=s[1],f=s[2],a=s[3],l=s[4];for(let e=0;79>=e;e++){16>e||(i[e]=n.V(1,i[e-3]^i[e-8]^i[e-14]^i[e-16]));const t=n.V(5,o)+n.D(e,c,f,a)+l+i[e]+n.v[r.floor(e/20)]|0;l=a,a=f,f=n.V(30,c),c=o,o=t}s[0]=s[0]+o|0,s[1]=s[1]+c|0,s[2]=s[2]+f|0,s[3]=s[3]+a|0,s[4]=s[4]+l|0}},D={getRandomValues(e){const t=new c(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(r.random()>.5?1:-1))};for(let s,i=0;i<e.length;i+=4){const e=n(4294967296*(s||r.random()));s=987654071*e(),t[i/4]=4294967296*e()|0}return e}},V={importKey:e=>new V.R(I.bytes.m(e)),B(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s("invalid params to pbkdf2");const i=1+(r>>5)<<2;let o,c,f,a,u;const w=new ArrayBuffer(i),h=new l(w);let d=0;const p=_;for(t=I.bytes.m(t),u=1;(i||1)>d;u++){for(o=c=e.encrypt(p.concat(t,[u])),f=1;n>f;f++)for(c=e.encrypt(c),a=0;a<c.length;a++)o[a]^=c[a];for(f=0;(i||1)>d&&f<o.length;f++)h.setInt32(d,o[f]),d+=4}return w.slice(0,r/8)},R:class{constructor(e){const t=this,n=t.M=P,r=[[],[]];t.U=[new n,new n];const s=t.U[0].blockSize/32;e.length>s&&(e=(new n).update(e).P());for(let t=0;s>t;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t.U[0].update(r[0]),t.U[1].update(r[1]),t.K=new n(t.U[0])}reset(){const e=this;e.K=new e.M(e.U[0]),e.N=!1}update(e){this.N=!0,this.K.update(e)}digest(){const e=this,t=e.K.P(),n=new e.M(e.U[1]).update(t).P();return e.reset(),n}encrypt(e){if(this.N)throw new s("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},R=typeof h!=v&&typeof h.getRandomValues==S,B="Invalid password",E="Invalid signature",M="zipjs-abort-check-password";function U(e){return R?h.getRandomValues(e):D.getRandomValues(e)}const K=16,N={name:"PBKDF2"},O=t.assign({hash:{name:"HMAC"}},N),T=t.assign({iterations:1e3,hash:{name:"SHA-1"}},N),W=["deriveBits"],j=[8,12,16],H=[16,24,32],L=10,F=[0,0,0,0],q=typeof h!=v,G=q&&h.subtle,J=q&&typeof G!=v,Q=I.bytes,X=class{constructor(e){const t=this;t.O=[[[],[],[],[],[]],[[],[],[],[],[]]],t.O[0][0][0]||t.T();const n=t.O[0][4],r=t.O[1],i=e.length;let o,c,f,a=1;if(4!==i&&6!==i&&8!==i)throw new s("invalid aes key size");for(t.v=[c=e.slice(0),f=[]],o=i;4*i+28>o;o++){let e=c[o-1];(o%i==0||8===i&&o%i==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%i==0&&(e=e<<8^e>>>24^a<<24,a=a<<1^283*(a>>7))),c[o]=c[o-i]^e}for(let e=0;o;e++,o--){const t=c[3&e?o:o-4];f[e]=4>=o||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this.W(e,0)}decrypt(e){return this.W(e,1)}T(){const e=this.O[0],t=this.O[1],n=e[4],r=t[4],s=[],i=[];let o,c,f,a;for(let e=0;256>e;e++)i[(s[e]=e<<1^283*(e>>7))^e]=e;for(let l=o=0;!n[l];l^=c||1,o=i[o]||1){let i=o^o<<1^o<<2^o<<3^o<<4;i=i>>8^255&i^99,n[l]=i,r[i]=l,a=s[f=s[c=s[l]]];let u=16843009*a^65537*f^257*c^16843008*l,w=257*s[i]^16843008*i;for(let n=0;4>n;n++)e[n][l]=w=w<<24^w>>>8,t[n][i]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}W(e,t){if(4!==e.length)throw new s("invalid aes block size");const n=this.v[t],r=n.length/4-2,i=[0,0,0,0],o=this.O[t],c=o[0],f=o[1],a=o[2],l=o[3],u=o[4];let w,h,d,p=e[0]^n[0],y=e[t?3:1]^n[1],m=e[2]^n[2],b=e[t?1:3]^n[3],g=4;for(let e=0;r>e;e++)w=c[p>>>24]^f[y>>16&255]^a[m>>8&255]^l[255&b]^n[g],h=c[y>>>24]^f[m>>16&255]^a[b>>8&255]^l[255&p]^n[g+1],d=c[m>>>24]^f[b>>16&255]^a[p>>8&255]^l[255&y]^n[g+2],b=c[b>>>24]^f[p>>16&255]^a[y>>8&255]^l[255&m]^n[g+3],g+=4,p=w,y=h,m=d;for(let e=0;4>e;e++)i[t?3&-e:e]=u[p>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&b]^n[g++],w=p,p=y,y=m,m=b,b=w;return i}},Y=class{constructor(e,t){this.j=e,this.H=t,this.L=t}reset(){this.L=this.H}update(e){return this.F(this.j,e,this.L)}q(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}G(e){0===(e[0]=this.q(e[0]))&&(e[1]=this.q(e[1]))}F(e,t,n){let r;if(!(r=t.length))return[];const s=_.l(t);for(let s=0;r>s;s+=4){this.G(n);const r=e.encrypt(n);t[s]^=r[0],t[s+1]^=r[1],t[s+2]^=r[2],t[s+3]^=r[3]}return _.u(t,s)}},Z=V.R;let $=q&&J&&typeof G.importKey==S,ee=q&&J&&typeof G.deriveBits==S;class te extends p{constructor({password:e,rawPassword:n,signed:r,encryptionStrength:o,checkPasswordOnly:c}){super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),signed:r,X:o-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:o,J:f,ready:a}=n;r?(await(async(e,t,n,r)=>{const i=await se(e,t,n,ce(r,0,j[t])),o=ce(r,j[t]);if(i[0]!=o[0]||i[1]!=o[1])throw new s(B)})(n,o,r,ce(e,0,j[o]+2)),e=ce(e,j[o]+2),c?t.error(new s(M)):f()):await a;const l=new i(e.length-L-(e.length-L)%K);t.enqueue(re(n,e,l,0,L,!0))},async flush(e){const{signed:t,Y:n,Z:r,pending:o,ready:c}=this;if(r&&n){await c;const f=ce(o,0,o.length-L),a=ce(o,o.length-L);let l=new i;if(f.length){const e=ae(Q,f);r.update(e);const t=n.update(e);l=fe(Q,t)}if(t){const e=ce(fe(Q,r.digest()),0,L);for(let t=0;L>t;t++)if(e[t]!=a[t])throw new s(E)}e.enqueue(l)}}})}}class ne extends p{constructor({password:e,rawPassword:n,encryptionStrength:r}){let s;super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),X:r-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:s,J:o,ready:c}=n;let f=new i;r?(f=await(async(e,t,n)=>{const r=U(new i(j[t]));return oe(r,await se(e,t,n,r))})(n,s,r),o()):await c;const a=new i(f.length+e.length-e.length%K);a.set(f,0),t.enqueue(re(n,e,a,f.length,0))},async flush(e){const{Y:t,Z:n,pending:r,ready:o}=this;if(n&&t){await o;let c=new i;if(r.length){const e=t.update(ae(Q,r));n.update(e),c=fe(Q,e)}s.signature=fe(Q,n.digest()).slice(0,L),e.enqueue(oe(c,s.signature))}}}),s=this}}function re(e,t,n,r,s,o){const{Y:c,Z:f,pending:a}=e,l=t.length-s;let u;for(a.length&&(t=oe(a,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new i(t)).set(n,0)}return e})(n,l-l%K)),u=0;l-K>=u;u+=K){const e=ae(Q,ce(t,u,u+K));o&&f.update(e);const s=c.update(e);o||f.update(s),n.set(fe(Q,s),u+r)}return e.pending=ce(t,u),n}async function se(n,r,s,o){n.password=null;const c=await(async(e,t,n,r,s)=>{if(!$)return V.importKey(t);try{return await G.importKey("raw",t,n,!1,s)}catch(e){return $=!1,V.importKey(t)}})(0,s,O,0,W),f=await(async(e,t,n)=>{if(!ee)return V.B(t,e.salt,T.iterations,n);try{return await G.deriveBits(e,t,n)}catch(r){return ee=!1,V.B(t,e.salt,T.iterations,n)}})(t.assign({salt:o},T),c,8*(2*H[r]+2)),a=new i(f),l=ae(Q,ce(a,0,H[r])),u=ae(Q,ce(a,H[r],2*H[r])),w=ce(a,2*H[r]);return t.assign(n,{keys:{key:l,$:u,passwordVerification:w},Y:new Y(new X(l),e.from(F)),Z:new Z(u)}),w}function ie(e,t){return t===k?(e=>{if(typeof w==v){const t=new i((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new w).encode(e)})(e):t}function oe(e,t){let n=e;return e.length+t.length&&(n=new i(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function ce(e,t,n){return e.subarray(t,n)}function fe(e,t){return e.p(t)}function ae(e,t){return e.m(t)}class le extends p{constructor({password:e,passwordVerification:n,checkPasswordOnly:r}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;if(n.password){const t=we(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(B);e=e.subarray(12)}r?t.error(new s(M)):t.enqueue(we(n,e))}})}}class ue extends p{constructor({password:e,passwordVerification:n}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;let r,s;if(n.password){n.password=null;const t=U(new i(12));t[11]=n.passwordVerification,r=new i(e.length+t.length),r.set(he(n,t),0),s=12}else r=new i(e.length),s=0;r.set(he(n,e),s),t.enqueue(r)}})}}function we(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,n[r]);return n}function he(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,t[r]);return n}function de(e,n){const r=[305419896,591751049,878082192];t.assign(e,{keys:r,ee:new x(r[0]),te:new x(r[2])});for(let t=0;t<n.length;t++)pe(e,n.charCodeAt(t))}function pe(e,t){let[n,s,i]=e.keys;e.ee.append([t]),n=~e.ee.get(),s=be(r.imul(be(s+me(n)),134775813)+1),e.te.append([s>>>24]),i=~e.te.get(),e.keys=[n,s,i]}function ye(e){const t=2|e.keys[2];return me(r.imul(t,1^t)>>>8)}function me(e){return 255&e}function be(e){return 4294967295&e}const ge="deflate-raw";class ke extends p{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:s,encrypted:i,useCompressionStream:o,zipCrypto:c,signed:f,level:a}=e,u=this;let w,h,d=Se(super.readable);i&&!c||!f||(w=new A,d=xe(d,w)),s&&(d=Ce(d,o,{level:a,chunkSize:t},r,n)),i&&(c?d=xe(d,new ue(e)):(h=new ne(e),d=xe(d,h))),ze(u,d,(()=>{let e;i&&!c&&(e=h.signature),i&&!c||!f||(e=new l(w.value.buffer).getUint32(0)),u.signature=e}))}}class ve extends p{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:i,encrypted:o,signed:c,signature:f,compressed:a,useCompressionStream:u}=e;let w,h,d=Se(super.readable);o&&(i?d=xe(d,new le(e)):(h=new te(e),d=xe(d,h))),a&&(d=Ce(d,u,{chunkSize:t},r,n)),o&&!i||!c||(w=new A,d=xe(d,w)),ze(this,d,(()=>{if((!o||i)&&c){const e=new l(w.value.buffer);if(f!=e.getUint32(0,!1))throw new s(E)}}))}}function Se(e){return xe(e,new p({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ze(e,n,r){n=xe(n,new p({flush:r})),t.defineProperty(e,"readable",{get:()=>n})}function Ce(e,t,n,r,s){try{e=xe(e,new(t&&r?r:s)(ge,n))}catch(r){if(!t)return e;try{e=xe(e,new s(ge,n))}catch(t){return e}}return e}function xe(e,t){return e.pipeThrough(t)}const Ae="data",_e="close";class Ie extends p{constructor(e,n){super({});const r=this,{codecType:s}=e;let i;s.startsWith("deflate")?i=ke:s.startsWith("inflate")&&(i=ve);let o=0,c=0;const f=new i(e,n),a=super.readable,l=new p({transform(e,t){e&&e.length&&(c+=e.length,t.enqueue(e))},flush(){t.assign(r,{inputSize:c})}}),u=new p({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){const{signature:e}=f;t.assign(r,{signature:e,outputSize:o,inputSize:c})}});t.defineProperty(r,"readable",{get:()=>a.pipeThrough(l).pipeThrough(f).pipeThrough(u)})}}class Pe extends p{constructor(e){let t;super({transform:function n(r,s){if(t){const e=new i(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}r.length>e?(s.enqueue(r.slice(0,e)),n(r.slice(e),s)):t=r},flush(e){t&&t.length&&e.enqueue(t)}})}}const De=new a,Ve=new a;let Re,Be=0,Ee=!0;async function Me(e){try{const{options:t,scripts:r,config:s}=e;if(r&&r.length)try{Ee?importScripts.apply(k,r):await Ue(r)}catch(e){Ee=!1,await Ue(r)}self.initCodec&&self.initCodec(),s.CompressionStreamNative=self.CompressionStream,s.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(s.CompressionStream=new z(self.Deflate)),self.Inflate&&(s.DecompressionStream=new z(self.Inflate));const i={highWaterMark:1},o=e.readable||new y({async pull(e){const t=new u((e=>De.set(Be,e)));Ke({type:"pull",messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER;const{value:r,done:s}=await t;e.enqueue(r),s&&e.close()}},i),c=e.writable||new m({async write(e){let t;const r=new u((e=>t=e));Ve.set(Be,t),Ke({type:Ae,value:e,messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER,await r}},i),f=new Ie(t,s);Re=new AbortController;const{signal:a}=Re;await o.pipeThrough(f).pipeThrough(new Pe(s.chunkSize)).pipeTo(c,{signal:a,preventClose:!0,preventAbort:!0}),await c.getWriter().close();const{signature:l,inputSize:w,outputSize:h}=f;Ke({type:_e,result:{signature:l,inputSize:w,outputSize:h}})}catch(e){Ne(e)}}async function Ue(e){for(const t of e)await import(t)}function Ke(e){let{value:t}=e;if(t)if(t.length)try{t=new i(t),e.value=t.buffer,d(e,[e.value])}catch(t){d(e)}else d(e);else d(e)}function Ne(e=new s("Unknown error")){const{message:t,stack:n,code:r,name:i}=e;d({error:{message:t,stack:n,code:r,name:i}})}addEventListener("message",(({data:e})=>{const{type:t,messageId:n,value:r,done:s}=e;try{if("start"==t&&Me(e),t==Ae){const e=De.get(n);De.delete(n),e({value:new i(r),done:s})}if("ack"==t){const e=Ve.get(n);Ve.delete(n),e()}t==_e&&Re.abort()}catch(e){Ne(e)}}));const Oe=-2;function Te(t){return We(t.map((([t,n])=>new e(t).fill(n,0,t))))}function We(t){return t.reduce(((t,n)=>t.concat(e.isArray(n)?We(n):n)),[])}const je=[0,1,2,3].concat(...Te([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function He(){const e=this;function t(e,t){let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}e.ne=n=>{const s=e.re,i=e.ie.se,o=e.ie.oe;let c,f,a,l=-1;for(n.ce=0,n.fe=573,c=0;o>c;c++)0!==s[2*c]?(n.ae[++n.ce]=l=c,n.le[c]=0):s[2*c+1]=0;for(;2>n.ce;)a=n.ae[++n.ce]=2>l?++l:0,s[2*a]=1,n.le[a]=0,n.ue--,i&&(n.we-=i[2*a+1]);for(e.he=l,c=r.floor(n.ce/2);c>=1;c--)n.de(s,c);a=o;do{c=n.ae[1],n.ae[1]=n.ae[n.ce--],n.de(s,1),f=n.ae[1],n.ae[--n.fe]=c,n.ae[--n.fe]=f,s[2*a]=s[2*c]+s[2*f],n.le[a]=r.max(n.le[c],n.le[f])+1,s[2*c+1]=s[2*f+1]=a,n.ae[1]=a++,n.de(s,1)}while(n.ce>=2);n.ae[--n.fe]=n.ae[1],(t=>{const n=e.re,r=e.ie.se,s=e.ie.pe,i=e.ie.ye,o=e.ie.me;let c,f,a,l,u,w,h=0;for(l=0;15>=l;l++)t.be[l]=0;for(n[2*t.ae[t.fe]+1]=0,c=t.fe+1;573>c;c++)f=t.ae[c],l=n[2*n[2*f+1]+1]+1,l>o&&(l=o,h++),n[2*f+1]=l,f>e.he||(t.be[l]++,u=0,i>f||(u=s[f-i]),w=n[2*f],t.ue+=w*(l+u),r&&(t.we+=w*(r[2*f+1]+u)));if(0!==h){do{for(l=o-1;0===t.be[l];)l--;t.be[l]--,t.be[l+1]+=2,t.be[o]--,h-=2}while(h>0);for(l=o;0!==l;l--)for(f=t.be[l];0!==f;)a=t.ae[--c],a>e.he||(n[2*a+1]!=l&&(t.ue+=(l-n[2*a+1])*n[2*a],n[2*a+1]=l),f--)}})(n),((e,n,r)=>{const s=[];let i,o,c,f=0;for(i=1;15>=i;i++)s[i]=f=f+r[i-1]<<1;for(o=0;n>=o;o++)c=e[2*o+1],0!==c&&(e[2*o]=t(s[c]++,c))})(s,e.he,n.be)}}function Le(e,t,n,r,s){const i=this;i.se=e,i.pe=t,i.ye=n,i.oe=r,i.me=s}He.ge=[0,1,2,3,4,5,6,7].concat(...Te([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),He.ke=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],He.ve=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],He.Se=e=>256>e?je[e]:je[256+(e>>>7)],He.ze=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],He.Ce=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],He.xe=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],He.Ae=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const Fe=Te([[144,8],[112,9],[24,7],[8,8]]);Le._e=We([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((e,t)=>[e,Fe[t]])));const qe=Te([[30,5]]);function Ge(e,t,n,r,s){const i=this;i.Ie=e,i.Pe=t,i.De=n,i.Ve=r,i.Re=s}Le.Be=We([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((e,t)=>[e,qe[t]]))),Le.Ee=new Le(Le._e,He.ze,257,286,15),Le.Me=new Le(Le.Be,He.Ce,0,30,15),Le.Ue=new Le(null,He.xe,0,19,7);const Je=[new Ge(0,0,0,0,0),new Ge(4,4,8,4,1),new Ge(4,5,16,8,1),new Ge(4,6,32,32,1),new Ge(4,4,16,16,2),new Ge(8,16,32,32,2),new Ge(8,16,128,128,2),new Ge(8,32,128,256,2),new Ge(32,128,258,1024,2),new Ge(32,258,258,4096,2)],Qe=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Xe=113,Ye=666,Ze=262;function $e(e,t,n,r){const s=e[2*t],i=e[2*n];return i>s||s==i&&r[t]<=r[n]}function et(){const e=this;let t,n,s,c,f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z,C,x,A,_,I,P,D,V,R,B,E,M,U;const K=new He,N=new He,O=new He;let T,W,j,H,L,F;function q(){let t;for(t=0;286>t;t++)E[2*t]=0;for(t=0;30>t;t++)M[2*t]=0;for(t=0;19>t;t++)U[2*t]=0;E[512]=1,e.ue=e.we=0,W=j=0}function G(e,t){let n,r=-1,s=e[1],i=0,o=7,c=4;0===s&&(o=138,c=3),e[2*(t+1)+1]=65535;for(let f=0;t>=f;f++)n=s,s=e[2*(f+1)+1],++i<o&&n==s||(c>i?U[2*n]+=i:0!==n?(n!=r&&U[2*n]++,U[32]++):i>10?U[36]++:U[34]++,i=0,r=n,0===s?(o=138,c=3):n==s?(o=6,c=3):(o=7,c=4))}function J(t){e.Ke[e.pending++]=t}function Q(e){J(255&e),J(e>>>8&255)}function X(e,t){let n;const r=t;F>16-r?(n=e,L|=n<<F&65535,Q(L),L=n>>>16-F,F+=r-16):(L|=e<<F&65535,F+=r)}function Y(e,t){const n=2*e;X(65535&t[n],65535&t[n+1])}function Z(e,t){let n,r,s=-1,i=e[1],o=0,c=7,f=4;for(0===i&&(c=138,f=3),n=0;t>=n;n++)if(r=i,i=e[2*(n+1)+1],++o>=c||r!=i){if(f>o)do{Y(r,U)}while(0!=--o);else 0!==r?(r!=s&&(Y(r,U),o--),Y(16,U),X(o-3,2)):o>10?(Y(18,U),X(o-11,7)):(Y(17,U),X(o-3,3));o=0,s=r,0===i?(c=138,f=3):r==i?(c=6,f=3):(c=7,f=4)}}function $(){16==F?(Q(L),L=0,F=0):8>F||(J(255&L),L>>>=8,F-=8)}function ee(t,n){let s,i,o;if(e.Ne[W]=t,e.Oe[W]=255&n,W++,0===t?E[2*n]++:(j++,t--,E[2*(He.ge[n]+256+1)]++,M[2*He.Se(t)]++),!(8191&W)&&D>2){for(s=8*W,i=C-k,o=0;30>o;o++)s+=M[2*o]*(5+He.Ce[o]);if(s>>>=3,j<r.floor(W/2)&&s<r.floor(i/2))return!0}return W==T-1}function te(t,n){let r,s,i,o,c=0;if(0!==W)do{r=e.Ne[c],s=e.Oe[c],c++,0===r?Y(s,t):(i=He.ge[s],Y(i+256+1,t),o=He.ze[i],0!==o&&(s-=He.ke[i],X(s,o)),r--,i=He.Se(r),Y(i,n),o=He.Ce[i],0!==o&&(r-=He.ve[i],X(r,o)))}while(W>c);Y(256,t),H=t[513]}function ne(){F>8?Q(L):F>0&&J(255&L),L=0,F=0}function re(t,n,r){X(0+(r?1:0),3),((t,n)=>{ne(),H=8,Q(n),Q(~n),e.Ke.set(u.subarray(t,t+n),e.pending),e.pending+=n})(t,n)}function se(n){((t,n,r)=>{let s,i,o=0;D>0?(K.ne(e),N.ne(e),o=(()=>{let t;for(G(E,K.he),G(M,N.he),O.ne(e),t=18;t>=3&&0===U[2*He.Ae[t]+1];t--);return e.ue+=14+3*(t+1),t})(),s=e.ue+3+7>>>3,i=e.we+3+7>>>3,i>s||(s=i)):s=i=n+5,n+4>s||-1==t?i==s?(X(2+(r?1:0),3),te(Le._e,Le.Be)):(X(4+(r?1:0),3),((e,t,n)=>{let r;for(X(e-257,5),X(t-1,5),X(n-4,4),r=0;n>r;r++)X(U[2*He.Ae[r]+1],3);Z(E,e-1),Z(M,t-1)})(K.he+1,N.he+1,o+1),te(E,M)):re(t,n,r),q(),r&&ne()})(0>k?-1:k,C-k,n),k=C,t.Te()}function ie(){let e,n,r,s;do{if(s=w-A-C,0===s&&0===C&&0===A)s=f;else if(-1==s)s--;else if(C>=f+f-Ze){u.set(u.subarray(f,f+f),0),x-=f,C-=f,k-=f,e=y,r=e;do{n=65535&d[--r],d[r]=f>n?0:n-f}while(0!=--e);e=f,r=e;do{n=65535&h[--r],h[r]=f>n?0:n-f}while(0!=--e);s+=f}if(0===t.We)return;e=t.je(u,C+A,s),A+=e,3>A||(p=255&u[C],p=(p<<g^255&u[C+1])&b)}while(Ze>A&&0!==t.We)}function oe(e){let t,n,r=I,s=C,i=_;const o=C>f-Ze?C-(f-Ze):0;let c=B;const a=l,w=C+258;let d=u[s+i-1],p=u[s+i];R>_||(r>>=2),c>A&&(c=A);do{if(t=e,u[t+i]==p&&u[t+i-1]==d&&u[t]==u[s]&&u[++t]==u[s+1]){s+=2,t++;do{}while(u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&w>s);if(n=258-(w-s),s=w-258,n>i){if(x=e,i=n,n>=c)break;d=u[s+i-1],p=u[s+i]}}}while((e=65535&h[e&a])>o&&0!=--r);return i>A?A:i}e.le=[],e.be=[],e.ae=[],E=[],M=[],U=[],e.de=(t,n)=>{const r=e.ae,s=r[n];let i=n<<1;for(;i<=e.ce&&(i<e.ce&&$e(t,r[i+1],r[i],e.le)&&i++,!$e(t,s,r[i],e.le));)r[n]=r[i],n=i,i<<=1;r[n]=s},e.He=(t,S,x,W,j,G)=>(W||(W=8),j||(j=8),G||(G=0),t.Le=null,-1==S&&(S=6),1>j||j>9||8!=W||9>x||x>15||0>S||S>9||0>G||G>2?Oe:(t.Fe=e,a=x,f=1<<a,l=f-1,m=j+7,y=1<<m,b=y-1,g=r.floor((m+3-1)/3),u=new i(2*f),h=[],d=[],T=1<<j+6,e.Ke=new i(4*T),s=4*T,e.Ne=new o(T),e.Oe=new i(T),D=S,V=G,(t=>(t.qe=t.Ge=0,t.Le=null,e.pending=0,e.Je=0,n=Xe,c=0,K.re=E,K.ie=Le.Ee,N.re=M,N.ie=Le.Me,O.re=U,O.ie=Le.Ue,L=0,F=0,H=8,q(),(()=>{w=2*f,d[y-1]=0;for(let e=0;y-1>e;e++)d[e]=0;P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve,C=0,k=0,A=0,v=_=2,z=0,p=0})(),0))(t))),e.Qe=()=>42!=n&&n!=Xe&&n!=Ye?Oe:(e.Oe=null,e.Ne=null,e.Ke=null,d=null,h=null,u=null,e.Fe=null,n==Xe?-3:0),e.Xe=(e,t,n)=>{let r=0;return-1==t&&(t=6),0>t||t>9||0>n||n>2?Oe:(Je[D].Re!=Je[t].Re&&0!==e.qe&&(r=e.Ye(1)),D!=t&&(D=t,P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve),V=n,r)},e.Ze=(e,t,r)=>{let s,i=r,o=0;if(!t||42!=n)return Oe;if(3>i)return 0;for(i>f-Ze&&(i=f-Ze,o=r-i),u.set(t.subarray(o,o+i),0),C=i,k=i,p=255&u[0],p=(p<<g^255&u[1])&b,s=0;i-3>=s;s++)p=(p<<g^255&u[s+2])&b,h[s&l]=d[p],d[p]=s;return 0},e.Ye=(r,i)=>{let o,w,m,I,R;if(i>4||0>i)return Oe;if(!r.$e||!r.et&&0!==r.We||n==Ye&&4!=i)return r.Le=Qe[4],Oe;if(0===r.tt)return r.Le=Qe[7],-5;var B;if(t=r,I=c,c=i,42==n&&(w=8+(a-8<<4)<<8,m=(D-1&255)>>1,m>3&&(m=3),w|=m<<6,0!==C&&(w|=32),w+=31-w%31,n=Xe,J((B=w)>>8&255),J(255&B)),0!==e.pending){if(t.Te(),0===t.tt)return c=-1,0}else if(0===t.We&&I>=i&&4!=i)return t.Le=Qe[7],-5;if(n==Ye&&0!==t.We)return r.Le=Qe[7],-5;if(0!==t.We||0!==A||0!=i&&n!=Ye){switch(R=-1,Je[D].Re){case 0:R=(e=>{let n,r=65535;for(r>s-5&&(r=s-5);;){if(1>=A){if(ie(),0===A&&0==e)return 0;if(0===A)break}if(C+=A,A=0,n=k+r,(0===C||C>=n)&&(A=C-n,C=n,se(!1),0===t.tt))return 0;if(C-k>=f-Ze&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 1:R=(e=>{let n,r=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C),0===r||(C-r&65535)>f-Ze||2!=V&&(v=oe(r)),3>v)n=ee(0,255&u[C]),A--,C++;else if(n=ee(C-x,v-3),A-=v,v>P||3>A)C+=v,v=0,p=255&u[C],p=(p<<g^255&u[C+1])&b;else{v--;do{C++,p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C}while(0!=--v);C++}if(n&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 2:R=(e=>{let n,r,s=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C),_=v,S=x,v=2,0!==s&&P>_&&f-Ze>=(C-s&65535)&&(2!=V&&(v=oe(s)),5>=v&&(1==V||3==v&&C-x>4096)&&(v=2)),3>_||v>_)if(0!==z){if(n=ee(0,255&u[C-1]),n&&se(!1),C++,A--,0===t.tt)return 0}else z=1,C++,A--;else{r=C+A-3,n=ee(C-1-S,_-3),A-=_-1,_-=2;do{++C>r||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C)}while(0!=--_);if(z=0,v=2,C++,n&&(se(!1),0===t.tt))return 0}}return 0!==z&&(n=ee(0,255&u[C-1]),z=0),se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i)}if(2!=R&&3!=R||(n=Ye),0==R||2==R)return 0===t.tt&&(c=-1),0;if(1==R){if(1==i)X(2,3),Y(256,Le._e),$(),9>1+H+10-F&&(X(2,3),Y(256,Le._e),$()),H=7;else if(re(0,0,!1),3==i)for(o=0;y>o;o++)d[o]=0;if(t.Te(),0===t.tt)return c=-1,0}}return 4!=i?0:1}}function tt(){const e=this;e.nt=0,e.rt=0,e.We=0,e.qe=0,e.tt=0,e.Ge=0}function nt(e){const t=new tt,n=(o=e&&e.chunkSize?e.chunkSize:65536)+5*(r.floor(o/16383)+1);var o;const c=new i(n);let f=e?e.level:-1;void 0===f&&(f=-1),t.He(f),t.$e=c,this.append=(e,r)=>{let o,f,a=0,l=0,u=0;const w=[];if(e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,o=t.Ye(0),0!=o)throw new s("deflating: "+t.Le);t.rt&&(t.rt==n?w.push(new i(c)):w.push(c.subarray(0,t.rt))),u+=t.rt,r&&t.nt>0&&t.nt!=a&&(r(t.nt),a=t.nt)}while(t.We>0||0===t.tt);return w.length>1?(f=new i(u),w.forEach((e=>{f.set(e,l),l+=e.length}))):f=w[0]?new i(w[0]):new i,f}},this.flush=()=>{let e,r,o=0,f=0;const a=[];do{if(t.rt=0,t.tt=n,e=t.Ye(4),1!=e&&0!=e)throw new s("deflating: "+t.Le);n-t.tt>0&&a.push(c.slice(0,t.rt)),f+=t.rt}while(t.We>0||0===t.tt);return t.Qe(),r=new i(f),a.forEach((e=>{r.set(e,o),o+=e.length})),r}}tt.prototype={He(e,t){const n=this;return n.Fe=new et,t||(t=15),n.Fe.He(n,e,t)},Ye(e){const t=this;return t.Fe?t.Fe.Ye(t,e):Oe},Qe(){const e=this;if(!e.Fe)return Oe;const t=e.Fe.Qe();return e.Fe=null,t},Xe(e,t){const n=this;return n.Fe?n.Fe.Xe(n,e,t):Oe},Ze(e,t){const n=this;return n.Fe?n.Fe.Ze(n,e,t):Oe},je(e,t,n){const r=this;let s=r.We;return s>n&&(s=n),0===s?0:(r.We-=s,e.set(r.et.subarray(r.nt,r.nt+s),t),r.nt+=s,r.qe+=s,s)},Te(){const e=this;let t=e.Fe.pending;t>e.tt&&(t=e.tt),0!==t&&(e.$e.set(e.Fe.Ke.subarray(e.Fe.Je,e.Fe.Je+t),e.rt),e.rt+=t,e.Fe.Je+=t,e.Ge+=t,e.tt-=t,e.Fe.pending-=t,0===e.Fe.pending&&(e.Fe.Je=0))}};const rt=-2,st=-3,it=-5,ot=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],ct=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],ft=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],at=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],lt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],ut=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],wt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function ht(){let e,t,n,r,s,i;function o(e,t,o,c,f,a,l,u,w,h,d){let p,y,m,b,g,k,v,S,z,C,x,A,_,I,P;C=0,g=o;do{n[e[t+C]]++,C++,g--}while(0!==g);if(n[0]==o)return l[0]=-1,u[0]=0,0;for(S=u[0],k=1;15>=k&&0===n[k];k++);for(v=k,k>S&&(S=k),g=15;0!==g&&0===n[g];g--);for(m=g,S>g&&(S=g),u[0]=S,I=1<<k;g>k;k++,I<<=1)if(0>(I-=n[k]))return st;if(0>(I-=n[g]))return st;for(n[g]+=I,i[1]=k=0,C=1,_=2;0!=--g;)i[_]=k+=n[C],_++,C++;g=0,C=0;do{0!==(k=e[t+C])&&(d[i[k]++]=g),C++}while(++g<o);for(o=i[m],i[0]=g=0,C=0,b=-1,A=-S,s[0]=0,x=0,P=0;m>=v;v++)for(p=n[v];0!=p--;){for(;v>A+S;){if(b++,A+=S,P=m-A,P=P>S?S:P,(y=1<<(k=v-A))>p+1&&(y-=p+1,_=v,P>k))for(;++k<P&&(y<<=1)>n[++_];)y-=n[_];if(P=1<<k,h[0]+P>1440)return st;s[b]=x=h[0],h[0]+=P,0!==b?(i[b]=g,r[0]=k,r[1]=S,k=g>>>A-S,r[2]=x-s[b-1]-k,w.set(r,3*(s[b-1]+k))):l[0]=x}for(r[1]=v-A,o>C?d[C]<c?(r[0]=256>d[C]?0:96,r[2]=d[C++]):(r[0]=a[d[C]-c]+16+64,r[2]=f[d[C++]-c]):r[0]=192,y=1<<v-A,k=g>>>A;P>k;k+=y)w.set(r,3*(x+k));for(k=1<<v-1;g&k;k>>>=1)g^=k;for(g^=k,z=(1<<A)-1;(g&z)!=i[b];)b--,A-=S,z=(1<<A)-1}return 0!==I&&1!=m?it:0}function c(o){let c;for(e||(e=[],t=[],n=new f(16),r=[],s=new f(15),i=new f(16)),t.length<o&&(t=[]),c=0;o>c;c++)t[c]=0;for(c=0;16>c;c++)n[c]=0;for(c=0;3>c;c++)r[c]=0;s.set(n.subarray(0,15),0),i.set(n.subarray(0,16),0)}this.st=(n,r,s,i,f)=>{let a;return c(19),e[0]=0,a=o(n,0,19,19,null,null,s,r,i,e,t),a==st?f.Le="oversubscribed dynamic bit lengths tree":a!=it&&0!==r[0]||(f.Le="incomplete dynamic bit lengths tree",a=st),a},this.it=(n,r,s,i,f,a,l,u,w)=>{let h;return c(288),e[0]=0,h=o(s,0,n,257,at,lt,a,i,u,e,t),0!=h||0===i[0]?(h==st?w.Le="oversubscribed literal/length tree":-4!=h&&(w.Le="incomplete literal/length tree",h=st),h):(c(288),h=o(s,n,r,0,ut,wt,l,f,u,e,t),0!=h||0===f[0]&&n>257?(h==st?w.Le="oversubscribed distance tree":h==it?(w.Le="incomplete distance tree",h=st):-4!=h&&(w.Le="empty distance tree with lengths",h=st),h):0)}}function dt(){const e=this;let t,n,r,s,i=0,o=0,c=0,f=0,a=0,l=0,u=0,w=0,h=0,d=0;function p(e,t,n,r,s,i,o,c){let f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z;d=c.nt,p=c.We,w=o.ot,h=o.ct,y=o.write,m=y<o.read?o.read-y-1:o.end-y,b=ot[e],g=ot[t];do{for(;20>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(f=w&b,a=n,l=r,z=3*(l+f),0!==(u=a[z]))for(;;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15,k=a[z+2]+(w&ot[u]),w>>=u,h-=u;15>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;for(f=w&g,a=s,l=i,z=3*(l+f),u=a[z];;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15;u>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(v=a[z+2]+(w&ot[u]),w>>=u,h-=u,m-=k,v>y){S=y-v;do{S+=o.end}while(0>S);if(u=o.end-S,k>u){if(k-=u,y-S>0&&u>y-S)do{o.lt[y++]=o.lt[S++]}while(0!=--u);else o.lt.set(o.lt.subarray(S,S+u),y),y+=u,S+=u,u=0;S=0}}else S=y-v,y-S>0&&2>y-S?(o.lt[y++]=o.lt[S++],o.lt[y++]=o.lt[S++],k-=2):(o.lt.set(o.lt.subarray(S,S+2),y),y+=2,S+=2,k-=2);if(y-S>0&&k>y-S)do{o.lt[y++]=o.lt[S++]}while(0!=--k);else o.lt.set(o.lt.subarray(S,S+k),y),y+=k,S+=k,k=0;break}if(64&u)return c.Le="invalid distance code",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st;f+=a[z+2],f+=w&ot[u],z=3*(l+f),u=a[z]}break}if(64&u)return 32&u?(k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,1):(c.Le="invalid literal/length code",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st);if(f+=a[z+2],f+=w&ot[u],z=3*(l+f),0===(u=a[z])){w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--;break}}else w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--}while(m>=258&&p>=10);return k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,0}e.init=(e,i,o,c,f,a)=>{t=0,u=e,w=i,r=o,h=c,s=f,d=a,n=null},e.ut=(e,y,m)=>{let b,g,k,v,S,z,C,x=0,A=0,_=0;for(_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S;;)switch(t){case 0:if(z>=258&&v>=10&&(e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,m=p(u,w,r,h,s,d,e,y),_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S,0!=m)){t=1==m?7:9;break}c=u,n=r,o=h,t=1;case 1:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>>=n[g+1],A-=n[g+1],k=n[g],0===k){f=n[g+2],t=6;break}if(16&k){a=15&k,i=n[g+2],t=2;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}if(32&k){t=7;break}return t=9,y.Le="invalid literal/length code",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 2:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}i+=x&ot[b],x>>=b,A-=b,c=w,n=s,o=d,t=3;case 3:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>=n[g+1],A-=n[g+1],k=n[g],16&k){a=15&k,l=n[g+2],t=4;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}return t=9,y.Le="invalid distance code",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 4:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}l+=x&ot[b],x>>=b,A-=b,t=5;case 5:for(C=S-l;0>C;)C+=e.end;for(;0!==i;){if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);e.lt[S++]=e.lt[C++],z--,C==e.end&&(C=0),i--}t=0;break;case 6:if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,e.lt[S++]=f,z--,t=0;break;case 7:if(A>7&&(A-=8,v++,_--),e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,e.read!=e.write)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);t=8;case 8:return m=1,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 9:return m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);default:return m=rt,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m)}},e.ht=()=>{}}ht.dt=(e,t,n,r)=>(e[0]=9,t[0]=5,n[0]=ct,r[0]=ft,0);const pt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function yt(e,t){const n=this;let r,s=0,o=0,c=0,a=0;const l=[0],u=[0],w=new dt;let h=0,d=new f(4320);const p=new ht;n.ct=0,n.ot=0,n.lt=new i(t),n.end=t,n.read=0,n.write=0,n.reset=(e,t)=>{t&&(t[0]=0),6==s&&w.ht(e),s=0,n.ct=0,n.ot=0,n.read=n.write=0},n.reset(e,null),n.wt=(e,t)=>{let r,s,i;return s=e.rt,i=n.read,r=(i>n.write?n.end:n.write)-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r,i==n.end&&(i=0,n.write==n.end&&(n.write=0),r=n.write-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r),e.rt=s,n.read=i,t},n.ut=(e,t)=>{let i,f,y,m,b,g,k,v;for(m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g;;){let S,z,C,x,A,_,I,P;switch(s){case 0:for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}switch(i=7&f,h=1&i,i>>>1){case 0:f>>>=3,y-=3,i=7&y,f>>>=i,y-=i,s=1;break;case 1:S=[],z=[],C=[[]],x=[[]],ht.dt(S,z,C,x),w.init(S[0],z[0],C[0],0,x[0],0),f>>>=3,y-=3,s=6;break;case 2:f>>>=3,y-=3,s=3;break;case 3:return f>>>=3,y-=3,s=9,e.Le="invalid block type",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}break;case 1:for(;32>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if((~f>>>16&65535)!=(65535&f))return s=9,e.Le="invalid stored block lengths",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);o=65535&f,f=y=0,s=0!==o?2:0!==h?7:0;break;case 2:if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(0===k&&(g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k&&(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k)))return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(t=0,i=o,i>b&&(i=b),i>k&&(i=k),n.lt.set(e.je(m,i),g),m+=i,b-=i,g+=i,k-=i,0!=(o-=i))break;s=0!==h?7:0;break;case 3:for(;14>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(c=i=16383&f,(31&i)>29||(i>>5&31)>29)return s=9,e.Le="too many length or distance symbols",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(i=258+(31&i)+(i>>5&31),!r||r.length<i)r=[];else for(v=0;i>v;v++)r[v]=0;f>>>=14,y-=14,a=0,s=4;case 4:for(;4+(c>>>10)>a;){for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}r[pt[a++]]=7&f,f>>>=3,y-=3}for(;19>a;)r[pt[a++]]=0;if(l[0]=7,i=p.st(r,l,u,d,e),0!=i)return(t=i)==st&&(r=null,s=9),n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);a=0,s=5;case 5:for(;i=c,258+(31&i)+(i>>5&31)>a;){let o,w;for(i=l[0];i>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(i=d[3*(u[0]+(f&ot[i]))+1],w=d[3*(u[0]+(f&ot[i]))+2],16>w)f>>>=i,y-=i,r[a++]=w;else{for(v=18==w?7:w-14,o=18==w?11:3;i+v>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(f>>>=i,y-=i,o+=f&ot[v],f>>>=v,y-=v,v=a,i=c,v+o>258+(31&i)+(i>>5&31)||16==w&&1>v)return r=null,s=9,e.Le="invalid bit length repeat",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w=16==w?r[v-1]:0;do{r[v++]=w}while(0!=--o);a=v}}if(u[0]=-1,A=[],_=[],I=[],P=[],A[0]=9,_[0]=6,i=c,i=p.it(257+(31&i),1+(i>>5&31),r,A,_,I,P,d,e),0!=i)return i==st&&(r=null,s=9),t=i,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w.init(A[0],_[0],d,I[0],d,P[0]),s=6;case 6:if(n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,1!=(t=w.ut(n,e,t)))return n.wt(e,t);if(t=0,w.ht(e),m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g,0===h){s=0;break}s=7;case 7:if(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,n.read!=n.write)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);s=8;case 8:return t=1,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);case 9:return t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);default:return t=rt,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}}},n.ht=e=>{n.reset(e,null),n.lt=null,d=null},n.yt=(e,t,r)=>{n.lt.set(e.subarray(t,t+r),0),n.read=n.write=r},n.bt=()=>1==s?1:0}const mt=13,bt=[0,0,255,255];function gt(){const e=this;function t(e){return e&&e.gt?(e.qe=e.Ge=0,e.Le=null,e.gt.mode=7,e.gt.kt.reset(e,null),0):rt}e.mode=0,e.method=0,e.vt=[0],e.St=0,e.marker=0,e.zt=0,e.Ct=t=>(e.kt&&e.kt.ht(t),e.kt=null,0),e.xt=(n,r)=>(n.Le=null,e.kt=null,8>r||r>15?(e.Ct(n),rt):(e.zt=r,n.gt.kt=new yt(n,1<<r),t(n),0)),e.At=(e,t)=>{let n,r;if(!e||!e.gt||!e.et)return rt;const s=e.gt;for(t=4==t?it:0,n=it;;)switch(s.mode){case 0:if(0===e.We)return n;if(n=t,e.We--,e.qe++,8!=(15&(s.method=e.ft(e.nt++)))){s.mode=mt,e.Le="unknown compression method",s.marker=5;break}if(8+(s.method>>4)>s.zt){s.mode=mt,e.Le="invalid win size",s.marker=5;break}s.mode=1;case 1:if(0===e.We)return n;if(n=t,e.We--,e.qe++,r=255&e.ft(e.nt++),((s.method<<8)+r)%31!=0){s.mode=mt,e.Le="incorrect header check",s.marker=5;break}if(!(32&r)){s.mode=7;break}s.mode=2;case 2:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St=(255&e.ft(e.nt++))<<24&4278190080,s.mode=3;case 3:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<16&16711680,s.mode=4;case 4:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<8&65280,s.mode=5;case 5:return 0===e.We?n:(n=t,e.We--,e.qe++,s.St+=255&e.ft(e.nt++),s.mode=6,2);case 6:return s.mode=mt,e.Le="need dictionary",s.marker=0,rt;case 7:if(n=s.kt.ut(e,n),n==st){s.mode=mt,s.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,s.kt.reset(e,s.vt),s.mode=12;case 12:return e.We=0,1;case mt:return st;default:return rt}},e._t=(e,t,n)=>{let r=0,s=n;if(!e||!e.gt||6!=e.gt.mode)return rt;const i=e.gt;return s<1<<i.zt||(s=(1<<i.zt)-1,r=n-s),i.kt.yt(t,r,s),i.mode=7,0},e.It=e=>{let n,r,s,i,o;if(!e||!e.gt)return rt;const c=e.gt;if(c.mode!=mt&&(c.mode=mt,c.marker=0),0===(n=e.We))return it;for(r=e.nt,s=c.marker;0!==n&&4>s;)e.ft(r)==bt[s]?s++:s=0!==e.ft(r)?0:4-s,r++,n--;return e.qe+=r-e.nt,e.nt=r,e.We=n,c.marker=s,4!=s?st:(i=e.qe,o=e.Ge,t(e),e.qe=i,e.Ge=o,c.mode=7,0)},e.Pt=e=>e&&e.gt&&e.gt.kt?e.gt.kt.bt():rt}function kt(){}function vt(e){const t=new kt,n=e&&e.chunkSize?r.floor(2*e.chunkSize):131072,o=new i(n);let c=!1;t.xt(),t.$e=o,this.append=(e,r)=>{const f=[];let a,l,u=0,w=0,h=0;if(0!==e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,0!==t.We||c||(t.nt=0,c=!0),a=t.At(0),c&&a===it){if(0!==t.We)throw new s("inflating: bad input")}else if(0!==a&&1!==a)throw new s("inflating: "+t.Le);if((c||1===a)&&t.We===e.length)throw new s("inflating: bad input");t.rt&&(t.rt===n?f.push(new i(o)):f.push(o.subarray(0,t.rt))),h+=t.rt,r&&t.nt>0&&t.nt!=u&&(r(t.nt),u=t.nt)}while(t.We>0||0===t.tt);return f.length>1?(l=new i(h),f.forEach((e=>{l.set(e,w),w+=e.length}))):l=f[0]?new i(f[0]):new i,l}},this.flush=()=>{t.Ct()}}kt.prototype={xt(e){const t=this;return t.gt=new gt,e||(e=15),t.gt.xt(t,e)},At(e){const t=this;return t.gt?t.gt.At(t,e):rt},Ct(){const e=this;if(!e.gt)return rt;const t=e.gt.Ct(e);return e.gt=null,t},It(){const e=this;return e.gt?e.gt.It(e):rt},_t(e,t){const n=this;return n.gt?n.gt._t(n,e,t):rt},ft(e){return this.et[e]},je(e,t){return this.et.subarray(e,e+t)}},self.initCodec=()=>{self.Deflate=nt,self.Inflate=vt};\n', r = () => t.useDataURI ? "data:text/javascript," + encodeURIComponent(n) : URL.createObjectURL(new Blob([n], { type: "text/javascript" })); - e2({ workerScripts: { inflate: [r], deflate: [r] } }); -} - -// node_modules/@zip.js/zip.js/lib/core/util/default-mime-type.js -function getMimeType() { - return "application/octet-stream"; -} - -// node_modules/@zip.js/zip.js/lib/core/util/stream-codec-shim.js -function initShimAsyncCodec(library, options = {}, registerDataHandler) { - return { - Deflate: createCodecClass(library.Deflate, options.deflate, registerDataHandler), - Inflate: createCodecClass(library.Inflate, options.inflate, registerDataHandler) - }; -} -function objectHasOwn(object, propertyName) { - return typeof Object.hasOwn === FUNCTION_TYPE ? Object.hasOwn(object, propertyName) : ( - // deno-lint-ignore no-prototype-builtins - object.hasOwnProperty(propertyName) - ); -} -function createCodecClass(constructor, constructorOptions, registerDataHandler) { - return class { - constructor(options) { - const codecAdapter = this; - const onData = (data) => { - if (codecAdapter.pendingData) { - const previousPendingData = codecAdapter.pendingData; - codecAdapter.pendingData = new Uint8Array(previousPendingData.length + data.length); - const { pendingData } = codecAdapter; - pendingData.set(previousPendingData, 0); - pendingData.set(data, previousPendingData.length); - } else { - codecAdapter.pendingData = new Uint8Array(data); - } - }; - if (objectHasOwn(options, "level") && options.level === UNDEFINED_VALUE) { - delete options.level; - } - codecAdapter.codec = new constructor(Object.assign({}, constructorOptions, options)); - registerDataHandler(codecAdapter.codec, onData); - } - append(data) { - this.codec.push(data); - return getResponse(this); - } - flush() { - this.codec.push(new Uint8Array(), true); - return getResponse(this); - } - }; - function getResponse(codec2) { - if (codec2.pendingData) { - const output = codec2.pendingData; - codec2.pendingData = null; - return output; - } else { - return new Uint8Array(); - } - } -} - -// node_modules/@zip.js/zip.js/lib/core/streams/codecs/crc32.js -var table = []; -for (let i = 0; i < 256; i++) { - let t = i; - for (let j = 0; j < 8; j++) { - if (t & 1) { - t = t >>> 1 ^ 3988292384; - } else { - t = t >>> 1; - } - } - table[i] = t; -} -var Crc32 = class { - constructor(crc) { - this.crc = crc || -1; - } - append(data) { - let crc = this.crc | 0; - for (let offset = 0, length = data.length | 0; offset < length; offset++) { - crc = crc >>> 8 ^ table[(crc ^ data[offset]) & 255]; - } - this.crc = crc; - } - get() { - return ~this.crc; - } -}; - -// node_modules/@zip.js/zip.js/lib/core/streams/crc32-stream.js -var Crc32Stream = class extends TransformStream { - constructor() { - let stream; - const crc32 = new Crc32(); - super({ - transform(chunk, controller) { - crc32.append(chunk); - controller.enqueue(chunk); - }, - flush() { - const value = new Uint8Array(4); - const dataView = new DataView(value.buffer); - dataView.setUint32(0, crc32.get()); - stream.value = value; - } - }); - stream = this; - } -}; - -// node_modules/@zip.js/zip.js/lib/core/util/encode-text.js -function encodeText(value) { - if (typeof TextEncoder == UNDEFINED_TYPE) { - value = unescape(encodeURIComponent(value)); - const result = new Uint8Array(value.length); - for (let i = 0; i < result.length; i++) { - result[i] = value.charCodeAt(i); - } - return result; - } else { - return new TextEncoder().encode(value); - } -} - -// node_modules/@zip.js/zip.js/lib/core/streams/codecs/sjcl.js -var bitArray = { - /** - * Concatenate two bit arrays. - * @param {bitArray} a1 The first array. - * @param {bitArray} a2 The second array. - * @return {bitArray} The concatenation of a1 and a2. - */ - concat(a1, a2) { - if (a1.length === 0 || a2.length === 0) { - return a1.concat(a2); - } - const last = a1[a1.length - 1], shift = bitArray.getPartial(last); - if (shift === 32) { - return a1.concat(a2); - } else { - return bitArray._shiftRight(a2, shift, last | 0, a1.slice(0, a1.length - 1)); - } - }, - /** - * Find the length of an array of bits. - * @param {bitArray} a The array. - * @return {Number} The length of a, in bits. - */ - bitLength(a) { - const l = a.length; - if (l === 0) { - return 0; - } - const x = a[l - 1]; - return (l - 1) * 32 + bitArray.getPartial(x); - }, - /** - * Truncate an array. - * @param {bitArray} a The array. - * @param {Number} len The length to truncate to, in bits. - * @return {bitArray} A new array, truncated to len bits. - */ - clamp(a, len) { - if (a.length * 32 < len) { - return a; - } - a = a.slice(0, Math.ceil(len / 32)); - const l = a.length; - len = len & 31; - if (l > 0 && len) { - a[l - 1] = bitArray.partial(len, a[l - 1] & 2147483648 >> len - 1, 1); - } - return a; - }, - /** - * Make a partial word for a bit array. - * @param {Number} len The number of bits in the word. - * @param {Number} x The bits. - * @param {Number} [_end=0] Pass 1 if x has already been shifted to the high side. - * @return {Number} The partial word. - */ - partial(len, x, _end) { - if (len === 32) { - return x; - } - return (_end ? x | 0 : x << 32 - len) + len * 1099511627776; - }, - /** - * Get the number of bits used by a partial word. - * @param {Number} x The partial word. - * @return {Number} The number of bits used by the partial word. - */ - getPartial(x) { - return Math.round(x / 1099511627776) || 32; - }, - /** Shift an array right. - * @param {bitArray} a The array to shift. - * @param {Number} shift The number of bits to shift. - * @param {Number} [carry=0] A byte to carry in - * @param {bitArray} [out=[]] An array to prepend to the output. - * @private - */ - _shiftRight(a, shift, carry, out) { - if (out === void 0) { - out = []; - } - for (; shift >= 32; shift -= 32) { - out.push(carry); - carry = 0; - } - if (shift === 0) { - return out.concat(a); - } - for (let i = 0; i < a.length; i++) { - out.push(carry | a[i] >>> shift); - carry = a[i] << 32 - shift; - } - const last2 = a.length ? a[a.length - 1] : 0; - const shift2 = bitArray.getPartial(last2); - out.push(bitArray.partial(shift + shift2 & 31, shift + shift2 > 32 ? carry : out.pop(), 1)); - return out; - } -}; -var codec = { - bytes: { - /** Convert from a bitArray to an array of bytes. */ - fromBits(arr) { - const bl = bitArray.bitLength(arr); - const byteLength = bl / 8; - const out = new Uint8Array(byteLength); - let tmp; - for (let i = 0; i < byteLength; i++) { - if ((i & 3) === 0) { - tmp = arr[i / 4]; - } - out[i] = tmp >>> 24; - tmp <<= 8; - } - return out; - }, - /** Convert from an array of bytes to a bitArray. */ - toBits(bytes) { - const out = []; - let i; - let tmp = 0; - for (i = 0; i < bytes.length; i++) { - tmp = tmp << 8 | bytes[i]; - if ((i & 3) === 3) { - out.push(tmp); - tmp = 0; - } - } - if (i & 3) { - out.push(bitArray.partial(8 * (i & 3), tmp)); - } - return out; - } - } -}; -var hash = {}; -hash.sha1 = class { - constructor(hash2) { - const sha1 = this; - sha1.blockSize = 512; - sha1._init = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; - sha1._key = [1518500249, 1859775393, 2400959708, 3395469782]; - if (hash2) { - sha1._h = hash2._h.slice(0); - sha1._buffer = hash2._buffer.slice(0); - sha1._length = hash2._length; - } else { - sha1.reset(); - } - } - /** - * Reset the hash state. - * @return this - */ - reset() { - const sha1 = this; - sha1._h = sha1._init.slice(0); - sha1._buffer = []; - sha1._length = 0; - return sha1; - } - /** - * Input several words to the hash. - * @param {bitArray|String} data the data to hash. - * @return this - */ - update(data) { - const sha1 = this; - if (typeof data === "string") { - data = codec.utf8String.toBits(data); - } - const b = sha1._buffer = bitArray.concat(sha1._buffer, data); - const ol = sha1._length; - const nl = sha1._length = ol + bitArray.bitLength(data); - if (nl > 9007199254740991) { - throw new Error("Cannot hash more than 2^53 - 1 bits"); - } - const c = new Uint32Array(b); - let j = 0; - for (let i = sha1.blockSize + ol - (sha1.blockSize + ol & sha1.blockSize - 1); i <= nl; i += sha1.blockSize) { - sha1._block(c.subarray(16 * j, 16 * (j + 1))); - j += 1; - } - b.splice(0, 16 * j); - return sha1; - } - /** - * Complete hashing and output the hash value. - * @return {bitArray} The hash value, an array of 5 big-endian words. TODO - */ - finalize() { - const sha1 = this; - let b = sha1._buffer; - const h = sha1._h; - b = bitArray.concat(b, [bitArray.partial(1, 1)]); - for (let i = b.length + 2; i & 15; i++) { - b.push(0); - } - b.push(Math.floor(sha1._length / 4294967296)); - b.push(sha1._length | 0); - while (b.length) { - sha1._block(b.splice(0, 16)); - } - sha1.reset(); - return h; - } - /** - * The SHA-1 logical functions f(0), f(1), ..., f(79). - * @private - */ - _f(t, b, c, d) { - if (t <= 19) { - return b & c | ~b & d; - } else if (t <= 39) { - return b ^ c ^ d; - } else if (t <= 59) { - return b & c | b & d | c & d; - } else if (t <= 79) { - return b ^ c ^ d; - } - } - /** - * Circular left-shift operator. - * @private - */ - _S(n, x) { - return x << n | x >>> 32 - n; - } - /** - * Perform one cycle of SHA-1. - * @param {Uint32Array|bitArray} words one block of words. - * @private - */ - _block(words) { - const sha1 = this; - const h = sha1._h; - const w = Array(80); - for (let j = 0; j < 16; j++) { - w[j] = words[j]; - } - let a = h[0]; - let b = h[1]; - let c = h[2]; - let d = h[3]; - let e2 = h[4]; - for (let t = 0; t <= 79; t++) { - if (t >= 16) { - w[t] = sha1._S(1, w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]); - } - const tmp = sha1._S(5, a) + sha1._f(t, b, c, d) + e2 + w[t] + sha1._key[Math.floor(t / 20)] | 0; - e2 = d; - d = c; - c = sha1._S(30, b); - b = a; - a = tmp; - } - h[0] = h[0] + a | 0; - h[1] = h[1] + b | 0; - h[2] = h[2] + c | 0; - h[3] = h[3] + d | 0; - h[4] = h[4] + e2 | 0; - } -}; -var cipher = {}; -cipher.aes = class { - constructor(key) { - const aes = this; - aes._tables = [[[], [], [], [], []], [[], [], [], [], []]]; - if (!aes._tables[0][0][0]) { - aes._precompute(); - } - const sbox = aes._tables[0][4]; - const decTable = aes._tables[1]; - const keyLen = key.length; - let i, encKey, decKey, rcon = 1; - if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) { - throw new Error("invalid aes key size"); - } - aes._key = [encKey = key.slice(0), decKey = []]; - for (i = keyLen; i < 4 * keyLen + 28; i++) { - let tmp = encKey[i - 1]; - if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) { - tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255]; - if (i % keyLen === 0) { - tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24; - rcon = rcon << 1 ^ (rcon >> 7) * 283; - } - } - encKey[i] = encKey[i - keyLen] ^ tmp; - } - for (let j = 0; i; j++, i--) { - const tmp = encKey[j & 3 ? i : i - 4]; - if (i <= 4 || j < 4) { - decKey[j] = tmp; - } else { - decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]]; - } - } - } - // public - /* Something like this might appear here eventually - name: "AES", - blockSize: 4, - keySizes: [4,6,8], - */ - /** - * Encrypt an array of 4 big-endian words. - * @param {Array} data The plaintext. - * @return {Array} The ciphertext. - */ - encrypt(data) { - return this._crypt(data, 0); - } - /** - * Decrypt an array of 4 big-endian words. - * @param {Array} data The ciphertext. - * @return {Array} The plaintext. - */ - decrypt(data) { - return this._crypt(data, 1); - } - /** - * Expand the S-box tables. - * - * @private - */ - _precompute() { - const encTable = this._tables[0]; - const decTable = this._tables[1]; - const sbox = encTable[4]; - const sboxInv = decTable[4]; - const d = []; - const th = []; - let xInv, x2, x4, x8; - for (let i = 0; i < 256; i++) { - th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i; - } - for (let x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) { - let s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4; - s = s >> 8 ^ s & 255 ^ 99; - sbox[x] = s; - sboxInv[s] = x; - x8 = d[x4 = d[x2 = d[x]]]; - let tDec = x8 * 16843009 ^ x4 * 65537 ^ x2 * 257 ^ x * 16843008; - let tEnc = d[s] * 257 ^ s * 16843008; - for (let i = 0; i < 4; i++) { - encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8; - decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8; - } - } - for (let i = 0; i < 5; i++) { - encTable[i] = encTable[i].slice(0); - decTable[i] = decTable[i].slice(0); - } - } - /** - * Encryption and decryption core. - * @param {Array} input Four words to be encrypted or decrypted. - * @param dir The direction, 0 for encrypt and 1 for decrypt. - * @return {Array} The four encrypted or decrypted words. - * @private - */ - _crypt(input, dir) { - if (input.length !== 4) { - throw new Error("invalid aes block size"); - } - const key = this._key[dir]; - const nInnerRounds = key.length / 4 - 2; - const out = [0, 0, 0, 0]; - const table2 = this._tables[dir]; - const t0 = table2[0]; - const t1 = table2[1]; - const t2 = table2[2]; - const t3 = table2[3]; - const sbox = table2[4]; - let a = input[0] ^ key[0]; - let b = input[dir ? 3 : 1] ^ key[1]; - let c = input[2] ^ key[2]; - let d = input[dir ? 1 : 3] ^ key[3]; - let kIndex = 4; - let a2, b2, c2; - for (let i = 0; i < nInnerRounds; i++) { - a2 = t0[a >>> 24] ^ t1[b >> 16 & 255] ^ t2[c >> 8 & 255] ^ t3[d & 255] ^ key[kIndex]; - b2 = t0[b >>> 24] ^ t1[c >> 16 & 255] ^ t2[d >> 8 & 255] ^ t3[a & 255] ^ key[kIndex + 1]; - c2 = t0[c >>> 24] ^ t1[d >> 16 & 255] ^ t2[a >> 8 & 255] ^ t3[b & 255] ^ key[kIndex + 2]; - d = t0[d >>> 24] ^ t1[a >> 16 & 255] ^ t2[b >> 8 & 255] ^ t3[c & 255] ^ key[kIndex + 3]; - kIndex += 4; - a = a2; - b = b2; - c = c2; - } - for (let i = 0; i < 4; i++) { - out[dir ? 3 & -i : i] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++]; - a2 = a; - a = b; - b = c; - c = d; - d = a2; - } - return out; - } -}; -var random = { - /** - * Generate random words with pure js, cryptographically not as strong & safe as native implementation. - * @param {TypedArray} typedArray The array to fill. - * @return {TypedArray} The random values. - */ - getRandomValues(typedArray) { - const words = new Uint32Array(typedArray.buffer); - const r = (m_w) => { - let m_z = 987654321; - const mask = 4294967295; - return function() { - m_z = 36969 * (m_z & 65535) + (m_z >> 16) & mask; - m_w = 18e3 * (m_w & 65535) + (m_w >> 16) & mask; - const result = ((m_z << 16) + m_w & mask) / 4294967296 + 0.5; - return result * (Math.random() > 0.5 ? 1 : -1); - }; - }; - for (let i = 0, rcache; i < typedArray.length; i += 4) { - const _r = r((rcache || Math.random()) * 4294967296); - rcache = _r() * 987654071; - words[i / 4] = _r() * 4294967296 | 0; - } - return typedArray; - } -}; -var mode = {}; -mode.ctrGladman = class { - constructor(prf, iv) { - this._prf = prf; - this._initIv = iv; - this._iv = iv; - } - reset() { - this._iv = this._initIv; - } - /** Input some data to calculate. - * @param {bitArray} data the data to process, it must be intergral multiple of 128 bits unless it's the last. - */ - update(data) { - return this.calculate(this._prf, data, this._iv); - } - incWord(word) { - if ((word >> 24 & 255) === 255) { - let b1 = word >> 16 & 255; - let b2 = word >> 8 & 255; - let b3 = word & 255; - if (b1 === 255) { - b1 = 0; - if (b2 === 255) { - b2 = 0; - if (b3 === 255) { - b3 = 0; - } else { - ++b3; - } - } else { - ++b2; - } - } else { - ++b1; - } - word = 0; - word += b1 << 16; - word += b2 << 8; - word += b3; - } else { - word += 1 << 24; - } - return word; - } - incCounter(counter) { - if ((counter[0] = this.incWord(counter[0])) === 0) { - counter[1] = this.incWord(counter[1]); - } - } - calculate(prf, data, iv) { - let l; - if (!(l = data.length)) { - return []; - } - const bl = bitArray.bitLength(data); - for (let i = 0; i < l; i += 4) { - this.incCounter(iv); - const e2 = prf.encrypt(iv); - data[i] ^= e2[0]; - data[i + 1] ^= e2[1]; - data[i + 2] ^= e2[2]; - data[i + 3] ^= e2[3]; - } - return bitArray.clamp(data, bl); - } -}; -var misc = { - importKey(password) { - return new misc.hmacSha1(codec.bytes.toBits(password)); - }, - pbkdf2(prf, salt, count, length) { - count = count || 1e4; - if (length < 0 || count < 0) { - throw new Error("invalid params to pbkdf2"); - } - const byteLength = (length >> 5) + 1 << 2; - let u, ui, i, j, k; - const arrayBuffer = new ArrayBuffer(byteLength); - const out = new DataView(arrayBuffer); - let outLength = 0; - const b = bitArray; - salt = codec.bytes.toBits(salt); - for (k = 1; outLength < (byteLength || 1); k++) { - u = ui = prf.encrypt(b.concat(salt, [k])); - for (i = 1; i < count; i++) { - ui = prf.encrypt(ui); - for (j = 0; j < ui.length; j++) { - u[j] ^= ui[j]; - } - } - for (i = 0; outLength < (byteLength || 1) && i < u.length; i++) { - out.setInt32(outLength, u[i]); - outLength += 4; - } - } - return arrayBuffer.slice(0, length / 8); - } -}; -misc.hmacSha1 = class { - constructor(key) { - const hmac = this; - const Hash = hmac._hash = hash.sha1; - const exKey = [[], []]; - hmac._baseHash = [new Hash(), new Hash()]; - const bs = hmac._baseHash[0].blockSize / 32; - if (key.length > bs) { - key = new Hash().update(key).finalize(); - } - for (let i = 0; i < bs; i++) { - exKey[0][i] = key[i] ^ 909522486; - exKey[1][i] = key[i] ^ 1549556828; - } - hmac._baseHash[0].update(exKey[0]); - hmac._baseHash[1].update(exKey[1]); - hmac._resultHash = new Hash(hmac._baseHash[0]); - } - reset() { - const hmac = this; - hmac._resultHash = new hmac._hash(hmac._baseHash[0]); - hmac._updated = false; - } - update(data) { - const hmac = this; - hmac._updated = true; - hmac._resultHash.update(data); - } - digest() { - const hmac = this; - const w = hmac._resultHash.finalize(); - const result = new hmac._hash(hmac._baseHash[1]).update(w).finalize(); - hmac.reset(); - return result; - } - encrypt(data) { - if (!this._updated) { - this.update(data); - return this.digest(data); - } else { - throw new Error("encrypt on already updated hmac called!"); - } - } -}; - -// node_modules/@zip.js/zip.js/lib/core/streams/common-crypto.js -var GET_RANDOM_VALUES_SUPPORTED = typeof crypto != UNDEFINED_TYPE && typeof crypto.getRandomValues == FUNCTION_TYPE; -var ERR_INVALID_PASSWORD = "Invalid password"; -var ERR_INVALID_SIGNATURE = "Invalid signature"; -var ERR_ABORT_CHECK_PASSWORD = "zipjs-abort-check-password"; -function getRandomValues(array) { - if (GET_RANDOM_VALUES_SUPPORTED) { - return crypto.getRandomValues(array); - } else { - return random.getRandomValues(array); - } -} - -// node_modules/@zip.js/zip.js/lib/core/streams/aes-crypto-stream.js -var BLOCK_LENGTH = 16; -var RAW_FORMAT = "raw"; -var PBKDF2_ALGORITHM = { name: "PBKDF2" }; -var HASH_ALGORITHM = { name: "HMAC" }; -var HASH_FUNCTION = "SHA-1"; -var BASE_KEY_ALGORITHM = Object.assign({ hash: HASH_ALGORITHM }, PBKDF2_ALGORITHM); -var DERIVED_BITS_ALGORITHM = Object.assign({ iterations: 1e3, hash: { name: HASH_FUNCTION } }, PBKDF2_ALGORITHM); -var DERIVED_BITS_USAGE = ["deriveBits"]; -var SALT_LENGTH = [8, 12, 16]; -var KEY_LENGTH = [16, 24, 32]; -var SIGNATURE_LENGTH = 10; -var COUNTER_DEFAULT_VALUE = [0, 0, 0, 0]; -var CRYPTO_API_SUPPORTED = typeof crypto != UNDEFINED_TYPE; -var subtle = CRYPTO_API_SUPPORTED && crypto.subtle; -var SUBTLE_API_SUPPORTED = CRYPTO_API_SUPPORTED && typeof subtle != UNDEFINED_TYPE; -var codecBytes = codec.bytes; -var Aes = cipher.aes; -var CtrGladman = mode.ctrGladman; -var HmacSha1 = misc.hmacSha1; -var IMPORT_KEY_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.importKey == FUNCTION_TYPE; -var DERIVE_BITS_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.deriveBits == FUNCTION_TYPE; -var AESDecryptionStream = class extends TransformStream { - constructor({ password, rawPassword, signed, encryptionStrength, checkPasswordOnly }) { - super({ - start() { - Object.assign(this, { - ready: new Promise((resolve) => this.resolveReady = resolve), - password: encodePassword(password, rawPassword), - signed, - strength: encryptionStrength - 1, - pending: new Uint8Array() - }); - }, - async transform(chunk, controller) { - const aesCrypto = this; - const { - password: password2, - strength, - resolveReady, - ready - } = aesCrypto; - if (password2) { - await createDecryptionKeys(aesCrypto, strength, password2, subarray(chunk, 0, SALT_LENGTH[strength] + 2)); - chunk = subarray(chunk, SALT_LENGTH[strength] + 2); - if (checkPasswordOnly) { - controller.error(new Error(ERR_ABORT_CHECK_PASSWORD)); - } else { - resolveReady(); - } - } else { - await ready; - } - const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - (chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH); - controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true)); - }, - async flush(controller) { - const { - signed: signed2, - ctr, - hmac, - pending, - ready - } = this; - if (hmac && ctr) { - await ready; - const chunkToDecrypt = subarray(pending, 0, pending.length - SIGNATURE_LENGTH); - const originalSignature = subarray(pending, pending.length - SIGNATURE_LENGTH); - let decryptedChunkArray = new Uint8Array(); - if (chunkToDecrypt.length) { - const encryptedChunk = toBits(codecBytes, chunkToDecrypt); - hmac.update(encryptedChunk); - const decryptedChunk = ctr.update(encryptedChunk); - decryptedChunkArray = fromBits(codecBytes, decryptedChunk); - } - if (signed2) { - const signature = subarray(fromBits(codecBytes, hmac.digest()), 0, SIGNATURE_LENGTH); - for (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) { - if (signature[indexSignature] != originalSignature[indexSignature]) { - throw new Error(ERR_INVALID_SIGNATURE); - } - } - } - controller.enqueue(decryptedChunkArray); - } - } - }); - } -}; -var AESEncryptionStream = class extends TransformStream { - constructor({ password, rawPassword, encryptionStrength }) { - let stream; - super({ - start() { - Object.assign(this, { - ready: new Promise((resolve) => this.resolveReady = resolve), - password: encodePassword(password, rawPassword), - strength: encryptionStrength - 1, - pending: new Uint8Array() - }); - }, - async transform(chunk, controller) { - const aesCrypto = this; - const { - password: password2, - strength, - resolveReady, - ready - } = aesCrypto; - let preamble = new Uint8Array(); - if (password2) { - preamble = await createEncryptionKeys(aesCrypto, strength, password2); - resolveReady(); - } else { - await ready; - } - const output = new Uint8Array(preamble.length + chunk.length - chunk.length % BLOCK_LENGTH); - output.set(preamble, 0); - controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0)); - }, - async flush(controller) { - const { - ctr, - hmac, - pending, - ready - } = this; - if (hmac && ctr) { - await ready; - let encryptedChunkArray = new Uint8Array(); - if (pending.length) { - const encryptedChunk = ctr.update(toBits(codecBytes, pending)); - hmac.update(encryptedChunk); - encryptedChunkArray = fromBits(codecBytes, encryptedChunk); - } - stream.signature = fromBits(codecBytes, hmac.digest()).slice(0, SIGNATURE_LENGTH); - controller.enqueue(concat(encryptedChunkArray, stream.signature)); - } - } - }); - stream = this; - } -}; -function append(aesCrypto, input, output, paddingStart, paddingEnd, verifySignature) { - const { - ctr, - hmac, - pending - } = aesCrypto; - const inputLength = input.length - paddingEnd; - if (pending.length) { - input = concat(pending, input); - output = expand(output, inputLength - inputLength % BLOCK_LENGTH); - } - let offset; - for (offset = 0; offset <= inputLength - BLOCK_LENGTH; offset += BLOCK_LENGTH) { - const inputChunk = toBits(codecBytes, subarray(input, offset, offset + BLOCK_LENGTH)); - if (verifySignature) { - hmac.update(inputChunk); - } - const outputChunk = ctr.update(inputChunk); - if (!verifySignature) { - hmac.update(outputChunk); - } - output.set(fromBits(codecBytes, outputChunk), offset + paddingStart); - } - aesCrypto.pending = subarray(input, offset); - return output; -} -async function createDecryptionKeys(decrypt2, strength, password, preamble) { - const passwordVerificationKey = await createKeys(decrypt2, strength, password, subarray(preamble, 0, SALT_LENGTH[strength])); - const passwordVerification = subarray(preamble, SALT_LENGTH[strength]); - if (passwordVerificationKey[0] != passwordVerification[0] || passwordVerificationKey[1] != passwordVerification[1]) { - throw new Error(ERR_INVALID_PASSWORD); - } -} -async function createEncryptionKeys(encrypt2, strength, password) { - const salt = getRandomValues(new Uint8Array(SALT_LENGTH[strength])); - const passwordVerification = await createKeys(encrypt2, strength, password, salt); - return concat(salt, passwordVerification); -} -async function createKeys(aesCrypto, strength, password, salt) { - aesCrypto.password = null; - const baseKey = await importKey(RAW_FORMAT, password, BASE_KEY_ALGORITHM, false, DERIVED_BITS_USAGE); - const derivedBits = await deriveBits(Object.assign({ salt }, DERIVED_BITS_ALGORITHM), baseKey, 8 * (KEY_LENGTH[strength] * 2 + 2)); - const compositeKey = new Uint8Array(derivedBits); - const key = toBits(codecBytes, subarray(compositeKey, 0, KEY_LENGTH[strength])); - const authentication = toBits(codecBytes, subarray(compositeKey, KEY_LENGTH[strength], KEY_LENGTH[strength] * 2)); - const passwordVerification = subarray(compositeKey, KEY_LENGTH[strength] * 2); - Object.assign(aesCrypto, { - keys: { - key, - authentication, - passwordVerification - }, - ctr: new CtrGladman(new Aes(key), Array.from(COUNTER_DEFAULT_VALUE)), - hmac: new HmacSha1(authentication) - }); - return passwordVerification; -} -async function importKey(format, password, algorithm, extractable, keyUsages) { - if (IMPORT_KEY_SUPPORTED) { - try { - return await subtle.importKey(format, password, algorithm, extractable, keyUsages); - } catch (_error) { - IMPORT_KEY_SUPPORTED = false; - return misc.importKey(password); - } - } else { - return misc.importKey(password); - } -} -async function deriveBits(algorithm, baseKey, length) { - if (DERIVE_BITS_SUPPORTED) { - try { - return await subtle.deriveBits(algorithm, baseKey, length); - } catch (_error) { - DERIVE_BITS_SUPPORTED = false; - return misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length); - } - } else { - return misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length); - } -} -function encodePassword(password, rawPassword) { - if (rawPassword === UNDEFINED_VALUE) { - return encodeText(password); - } else { - return rawPassword; - } -} -function concat(leftArray, rightArray) { - let array = leftArray; - if (leftArray.length + rightArray.length) { - array = new Uint8Array(leftArray.length + rightArray.length); - array.set(leftArray, 0); - array.set(rightArray, leftArray.length); - } - return array; -} -function expand(inputArray, length) { - if (length && length > inputArray.length) { - const array = inputArray; - inputArray = new Uint8Array(length); - inputArray.set(array, 0); - } - return inputArray; -} -function subarray(array, begin, end) { - return array.subarray(begin, end); -} -function fromBits(codecBytes2, chunk) { - return codecBytes2.fromBits(chunk); -} -function toBits(codecBytes2, chunk) { - return codecBytes2.toBits(chunk); -} - -// node_modules/@zip.js/zip.js/lib/core/streams/zip-crypto-stream.js -var HEADER_LENGTH = 12; -var ZipCryptoDecryptionStream = class extends TransformStream { - constructor({ password, passwordVerification, checkPasswordOnly }) { - super({ - start() { - Object.assign(this, { - password, - passwordVerification - }); - createKeys2(this, password); - }, - transform(chunk, controller) { - const zipCrypto = this; - if (zipCrypto.password) { - const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH)); - zipCrypto.password = null; - if (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) { - throw new Error(ERR_INVALID_PASSWORD); - } - chunk = chunk.subarray(HEADER_LENGTH); - } - if (checkPasswordOnly) { - controller.error(new Error(ERR_ABORT_CHECK_PASSWORD)); - } else { - controller.enqueue(decrypt(zipCrypto, chunk)); - } - } - }); - } -}; -var ZipCryptoEncryptionStream = class extends TransformStream { - constructor({ password, passwordVerification }) { - super({ - start() { - Object.assign(this, { - password, - passwordVerification - }); - createKeys2(this, password); - }, - transform(chunk, controller) { - const zipCrypto = this; - let output; - let offset; - if (zipCrypto.password) { - zipCrypto.password = null; - const header = getRandomValues(new Uint8Array(HEADER_LENGTH)); - header[HEADER_LENGTH - 1] = zipCrypto.passwordVerification; - output = new Uint8Array(chunk.length + header.length); - output.set(encrypt(zipCrypto, header), 0); - offset = HEADER_LENGTH; - } else { - output = new Uint8Array(chunk.length); - offset = 0; - } - output.set(encrypt(zipCrypto, chunk), offset); - controller.enqueue(output); - } - }); - } -}; -function decrypt(target, input) { - const output = new Uint8Array(input.length); - for (let index = 0; index < input.length; index++) { - output[index] = getByte(target) ^ input[index]; - updateKeys(target, output[index]); - } - return output; -} -function encrypt(target, input) { - const output = new Uint8Array(input.length); - for (let index = 0; index < input.length; index++) { - output[index] = getByte(target) ^ input[index]; - updateKeys(target, input[index]); - } - return output; -} -function createKeys2(target, password) { - const keys = [305419896, 591751049, 878082192]; - Object.assign(target, { - keys, - crcKey0: new Crc32(keys[0]), - crcKey2: new Crc32(keys[2]) - }); - for (let index = 0; index < password.length; index++) { - updateKeys(target, password.charCodeAt(index)); - } -} -function updateKeys(target, byte) { - let [key0, key1, key2] = target.keys; - target.crcKey0.append([byte]); - key0 = ~target.crcKey0.get(); - key1 = getInt32(Math.imul(getInt32(key1 + getInt8(key0)), 134775813) + 1); - target.crcKey2.append([key1 >>> 24]); - key2 = ~target.crcKey2.get(); - target.keys = [key0, key1, key2]; -} -function getByte(target) { - const temp = target.keys[2] | 2; - return getInt8(Math.imul(temp, temp ^ 1) >>> 8); -} -function getInt8(number) { - return number & 255; -} -function getInt32(number) { - return number & 4294967295; -} - -// node_modules/@zip.js/zip.js/lib/core/streams/zip-entry-stream.js -var COMPRESSION_FORMAT = "deflate-raw"; -var DeflateStream = class extends TransformStream { - constructor(options, { chunkSize, CompressionStream: CompressionStream2, CompressionStreamNative }) { - super({}); - const { compressed, encrypted, useCompressionStream, zipCrypto, signed, level } = options; - const stream = this; - let crc32Stream, encryptionStream; - let readable = filterEmptyChunks(super.readable); - if ((!encrypted || zipCrypto) && signed) { - crc32Stream = new Crc32Stream(); - readable = pipeThrough(readable, crc32Stream); - } - if (compressed) { - readable = pipeThroughCommpressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStreamNative, CompressionStream2); - } - if (encrypted) { - if (zipCrypto) { - readable = pipeThrough(readable, new ZipCryptoEncryptionStream(options)); - } else { - encryptionStream = new AESEncryptionStream(options); - readable = pipeThrough(readable, encryptionStream); - } - } - setReadable(stream, readable, () => { - let signature; - if (encrypted && !zipCrypto) { - signature = encryptionStream.signature; - } - if ((!encrypted || zipCrypto) && signed) { - signature = new DataView(crc32Stream.value.buffer).getUint32(0); - } - stream.signature = signature; - }); - } -}; -var InflateStream = class extends TransformStream { - constructor(options, { chunkSize, DecompressionStream: DecompressionStream2, DecompressionStreamNative }) { - super({}); - const { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream } = options; - let crc32Stream, decryptionStream; - let readable = filterEmptyChunks(super.readable); - if (encrypted) { - if (zipCrypto) { - readable = pipeThrough(readable, new ZipCryptoDecryptionStream(options)); - } else { - decryptionStream = new AESDecryptionStream(options); - readable = pipeThrough(readable, decryptionStream); - } - } - if (compressed) { - readable = pipeThroughCommpressionStream(readable, useCompressionStream, { chunkSize }, DecompressionStreamNative, DecompressionStream2); - } - if ((!encrypted || zipCrypto) && signed) { - crc32Stream = new Crc32Stream(); - readable = pipeThrough(readable, crc32Stream); - } - setReadable(this, readable, () => { - if ((!encrypted || zipCrypto) && signed) { - const dataViewSignature = new DataView(crc32Stream.value.buffer); - if (signature != dataViewSignature.getUint32(0, false)) { - throw new Error(ERR_INVALID_SIGNATURE); - } - } - }); - } -}; -function filterEmptyChunks(readable) { - return pipeThrough(readable, new TransformStream({ - transform(chunk, controller) { - if (chunk && chunk.length) { - controller.enqueue(chunk); - } - } - })); -} -function setReadable(stream, readable, flush) { - readable = pipeThrough(readable, new TransformStream({ flush })); - Object.defineProperty(stream, "readable", { - get() { - return readable; - } - }); -} -function pipeThroughCommpressionStream(readable, useCompressionStream, options, CodecStreamNative, CodecStream2) { - try { - const CompressionStream2 = useCompressionStream && CodecStreamNative ? CodecStreamNative : CodecStream2; - readable = pipeThrough(readable, new CompressionStream2(COMPRESSION_FORMAT, options)); - } catch (_error) { - if (useCompressionStream) { - try { - readable = pipeThrough(readable, new CodecStream2(COMPRESSION_FORMAT, options)); - } catch (_error2) { - return readable; - } - } else { - return readable; - } - } - return readable; -} -function pipeThrough(readable, transformStream) { - return readable.pipeThrough(transformStream); -} - -// node_modules/@zip.js/zip.js/lib/core/streams/codec-stream.js -var MESSAGE_EVENT_TYPE = "message"; -var MESSAGE_START = "start"; -var MESSAGE_PULL = "pull"; -var MESSAGE_DATA = "data"; -var MESSAGE_ACK_DATA = "ack"; -var MESSAGE_CLOSE = "close"; -var CODEC_DEFLATE = "deflate"; -var CODEC_INFLATE = "inflate"; -var CodecStream = class extends TransformStream { - constructor(options, config2) { - super({}); - const codec2 = this; - const { codecType } = options; - let Stream2; - if (codecType.startsWith(CODEC_DEFLATE)) { - Stream2 = DeflateStream; - } else if (codecType.startsWith(CODEC_INFLATE)) { - Stream2 = InflateStream; - } - let outputSize = 0; - let inputSize = 0; - const stream = new Stream2(options, config2); - const readable = super.readable; - const inputSizeStream = new TransformStream({ - transform(chunk, controller) { - if (chunk && chunk.length) { - inputSize += chunk.length; - controller.enqueue(chunk); - } - }, - flush() { - Object.assign(codec2, { - inputSize - }); - } - }); - const outputSizeStream = new TransformStream({ - transform(chunk, controller) { - if (chunk && chunk.length) { - outputSize += chunk.length; - controller.enqueue(chunk); - } - }, - flush() { - const { signature } = stream; - Object.assign(codec2, { - signature, - outputSize, - inputSize - }); - } - }); - Object.defineProperty(codec2, "readable", { - get() { - return readable.pipeThrough(inputSizeStream).pipeThrough(stream).pipeThrough(outputSizeStream); - } - }); - } -}; -var ChunkStream = class extends TransformStream { - constructor(chunkSize) { - let pendingChunk; - super({ - transform, - flush(controller) { - if (pendingChunk && pendingChunk.length) { - controller.enqueue(pendingChunk); - } - } - }); - function transform(chunk, controller) { - if (pendingChunk) { - const newChunk = new Uint8Array(pendingChunk.length + chunk.length); - newChunk.set(pendingChunk); - newChunk.set(chunk, pendingChunk.length); - chunk = newChunk; - pendingChunk = null; - } - if (chunk.length > chunkSize) { - controller.enqueue(chunk.slice(0, chunkSize)); - transform(chunk.slice(chunkSize), controller); - } else { - pendingChunk = chunk; - } - } - } -}; - -// node_modules/@zip.js/zip.js/lib/core/codec-worker.js -var WEB_WORKERS_SUPPORTED = typeof Worker != UNDEFINED_TYPE; -var CodecWorker = class { - constructor(workerData, { readable, writable }, { options, config: config2, streamOptions, useWebWorkers, transferStreams, scripts }, onTaskFinished) { - const { signal } = streamOptions; - Object.assign(workerData, { - busy: true, - readable: readable.pipeThrough(new ChunkStream(config2.chunkSize)).pipeThrough(new ProgressWatcherStream(readable, streamOptions), { signal }), - writable, - options: Object.assign({}, options), - scripts, - transferStreams, - terminate() { - return new Promise((resolve) => { - const { worker, busy } = workerData; - if (worker) { - if (busy) { - workerData.resolveTerminated = resolve; - } else { - worker.terminate(); - resolve(); - } - workerData.interface = null; - } else { - resolve(); - } - }); - }, - onTaskFinished() { - const { resolveTerminated } = workerData; - if (resolveTerminated) { - workerData.resolveTerminated = null; - workerData.terminated = true; - workerData.worker.terminate(); - resolveTerminated(); - } - workerData.busy = false; - onTaskFinished(workerData); - } - }); - return (useWebWorkers && WEB_WORKERS_SUPPORTED ? createWebWorkerInterface : createWorkerInterface)(workerData, config2); - } -}; -var ProgressWatcherStream = class extends TransformStream { - constructor(readableSource, { onstart, onprogress, size, onend }) { - let chunkOffset = 0; - super({ - async start() { - if (onstart) { - await callHandler(onstart, size); - } - }, - async transform(chunk, controller) { - chunkOffset += chunk.length; - if (onprogress) { - await callHandler(onprogress, chunkOffset, size); - } - controller.enqueue(chunk); - }, - async flush() { - readableSource.size = chunkOffset; - if (onend) { - await callHandler(onend, chunkOffset); - } - } - }); - } -}; -async function callHandler(handler, ...parameters) { - try { - await handler(...parameters); - } catch (_error) { - } -} -function createWorkerInterface(workerData, config2) { - return { - run: () => runWorker(workerData, config2) - }; -} -function createWebWorkerInterface(workerData, config2) { - const { baseURL: baseURL2, chunkSize } = config2; - if (!workerData.interface) { - let worker; - try { - worker = getWebWorker(workerData.scripts[0], baseURL2, workerData); - } catch (_error) { - WEB_WORKERS_SUPPORTED = false; - return createWorkerInterface(workerData, config2); - } - Object.assign(workerData, { - worker, - interface: { - run: () => runWebWorker(workerData, { chunkSize }) - } - }); - } - return workerData.interface; -} -async function runWorker({ options, readable, writable, onTaskFinished }, config2) { - try { - const codecStream = new CodecStream(options, config2); - await readable.pipeThrough(codecStream).pipeTo(writable, { preventClose: true, preventAbort: true }); - const { - signature, - inputSize, - outputSize - } = codecStream; - return { - signature, - inputSize, - outputSize - }; - } finally { - onTaskFinished(); - } -} -async function runWebWorker(workerData, config2) { - let resolveResult, rejectResult; - const result = new Promise((resolve, reject) => { - resolveResult = resolve; - rejectResult = reject; - }); - Object.assign(workerData, { - reader: null, - writer: null, - resolveResult, - rejectResult, - result - }); - const { readable, options, scripts } = workerData; - const { writable, closed } = watchClosedStream(workerData.writable); - const streamsTransferred = sendMessage({ - type: MESSAGE_START, - scripts: scripts.slice(1), - options, - config: config2, - readable, - writable - }, workerData); - if (!streamsTransferred) { - Object.assign(workerData, { - reader: readable.getReader(), - writer: writable.getWriter() - }); - } - const resultValue = await result; - if (!streamsTransferred) { - await writable.getWriter().close(); - } - await closed; - return resultValue; -} -function watchClosedStream(writableSource) { - let resolveStreamClosed; - const closed = new Promise((resolve) => resolveStreamClosed = resolve); - const writable = new WritableStream({ - async write(chunk) { - const writer = writableSource.getWriter(); - await writer.ready; - await writer.write(chunk); - writer.releaseLock(); - }, - close() { - resolveStreamClosed(); - }, - abort(reason) { - const writer = writableSource.getWriter(); - return writer.abort(reason); - } - }); - return { writable, closed }; -} -var classicWorkersSupported = true; -var transferStreamsSupported = true; -function getWebWorker(url, baseURL2, workerData) { - const workerOptions = { type: "module" }; - let scriptUrl, worker; - if (typeof url == FUNCTION_TYPE) { - url = url(); - } - try { - scriptUrl = new URL(url, baseURL2); - } catch (_error) { - scriptUrl = url; - } - if (classicWorkersSupported) { - try { - worker = new Worker(scriptUrl); - } catch (_error) { - classicWorkersSupported = false; - worker = new Worker(scriptUrl, workerOptions); - } - } else { - worker = new Worker(scriptUrl, workerOptions); - } - worker.addEventListener(MESSAGE_EVENT_TYPE, (event) => onMessage(event, workerData)); - return worker; -} -function sendMessage(message, { worker, writer, onTaskFinished, transferStreams }) { - try { - const { value, readable, writable } = message; - const transferables = []; - if (value) { - if (value.byteLength < value.buffer.byteLength) { - message.value = value.buffer.slice(0, value.byteLength); - } else { - message.value = value.buffer; - } - transferables.push(message.value); - } - if (transferStreams && transferStreamsSupported) { - if (readable) { - transferables.push(readable); - } - if (writable) { - transferables.push(writable); - } - } else { - message.readable = message.writable = null; - } - if (transferables.length) { - try { - worker.postMessage(message, transferables); - return true; - } catch (_error) { - transferStreamsSupported = false; - message.readable = message.writable = null; - worker.postMessage(message); - } - } else { - worker.postMessage(message); - } - } catch (error) { - if (writer) { - writer.releaseLock(); - } - onTaskFinished(); - throw error; - } -} -async function onMessage({ data }, workerData) { - const { type, value, messageId, result, error } = data; - const { reader, writer, resolveResult, rejectResult, onTaskFinished } = workerData; - try { - if (error) { - const { message, stack, code, name } = error; - const responseError = new Error(message); - Object.assign(responseError, { stack, code, name }); - close(responseError); - } else { - if (type == MESSAGE_PULL) { - const { value: value2, done } = await reader.read(); - sendMessage({ type: MESSAGE_DATA, value: value2, done, messageId }, workerData); - } - if (type == MESSAGE_DATA) { - await writer.ready; - await writer.write(new Uint8Array(value)); - sendMessage({ type: MESSAGE_ACK_DATA, messageId }, workerData); - } - if (type == MESSAGE_CLOSE) { - close(null, result); - } - } - } catch (error2) { - sendMessage({ type: MESSAGE_CLOSE, messageId }, workerData); - close(error2); - } - function close(error2, result2) { - if (error2) { - rejectResult(error2); - } else { - resolveResult(result2); - } - if (writer) { - writer.releaseLock(); - } - onTaskFinished(); - } -} - -// node_modules/@zip.js/zip.js/lib/core/codec-pool.js -var pool = []; -var pendingRequests = []; -var indexWorker = 0; -async function runWorker2(stream, workerOptions) { - const { options, config: config2 } = workerOptions; - const { transferStreams, useWebWorkers, useCompressionStream, codecType, compressed, signed, encrypted } = options; - const { workerScripts, maxWorkers: maxWorkers2 } = config2; - workerOptions.transferStreams = transferStreams || transferStreams === UNDEFINED_VALUE; - const streamCopy = !compressed && !signed && !encrypted && !workerOptions.transferStreams; - workerOptions.useWebWorkers = !streamCopy && (useWebWorkers || useWebWorkers === UNDEFINED_VALUE && config2.useWebWorkers); - workerOptions.scripts = workerOptions.useWebWorkers && workerScripts ? workerScripts[codecType] : []; - options.useCompressionStream = useCompressionStream || useCompressionStream === UNDEFINED_VALUE && config2.useCompressionStream; - return (await getWorker()).run(); - async function getWorker() { - const workerData = pool.find((workerData2) => !workerData2.busy); - if (workerData) { - clearTerminateTimeout(workerData); - return new CodecWorker(workerData, stream, workerOptions, onTaskFinished); - } else if (pool.length < maxWorkers2) { - const workerData2 = { indexWorker }; - indexWorker++; - pool.push(workerData2); - return new CodecWorker(workerData2, stream, workerOptions, onTaskFinished); - } else { - return new Promise((resolve) => pendingRequests.push({ resolve, stream, workerOptions })); - } - } - function onTaskFinished(workerData) { - if (pendingRequests.length) { - const [{ resolve, stream: stream2, workerOptions: workerOptions2 }] = pendingRequests.splice(0, 1); - resolve(new CodecWorker(workerData, stream2, workerOptions2, onTaskFinished)); - } else if (workerData.worker) { - clearTerminateTimeout(workerData); - terminateWorker(workerData, workerOptions); - } else { - pool = pool.filter((data) => data != workerData); - } - } -} -function terminateWorker(workerData, workerOptions) { - const { config: config2 } = workerOptions; - const { terminateWorkerTimeout } = config2; - if (Number.isFinite(terminateWorkerTimeout) && terminateWorkerTimeout >= 0) { - if (workerData.terminated) { - workerData.terminated = false; - } else { - workerData.terminateTimeout = setTimeout(async () => { - pool = pool.filter((data) => data != workerData); - try { - await workerData.terminate(); - } catch (_error) { - } - }, terminateWorkerTimeout); - } - } -} -function clearTerminateTimeout(workerData) { - const { terminateTimeout } = workerData; - if (terminateTimeout) { - clearTimeout(terminateTimeout); - workerData.terminateTimeout = null; - } -} -async function terminateWorkers() { - await Promise.allSettled(pool.map((workerData) => { - clearTerminateTimeout(workerData); - return workerData.terminate(); - })); -} - -// node_modules/@zip.js/zip.js/lib/core/io.js -var ERR_HTTP_STATUS = "HTTP error "; -var ERR_HTTP_RANGE = "HTTP Range not supported"; -var ERR_ITERATOR_COMPLETED_TOO_SOON = "Writer iterator completed too soon"; -var CONTENT_TYPE_TEXT_PLAIN = "text/plain"; -var HTTP_HEADER_CONTENT_LENGTH = "Content-Length"; -var HTTP_HEADER_CONTENT_RANGE = "Content-Range"; -var HTTP_HEADER_ACCEPT_RANGES = "Accept-Ranges"; -var HTTP_HEADER_RANGE = "Range"; -var HTTP_HEADER_CONTENT_TYPE = "Content-Type"; -var HTTP_METHOD_HEAD = "HEAD"; -var HTTP_METHOD_GET = "GET"; -var HTTP_RANGE_UNIT = "bytes"; -var DEFAULT_CHUNK_SIZE = 64 * 1024; -var PROPERTY_NAME_WRITABLE = "writable"; -var Stream = class { - constructor() { - this.size = 0; - } - init() { - this.initialized = true; - } -}; -var Reader = class extends Stream { - get readable() { - const reader = this; - const { chunkSize = DEFAULT_CHUNK_SIZE } = reader; - const readable = new ReadableStream({ - start() { - this.chunkOffset = 0; - }, - async pull(controller) { - const { offset = 0, size, diskNumberStart } = readable; - const { chunkOffset } = this; - controller.enqueue(await readUint8Array(reader, offset + chunkOffset, Math.min(chunkSize, size - chunkOffset), diskNumberStart)); - if (chunkOffset + chunkSize > size) { - controller.close(); - } else { - this.chunkOffset += chunkSize; - } - } - }); - return readable; - } -}; -var Writer = class extends Stream { - constructor() { - super(); - const writer = this; - const writable = new WritableStream({ - write(chunk) { - return writer.writeUint8Array(chunk); - } - }); - Object.defineProperty(writer, PROPERTY_NAME_WRITABLE, { - get() { - return writable; - } - }); - } - writeUint8Array() { - } -}; -var Data64URIReader = class extends Reader { - constructor(dataURI) { - super(); - let dataEnd = dataURI.length; - while (dataURI.charAt(dataEnd - 1) == "=") { - dataEnd--; - } - const dataStart = dataURI.indexOf(",") + 1; - Object.assign(this, { - dataURI, - dataStart, - size: Math.floor((dataEnd - dataStart) * 0.75) - }); - } - readUint8Array(offset, length) { - const { - dataStart, - dataURI - } = this; - const dataArray = new Uint8Array(length); - const start = Math.floor(offset / 3) * 4; - const bytes = atob(dataURI.substring(start + dataStart, Math.ceil((offset + length) / 3) * 4 + dataStart)); - const delta = offset - Math.floor(start / 4) * 3; - for (let indexByte = delta; indexByte < delta + length; indexByte++) { - dataArray[indexByte - delta] = bytes.charCodeAt(indexByte); - } - return dataArray; - } -}; -var Data64URIWriter = class extends Writer { - constructor(contentType) { - super(); - Object.assign(this, { - data: "data:" + (contentType || "") + ";base64,", - pending: [] - }); - } - writeUint8Array(array) { - const writer = this; - let indexArray = 0; - let dataString = writer.pending; - const delta = writer.pending.length; - writer.pending = ""; - for (indexArray = 0; indexArray < Math.floor((delta + array.length) / 3) * 3 - delta; indexArray++) { - dataString += String.fromCharCode(array[indexArray]); - } - for (; indexArray < array.length; indexArray++) { - writer.pending += String.fromCharCode(array[indexArray]); - } - if (dataString.length > 2) { - writer.data += btoa(dataString); - } else { - writer.pending = dataString; - } - } - getData() { - return this.data + btoa(this.pending); - } -}; -var BlobReader = class extends Reader { - constructor(blob) { - super(); - Object.assign(this, { - blob, - size: blob.size - }); - } - async readUint8Array(offset, length) { - const reader = this; - const offsetEnd = offset + length; - const blob = offset || offsetEnd < reader.size ? reader.blob.slice(offset, offsetEnd) : reader.blob; - let arrayBuffer = await blob.arrayBuffer(); - if (arrayBuffer.byteLength > length) { - arrayBuffer = arrayBuffer.slice(offset, offsetEnd); - } - return new Uint8Array(arrayBuffer); - } -}; -var BlobWriter = class extends Stream { - constructor(contentType) { - super(); - const writer = this; - const transformStream = new TransformStream(); - const headers = []; - if (contentType) { - headers.push([HTTP_HEADER_CONTENT_TYPE, contentType]); - } - Object.defineProperty(writer, PROPERTY_NAME_WRITABLE, { - get() { - return transformStream.writable; - } - }); - writer.blob = new Response(transformStream.readable, { headers }).blob(); - } - getData() { - return this.blob; - } -}; -var TextReader = class extends BlobReader { - constructor(text) { - super(new Blob([text], { type: CONTENT_TYPE_TEXT_PLAIN })); - } -}; -var TextWriter = class extends BlobWriter { - constructor(encoding) { - super(encoding); - Object.assign(this, { - encoding, - utf8: !encoding || encoding.toLowerCase() == "utf-8" - }); - } - async getData() { - const { - encoding, - utf8 - } = this; - const blob = await super.getData(); - if (blob.text && utf8) { - return blob.text(); - } else { - const reader = new FileReader(); - return new Promise((resolve, reject) => { - Object.assign(reader, { - onload: ({ target }) => resolve(target.result), - onerror: () => reject(reader.error) - }); - reader.readAsText(blob, encoding); - }); - } - } -}; -var FetchReader = class extends Reader { - constructor(url, options) { - super(); - createHttpReader(this, url, options); - } - async init() { - await initHttpReader(this, sendFetchRequest, getFetchRequestData); - super.init(); - } - readUint8Array(index, length) { - return readUint8ArrayHttpReader(this, index, length, sendFetchRequest, getFetchRequestData); - } -}; -var XHRReader = class extends Reader { - constructor(url, options) { - super(); - createHttpReader(this, url, options); - } - async init() { - await initHttpReader(this, sendXMLHttpRequest, getXMLHttpRequestData); - super.init(); - } - readUint8Array(index, length) { - return readUint8ArrayHttpReader(this, index, length, sendXMLHttpRequest, getXMLHttpRequestData); - } -}; -function createHttpReader(httpReader, url, options) { - const { - preventHeadRequest, - useRangeHeader, - forceRangeRequests, - combineSizeEocd - } = options; - options = Object.assign({}, options); - delete options.preventHeadRequest; - delete options.useRangeHeader; - delete options.forceRangeRequests; - delete options.combineSizeEocd; - delete options.useXHR; - Object.assign(httpReader, { - url, - options, - preventHeadRequest, - useRangeHeader, - forceRangeRequests, - combineSizeEocd - }); -} -async function initHttpReader(httpReader, sendRequest, getRequestData2) { - const { - url, - preventHeadRequest, - useRangeHeader, - forceRangeRequests, - combineSizeEocd - } = httpReader; - if (isHttpFamily(url) && (useRangeHeader || forceRangeRequests) && (typeof preventHeadRequest == "undefined" || preventHeadRequest)) { - const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, combineSizeEocd ? -END_OF_CENTRAL_DIR_LENGTH : void 0)); - if (!forceRangeRequests && response.headers.get(HTTP_HEADER_ACCEPT_RANGES) != HTTP_RANGE_UNIT) { - throw new Error(ERR_HTTP_RANGE); - } else { - if (combineSizeEocd) { - httpReader.eocdCache = new Uint8Array(await response.arrayBuffer()); - } - let contentSize; - const contentRangeHeader = response.headers.get(HTTP_HEADER_CONTENT_RANGE); - if (contentRangeHeader) { - const splitHeader = contentRangeHeader.trim().split(/\s*\/\s*/); - if (splitHeader.length) { - const headerValue = splitHeader[1]; - if (headerValue && headerValue != "*") { - contentSize = Number(headerValue); - } - } - } - if (contentSize === UNDEFINED_VALUE) { - await getContentLength(httpReader, sendRequest, getRequestData2); - } else { - httpReader.size = contentSize; - } - } - } else { - await getContentLength(httpReader, sendRequest, getRequestData2); - } -} -async function readUint8ArrayHttpReader(httpReader, index, length, sendRequest, getRequestData2) { - const { - useRangeHeader, - forceRangeRequests, - eocdCache, - size, - options - } = httpReader; - if (useRangeHeader || forceRangeRequests) { - if (eocdCache && index == size - END_OF_CENTRAL_DIR_LENGTH && length == END_OF_CENTRAL_DIR_LENGTH) { - return eocdCache; - } - const response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, index, length)); - if (response.status != 206) { - throw new Error(ERR_HTTP_RANGE); - } - return new Uint8Array(await response.arrayBuffer()); - } else { - const { data } = httpReader; - if (!data) { - await getRequestData2(httpReader, options); - } - return new Uint8Array(httpReader.data.subarray(index, index + length)); - } -} -function getRangeHeaders(httpReader, index = 0, length = 1) { - return Object.assign({}, getHeaders(httpReader), { [HTTP_HEADER_RANGE]: HTTP_RANGE_UNIT + "=" + (index < 0 ? index : index + "-" + (index + length - 1)) }); -} -function getHeaders({ options }) { - const { headers } = options; - if (headers) { - if (Symbol.iterator in headers) { - return Object.fromEntries(headers); - } else { - return headers; - } - } -} -async function getFetchRequestData(httpReader) { - await getRequestData(httpReader, sendFetchRequest); -} -async function getXMLHttpRequestData(httpReader) { - await getRequestData(httpReader, sendXMLHttpRequest); -} -async function getRequestData(httpReader, sendRequest) { - const response = await sendRequest(HTTP_METHOD_GET, httpReader, getHeaders(httpReader)); - httpReader.data = new Uint8Array(await response.arrayBuffer()); - if (!httpReader.size) { - httpReader.size = httpReader.data.length; - } -} -async function getContentLength(httpReader, sendRequest, getRequestData2) { - if (httpReader.preventHeadRequest) { - await getRequestData2(httpReader, httpReader.options); - } else { - const response = await sendRequest(HTTP_METHOD_HEAD, httpReader, getHeaders(httpReader)); - const contentLength = response.headers.get(HTTP_HEADER_CONTENT_LENGTH); - if (contentLength) { - httpReader.size = Number(contentLength); - } else { - await getRequestData2(httpReader, httpReader.options); - } - } -} -async function sendFetchRequest(method, { options, url }, headers) { - const response = await fetch(url, Object.assign({}, options, { method, headers })); - if (response.status < 400) { - return response; - } else { - throw response.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (response.statusText || response.status)); - } -} -function sendXMLHttpRequest(method, { url }, headers) { - return new Promise((resolve, reject) => { - const request = new XMLHttpRequest(); - request.addEventListener("load", () => { - if (request.status < 400) { - const headers2 = []; - request.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach((header) => { - const splitHeader = header.trim().split(/\s*:\s*/); - splitHeader[0] = splitHeader[0].trim().replace(/^[a-z]|-[a-z]/g, (value) => value.toUpperCase()); - headers2.push(splitHeader); - }); - resolve({ - status: request.status, - arrayBuffer: () => request.response, - headers: new Map(headers2) - }); - } else { - reject(request.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (request.statusText || request.status))); - } - }, false); - request.addEventListener("error", (event) => reject(event.detail ? event.detail.error : new Error("Network error")), false); - request.open(method, url); - if (headers) { - for (const entry of Object.entries(headers)) { - request.setRequestHeader(entry[0], entry[1]); - } - } - request.responseType = "arraybuffer"; - request.send(); - }); -} -var HttpReader = class extends Reader { - constructor(url, options = {}) { - super(); - Object.assign(this, { - url, - reader: options.useXHR ? new XHRReader(url, options) : new FetchReader(url, options) - }); - } - set size(value) { - } - get size() { - return this.reader.size; - } - async init() { - await this.reader.init(); - super.init(); - } - readUint8Array(index, length) { - return this.reader.readUint8Array(index, length); - } -}; -var HttpRangeReader = class extends HttpReader { - constructor(url, options = {}) { - options.useRangeHeader = true; - super(url, options); - } -}; -var Uint8ArrayReader = class extends Reader { - constructor(array) { - super(); - Object.assign(this, { - array, - size: array.length - }); - } - readUint8Array(index, length) { - return this.array.slice(index, index + length); - } -}; -var Uint8ArrayWriter = class extends Writer { - init(initSize = 0) { - Object.assign(this, { - offset: 0, - array: new Uint8Array(initSize) - }); - super.init(); - } - writeUint8Array(array) { - const writer = this; - if (writer.offset + array.length > writer.array.length) { - const previousArray = writer.array; - writer.array = new Uint8Array(previousArray.length + array.length); - writer.array.set(previousArray); - } - writer.array.set(array, writer.offset); - writer.offset += array.length; - } - getData() { - return this.array; - } -}; -var SplitDataReader = class extends Reader { - constructor(readers) { - super(); - this.readers = readers; - } - async init() { - const reader = this; - const { readers } = reader; - reader.lastDiskNumber = 0; - reader.lastDiskOffset = 0; - await Promise.all(readers.map(async (diskReader, indexDiskReader) => { - await diskReader.init(); - if (indexDiskReader != readers.length - 1) { - reader.lastDiskOffset += diskReader.size; - } - reader.size += diskReader.size; - })); - super.init(); - } - async readUint8Array(offset, length, diskNumber = 0) { - const reader = this; - const { readers } = this; - let result; - let currentDiskNumber = diskNumber; - if (currentDiskNumber == -1) { - currentDiskNumber = readers.length - 1; - } - let currentReaderOffset = offset; - while (currentReaderOffset >= readers[currentDiskNumber].size) { - currentReaderOffset -= readers[currentDiskNumber].size; - currentDiskNumber++; - } - const currentReader = readers[currentDiskNumber]; - const currentReaderSize = currentReader.size; - if (currentReaderOffset + length <= currentReaderSize) { - result = await readUint8Array(currentReader, currentReaderOffset, length); - } else { - const chunkLength = currentReaderSize - currentReaderOffset; - result = new Uint8Array(length); - result.set(await readUint8Array(currentReader, currentReaderOffset, chunkLength)); - result.set(await reader.readUint8Array(offset + chunkLength, length - chunkLength, diskNumber), chunkLength); - } - reader.lastDiskNumber = Math.max(currentDiskNumber, reader.lastDiskNumber); - return result; - } -}; -var SplitDataWriter = class extends Stream { - constructor(writerGenerator, maxSize = 4294967295) { - super(); - const writer = this; - Object.assign(writer, { - diskNumber: 0, - diskOffset: 0, - size: 0, - maxSize, - availableSize: maxSize - }); - let diskSourceWriter, diskWritable, diskWriter; - const writable = new WritableStream({ - async write(chunk) { - const { availableSize } = writer; - if (!diskWriter) { - const { value, done } = await writerGenerator.next(); - if (done && !value) { - throw new Error(ERR_ITERATOR_COMPLETED_TOO_SOON); - } else { - diskSourceWriter = value; - diskSourceWriter.size = 0; - if (diskSourceWriter.maxSize) { - writer.maxSize = diskSourceWriter.maxSize; - } - writer.availableSize = writer.maxSize; - await initStream(diskSourceWriter); - diskWritable = value.writable; - diskWriter = diskWritable.getWriter(); - } - await this.write(chunk); - } else if (chunk.length >= availableSize) { - await writeChunk(chunk.slice(0, availableSize)); - await closeDisk(); - writer.diskOffset += diskSourceWriter.size; - writer.diskNumber++; - diskWriter = null; - await this.write(chunk.slice(availableSize)); - } else { - await writeChunk(chunk); - } - }, - async close() { - await diskWriter.ready; - await closeDisk(); - } - }); - Object.defineProperty(writer, PROPERTY_NAME_WRITABLE, { - get() { - return writable; - } - }); - async function writeChunk(chunk) { - const chunkLength = chunk.length; - if (chunkLength) { - await diskWriter.ready; - await diskWriter.write(chunk); - diskSourceWriter.size += chunkLength; - writer.size += chunkLength; - writer.availableSize -= chunkLength; - } - } - async function closeDisk() { - diskWritable.size = diskSourceWriter.size; - await diskWriter.close(); - } - } -}; -function isHttpFamily(url) { - const { baseURL: baseURL2 } = getConfiguration(); - const { protocol } = new URL(url, baseURL2); - return protocol == "http:" || protocol == "https:"; -} -async function initStream(stream, initSize) { - if (stream.init && !stream.initialized) { - await stream.init(initSize); - } else { - return Promise.resolve(); - } -} -function initReader(reader) { - if (Array.isArray(reader)) { - reader = new SplitDataReader(reader); - } - if (reader instanceof ReadableStream) { - reader = { - readable: reader - }; - } - return reader; -} -function initWriter(writer) { - if (writer.writable === UNDEFINED_VALUE && typeof writer.next == FUNCTION_TYPE) { - writer = new SplitDataWriter(writer); - } - if (writer instanceof WritableStream) { - writer = { - writable: writer - }; - } - const { writable } = writer; - if (writable.size === UNDEFINED_VALUE) { - writable.size = 0; - } - if (!(writer instanceof SplitDataWriter)) { - Object.assign(writer, { - diskNumber: 0, - diskOffset: 0, - availableSize: Infinity, - maxSize: Infinity - }); - } - return writer; -} -function readUint8Array(reader, offset, size, diskNumber) { - return reader.readUint8Array(offset, size, diskNumber); -} -var SplitZipReader = SplitDataReader; -var SplitZipWriter = SplitDataWriter; - -// node_modules/@zip.js/zip.js/lib/core/util/cp437-decode.js -var CP437 = "\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""); -var VALID_CP437 = CP437.length == 256; -function decodeCP437(stringValue) { - if (VALID_CP437) { - let result = ""; - for (let indexCharacter = 0; indexCharacter < stringValue.length; indexCharacter++) { - result += CP437[stringValue[indexCharacter]]; - } - return result; - } else { - return new TextDecoder().decode(stringValue); - } -} - -// node_modules/@zip.js/zip.js/lib/core/util/decode-text.js -function decodeText(value, encoding) { - if (encoding && encoding.trim().toLowerCase() == "cp437") { - return decodeCP437(value); - } else { - return new TextDecoder(encoding).decode(value); - } -} - -// node_modules/@zip.js/zip.js/lib/core/zip-entry.js -var PROPERTY_NAME_FILENAME = "filename"; -var PROPERTY_NAME_RAW_FILENAME = "rawFilename"; -var PROPERTY_NAME_COMMENT = "comment"; -var PROPERTY_NAME_RAW_COMMENT = "rawComment"; -var PROPERTY_NAME_UNCOMPPRESSED_SIZE = "uncompressedSize"; -var PROPERTY_NAME_COMPPRESSED_SIZE = "compressedSize"; -var PROPERTY_NAME_OFFSET = "offset"; -var PROPERTY_NAME_DISK_NUMBER_START = "diskNumberStart"; -var PROPERTY_NAME_LAST_MODIFICATION_DATE = "lastModDate"; -var PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE = "rawLastModDate"; -var PROPERTY_NAME_LAST_ACCESS_DATE = "lastAccessDate"; -var PROPERTY_NAME_RAW_LAST_ACCESS_DATE = "rawLastAccessDate"; -var PROPERTY_NAME_CREATION_DATE = "creationDate"; -var PROPERTY_NAME_RAW_CREATION_DATE = "rawCreationDate"; -var PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE = "internalFileAttribute"; -var PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE = "externalFileAttribute"; -var PROPERTY_NAME_MS_DOS_COMPATIBLE = "msDosCompatible"; -var PROPERTY_NAME_ZIP64 = "zip64"; -var PROPERTY_NAME_ENCRYPTED = "encrypted"; -var PROPERTY_NAME_VERSION = "version"; -var PROPERTY_NAME_VERSION_MADE_BY = "versionMadeBy"; -var PROPERTY_NAME_ZIPCRYPTO = "zipCrypto"; -var PROPERTY_NAMES = [ - PROPERTY_NAME_FILENAME, - PROPERTY_NAME_RAW_FILENAME, - PROPERTY_NAME_COMPPRESSED_SIZE, - PROPERTY_NAME_UNCOMPPRESSED_SIZE, - PROPERTY_NAME_LAST_MODIFICATION_DATE, - PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, - PROPERTY_NAME_COMMENT, - PROPERTY_NAME_RAW_COMMENT, - PROPERTY_NAME_LAST_ACCESS_DATE, - PROPERTY_NAME_CREATION_DATE, - PROPERTY_NAME_OFFSET, - PROPERTY_NAME_DISK_NUMBER_START, - PROPERTY_NAME_DISK_NUMBER_START, - PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, - PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, - PROPERTY_NAME_MS_DOS_COMPATIBLE, - PROPERTY_NAME_ZIP64, - PROPERTY_NAME_ENCRYPTED, - PROPERTY_NAME_VERSION, - PROPERTY_NAME_VERSION_MADE_BY, - PROPERTY_NAME_ZIPCRYPTO, - "directory", - "bitFlag", - "signature", - "filenameUTF8", - "commentUTF8", - "compressionMethod", - "extraField", - "rawExtraField", - "extraFieldZip64", - "extraFieldUnicodePath", - "extraFieldUnicodeComment", - "extraFieldAES", - "extraFieldNTFS", - "extraFieldExtendedTimestamp" -]; -var Entry = class { - constructor(data) { - PROPERTY_NAMES.forEach((name) => this[name] = data[name]); - } -}; - -// node_modules/@zip.js/zip.js/lib/core/zip-reader.js -var ERR_BAD_FORMAT = "File format is not recognized"; -var ERR_EOCDR_NOT_FOUND = "End of central directory not found"; -var ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND = "End of Zip64 central directory locator not found"; -var ERR_CENTRAL_DIRECTORY_NOT_FOUND = "Central directory header not found"; -var ERR_LOCAL_FILE_HEADER_NOT_FOUND = "Local file header not found"; -var ERR_EXTRAFIELD_ZIP64_NOT_FOUND = "Zip64 extra field not found"; -var ERR_ENCRYPTED = "File contains encrypted entry"; -var ERR_UNSUPPORTED_ENCRYPTION = "Encryption method not supported"; -var ERR_UNSUPPORTED_COMPRESSION = "Compression method not supported"; -var ERR_SPLIT_ZIP_FILE = "Split zip file"; -var CHARSET_UTF8 = "utf-8"; -var CHARSET_CP437 = "cp437"; -var ZIP64_PROPERTIES = [ - [PROPERTY_NAME_UNCOMPPRESSED_SIZE, MAX_32_BITS], - [PROPERTY_NAME_COMPPRESSED_SIZE, MAX_32_BITS], - [PROPERTY_NAME_OFFSET, MAX_32_BITS], - [PROPERTY_NAME_DISK_NUMBER_START, MAX_16_BITS] -]; -var ZIP64_EXTRACTION = { - [MAX_16_BITS]: { - getValue: getUint32, - bytes: 4 - }, - [MAX_32_BITS]: { - getValue: getBigUint64, - bytes: 8 - } -}; -var ZipReader = class { - constructor(reader, options = {}) { - Object.assign(this, { - reader: initReader(reader), - options, - config: getConfiguration() - }); - } - async *getEntriesGenerator(options = {}) { - const zipReader = this; - let { reader } = zipReader; - const { config: config2 } = zipReader; - await initStream(reader); - if (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) { - reader = new BlobReader(await new Response(reader.readable).blob()); - await initStream(reader); - } - if (reader.size < END_OF_CENTRAL_DIR_LENGTH) { - throw new Error(ERR_BAD_FORMAT); - } - reader.chunkSize = getChunkSize(config2); - const endOfDirectoryInfo = await seekSignature(reader, END_OF_CENTRAL_DIR_SIGNATURE, reader.size, END_OF_CENTRAL_DIR_LENGTH, MAX_16_BITS * 16); - if (!endOfDirectoryInfo) { - const signatureArray = await readUint8Array(reader, 0, 4); - const signatureView = getDataView(signatureArray); - if (getUint32(signatureView) == SPLIT_ZIP_FILE_SIGNATURE) { - throw new Error(ERR_SPLIT_ZIP_FILE); - } else { - throw new Error(ERR_EOCDR_NOT_FOUND); - } - } - const endOfDirectoryView = getDataView(endOfDirectoryInfo); - let directoryDataLength = getUint32(endOfDirectoryView, 12); - let directoryDataOffset = getUint32(endOfDirectoryView, 16); - const commentOffset = endOfDirectoryInfo.offset; - const commentLength = getUint16(endOfDirectoryView, 20); - const appendedDataOffset = commentOffset + END_OF_CENTRAL_DIR_LENGTH + commentLength; - let lastDiskNumber = getUint16(endOfDirectoryView, 4); - const expectedLastDiskNumber = reader.lastDiskNumber || 0; - let diskNumber = getUint16(endOfDirectoryView, 6); - let filesLength = getUint16(endOfDirectoryView, 8); - let prependedDataLength = 0; - let startOffset = 0; - if (directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || filesLength == MAX_16_BITS || diskNumber == MAX_16_BITS) { - const endOfDirectoryLocatorArray = await readUint8Array(reader, endOfDirectoryInfo.offset - ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH); - const endOfDirectoryLocatorView = getDataView(endOfDirectoryLocatorArray); - if (getUint32(endOfDirectoryLocatorView, 0) == ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE) { - directoryDataOffset = getBigUint64(endOfDirectoryLocatorView, 8); - let endOfDirectoryArray = await readUint8Array(reader, directoryDataOffset, ZIP64_END_OF_CENTRAL_DIR_LENGTH, -1); - let endOfDirectoryView2 = getDataView(endOfDirectoryArray); - const expectedDirectoryDataOffset = endOfDirectoryInfo.offset - ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH - ZIP64_END_OF_CENTRAL_DIR_LENGTH; - if (getUint32(endOfDirectoryView2, 0) != ZIP64_END_OF_CENTRAL_DIR_SIGNATURE && directoryDataOffset != expectedDirectoryDataOffset) { - const originalDirectoryDataOffset = directoryDataOffset; - directoryDataOffset = expectedDirectoryDataOffset; - prependedDataLength = directoryDataOffset - originalDirectoryDataOffset; - endOfDirectoryArray = await readUint8Array(reader, directoryDataOffset, ZIP64_END_OF_CENTRAL_DIR_LENGTH, -1); - endOfDirectoryView2 = getDataView(endOfDirectoryArray); - } - if (getUint32(endOfDirectoryView2, 0) != ZIP64_END_OF_CENTRAL_DIR_SIGNATURE) { - throw new Error(ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND); - } - if (lastDiskNumber == MAX_16_BITS) { - lastDiskNumber = getUint32(endOfDirectoryView2, 16); - } - if (diskNumber == MAX_16_BITS) { - diskNumber = getUint32(endOfDirectoryView2, 20); - } - if (filesLength == MAX_16_BITS) { - filesLength = getBigUint64(endOfDirectoryView2, 32); - } - if (directoryDataLength == MAX_32_BITS) { - directoryDataLength = getBigUint64(endOfDirectoryView2, 40); - } - directoryDataOffset -= directoryDataLength; - } - } - if (directoryDataOffset >= reader.size) { - prependedDataLength = reader.size - directoryDataOffset - directoryDataLength - END_OF_CENTRAL_DIR_LENGTH; - directoryDataOffset = reader.size - directoryDataLength - END_OF_CENTRAL_DIR_LENGTH; - } - if (expectedLastDiskNumber != lastDiskNumber) { - throw new Error(ERR_SPLIT_ZIP_FILE); - } - if (directoryDataOffset < 0) { - throw new Error(ERR_BAD_FORMAT); - } - let offset = 0; - let directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength, diskNumber); - let directoryView = getDataView(directoryArray); - if (directoryDataLength) { - const expectedDirectoryDataOffset = endOfDirectoryInfo.offset - directoryDataLength; - if (getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE && directoryDataOffset != expectedDirectoryDataOffset) { - const originalDirectoryDataOffset = directoryDataOffset; - directoryDataOffset = expectedDirectoryDataOffset; - prependedDataLength += directoryDataOffset - originalDirectoryDataOffset; - directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength, diskNumber); - directoryView = getDataView(directoryArray); - } - } - const expectedDirectoryDataLength = endOfDirectoryInfo.offset - directoryDataOffset - (reader.lastDiskOffset || 0); - if (directoryDataLength != expectedDirectoryDataLength && expectedDirectoryDataLength >= 0) { - directoryDataLength = expectedDirectoryDataLength; - directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength, diskNumber); - directoryView = getDataView(directoryArray); - } - if (directoryDataOffset < 0 || directoryDataOffset >= reader.size) { - throw new Error(ERR_BAD_FORMAT); - } - const filenameEncoding = getOptionValue(zipReader, options, "filenameEncoding"); - const commentEncoding = getOptionValue(zipReader, options, "commentEncoding"); - for (let indexFile = 0; indexFile < filesLength; indexFile++) { - const fileEntry = new ZipEntry(reader, config2, zipReader.options); - if (getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE) { - throw new Error(ERR_CENTRAL_DIRECTORY_NOT_FOUND); - } - readCommonHeader(fileEntry, directoryView, offset + 6); - const languageEncodingFlag = Boolean(fileEntry.bitFlag.languageEncodingFlag); - const filenameOffset = offset + 46; - const extraFieldOffset = filenameOffset + fileEntry.filenameLength; - const commentOffset2 = extraFieldOffset + fileEntry.extraFieldLength; - const versionMadeBy = getUint16(directoryView, offset + 4); - const msDosCompatible = (versionMadeBy & 0) == 0; - const rawFilename = directoryArray.subarray(filenameOffset, extraFieldOffset); - const commentLength2 = getUint16(directoryView, offset + 32); - const endOffset = commentOffset2 + commentLength2; - const rawComment = directoryArray.subarray(commentOffset2, endOffset); - const filenameUTF8 = languageEncodingFlag; - const commentUTF8 = languageEncodingFlag; - const directory = msDosCompatible && (getUint8(directoryView, offset + 38) & FILE_ATTR_MSDOS_DIR_MASK) == FILE_ATTR_MSDOS_DIR_MASK; - const offsetFileEntry = getUint32(directoryView, offset + 42) + prependedDataLength; - Object.assign(fileEntry, { - versionMadeBy, - msDosCompatible, - compressedSize: 0, - uncompressedSize: 0, - commentLength: commentLength2, - directory, - offset: offsetFileEntry, - diskNumberStart: getUint16(directoryView, offset + 34), - internalFileAttribute: getUint16(directoryView, offset + 36), - externalFileAttribute: getUint32(directoryView, offset + 38), - rawFilename, - filenameUTF8, - commentUTF8, - rawExtraField: directoryArray.subarray(extraFieldOffset, commentOffset2) - }); - const decode = getOptionValue(zipReader, options, "decodeText") || decodeText; - const rawFilenameEncoding = filenameUTF8 ? CHARSET_UTF8 : filenameEncoding || CHARSET_CP437; - const rawCommentEncoding = commentUTF8 ? CHARSET_UTF8 : commentEncoding || CHARSET_CP437; - let filename = decode(rawFilename, rawFilenameEncoding); - if (filename === UNDEFINED_VALUE) { - filename = decodeText(rawFilename, rawFilenameEncoding); - } - let comment = decode(rawComment, rawCommentEncoding); - if (comment === UNDEFINED_VALUE) { - comment = decodeText(rawComment, rawCommentEncoding); - } - Object.assign(fileEntry, { - rawComment, - filename, - comment, - directory: directory || filename.endsWith(DIRECTORY_SIGNATURE) - }); - startOffset = Math.max(offsetFileEntry, startOffset); - readCommonFooter(fileEntry, fileEntry, directoryView, offset + 6); - fileEntry.zipCrypto = fileEntry.encrypted && !fileEntry.extraFieldAES; - const entry = new Entry(fileEntry); - entry.getData = (writer, options2) => fileEntry.getData(writer, entry, options2); - offset = endOffset; - const { onprogress } = options; - if (onprogress) { - try { - await onprogress(indexFile + 1, filesLength, new Entry(fileEntry)); - } catch (_error) { - } - } - yield entry; - } - const extractPrependedData = getOptionValue(zipReader, options, "extractPrependedData"); - const extractAppendedData = getOptionValue(zipReader, options, "extractAppendedData"); - if (extractPrependedData) { - zipReader.prependedData = startOffset > 0 ? await readUint8Array(reader, 0, startOffset) : new Uint8Array(); - } - zipReader.comment = commentLength ? await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength) : new Uint8Array(); - if (extractAppendedData) { - zipReader.appendedData = appendedDataOffset < reader.size ? await readUint8Array(reader, appendedDataOffset, reader.size - appendedDataOffset) : new Uint8Array(); - } - return true; - } - async getEntries(options = {}) { - const entries = []; - for await (const entry of this.getEntriesGenerator(options)) { - entries.push(entry); - } - return entries; - } - async close() { - } -}; -var ZipReaderStream = class { - constructor(options = {}) { - const { readable, writable } = new TransformStream(); - const gen = new ZipReader(readable, options).getEntriesGenerator(); - this.readable = new ReadableStream({ - async pull(controller) { - const { done, value } = await gen.next(); - if (done) - return controller.close(); - const chunk = { - ...value, - readable: function() { - const { readable: readable2, writable: writable2 } = new TransformStream(); - if (value.getData) { - value.getData(writable2); - return readable2; - } - }() - }; - delete chunk.getData; - controller.enqueue(chunk); - } - }); - this.writable = writable; - } -}; -var ZipEntry = class { - constructor(reader, config2, options) { - Object.assign(this, { - reader, - config: config2, - options - }); - } - async getData(writer, fileEntry, options = {}) { - const zipEntry = this; - const { - reader, - offset, - diskNumberStart, - extraFieldAES, - compressionMethod, - config: config2, - bitFlag, - signature, - rawLastModDate, - uncompressedSize, - compressedSize - } = zipEntry; - const localDirectory = fileEntry.localDirectory = {}; - const dataArray = await readUint8Array(reader, offset, 30, diskNumberStart); - const dataView = getDataView(dataArray); - let password = getOptionValue(zipEntry, options, "password"); - let rawPassword = getOptionValue(zipEntry, options, "rawPassword"); - const passThrough = getOptionValue(zipEntry, options, "passThrough"); - password = password && password.length && password; - rawPassword = rawPassword && rawPassword.length && rawPassword; - if (extraFieldAES) { - if (extraFieldAES.originalCompressionMethod != COMPRESSION_METHOD_AES) { - throw new Error(ERR_UNSUPPORTED_COMPRESSION); - } - } - if (compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE && !passThrough) { - throw new Error(ERR_UNSUPPORTED_COMPRESSION); - } - if (getUint32(dataView, 0) != LOCAL_FILE_HEADER_SIGNATURE) { - throw new Error(ERR_LOCAL_FILE_HEADER_NOT_FOUND); - } - readCommonHeader(localDirectory, dataView, 4); - localDirectory.rawExtraField = localDirectory.extraFieldLength ? await readUint8Array(reader, offset + 30 + localDirectory.filenameLength, localDirectory.extraFieldLength, diskNumberStart) : new Uint8Array(); - readCommonFooter(zipEntry, localDirectory, dataView, 4, true); - Object.assign(fileEntry, { - lastAccessDate: localDirectory.lastAccessDate, - creationDate: localDirectory.creationDate - }); - const encrypted = zipEntry.encrypted && localDirectory.encrypted && !passThrough; - const zipCrypto = encrypted && !extraFieldAES; - if (!passThrough) { - fileEntry.zipCrypto = zipCrypto; - } - if (encrypted) { - if (!zipCrypto && extraFieldAES.strength === UNDEFINED_VALUE) { - throw new Error(ERR_UNSUPPORTED_ENCRYPTION); - } else if (!password && !rawPassword) { - throw new Error(ERR_ENCRYPTED); - } - } - const dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength; - const size = compressedSize; - const readable = reader.readable; - Object.assign(readable, { - diskNumberStart, - offset: dataOffset, - size - }); - const signal = getOptionValue(zipEntry, options, "signal"); - const checkPasswordOnly = getOptionValue(zipEntry, options, "checkPasswordOnly"); - if (checkPasswordOnly) { - writer = new WritableStream(); - } - writer = initWriter(writer); - await initStream(writer, passThrough ? compressedSize : uncompressedSize); - const { writable } = writer; - const { onstart, onprogress, onend } = options; - const workerOptions = { - options: { - codecType: CODEC_INFLATE, - password, - rawPassword, - zipCrypto, - encryptionStrength: extraFieldAES && extraFieldAES.strength, - signed: getOptionValue(zipEntry, options, "checkSignature") && !passThrough, - passwordVerification: zipCrypto && (bitFlag.dataDescriptor ? rawLastModDate >>> 8 & 255 : signature >>> 24 & 255), - signature, - compressed: compressionMethod != 0 && !passThrough, - encrypted: zipEntry.encrypted && !passThrough, - useWebWorkers: getOptionValue(zipEntry, options, "useWebWorkers"), - useCompressionStream: getOptionValue(zipEntry, options, "useCompressionStream"), - transferStreams: getOptionValue(zipEntry, options, "transferStreams"), - checkPasswordOnly - }, - config: config2, - streamOptions: { signal, size, onstart, onprogress, onend } - }; - let outputSize = 0; - try { - ({ outputSize } = await runWorker2({ readable, writable }, workerOptions)); - } catch (error) { - if (!checkPasswordOnly || error.message != ERR_ABORT_CHECK_PASSWORD) { - throw error; - } - } finally { - const preventClose = getOptionValue(zipEntry, options, "preventClose"); - writable.size += outputSize; - if (!preventClose && !writable.locked) { - await writable.getWriter().close(); - } - } - return checkPasswordOnly ? UNDEFINED_VALUE : writer.getData ? writer.getData() : writable; - } -}; -function readCommonHeader(directory, dataView, offset) { - const rawBitFlag = directory.rawBitFlag = getUint16(dataView, offset + 2); - const encrypted = (rawBitFlag & BITFLAG_ENCRYPTED) == BITFLAG_ENCRYPTED; - const rawLastModDate = getUint32(dataView, offset + 6); - Object.assign(directory, { - encrypted, - version: getUint16(dataView, offset), - bitFlag: { - level: (rawBitFlag & BITFLAG_LEVEL) >> 1, - dataDescriptor: (rawBitFlag & BITFLAG_DATA_DESCRIPTOR) == BITFLAG_DATA_DESCRIPTOR, - languageEncodingFlag: (rawBitFlag & BITFLAG_LANG_ENCODING_FLAG) == BITFLAG_LANG_ENCODING_FLAG - }, - rawLastModDate, - lastModDate: getDate(rawLastModDate), - filenameLength: getUint16(dataView, offset + 22), - extraFieldLength: getUint16(dataView, offset + 24) - }); -} -function readCommonFooter(fileEntry, directory, dataView, offset, localDirectory) { - const { rawExtraField } = directory; - const extraField = directory.extraField = /* @__PURE__ */ new Map(); - const rawExtraFieldView = getDataView(new Uint8Array(rawExtraField)); - let offsetExtraField = 0; - try { - while (offsetExtraField < rawExtraField.length) { - const type = getUint16(rawExtraFieldView, offsetExtraField); - const size = getUint16(rawExtraFieldView, offsetExtraField + 2); - extraField.set(type, { - type, - data: rawExtraField.slice(offsetExtraField + 4, offsetExtraField + 4 + size) - }); - offsetExtraField += 4 + size; - } - } catch (_error) { - } - const compressionMethod = getUint16(dataView, offset + 4); - Object.assign(directory, { - signature: getUint32(dataView, offset + 10), - uncompressedSize: getUint32(dataView, offset + 18), - compressedSize: getUint32(dataView, offset + 14) - }); - const extraFieldZip64 = extraField.get(EXTRAFIELD_TYPE_ZIP64); - if (extraFieldZip64) { - readExtraFieldZip64(extraFieldZip64, directory); - directory.extraFieldZip64 = extraFieldZip64; - } - const extraFieldUnicodePath = extraField.get(EXTRAFIELD_TYPE_UNICODE_PATH); - if (extraFieldUnicodePath) { - readExtraFieldUnicode(extraFieldUnicodePath, PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, directory, fileEntry); - directory.extraFieldUnicodePath = extraFieldUnicodePath; - } - const extraFieldUnicodeComment = extraField.get(EXTRAFIELD_TYPE_UNICODE_COMMENT); - if (extraFieldUnicodeComment) { - readExtraFieldUnicode(extraFieldUnicodeComment, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT, directory, fileEntry); - directory.extraFieldUnicodeComment = extraFieldUnicodeComment; - } - const extraFieldAES = extraField.get(EXTRAFIELD_TYPE_AES); - if (extraFieldAES) { - readExtraFieldAES(extraFieldAES, directory, compressionMethod); - directory.extraFieldAES = extraFieldAES; - } else { - directory.compressionMethod = compressionMethod; - } - const extraFieldNTFS = extraField.get(EXTRAFIELD_TYPE_NTFS); - if (extraFieldNTFS) { - readExtraFieldNTFS(extraFieldNTFS, directory); - directory.extraFieldNTFS = extraFieldNTFS; - } - const extraFieldExtendedTimestamp = extraField.get(EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP); - if (extraFieldExtendedTimestamp) { - readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory); - directory.extraFieldExtendedTimestamp = extraFieldExtendedTimestamp; - } - const extraFieldUSDZ = extraField.get(EXTRAFIELD_TYPE_USDZ); - if (extraFieldUSDZ) { - directory.extraFieldUSDZ = extraFieldUSDZ; - } -} -function readExtraFieldZip64(extraFieldZip64, directory) { - directory.zip64 = true; - const extraFieldView = getDataView(extraFieldZip64.data); - const missingProperties = ZIP64_PROPERTIES.filter(([propertyName, max]) => directory[propertyName] == max); - for (let indexMissingProperty = 0, offset = 0; indexMissingProperty < missingProperties.length; indexMissingProperty++) { - const [propertyName, max] = missingProperties[indexMissingProperty]; - if (directory[propertyName] == max) { - const extraction = ZIP64_EXTRACTION[max]; - directory[propertyName] = extraFieldZip64[propertyName] = extraction.getValue(extraFieldView, offset); - offset += extraction.bytes; - } else if (extraFieldZip64[propertyName]) { - throw new Error(ERR_EXTRAFIELD_ZIP64_NOT_FOUND); - } - } -} -function readExtraFieldUnicode(extraFieldUnicode, propertyName, rawPropertyName, directory, fileEntry) { - const extraFieldView = getDataView(extraFieldUnicode.data); - const crc32 = new Crc32(); - crc32.append(fileEntry[rawPropertyName]); - const dataViewSignature = getDataView(new Uint8Array(4)); - dataViewSignature.setUint32(0, crc32.get(), true); - const signature = getUint32(extraFieldView, 1); - Object.assign(extraFieldUnicode, { - version: getUint8(extraFieldView, 0), - [propertyName]: decodeText(extraFieldUnicode.data.subarray(5)), - valid: !fileEntry.bitFlag.languageEncodingFlag && signature == getUint32(dataViewSignature, 0) - }); - if (extraFieldUnicode.valid) { - directory[propertyName] = extraFieldUnicode[propertyName]; - directory[propertyName + "UTF8"] = true; - } -} -function readExtraFieldAES(extraFieldAES, directory, compressionMethod) { - const extraFieldView = getDataView(extraFieldAES.data); - const strength = getUint8(extraFieldView, 4); - Object.assign(extraFieldAES, { - vendorVersion: getUint8(extraFieldView, 0), - vendorId: getUint8(extraFieldView, 2), - strength, - originalCompressionMethod: compressionMethod, - compressionMethod: getUint16(extraFieldView, 5) - }); - directory.compressionMethod = extraFieldAES.compressionMethod; -} -function readExtraFieldNTFS(extraFieldNTFS, directory) { - const extraFieldView = getDataView(extraFieldNTFS.data); - let offsetExtraField = 4; - let tag1Data; - try { - while (offsetExtraField < extraFieldNTFS.data.length && !tag1Data) { - const tagValue = getUint16(extraFieldView, offsetExtraField); - const attributeSize = getUint16(extraFieldView, offsetExtraField + 2); - if (tagValue == EXTRAFIELD_TYPE_NTFS_TAG1) { - tag1Data = extraFieldNTFS.data.slice(offsetExtraField + 4, offsetExtraField + 4 + attributeSize); - } - offsetExtraField += 4 + attributeSize; - } - } catch (_error) { - } - try { - if (tag1Data && tag1Data.length == 24) { - const tag1View = getDataView(tag1Data); - const rawLastModDate = tag1View.getBigUint64(0, true); - const rawLastAccessDate = tag1View.getBigUint64(8, true); - const rawCreationDate = tag1View.getBigUint64(16, true); - Object.assign(extraFieldNTFS, { - rawLastModDate, - rawLastAccessDate, - rawCreationDate - }); - const lastModDate = getDateNTFS(rawLastModDate); - const lastAccessDate = getDateNTFS(rawLastAccessDate); - const creationDate = getDateNTFS(rawCreationDate); - const extraFieldData = { lastModDate, lastAccessDate, creationDate }; - Object.assign(extraFieldNTFS, extraFieldData); - Object.assign(directory, extraFieldData); - } - } catch (_error) { - } -} -function readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory) { - const extraFieldView = getDataView(extraFieldExtendedTimestamp.data); - const flags = getUint8(extraFieldView, 0); - const timeProperties = []; - const timeRawProperties = []; - if (localDirectory) { - if ((flags & 1) == 1) { - timeProperties.push(PROPERTY_NAME_LAST_MODIFICATION_DATE); - timeRawProperties.push(PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE); - } - if ((flags & 2) == 2) { - timeProperties.push(PROPERTY_NAME_LAST_ACCESS_DATE); - timeRawProperties.push(PROPERTY_NAME_RAW_LAST_ACCESS_DATE); - } - if ((flags & 4) == 4) { - timeProperties.push(PROPERTY_NAME_CREATION_DATE); - timeRawProperties.push(PROPERTY_NAME_RAW_CREATION_DATE); - } - } else if (extraFieldExtendedTimestamp.data.length >= 5) { - timeProperties.push(PROPERTY_NAME_LAST_MODIFICATION_DATE); - timeRawProperties.push(PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE); - } - let offset = 1; - timeProperties.forEach((propertyName, indexProperty) => { - if (extraFieldExtendedTimestamp.data.length >= offset + 4) { - const time = getUint32(extraFieldView, offset); - directory[propertyName] = extraFieldExtendedTimestamp[propertyName] = new Date(time * 1e3); - const rawPropertyName = timeRawProperties[indexProperty]; - extraFieldExtendedTimestamp[rawPropertyName] = time; - } - offset += 4; - }); -} -async function seekSignature(reader, signature, startOffset, minimumBytes, maximumLength) { - const signatureArray = new Uint8Array(4); - const signatureView = getDataView(signatureArray); - setUint32(signatureView, 0, signature); - const maximumBytes = minimumBytes + maximumLength; - return await seek(minimumBytes) || await seek(Math.min(maximumBytes, startOffset)); - async function seek(length) { - const offset = startOffset - length; - const bytes = await readUint8Array(reader, offset, length); - for (let indexByte = bytes.length - minimumBytes; indexByte >= 0; indexByte--) { - if (bytes[indexByte] == signatureArray[0] && bytes[indexByte + 1] == signatureArray[1] && bytes[indexByte + 2] == signatureArray[2] && bytes[indexByte + 3] == signatureArray[3]) { - return { - offset: offset + indexByte, - buffer: bytes.slice(indexByte, indexByte + minimumBytes).buffer - }; - } - } - } -} -function getOptionValue(zipReader, options, name) { - return options[name] === UNDEFINED_VALUE ? zipReader.options[name] : options[name]; -} -function getDate(timeRaw) { - const date = (timeRaw & 4294901760) >> 16, time = timeRaw & 65535; - try { - return new Date(1980 + ((date & 65024) >> 9), ((date & 480) >> 5) - 1, date & 31, (time & 63488) >> 11, (time & 2016) >> 5, (time & 31) * 2, 0); - } catch (_error) { - } -} -function getDateNTFS(timeRaw) { - return new Date(Number(timeRaw / BigInt(1e4) - BigInt(116444736e5))); -} -function getUint8(view, offset) { - return view.getUint8(offset); -} -function getUint16(view, offset) { - return view.getUint16(offset, true); -} -function getUint32(view, offset) { - return view.getUint32(offset, true); -} -function getBigUint64(view, offset) { - return Number(view.getBigUint64(offset, true)); -} -function setUint32(view, offset, value) { - view.setUint32(offset, value, true); -} -function getDataView(array) { - return new DataView(array.buffer); -} - -// node_modules/@zip.js/zip.js/lib/core/zip-writer.js -var ERR_DUPLICATED_NAME = "File already exists"; -var ERR_INVALID_COMMENT = "Zip file comment exceeds 64KB"; -var ERR_INVALID_ENTRY_COMMENT = "File entry comment exceeds 64KB"; -var ERR_INVALID_ENTRY_NAME = "File entry name exceeds 64KB"; -var ERR_INVALID_VERSION = "Version exceeds 65535"; -var ERR_INVALID_ENCRYPTION_STRENGTH = "The strength must equal 1, 2, or 3"; -var ERR_INVALID_EXTRAFIELD_TYPE = "Extra field type exceeds 65535"; -var ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB"; -var ERR_UNSUPPORTED_FORMAT = "Zip64 is not supported (make sure 'keepOrder' is set to 'true')"; -var ERR_UNDEFINED_UNCOMPRESSED_SIZE = "Undefined uncompressed size"; -var EXTRAFIELD_DATA_AES = new Uint8Array([7, 0, 2, 0, 65, 69, 3, 0, 0]); -var workers = 0; -var pendingEntries = []; -var ZipWriter = class { - constructor(writer, options = {}) { - writer = initWriter(writer); - const addSplitZipSignature = writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== Infinity && writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== Infinity; - Object.assign(this, { - writer, - addSplitZipSignature, - options, - config: getConfiguration(), - files: /* @__PURE__ */ new Map(), - filenames: /* @__PURE__ */ new Set(), - offset: options.offset === UNDEFINED_VALUE ? writer.writable.size : options.offset, - pendingEntriesSize: 0, - pendingAddFileCalls: /* @__PURE__ */ new Set(), - bufferedWrites: 0 - }); - } - async add(name = "", reader, options = {}) { - const zipWriter = this; - const { - pendingAddFileCalls, - config: config2 - } = zipWriter; - if (workers < config2.maxWorkers) { - workers++; - } else { - await new Promise((resolve) => pendingEntries.push(resolve)); - } - let promiseAddFile; - try { - name = name.trim(); - if (zipWriter.filenames.has(name)) { - throw new Error(ERR_DUPLICATED_NAME); - } - zipWriter.filenames.add(name); - promiseAddFile = addFile(zipWriter, name, reader, options); - pendingAddFileCalls.add(promiseAddFile); - return await promiseAddFile; - } catch (error) { - zipWriter.filenames.delete(name); - throw error; - } finally { - pendingAddFileCalls.delete(promiseAddFile); - const pendingEntry = pendingEntries.shift(); - if (pendingEntry) { - pendingEntry(); - } else { - workers--; - } - } - } - async close(comment = new Uint8Array(), options = {}) { - const zipWriter = this; - const { pendingAddFileCalls, writer } = this; - const { writable } = writer; - while (pendingAddFileCalls.size) { - await Promise.allSettled(Array.from(pendingAddFileCalls)); - } - await closeFile(this, comment, options); - const preventClose = getOptionValue2(zipWriter, options, "preventClose"); - if (!preventClose) { - await writable.getWriter().close(); - } - return writer.getData ? writer.getData() : writable; - } -}; -var ZipWriterStream = class { - constructor(options = {}) { - const { readable, writable } = new TransformStream(); - this.readable = readable; - this.zipWriter = new ZipWriter(writable, options); - } - transform(path) { - const { readable, writable } = new TransformStream({ - flush: () => { - this.zipWriter.close(); - } - }); - this.zipWriter.add(path, readable); - return { readable: this.readable, writable }; - } - writable(path) { - const { readable, writable } = new TransformStream(); - this.zipWriter.add(path, readable); - return writable; - } - close(comment = void 0, options = {}) { - return this.zipWriter.close(comment, options); - } -}; -async function addFile(zipWriter, name, reader, options) { - name = name.trim(); - if (options.directory && !name.endsWith(DIRECTORY_SIGNATURE)) { - name += DIRECTORY_SIGNATURE; - } else { - options.directory = name.endsWith(DIRECTORY_SIGNATURE); - } - const encode = getOptionValue2(zipWriter, options, "encodeText", encodeText); - let rawFilename = encode(name); - if (rawFilename === UNDEFINED_VALUE) { - rawFilename = encodeText(name); - } - if (getLength(rawFilename) > MAX_16_BITS) { - throw new Error(ERR_INVALID_ENTRY_NAME); - } - const comment = options.comment || ""; - let rawComment = encode(comment); - if (rawComment === UNDEFINED_VALUE) { - rawComment = encodeText(comment); - } - if (getLength(rawComment) > MAX_16_BITS) { - throw new Error(ERR_INVALID_ENTRY_COMMENT); - } - const version = getOptionValue2(zipWriter, options, PROPERTY_NAME_VERSION, VERSION_DEFLATE); - if (version > MAX_16_BITS) { - throw new Error(ERR_INVALID_VERSION); - } - const versionMadeBy = getOptionValue2(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, 20); - if (versionMadeBy > MAX_16_BITS) { - throw new Error(ERR_INVALID_VERSION); - } - const lastModDate = getOptionValue2(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, /* @__PURE__ */ new Date()); - const lastAccessDate = getOptionValue2(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE); - const creationDate = getOptionValue2(zipWriter, options, PROPERTY_NAME_CREATION_DATE); - const msDosCompatible = getOptionValue2(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true); - const internalFileAttribute = getOptionValue2(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0); - const externalFileAttribute = getOptionValue2(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0); - const passThrough = getOptionValue2(zipWriter, options, "passThrough"); - let password, rawPassword; - if (!passThrough) { - password = getOptionValue2(zipWriter, options, "password"); - rawPassword = getOptionValue2(zipWriter, options, "rawPassword"); - } - const encryptionStrength = getOptionValue2(zipWriter, options, "encryptionStrength", 3); - const zipCrypto = getOptionValue2(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO); - const extendedTimestamp = getOptionValue2(zipWriter, options, "extendedTimestamp", true); - const keepOrder = getOptionValue2(zipWriter, options, "keepOrder", true); - const level = getOptionValue2(zipWriter, options, "level"); - const useWebWorkers = getOptionValue2(zipWriter, options, "useWebWorkers"); - const bufferedWrite = getOptionValue2(zipWriter, options, "bufferedWrite"); - const dataDescriptorSignature = getOptionValue2(zipWriter, options, "dataDescriptorSignature", false); - const signal = getOptionValue2(zipWriter, options, "signal"); - const useUnicodeFileNames = getOptionValue2(zipWriter, options, "useUnicodeFileNames", true); - const useCompressionStream = getOptionValue2(zipWriter, options, "useCompressionStream"); - const compressionMethod = getOptionValue2(zipWriter, options, "compressionMethod"); - let dataDescriptor = getOptionValue2(zipWriter, options, "dataDescriptor", true); - let zip64 = getOptionValue2(zipWriter, options, PROPERTY_NAME_ZIP64); - if (!zipCrypto && (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) && !(encryptionStrength >= 1 && encryptionStrength <= 3)) { - throw new Error(ERR_INVALID_ENCRYPTION_STRENGTH); - } - let rawExtraField = new Uint8Array(); - const { extraField } = options; - if (extraField) { - let extraFieldSize = 0; - let offset = 0; - extraField.forEach((data) => extraFieldSize += 4 + getLength(data)); - rawExtraField = new Uint8Array(extraFieldSize); - extraField.forEach((data, type) => { - if (type > MAX_16_BITS) { - throw new Error(ERR_INVALID_EXTRAFIELD_TYPE); - } - if (getLength(data) > MAX_16_BITS) { - throw new Error(ERR_INVALID_EXTRAFIELD_DATA); - } - arraySet(rawExtraField, new Uint16Array([type]), offset); - arraySet(rawExtraField, new Uint16Array([getLength(data)]), offset + 2); - arraySet(rawExtraField, data, offset + 4); - offset += 4 + getLength(data); - }); - } - let maximumCompressedSize = 0; - let maximumEntrySize = 0; - let uncompressedSize = 0; - if (passThrough) { - ({ uncompressedSize } = options); - if (uncompressedSize === UNDEFINED_VALUE) { - throw new Error(ERR_UNDEFINED_UNCOMPRESSED_SIZE); - } - } - const zip64Enabled = zip64 === true; - if (reader) { - reader = initReader(reader); - await initStream(reader); - if (!passThrough) { - if (reader.size === UNDEFINED_VALUE) { - dataDescriptor = true; - if (zip64 || zip64 === UNDEFINED_VALUE) { - zip64 = true; - uncompressedSize = maximumCompressedSize = MAX_32_BITS + 1; - } - } else { - uncompressedSize = reader.size; - maximumCompressedSize = getMaximumCompressedSize(uncompressedSize); - } - } else { - maximumCompressedSize = getMaximumCompressedSize(uncompressedSize); - } - } - const { diskOffset, diskNumber, maxSize } = zipWriter.writer; - const zip64UncompressedSize = zip64Enabled || uncompressedSize > MAX_32_BITS; - const zip64CompressedSize = zip64Enabled || maximumCompressedSize > MAX_32_BITS; - const zip64Offset = zip64Enabled || zipWriter.offset + zipWriter.pendingEntriesSize - diskOffset > MAX_32_BITS; - const supportZip64SplitFile = getOptionValue2(zipWriter, options, "supportZip64SplitFile", true); - const zip64DiskNumberStart = supportZip64SplitFile && zip64Enabled || diskNumber + Math.ceil(zipWriter.pendingEntriesSize / maxSize) > MAX_16_BITS; - if (zip64Offset || zip64UncompressedSize || zip64CompressedSize || zip64DiskNumberStart) { - if (zip64 === false || !keepOrder) { - throw new Error(ERR_UNSUPPORTED_FORMAT); - } else { - zip64 = true; - } - } - zip64 = zip64 || false; - const encrypted = getOptionValue2(zipWriter, options, PROPERTY_NAME_ENCRYPTED); - const { signature } = options; - options = Object.assign({}, options, { - rawFilename, - rawComment, - version, - versionMadeBy, - lastModDate, - lastAccessDate, - creationDate, - rawExtraField, - zip64, - zip64UncompressedSize, - zip64CompressedSize, - zip64Offset, - zip64DiskNumberStart, - password, - rawPassword, - level: !useCompressionStream && (zipWriter.config.CompressionStream === UNDEFINED_VALUE && zipWriter.config.CompressionStreamNative === UNDEFINED_VALUE) ? 0 : level, - useWebWorkers, - encryptionStrength, - extendedTimestamp, - zipCrypto, - bufferedWrite, - keepOrder, - useUnicodeFileNames, - dataDescriptor, - dataDescriptorSignature, - signal, - msDosCompatible, - internalFileAttribute, - externalFileAttribute, - useCompressionStream, - passThrough, - encrypted: Boolean(password && getLength(password) || rawPassword && getLength(rawPassword)) || passThrough && encrypted, - signature, - compressionMethod - }); - const headerInfo = getHeaderInfo(options); - const dataDescriptorInfo = getDataDescriptorInfo(options); - const metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray); - maximumEntrySize = metadataSize + maximumCompressedSize; - if (zipWriter.options.usdz) { - maximumEntrySize += maximumEntrySize + 64; - } - zipWriter.pendingEntriesSize += maximumEntrySize; - let fileEntry; - try { - fileEntry = await getFileEntry(zipWriter, name, reader, { headerInfo, dataDescriptorInfo, metadataSize }, options); - } finally { - zipWriter.pendingEntriesSize -= maximumEntrySize; - } - Object.assign(fileEntry, { name, comment, extraField }); - return new Entry(fileEntry); -} -async function getFileEntry(zipWriter, name, reader, entryInfo, options) { - const { - files, - writer - } = zipWriter; - const { - keepOrder, - dataDescriptor, - signal - } = options; - const { - headerInfo - } = entryInfo; - const { usdz } = zipWriter.options; - const previousFileEntry = Array.from(files.values()).pop(); - let fileEntry = {}; - let bufferedWrite; - let releaseLockWriter; - let releaseLockCurrentFileEntry; - let writingBufferedEntryData; - let writingEntryData; - let fileWriter; - let blobPromise; - files.set(name, fileEntry); - try { - let lockPreviousFileEntry; - if (keepOrder) { - lockPreviousFileEntry = previousFileEntry && previousFileEntry.lock; - requestLockCurrentFileEntry(); - } - if ((options.bufferedWrite || zipWriter.writerLocked || zipWriter.bufferedWrites && keepOrder || !dataDescriptor) && !usdz) { - fileWriter = new TransformStream(); - blobPromise = new Response(fileWriter.readable).blob(); - fileWriter.writable.size = 0; - bufferedWrite = true; - zipWriter.bufferedWrites++; - await initStream(writer); - } else { - fileWriter = writer; - await requestLockWriter(); - } - await initStream(fileWriter); - const { writable } = writer; - let { diskOffset } = writer; - if (zipWriter.addSplitZipSignature) { - delete zipWriter.addSplitZipSignature; - const signatureArray = new Uint8Array(4); - const signatureArrayView = getDataView2(signatureArray); - setUint322(signatureArrayView, 0, SPLIT_ZIP_FILE_SIGNATURE); - await writeData(writable, signatureArray); - zipWriter.offset += 4; - } - if (usdz) { - appendExtraFieldUSDZ(entryInfo, zipWriter.offset - diskOffset); - } - if (!bufferedWrite) { - await lockPreviousFileEntry; - await skipDiskIfNeeded(writable); - } - const { diskNumber } = writer; - writingEntryData = true; - fileEntry.diskNumberStart = diskNumber; - fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options); - writingEntryData = false; - files.set(name, fileEntry); - fileEntry.filename = name; - if (bufferedWrite) { - await fileWriter.writable.getWriter().close(); - let blob = await blobPromise; - await lockPreviousFileEntry; - await requestLockWriter(); - writingBufferedEntryData = true; - if (!dataDescriptor) { - blob = await writeExtraHeaderInfo(fileEntry, blob, writable, options); - } - await skipDiskIfNeeded(writable); - fileEntry.diskNumberStart = writer.diskNumber; - diskOffset = writer.diskOffset; - await blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal }); - writable.size += blob.size; - writingBufferedEntryData = false; - } - fileEntry.offset = zipWriter.offset - diskOffset; - if (fileEntry.zip64) { - setZip64ExtraInfo(fileEntry, options); - } else if (fileEntry.offset > MAX_32_BITS) { - throw new Error(ERR_UNSUPPORTED_FORMAT); - } - zipWriter.offset += fileEntry.size; - return fileEntry; - } catch (error) { - if (bufferedWrite && writingBufferedEntryData || !bufferedWrite && writingEntryData) { - zipWriter.hasCorruptedEntries = true; - if (error) { - try { - error.corruptedEntry = true; - } catch (_error) { - } - } - if (bufferedWrite) { - zipWriter.offset += fileWriter.writable.size; - } else { - zipWriter.offset = fileWriter.writable.size; - } - } - files.delete(name); - throw error; - } finally { - if (bufferedWrite) { - zipWriter.bufferedWrites--; - } - if (releaseLockCurrentFileEntry) { - releaseLockCurrentFileEntry(); - } - if (releaseLockWriter) { - releaseLockWriter(); - } - } - function requestLockCurrentFileEntry() { - fileEntry.lock = new Promise((resolve) => releaseLockCurrentFileEntry = resolve); - } - async function requestLockWriter() { - zipWriter.writerLocked = true; - const { lockWriter } = zipWriter; - zipWriter.lockWriter = new Promise((resolve) => releaseLockWriter = () => { - zipWriter.writerLocked = false; - resolve(); - }); - await lockWriter; - } - async function skipDiskIfNeeded(writable) { - if (getLength(headerInfo.localHeaderArray) > writer.availableSize) { - writer.availableSize = 0; - await writeData(writable, new Uint8Array()); - } - } -} -async function createFileEntry(reader, writer, { diskNumberStart, lock }, entryInfo, config2, options) { - const { - headerInfo, - dataDescriptorInfo, - metadataSize - } = entryInfo; - const { - localHeaderArray, - headerArray, - lastModDate, - rawLastModDate, - encrypted, - compressed, - version, - compressionMethod, - rawExtraFieldExtendedTimestamp, - extraFieldExtendedTimestampFlag, - rawExtraFieldNTFS, - rawExtraFieldAES - } = headerInfo; - const { dataDescriptorArray } = dataDescriptorInfo; - const { - rawFilename, - lastAccessDate, - creationDate, - password, - rawPassword, - level, - zip64, - zip64UncompressedSize, - zip64CompressedSize, - zip64Offset, - zip64DiskNumberStart, - zipCrypto, - dataDescriptor, - directory, - versionMadeBy, - rawComment, - rawExtraField, - useWebWorkers, - onstart, - onprogress, - onend, - signal, - encryptionStrength, - extendedTimestamp, - msDosCompatible, - internalFileAttribute, - externalFileAttribute, - useCompressionStream, - passThrough - } = options; - const fileEntry = { - lock, - versionMadeBy, - zip64, - directory: Boolean(directory), - filenameUTF8: true, - rawFilename, - commentUTF8: true, - rawComment, - rawExtraFieldExtendedTimestamp, - rawExtraFieldNTFS, - rawExtraFieldAES, - rawExtraField, - extendedTimestamp, - msDosCompatible, - internalFileAttribute, - externalFileAttribute, - diskNumberStart - }; - let { - signature, - uncompressedSize - } = options; - let compressedSize = 0; - if (!passThrough) { - uncompressedSize = 0; - } - const { writable } = writer; - if (reader) { - reader.chunkSize = getChunkSize(config2); - await writeData(writable, localHeaderArray); - const readable = reader.readable; - const size = readable.size = reader.size; - const workerOptions = { - options: { - codecType: CODEC_DEFLATE, - level, - rawPassword, - password, - encryptionStrength, - zipCrypto: encrypted && zipCrypto, - passwordVerification: encrypted && zipCrypto && rawLastModDate >> 8 & 255, - signed: !passThrough, - compressed: compressed && !passThrough, - encrypted: encrypted && !passThrough, - useWebWorkers, - useCompressionStream, - transferStreams: false - }, - config: config2, - streamOptions: { signal, size, onstart, onprogress, onend } - }; - const result = await runWorker2({ readable, writable }, workerOptions); - compressedSize = result.outputSize; - if (!passThrough) { - uncompressedSize = result.inputSize; - signature = result.signature; - } - writable.size += uncompressedSize; - } else { - await writeData(writable, localHeaderArray); - } - let rawExtraFieldZip64; - if (zip64) { - let rawExtraFieldZip64Length = 4; - if (zip64UncompressedSize) { - rawExtraFieldZip64Length += 8; - } - if (zip64CompressedSize) { - rawExtraFieldZip64Length += 8; - } - if (zip64Offset) { - rawExtraFieldZip64Length += 8; - } - if (zip64DiskNumberStart) { - rawExtraFieldZip64Length += 4; - } - rawExtraFieldZip64 = new Uint8Array(rawExtraFieldZip64Length); - } else { - rawExtraFieldZip64 = new Uint8Array(); - } - setEntryInfo({ - signature, - rawExtraFieldZip64, - compressedSize, - uncompressedSize, - headerInfo, - dataDescriptorInfo - }, options); - if (dataDescriptor) { - await writeData(writable, dataDescriptorArray); - } - Object.assign(fileEntry, { - uncompressedSize, - compressedSize, - lastModDate, - rawLastModDate, - creationDate, - lastAccessDate, - encrypted, - zipCrypto, - size: metadataSize + compressedSize, - compressionMethod, - version, - headerArray, - signature, - rawExtraFieldZip64, - extraFieldExtendedTimestampFlag, - zip64UncompressedSize, - zip64CompressedSize, - zip64Offset, - zip64DiskNumberStart - }); - return fileEntry; -} -function getHeaderInfo(options) { - const { - rawFilename, - lastModDate, - lastAccessDate, - creationDate, - level, - zip64, - zipCrypto, - useUnicodeFileNames, - dataDescriptor, - directory, - rawExtraField, - encryptionStrength, - extendedTimestamp, - encrypted - } = options; - let { version, compressionMethod } = options; - const compressed = !directory && (level > 0 || level === UNDEFINED_VALUE && compressionMethod !== 0); - let rawExtraFieldAES; - if (encrypted && !zipCrypto) { - rawExtraFieldAES = new Uint8Array(getLength(EXTRAFIELD_DATA_AES) + 2); - const extraFieldAESView = getDataView2(rawExtraFieldAES); - setUint16(extraFieldAESView, 0, EXTRAFIELD_TYPE_AES); - arraySet(rawExtraFieldAES, EXTRAFIELD_DATA_AES, 2); - setUint8(extraFieldAESView, 8, encryptionStrength); - } else { - rawExtraFieldAES = new Uint8Array(); - } - let rawExtraFieldNTFS; - let rawExtraFieldExtendedTimestamp; - let extraFieldExtendedTimestampFlag; - if (extendedTimestamp) { - rawExtraFieldExtendedTimestamp = new Uint8Array(9 + (lastAccessDate ? 4 : 0) + (creationDate ? 4 : 0)); - const extraFieldExtendedTimestampView = getDataView2(rawExtraFieldExtendedTimestamp); - setUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP); - setUint16(extraFieldExtendedTimestampView, 2, getLength(rawExtraFieldExtendedTimestamp) - 4); - extraFieldExtendedTimestampFlag = 1 + (lastAccessDate ? 2 : 0) + (creationDate ? 4 : 0); - setUint8(extraFieldExtendedTimestampView, 4, extraFieldExtendedTimestampFlag); - let offset = 5; - setUint322(extraFieldExtendedTimestampView, offset, Math.floor(lastModDate.getTime() / 1e3)); - offset += 4; - if (lastAccessDate) { - setUint322(extraFieldExtendedTimestampView, offset, Math.floor(lastAccessDate.getTime() / 1e3)); - offset += 4; - } - if (creationDate) { - setUint322(extraFieldExtendedTimestampView, offset, Math.floor(creationDate.getTime() / 1e3)); - } - try { - rawExtraFieldNTFS = new Uint8Array(36); - const extraFieldNTFSView = getDataView2(rawExtraFieldNTFS); - const lastModTimeNTFS = getTimeNTFS(lastModDate); - setUint16(extraFieldNTFSView, 0, EXTRAFIELD_TYPE_NTFS); - setUint16(extraFieldNTFSView, 2, 32); - setUint16(extraFieldNTFSView, 8, EXTRAFIELD_TYPE_NTFS_TAG1); - setUint16(extraFieldNTFSView, 10, 24); - setBigUint64(extraFieldNTFSView, 12, lastModTimeNTFS); - setBigUint64(extraFieldNTFSView, 20, getTimeNTFS(lastAccessDate) || lastModTimeNTFS); - setBigUint64(extraFieldNTFSView, 28, getTimeNTFS(creationDate) || lastModTimeNTFS); - } catch (_error) { - rawExtraFieldNTFS = new Uint8Array(); - } - } else { - rawExtraFieldNTFS = rawExtraFieldExtendedTimestamp = new Uint8Array(); - } - let bitFlag = 0; - if (useUnicodeFileNames) { - bitFlag = bitFlag | BITFLAG_LANG_ENCODING_FLAG; - } - if (dataDescriptor) { - bitFlag = bitFlag | BITFLAG_DATA_DESCRIPTOR; - } - if (compressionMethod === UNDEFINED_VALUE) { - compressionMethod = compressed ? COMPRESSION_METHOD_DEFLATE : COMPRESSION_METHOD_STORE; - } - if (compressionMethod == COMPRESSION_METHOD_DEFLATE) { - if (level >= 1 && level < 3) { - bitFlag = bitFlag | 6; - } - if (level >= 3 && level < 5) { - bitFlag = bitFlag | 1; - } - if (level === 9) { - bitFlag = bitFlag | 2; - } - } - if (zip64) { - version = version > VERSION_ZIP64 ? version : VERSION_ZIP64; - } - if (encrypted) { - bitFlag = bitFlag | BITFLAG_ENCRYPTED; - if (!zipCrypto) { - version = version > VERSION_AES ? version : VERSION_AES; - rawExtraFieldAES[9] = compressionMethod; - compressionMethod = COMPRESSION_METHOD_AES; - } - } - const headerArray = new Uint8Array(26); - const headerView = getDataView2(headerArray); - setUint16(headerView, 0, version); - setUint16(headerView, 2, bitFlag); - setUint16(headerView, 4, compressionMethod); - const dateArray = new Uint32Array(1); - const dateView = getDataView2(dateArray); - let lastModDateMsDos; - if (lastModDate < MIN_DATE) { - lastModDateMsDos = MIN_DATE; - } else if (lastModDate > MAX_DATE) { - lastModDateMsDos = MAX_DATE; - } else { - lastModDateMsDos = lastModDate; - } - setUint16(dateView, 0, (lastModDateMsDos.getHours() << 6 | lastModDateMsDos.getMinutes()) << 5 | lastModDateMsDos.getSeconds() / 2); - setUint16(dateView, 2, (lastModDateMsDos.getFullYear() - 1980 << 4 | lastModDateMsDos.getMonth() + 1) << 5 | lastModDateMsDos.getDate()); - const rawLastModDate = dateArray[0]; - setUint322(headerView, 6, rawLastModDate); - setUint16(headerView, 22, getLength(rawFilename)); - const extraFieldLength = getLength(rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraField); - setUint16(headerView, 24, extraFieldLength); - const localHeaderArray = new Uint8Array(30 + getLength(rawFilename) + extraFieldLength); - const localHeaderView = getDataView2(localHeaderArray); - setUint322(localHeaderView, 0, LOCAL_FILE_HEADER_SIGNATURE); - arraySet(localHeaderArray, headerArray, 4); - arraySet(localHeaderArray, rawFilename, 30); - arraySet(localHeaderArray, rawExtraFieldAES, 30 + getLength(rawFilename)); - arraySet(localHeaderArray, rawExtraFieldExtendedTimestamp, 30 + getLength(rawFilename, rawExtraFieldAES)); - arraySet(localHeaderArray, rawExtraFieldNTFS, 30 + getLength(rawFilename, rawExtraFieldAES, rawExtraFieldExtendedTimestamp)); - arraySet(localHeaderArray, rawExtraField, 30 + getLength(rawFilename, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS)); - return { - localHeaderArray, - headerArray, - headerView, - lastModDate, - rawLastModDate, - encrypted, - compressed, - version, - compressionMethod, - extraFieldExtendedTimestampFlag, - rawExtraFieldExtendedTimestamp, - rawExtraFieldNTFS, - rawExtraFieldAES, - extraFieldLength - }; -} -function appendExtraFieldUSDZ(entryInfo, zipWriterOffset) { - const { headerInfo } = entryInfo; - let { localHeaderArray, extraFieldLength } = headerInfo; - let localHeaderArrayView = getDataView2(localHeaderArray); - let extraBytesLength = 64 - (zipWriterOffset + getLength(localHeaderArray)) % 64; - if (extraBytesLength < 4) { - extraBytesLength += 64; - } - const rawExtraFieldUSDZ = new Uint8Array(extraBytesLength); - const extraFieldUSDZView = getDataView2(rawExtraFieldUSDZ); - setUint16(extraFieldUSDZView, 0, EXTRAFIELD_TYPE_USDZ); - setUint16(extraFieldUSDZView, 2, extraBytesLength - 2); - const previousLocalHeaderArray = localHeaderArray; - headerInfo.localHeaderArray = localHeaderArray = new Uint8Array(getLength(previousLocalHeaderArray) + extraBytesLength); - arraySet(localHeaderArray, previousLocalHeaderArray); - arraySet(localHeaderArray, rawExtraFieldUSDZ, getLength(previousLocalHeaderArray)); - localHeaderArrayView = getDataView2(localHeaderArray); - setUint16(localHeaderArrayView, 28, extraFieldLength + extraBytesLength); - entryInfo.metadataSize += extraBytesLength; -} -function getDataDescriptorInfo(options) { - const { - zip64, - dataDescriptor, - dataDescriptorSignature - } = options; - let dataDescriptorArray = new Uint8Array(); - let dataDescriptorView, dataDescriptorOffset = 0; - if (dataDescriptor) { - dataDescriptorArray = new Uint8Array(zip64 ? dataDescriptorSignature ? 24 : 20 : dataDescriptorSignature ? 16 : 12); - dataDescriptorView = getDataView2(dataDescriptorArray); - if (dataDescriptorSignature) { - dataDescriptorOffset = 4; - setUint322(dataDescriptorView, 0, DATA_DESCRIPTOR_RECORD_SIGNATURE); - } - } - return { - dataDescriptorArray, - dataDescriptorView, - dataDescriptorOffset - }; -} -function setEntryInfo(entryInfo, options) { - const { - signature, - rawExtraFieldZip64, - compressedSize, - uncompressedSize, - headerInfo, - dataDescriptorInfo - } = entryInfo; - const { - headerView, - encrypted - } = headerInfo; - const { - dataDescriptorView, - dataDescriptorOffset - } = dataDescriptorInfo; - const { - zip64, - zip64UncompressedSize, - zip64CompressedSize, - zipCrypto, - dataDescriptor - } = options; - if ((!encrypted || zipCrypto) && signature !== UNDEFINED_VALUE) { - setUint322(headerView, 10, signature); - if (dataDescriptor) { - setUint322(dataDescriptorView, dataDescriptorOffset, signature); - } - } - if (zip64) { - const rawExtraFieldZip64View = getDataView2(rawExtraFieldZip64); - setUint16(rawExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64); - setUint16(rawExtraFieldZip64View, 2, getLength(rawExtraFieldZip64) - 4); - let rawExtraFieldZip64Offset = 4; - if (zip64UncompressedSize) { - setUint322(headerView, 18, MAX_32_BITS); - setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize)); - rawExtraFieldZip64Offset += 8; - } - if (zip64CompressedSize) { - setUint322(headerView, 14, MAX_32_BITS); - setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(compressedSize)); - } - if (dataDescriptor) { - setBigUint64(dataDescriptorView, dataDescriptorOffset + 4, BigInt(compressedSize)); - setBigUint64(dataDescriptorView, dataDescriptorOffset + 12, BigInt(uncompressedSize)); - } - } else { - setUint322(headerView, 14, compressedSize); - setUint322(headerView, 18, uncompressedSize); - if (dataDescriptor) { - setUint322(dataDescriptorView, dataDescriptorOffset + 4, compressedSize); - setUint322(dataDescriptorView, dataDescriptorOffset + 8, uncompressedSize); - } - } -} -async function writeExtraHeaderInfo(fileEntry, entryData, writable, { zipCrypto }) { - let arrayBuffer; - arrayBuffer = await entryData.slice(0, 26).arrayBuffer(); - if (arrayBuffer.byteLength != 26) { - arrayBuffer = arrayBuffer.slice(0, 26); - } - const arrayBufferView = new DataView(arrayBuffer); - if (!fileEntry.encrypted || zipCrypto) { - setUint322(arrayBufferView, 14, fileEntry.signature); - } - if (fileEntry.zip64) { - setUint322(arrayBufferView, 18, MAX_32_BITS); - setUint322(arrayBufferView, 22, MAX_32_BITS); - } else { - setUint322(arrayBufferView, 18, fileEntry.compressedSize); - setUint322(arrayBufferView, 22, fileEntry.uncompressedSize); - } - await writeData(writable, new Uint8Array(arrayBuffer)); - return entryData.slice(arrayBuffer.byteLength); -} -function setZip64ExtraInfo(fileEntry, options) { - const { rawExtraFieldZip64, offset, diskNumberStart } = fileEntry; - const { zip64UncompressedSize, zip64CompressedSize, zip64Offset, zip64DiskNumberStart } = options; - const rawExtraFieldZip64View = getDataView2(rawExtraFieldZip64); - let rawExtraFieldZip64Offset = 4; - if (zip64UncompressedSize) { - rawExtraFieldZip64Offset += 8; - } - if (zip64CompressedSize) { - rawExtraFieldZip64Offset += 8; - } - if (zip64Offset) { - setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(offset)); - rawExtraFieldZip64Offset += 8; - } - if (zip64DiskNumberStart) { - setUint322(rawExtraFieldZip64View, rawExtraFieldZip64Offset, diskNumberStart); - } -} -async function closeFile(zipWriter, comment, options) { - const { files, writer } = zipWriter; - const { diskOffset, writable } = writer; - let { diskNumber } = writer; - let offset = 0; - let directoryDataLength = 0; - let directoryOffset = zipWriter.offset - diskOffset; - let filesLength = files.size; - for (const [, fileEntry] of files) { - const { - rawFilename, - rawExtraFieldZip64, - rawExtraFieldAES, - rawComment, - rawExtraFieldNTFS, - rawExtraField, - extendedTimestamp, - extraFieldExtendedTimestampFlag, - lastModDate - } = fileEntry; - let rawExtraFieldTimestamp; - if (extendedTimestamp) { - rawExtraFieldTimestamp = new Uint8Array(9); - const extraFieldExtendedTimestampView = getDataView2(rawExtraFieldTimestamp); - setUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP); - setUint16(extraFieldExtendedTimestampView, 2, 5); - setUint8(extraFieldExtendedTimestampView, 4, extraFieldExtendedTimestampFlag); - setUint322(extraFieldExtendedTimestampView, 5, Math.floor(lastModDate.getTime() / 1e3)); - } else { - rawExtraFieldTimestamp = new Uint8Array(); - } - fileEntry.rawExtraFieldCDExtendedTimestamp = rawExtraFieldTimestamp; - directoryDataLength += 46 + getLength( - rawFilename, - rawComment, - rawExtraFieldZip64, - rawExtraFieldAES, - rawExtraFieldNTFS, - rawExtraFieldTimestamp, - rawExtraField - ); - } - const directoryArray = new Uint8Array(directoryDataLength); - const directoryView = getDataView2(directoryArray); - await initStream(writer); - let directoryDiskOffset = 0; - for (const [indexFileEntry, fileEntry] of Array.from(files.values()).entries()) { - const { - offset: fileEntryOffset, - rawFilename, - rawExtraFieldZip64, - rawExtraFieldAES, - rawExtraFieldCDExtendedTimestamp, - rawExtraFieldNTFS, - rawExtraField, - rawComment, - versionMadeBy, - headerArray, - directory, - zip64: zip642, - zip64UncompressedSize, - zip64CompressedSize, - zip64DiskNumberStart, - zip64Offset, - msDosCompatible, - internalFileAttribute, - externalFileAttribute, - diskNumberStart, - uncompressedSize, - compressedSize - } = fileEntry; - const extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp, rawExtraFieldNTFS, rawExtraField); - setUint322(directoryView, offset, CENTRAL_FILE_HEADER_SIGNATURE); - setUint16(directoryView, offset + 4, versionMadeBy); - const headerView = getDataView2(headerArray); - if (!zip64UncompressedSize) { - setUint322(headerView, 18, uncompressedSize); - } - if (!zip64CompressedSize) { - setUint322(headerView, 14, compressedSize); - } - arraySet(directoryArray, headerArray, offset + 6); - setUint16(directoryView, offset + 30, extraFieldLength); - setUint16(directoryView, offset + 32, getLength(rawComment)); - setUint16(directoryView, offset + 34, zip642 && zip64DiskNumberStart ? MAX_16_BITS : diskNumberStart); - setUint16(directoryView, offset + 36, internalFileAttribute); - if (externalFileAttribute) { - setUint322(directoryView, offset + 38, externalFileAttribute); - } else if (directory && msDosCompatible) { - setUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK); - } - setUint322(directoryView, offset + 42, zip642 && zip64Offset ? MAX_32_BITS : fileEntryOffset); - arraySet(directoryArray, rawFilename, offset + 46); - arraySet(directoryArray, rawExtraFieldZip64, offset + 46 + getLength(rawFilename)); - arraySet(directoryArray, rawExtraFieldAES, offset + 46 + getLength(rawFilename, rawExtraFieldZip64)); - arraySet(directoryArray, rawExtraFieldCDExtendedTimestamp, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES)); - arraySet(directoryArray, rawExtraFieldNTFS, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp)); - arraySet(directoryArray, rawExtraField, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp, rawExtraFieldNTFS)); - arraySet(directoryArray, rawComment, offset + 46 + getLength(rawFilename) + extraFieldLength); - const directoryEntryLength = 46 + getLength(rawFilename, rawComment) + extraFieldLength; - if (offset - directoryDiskOffset > writer.availableSize) { - writer.availableSize = 0; - await writeData(writable, directoryArray.slice(directoryDiskOffset, offset)); - directoryDiskOffset = offset; - } - offset += directoryEntryLength; - if (options.onprogress) { - try { - await options.onprogress(indexFileEntry + 1, files.size, new Entry(fileEntry)); - } catch (_error) { - } - } - } - await writeData(writable, directoryDiskOffset ? directoryArray.slice(directoryDiskOffset) : directoryArray); - let lastDiskNumber = writer.diskNumber; - const { availableSize } = writer; - if (availableSize < END_OF_CENTRAL_DIR_LENGTH) { - lastDiskNumber++; - } - let zip64 = getOptionValue2(zipWriter, options, PROPERTY_NAME_ZIP64); - if (directoryOffset > MAX_32_BITS || directoryDataLength > MAX_32_BITS || filesLength > MAX_16_BITS || lastDiskNumber > MAX_16_BITS) { - if (zip64 === false) { - throw new Error(ERR_UNSUPPORTED_FORMAT); - } else { - zip64 = true; - } - } - const endOfdirectoryArray = new Uint8Array(zip64 ? ZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH : END_OF_CENTRAL_DIR_LENGTH); - const endOfdirectoryView = getDataView2(endOfdirectoryArray); - offset = 0; - if (zip64) { - setUint322(endOfdirectoryView, 0, ZIP64_END_OF_CENTRAL_DIR_SIGNATURE); - setBigUint64(endOfdirectoryView, 4, BigInt(44)); - setUint16(endOfdirectoryView, 12, 45); - setUint16(endOfdirectoryView, 14, 45); - setUint322(endOfdirectoryView, 16, lastDiskNumber); - setUint322(endOfdirectoryView, 20, diskNumber); - setBigUint64(endOfdirectoryView, 24, BigInt(filesLength)); - setBigUint64(endOfdirectoryView, 32, BigInt(filesLength)); - setBigUint64(endOfdirectoryView, 40, BigInt(directoryDataLength)); - setBigUint64(endOfdirectoryView, 48, BigInt(directoryOffset)); - setUint322(endOfdirectoryView, 56, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE); - setBigUint64(endOfdirectoryView, 64, BigInt(directoryOffset) + BigInt(directoryDataLength)); - setUint322(endOfdirectoryView, 72, lastDiskNumber + 1); - const supportZip64SplitFile = getOptionValue2(zipWriter, options, "supportZip64SplitFile", true); - if (supportZip64SplitFile) { - lastDiskNumber = MAX_16_BITS; - diskNumber = MAX_16_BITS; - } - filesLength = MAX_16_BITS; - directoryOffset = MAX_32_BITS; - directoryDataLength = MAX_32_BITS; - offset += ZIP64_END_OF_CENTRAL_DIR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH; - } - setUint322(endOfdirectoryView, offset, END_OF_CENTRAL_DIR_SIGNATURE); - setUint16(endOfdirectoryView, offset + 4, lastDiskNumber); - setUint16(endOfdirectoryView, offset + 6, diskNumber); - setUint16(endOfdirectoryView, offset + 8, filesLength); - setUint16(endOfdirectoryView, offset + 10, filesLength); - setUint322(endOfdirectoryView, offset + 12, directoryDataLength); - setUint322(endOfdirectoryView, offset + 16, directoryOffset); - const commentLength = getLength(comment); - if (commentLength) { - if (commentLength <= MAX_16_BITS) { - setUint16(endOfdirectoryView, offset + 20, commentLength); - } else { - throw new Error(ERR_INVALID_COMMENT); - } - } - await writeData(writable, endOfdirectoryArray); - if (commentLength) { - await writeData(writable, comment); - } -} -async function writeData(writable, array) { - const streamWriter = writable.getWriter(); - try { - await streamWriter.ready; - writable.size += getLength(array); - await streamWriter.write(array); - } finally { - streamWriter.releaseLock(); - } -} -function getTimeNTFS(date) { - if (date) { - return (BigInt(date.getTime()) + BigInt(116444736e5)) * BigInt(1e4); - } -} -function getOptionValue2(zipWriter, options, name, defaultValue) { - const result = options[name] === UNDEFINED_VALUE ? zipWriter.options[name] : options[name]; - return result === UNDEFINED_VALUE ? defaultValue : result; -} -function getMaximumCompressedSize(uncompressedSize) { - return uncompressedSize + 5 * (Math.floor(uncompressedSize / 16383) + 1); -} -function setUint8(view, offset, value) { - view.setUint8(offset, value); -} -function setUint16(view, offset, value) { - view.setUint16(offset, value, true); -} -function setUint322(view, offset, value) { - view.setUint32(offset, value, true); -} -function setBigUint64(view, offset, value) { - view.setBigUint64(offset, value, true); -} -function arraySet(array, typedArray, offset) { - array.set(typedArray, offset); -} -function getDataView2(array) { - return new DataView(array.buffer); -} -function getLength(...arrayLikes) { - let result = 0; - arrayLikes.forEach((arrayLike) => arrayLike && (result += arrayLike.length)); - return result; -} - -// node_modules/@zip.js/zip.js/lib/zip.js -var baseURL; -try { - baseURL = import.meta.url; -} catch (_error) { -} -configure({ baseURL }); -e(configure); -export { - BlobReader, - BlobWriter, - Data64URIReader, - Data64URIWriter, - ERR_BAD_FORMAT, - ERR_CENTRAL_DIRECTORY_NOT_FOUND, - ERR_DUPLICATED_NAME, - ERR_ENCRYPTED, - ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND, - ERR_EOCDR_NOT_FOUND, - ERR_EXTRAFIELD_ZIP64_NOT_FOUND, - ERR_HTTP_RANGE, - ERR_INVALID_COMMENT, - ERR_INVALID_ENCRYPTION_STRENGTH, - ERR_INVALID_ENTRY_COMMENT, - ERR_INVALID_ENTRY_NAME, - ERR_INVALID_EXTRAFIELD_DATA, - ERR_INVALID_EXTRAFIELD_TYPE, - ERR_INVALID_PASSWORD, - ERR_INVALID_SIGNATURE, - ERR_INVALID_VERSION, - ERR_ITERATOR_COMPLETED_TOO_SOON, - ERR_LOCAL_FILE_HEADER_NOT_FOUND, - ERR_SPLIT_ZIP_FILE, - ERR_UNDEFINED_UNCOMPRESSED_SIZE, - ERR_UNSUPPORTED_COMPRESSION, - ERR_UNSUPPORTED_ENCRYPTION, - ERR_UNSUPPORTED_FORMAT, - HttpRangeReader, - HttpReader, - Reader, - SplitDataReader, - SplitDataWriter, - SplitZipReader, - SplitZipWriter, - TextReader, - TextWriter, - Uint8ArrayReader, - Uint8ArrayWriter, - Writer, - ZipReader, - ZipReaderStream, - ZipWriter, - ZipWriterStream, - configure, - getMimeType, - initReader, - initShimAsyncCodec, - initStream, - initWriter, - readUint8Array, - terminateWorkers -}; -//# sourceMappingURL=zip.js.map diff --git a/vendor/yomitan/lib/zip.js.map b/vendor/yomitan/lib/zip.js.map deleted file mode 100644 index 68d1592a..00000000 --- a/vendor/yomitan/lib/zip.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/@zip.js/zip.js/lib/core/constants.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/stream-adapter.js", "../../node_modules/@zip.js/zip.js/lib/core/configuration.js", "../../node_modules/@zip.js/zip.js/lib/z-worker-inline.js", "../../node_modules/@zip.js/zip.js/lib/core/util/default-mime-type.js", "../../node_modules/@zip.js/zip.js/lib/core/util/stream-codec-shim.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codecs/crc32.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/crc32-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/util/encode-text.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codecs/sjcl.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/common-crypto.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/aes-crypto-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/zip-crypto-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/zip-entry-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/streams/codec-stream.js", "../../node_modules/@zip.js/zip.js/lib/core/codec-worker.js", "../../node_modules/@zip.js/zip.js/lib/core/codec-pool.js", "../../node_modules/@zip.js/zip.js/lib/core/io.js", "../../node_modules/@zip.js/zip.js/lib/core/util/cp437-decode.js", "../../node_modules/@zip.js/zip.js/lib/core/util/decode-text.js", "../../node_modules/@zip.js/zip.js/lib/core/zip-entry.js", "../../node_modules/@zip.js/zip.js/lib/core/zip-reader.js", "../../node_modules/@zip.js/zip.js/lib/core/zip-writer.js", "../../node_modules/@zip.js/zip.js/lib/zip.js"], - "sourcesContent": ["/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst MAX_32_BITS = 0xffffffff;\nconst MAX_16_BITS = 0xffff;\nconst COMPRESSION_METHOD_DEFLATE = 0x08;\nconst COMPRESSION_METHOD_STORE = 0x00;\nconst COMPRESSION_METHOD_AES = 0x63;\n\nconst LOCAL_FILE_HEADER_SIGNATURE = 0x04034b50;\nconst SPLIT_ZIP_FILE_SIGNATURE = 0x08074b50;\nconst DATA_DESCRIPTOR_RECORD_SIGNATURE = SPLIT_ZIP_FILE_SIGNATURE;\nconst CENTRAL_FILE_HEADER_SIGNATURE = 0x02014b50;\nconst END_OF_CENTRAL_DIR_SIGNATURE = 0x06054b50;\nconst ZIP64_END_OF_CENTRAL_DIR_SIGNATURE = 0x06064b50;\nconst ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE = 0x07064b50;\nconst END_OF_CENTRAL_DIR_LENGTH = 22;\nconst ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH = 20;\nconst ZIP64_END_OF_CENTRAL_DIR_LENGTH = 56;\nconst ZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH = END_OF_CENTRAL_DIR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LENGTH;\n\nconst EXTRAFIELD_TYPE_ZIP64 = 0x0001;\nconst EXTRAFIELD_TYPE_AES = 0x9901;\nconst EXTRAFIELD_TYPE_NTFS = 0x000a;\nconst EXTRAFIELD_TYPE_NTFS_TAG1 = 0x0001;\nconst EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP = 0x5455;\nconst EXTRAFIELD_TYPE_UNICODE_PATH = 0x7075;\nconst EXTRAFIELD_TYPE_UNICODE_COMMENT = 0x6375;\nconst EXTRAFIELD_TYPE_USDZ = 0x1986;\n\nconst BITFLAG_ENCRYPTED = 0x01;\nconst BITFLAG_LEVEL = 0x06;\nconst BITFLAG_DATA_DESCRIPTOR = 0x0008;\nconst BITFLAG_LANG_ENCODING_FLAG = 0x0800;\nconst FILE_ATTR_MSDOS_DIR_MASK = 0x10;\n\nconst VERSION_DEFLATE = 0x14;\nconst VERSION_ZIP64 = 0x2D;\nconst VERSION_AES = 0x33;\n\nconst DIRECTORY_SIGNATURE = \"/\";\n\nconst MAX_DATE = new Date(2107, 11, 31);\nconst MIN_DATE = new Date(1980, 0, 1);\n\nconst UNDEFINED_VALUE = undefined;\nconst UNDEFINED_TYPE = \"undefined\";\nconst FUNCTION_TYPE = \"function\";\n\nexport {\n\tMAX_32_BITS,\n\tMAX_16_BITS,\n\tCOMPRESSION_METHOD_DEFLATE,\n\tCOMPRESSION_METHOD_STORE,\n\tCOMPRESSION_METHOD_AES,\n\tSPLIT_ZIP_FILE_SIGNATURE,\n\tLOCAL_FILE_HEADER_SIGNATURE,\n\tDATA_DESCRIPTOR_RECORD_SIGNATURE,\n\tCENTRAL_FILE_HEADER_SIGNATURE,\n\tEND_OF_CENTRAL_DIR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_SIGNATURE,\n\tEXTRAFIELD_TYPE_ZIP64,\n\tEXTRAFIELD_TYPE_AES,\n\tEXTRAFIELD_TYPE_NTFS,\n\tEXTRAFIELD_TYPE_NTFS_TAG1,\n\tEXTRAFIELD_TYPE_EXTENDED_TIMESTAMP,\n\tEXTRAFIELD_TYPE_UNICODE_PATH,\n\tEXTRAFIELD_TYPE_UNICODE_COMMENT,\n\tEXTRAFIELD_TYPE_USDZ,\n\tEND_OF_CENTRAL_DIR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH,\n\tBITFLAG_ENCRYPTED,\n\tBITFLAG_LEVEL,\n\tBITFLAG_DATA_DESCRIPTOR,\n\tBITFLAG_LANG_ENCODING_FLAG,\n\tFILE_ATTR_MSDOS_DIR_MASK,\n\tVERSION_DEFLATE,\n\tVERSION_ZIP64,\n\tVERSION_AES,\n\tDIRECTORY_SIGNATURE,\n\tMIN_DATE,\n\tMAX_DATE,\n\tUNDEFINED_VALUE,\n\tUNDEFINED_TYPE,\n\tFUNCTION_TYPE\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n\nexport {\n\tStreamAdapter\n};\n\nclass StreamAdapter {\n\n\tconstructor(Codec) {\n\t\treturn class extends TransformStream {\n\t\t\tconstructor(_format, options) {\n\t\t\t\tconst codec = new Codec(options);\n\t\t\t\tsuper({\n\t\t\t\t\ttransform(chunk, controller) {\n\t\t\t\t\t\tcontroller.enqueue(codec.append(chunk));\n\t\t\t\t\t},\n\t\t\t\t\tflush(controller) {\n\t\t\t\t\t\tconst chunk = codec.flush();\n\t\t\t\t\t\tif (chunk) {\n\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global navigator, CompressionStream, DecompressionStream */\n\nimport {\n\tUNDEFINED_VALUE,\n\tUNDEFINED_TYPE\n} from \"./constants.js\";\nimport { StreamAdapter } from \"./streams/stream-adapter.js\";\n\nconst MINIMUM_CHUNK_SIZE = 64;\nlet maxWorkers = 2;\ntry {\n\tif (typeof navigator != UNDEFINED_TYPE && navigator.hardwareConcurrency) {\n\t\tmaxWorkers = navigator.hardwareConcurrency;\n\t}\n} catch (_error) {\n\t// ignored\n}\nconst DEFAULT_CONFIGURATION = {\n\tchunkSize: 512 * 1024,\n\tmaxWorkers,\n\tterminateWorkerTimeout: 5000,\n\tuseWebWorkers: true,\n\tuseCompressionStream: true,\n\tworkerScripts: UNDEFINED_VALUE,\n\tCompressionStreamNative: typeof CompressionStream != UNDEFINED_TYPE && CompressionStream,\n\tDecompressionStreamNative: typeof DecompressionStream != UNDEFINED_TYPE && DecompressionStream\n};\n\nconst config = Object.assign({}, DEFAULT_CONFIGURATION);\n\nexport {\n\tconfigure,\n\tgetConfiguration,\n\tgetChunkSize\n};\n\nfunction getConfiguration() {\n\treturn config;\n}\n\nfunction getChunkSize(config) {\n\treturn Math.max(config.chunkSize, MINIMUM_CHUNK_SIZE);\n}\n\nfunction configure(configuration) {\n\tconst {\n\t\tbaseURL,\n\t\tchunkSize,\n\t\tmaxWorkers,\n\t\tterminateWorkerTimeout,\n\t\tuseCompressionStream,\n\t\tuseWebWorkers,\n\t\tDeflate,\n\t\tInflate,\n\t\tCompressionStream,\n\t\tDecompressionStream,\n\t\tworkerScripts\n\t} = configuration;\n\tsetIfDefined(\"baseURL\", baseURL);\n\tsetIfDefined(\"chunkSize\", chunkSize);\n\tsetIfDefined(\"maxWorkers\", maxWorkers);\n\tsetIfDefined(\"terminateWorkerTimeout\", terminateWorkerTimeout);\n\tsetIfDefined(\"useCompressionStream\", useCompressionStream);\n\tsetIfDefined(\"useWebWorkers\", useWebWorkers);\n\tif (Deflate) {\n\t\tconfig.CompressionStream = new StreamAdapter(Deflate);\n\t}\n\tif (Inflate) {\n\t\tconfig.DecompressionStream = new StreamAdapter(Inflate);\n\t}\n\tsetIfDefined(\"CompressionStream\", CompressionStream);\n\tsetIfDefined(\"DecompressionStream\", DecompressionStream);\n\tif (workerScripts !== UNDEFINED_VALUE) {\n\t\tconst { deflate, inflate } = workerScripts;\n\t\tif (deflate || inflate) {\n\t\t\tif (!config.workerScripts) {\n\t\t\t\tconfig.workerScripts = {};\n\t\t\t}\n\t\t}\n\t\tif (deflate) {\n\t\t\tif (!Array.isArray(deflate)) {\n\t\t\t\tthrow new Error(\"workerScripts.deflate must be an array\");\n\t\t\t}\n\t\t\tconfig.workerScripts.deflate = deflate;\n\t\t}\n\t\tif (inflate) {\n\t\t\tif (!Array.isArray(inflate)) {\n\t\t\t\tthrow new Error(\"workerScripts.inflate must be an array\");\n\t\t\t}\n\t\t\tconfig.workerScripts.inflate = inflate;\n\t\t}\n\t}\n}\n\nfunction setIfDefined(propertyName, propertyValue) {\n\tif (propertyValue !== UNDEFINED_VALUE) {\n\t\tconfig[propertyName] = propertyValue;\n\t}\n}\n", "function e(e,t={}){const n='const{Array:e,Object:t,Number:n,Math:r,Error:s,Uint8Array:i,Uint16Array:o,Uint32Array:c,Int32Array:f,Map:a,DataView:l,Promise:u,TextEncoder:w,crypto:h,postMessage:d,TransformStream:p,ReadableStream:y,WritableStream:m,CompressionStream:b,DecompressionStream:g}=self,k=void 0,v=\"undefined\",S=\"function\";class z{constructor(e){return class extends p{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e))},flush(e){const t=r.flush();t&&e.enqueue(t)}})}}}}const C=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;C[e]=t}class x{constructor(e){this.t=e||-1}append(e){let t=0|this.t;for(let n=0,r=0|e.length;r>n;n++)t=t>>>8^C[255&(t^e[n])];this.t=t}get(){return~this.t}}class A extends p{constructor(){let e;const t=new x;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new i(4);new l(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const _={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=_.i(n);return 32===r?e.concat(t):_.o(t,r,0|n,e.slice(0,e.length-1))},l(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+_.i(n)},u(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,r.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=_.h(t,e[n-1]&2147483648>>t-1,1)),e},h:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,i:e=>r.round(e/1099511627776)||32,o(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let s=0;s<e.length;s++)r.push(n|e[s]>>>t),n=e[s]<<32-t;const s=e.length?e[e.length-1]:0,i=_.i(s);return r.push(_.h(t+i&31,t+i>32?n:r.pop(),1)),r}},I={bytes:{p(e){const t=_.l(e)/8,n=new i(t);let r;for(let s=0;t>s;s++)3&s||(r=e[s/4]),n[s]=r>>>24,r<<=8;return n},m(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(_.h(8*(3&n),r)),t}}},P=class{constructor(e){const t=this;t.blockSize=512,t.k=[1732584193,4023233417,2562383102,271733878,3285377520],t.v=[1518500249,1859775393,2400959708,3395469782],e?(t.S=e.S.slice(0),t.C=e.C.slice(0),t.A=e.A):t.reset()}reset(){const e=this;return e.S=e.k.slice(0),e.C=[],e.A=0,e}update(e){const t=this;\"string\"==typeof e&&(e=I._.m(e));const n=t.C=_.concat(t.C,e),r=t.A,i=t.A=r+_.l(e);if(i>9007199254740991)throw new s(\"Cannot hash more than 2^53 - 1 bits\");const o=new c(n);let f=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);i>=e;e+=t.blockSize)t.I(o.subarray(16*f,16*(f+1))),f+=1;return n.splice(0,16*f),t}P(){const e=this;let t=e.C;const n=e.S;t=_.concat(t,[_.h(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(r.floor(e.A/4294967296)),t.push(0|e.A);t.length;)e.I(t.splice(0,16));return e.reset(),n}D(e,t,n,r){return e>19?e>39?e>59?e>79?void 0:t^n^r:t&n|t&r|n&r:t^n^r:t&n|~t&r}V(e,t){return t<<e|t>>>32-e}I(t){const n=this,s=n.S,i=e(80);for(let e=0;16>e;e++)i[e]=t[e];let o=s[0],c=s[1],f=s[2],a=s[3],l=s[4];for(let e=0;79>=e;e++){16>e||(i[e]=n.V(1,i[e-3]^i[e-8]^i[e-14]^i[e-16]));const t=n.V(5,o)+n.D(e,c,f,a)+l+i[e]+n.v[r.floor(e/20)]|0;l=a,a=f,f=n.V(30,c),c=o,o=t}s[0]=s[0]+o|0,s[1]=s[1]+c|0,s[2]=s[2]+f|0,s[3]=s[3]+a|0,s[4]=s[4]+l|0}},D={getRandomValues(e){const t=new c(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(r.random()>.5?1:-1))};for(let s,i=0;i<e.length;i+=4){const e=n(4294967296*(s||r.random()));s=987654071*e(),t[i/4]=4294967296*e()|0}return e}},V={importKey:e=>new V.R(I.bytes.m(e)),B(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new s(\"invalid params to pbkdf2\");const i=1+(r>>5)<<2;let o,c,f,a,u;const w=new ArrayBuffer(i),h=new l(w);let d=0;const p=_;for(t=I.bytes.m(t),u=1;(i||1)>d;u++){for(o=c=e.encrypt(p.concat(t,[u])),f=1;n>f;f++)for(c=e.encrypt(c),a=0;a<c.length;a++)o[a]^=c[a];for(f=0;(i||1)>d&&f<o.length;f++)h.setInt32(d,o[f]),d+=4}return w.slice(0,r/8)},R:class{constructor(e){const t=this,n=t.M=P,r=[[],[]];t.U=[new n,new n];const s=t.U[0].blockSize/32;e.length>s&&(e=(new n).update(e).P());for(let t=0;s>t;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t.U[0].update(r[0]),t.U[1].update(r[1]),t.K=new n(t.U[0])}reset(){const e=this;e.K=new e.M(e.U[0]),e.N=!1}update(e){this.N=!0,this.K.update(e)}digest(){const e=this,t=e.K.P(),n=new e.M(e.U[1]).update(t).P();return e.reset(),n}encrypt(e){if(this.N)throw new s(\"encrypt on already updated hmac called!\");return this.update(e),this.digest(e)}}},R=typeof h!=v&&typeof h.getRandomValues==S,B=\"Invalid password\",E=\"Invalid signature\",M=\"zipjs-abort-check-password\";function U(e){return R?h.getRandomValues(e):D.getRandomValues(e)}const K=16,N={name:\"PBKDF2\"},O=t.assign({hash:{name:\"HMAC\"}},N),T=t.assign({iterations:1e3,hash:{name:\"SHA-1\"}},N),W=[\"deriveBits\"],j=[8,12,16],H=[16,24,32],L=10,F=[0,0,0,0],q=typeof h!=v,G=q&&h.subtle,J=q&&typeof G!=v,Q=I.bytes,X=class{constructor(e){const t=this;t.O=[[[],[],[],[],[]],[[],[],[],[],[]]],t.O[0][0][0]||t.T();const n=t.O[0][4],r=t.O[1],i=e.length;let o,c,f,a=1;if(4!==i&&6!==i&&8!==i)throw new s(\"invalid aes key size\");for(t.v=[c=e.slice(0),f=[]],o=i;4*i+28>o;o++){let e=c[o-1];(o%i==0||8===i&&o%i==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%i==0&&(e=e<<8^e>>>24^a<<24,a=a<<1^283*(a>>7))),c[o]=c[o-i]^e}for(let e=0;o;e++,o--){const t=c[3&e?o:o-4];f[e]=4>=o||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[255&t]]}}encrypt(e){return this.W(e,0)}decrypt(e){return this.W(e,1)}T(){const e=this.O[0],t=this.O[1],n=e[4],r=t[4],s=[],i=[];let o,c,f,a;for(let e=0;256>e;e++)i[(s[e]=e<<1^283*(e>>7))^e]=e;for(let l=o=0;!n[l];l^=c||1,o=i[o]||1){let i=o^o<<1^o<<2^o<<3^o<<4;i=i>>8^255&i^99,n[l]=i,r[i]=l,a=s[f=s[c=s[l]]];let u=16843009*a^65537*f^257*c^16843008*l,w=257*s[i]^16843008*i;for(let n=0;4>n;n++)e[n][l]=w=w<<24^w>>>8,t[n][i]=u=u<<24^u>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}W(e,t){if(4!==e.length)throw new s(\"invalid aes block size\");const n=this.v[t],r=n.length/4-2,i=[0,0,0,0],o=this.O[t],c=o[0],f=o[1],a=o[2],l=o[3],u=o[4];let w,h,d,p=e[0]^n[0],y=e[t?3:1]^n[1],m=e[2]^n[2],b=e[t?1:3]^n[3],g=4;for(let e=0;r>e;e++)w=c[p>>>24]^f[y>>16&255]^a[m>>8&255]^l[255&b]^n[g],h=c[y>>>24]^f[m>>16&255]^a[b>>8&255]^l[255&p]^n[g+1],d=c[m>>>24]^f[b>>16&255]^a[p>>8&255]^l[255&y]^n[g+2],b=c[b>>>24]^f[p>>16&255]^a[y>>8&255]^l[255&m]^n[g+3],g+=4,p=w,y=h,m=d;for(let e=0;4>e;e++)i[t?3&-e:e]=u[p>>>24]<<24^u[y>>16&255]<<16^u[m>>8&255]<<8^u[255&b]^n[g++],w=p,p=y,y=m,m=b,b=w;return i}},Y=class{constructor(e,t){this.j=e,this.H=t,this.L=t}reset(){this.L=this.H}update(e){return this.F(this.j,e,this.L)}q(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}G(e){0===(e[0]=this.q(e[0]))&&(e[1]=this.q(e[1]))}F(e,t,n){let r;if(!(r=t.length))return[];const s=_.l(t);for(let s=0;r>s;s+=4){this.G(n);const r=e.encrypt(n);t[s]^=r[0],t[s+1]^=r[1],t[s+2]^=r[2],t[s+3]^=r[3]}return _.u(t,s)}},Z=V.R;let $=q&&J&&typeof G.importKey==S,ee=q&&J&&typeof G.deriveBits==S;class te extends p{constructor({password:e,rawPassword:n,signed:r,encryptionStrength:o,checkPasswordOnly:c}){super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),signed:r,X:o-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:o,J:f,ready:a}=n;r?(await(async(e,t,n,r)=>{const i=await se(e,t,n,ce(r,0,j[t])),o=ce(r,j[t]);if(i[0]!=o[0]||i[1]!=o[1])throw new s(B)})(n,o,r,ce(e,0,j[o]+2)),e=ce(e,j[o]+2),c?t.error(new s(M)):f()):await a;const l=new i(e.length-L-(e.length-L)%K);t.enqueue(re(n,e,l,0,L,!0))},async flush(e){const{signed:t,Y:n,Z:r,pending:o,ready:c}=this;if(r&&n){await c;const f=ce(o,0,o.length-L),a=ce(o,o.length-L);let l=new i;if(f.length){const e=ae(Q,f);r.update(e);const t=n.update(e);l=fe(Q,t)}if(t){const e=ce(fe(Q,r.digest()),0,L);for(let t=0;L>t;t++)if(e[t]!=a[t])throw new s(E)}e.enqueue(l)}}})}}class ne extends p{constructor({password:e,rawPassword:n,encryptionStrength:r}){let s;super({start(){t.assign(this,{ready:new u((e=>this.J=e)),password:ie(e,n),X:r-1,pending:new i})},async transform(e,t){const n=this,{password:r,X:s,J:o,ready:c}=n;let f=new i;r?(f=await(async(e,t,n)=>{const r=U(new i(j[t]));return oe(r,await se(e,t,n,r))})(n,s,r),o()):await c;const a=new i(f.length+e.length-e.length%K);a.set(f,0),t.enqueue(re(n,e,a,f.length,0))},async flush(e){const{Y:t,Z:n,pending:r,ready:o}=this;if(n&&t){await o;let c=new i;if(r.length){const e=t.update(ae(Q,r));n.update(e),c=fe(Q,e)}s.signature=fe(Q,n.digest()).slice(0,L),e.enqueue(oe(c,s.signature))}}}),s=this}}function re(e,t,n,r,s,o){const{Y:c,Z:f,pending:a}=e,l=t.length-s;let u;for(a.length&&(t=oe(a,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new i(t)).set(n,0)}return e})(n,l-l%K)),u=0;l-K>=u;u+=K){const e=ae(Q,ce(t,u,u+K));o&&f.update(e);const s=c.update(e);o||f.update(s),n.set(fe(Q,s),u+r)}return e.pending=ce(t,u),n}async function se(n,r,s,o){n.password=null;const c=await(async(e,t,n,r,s)=>{if(!$)return V.importKey(t);try{return await G.importKey(\"raw\",t,n,!1,s)}catch(e){return $=!1,V.importKey(t)}})(0,s,O,0,W),f=await(async(e,t,n)=>{if(!ee)return V.B(t,e.salt,T.iterations,n);try{return await G.deriveBits(e,t,n)}catch(r){return ee=!1,V.B(t,e.salt,T.iterations,n)}})(t.assign({salt:o},T),c,8*(2*H[r]+2)),a=new i(f),l=ae(Q,ce(a,0,H[r])),u=ae(Q,ce(a,H[r],2*H[r])),w=ce(a,2*H[r]);return t.assign(n,{keys:{key:l,$:u,passwordVerification:w},Y:new Y(new X(l),e.from(F)),Z:new Z(u)}),w}function ie(e,t){return t===k?(e=>{if(typeof w==v){const t=new i((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new w).encode(e)})(e):t}function oe(e,t){let n=e;return e.length+t.length&&(n=new i(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function ce(e,t,n){return e.subarray(t,n)}function fe(e,t){return e.p(t)}function ae(e,t){return e.m(t)}class le extends p{constructor({password:e,passwordVerification:n,checkPasswordOnly:r}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;if(n.password){const t=we(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new s(B);e=e.subarray(12)}r?t.error(new s(M)):t.enqueue(we(n,e))}})}}class ue extends p{constructor({password:e,passwordVerification:n}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;let r,s;if(n.password){n.password=null;const t=U(new i(12));t[11]=n.passwordVerification,r=new i(e.length+t.length),r.set(he(n,t),0),s=12}else r=new i(e.length),s=0;r.set(he(n,e),s),t.enqueue(r)}})}}function we(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,n[r]);return n}function he(e,t){const n=new i(t.length);for(let r=0;r<t.length;r++)n[r]=ye(e)^t[r],pe(e,t[r]);return n}function de(e,n){const r=[305419896,591751049,878082192];t.assign(e,{keys:r,ee:new x(r[0]),te:new x(r[2])});for(let t=0;t<n.length;t++)pe(e,n.charCodeAt(t))}function pe(e,t){let[n,s,i]=e.keys;e.ee.append([t]),n=~e.ee.get(),s=be(r.imul(be(s+me(n)),134775813)+1),e.te.append([s>>>24]),i=~e.te.get(),e.keys=[n,s,i]}function ye(e){const t=2|e.keys[2];return me(r.imul(t,1^t)>>>8)}function me(e){return 255&e}function be(e){return 4294967295&e}const ge=\"deflate-raw\";class ke extends p{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:s,encrypted:i,useCompressionStream:o,zipCrypto:c,signed:f,level:a}=e,u=this;let w,h,d=Se(super.readable);i&&!c||!f||(w=new A,d=xe(d,w)),s&&(d=Ce(d,o,{level:a,chunkSize:t},r,n)),i&&(c?d=xe(d,new ue(e)):(h=new ne(e),d=xe(d,h))),ze(u,d,(()=>{let e;i&&!c&&(e=h.signature),i&&!c||!f||(e=new l(w.value.buffer).getUint32(0)),u.signature=e}))}}class ve extends p{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:i,encrypted:o,signed:c,signature:f,compressed:a,useCompressionStream:u}=e;let w,h,d=Se(super.readable);o&&(i?d=xe(d,new le(e)):(h=new te(e),d=xe(d,h))),a&&(d=Ce(d,u,{chunkSize:t},r,n)),o&&!i||!c||(w=new A,d=xe(d,w)),ze(this,d,(()=>{if((!o||i)&&c){const e=new l(w.value.buffer);if(f!=e.getUint32(0,!1))throw new s(E)}}))}}function Se(e){return xe(e,new p({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ze(e,n,r){n=xe(n,new p({flush:r})),t.defineProperty(e,\"readable\",{get:()=>n})}function Ce(e,t,n,r,s){try{e=xe(e,new(t&&r?r:s)(ge,n))}catch(r){if(!t)return e;try{e=xe(e,new s(ge,n))}catch(t){return e}}return e}function xe(e,t){return e.pipeThrough(t)}const Ae=\"data\",_e=\"close\";class Ie extends p{constructor(e,n){super({});const r=this,{codecType:s}=e;let i;s.startsWith(\"deflate\")?i=ke:s.startsWith(\"inflate\")&&(i=ve);let o=0,c=0;const f=new i(e,n),a=super.readable,l=new p({transform(e,t){e&&e.length&&(c+=e.length,t.enqueue(e))},flush(){t.assign(r,{inputSize:c})}}),u=new p({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){const{signature:e}=f;t.assign(r,{signature:e,outputSize:o,inputSize:c})}});t.defineProperty(r,\"readable\",{get:()=>a.pipeThrough(l).pipeThrough(f).pipeThrough(u)})}}class Pe extends p{constructor(e){let t;super({transform:function n(r,s){if(t){const e=new i(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}r.length>e?(s.enqueue(r.slice(0,e)),n(r.slice(e),s)):t=r},flush(e){t&&t.length&&e.enqueue(t)}})}}const De=new a,Ve=new a;let Re,Be=0,Ee=!0;async function Me(e){try{const{options:t,scripts:r,config:s}=e;if(r&&r.length)try{Ee?importScripts.apply(k,r):await Ue(r)}catch(e){Ee=!1,await Ue(r)}self.initCodec&&self.initCodec(),s.CompressionStreamNative=self.CompressionStream,s.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(s.CompressionStream=new z(self.Deflate)),self.Inflate&&(s.DecompressionStream=new z(self.Inflate));const i={highWaterMark:1},o=e.readable||new y({async pull(e){const t=new u((e=>De.set(Be,e)));Ke({type:\"pull\",messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER;const{value:r,done:s}=await t;e.enqueue(r),s&&e.close()}},i),c=e.writable||new m({async write(e){let t;const r=new u((e=>t=e));Ve.set(Be,t),Ke({type:Ae,value:e,messageId:Be}),Be=(Be+1)%n.MAX_SAFE_INTEGER,await r}},i),f=new Ie(t,s);Re=new AbortController;const{signal:a}=Re;await o.pipeThrough(f).pipeThrough(new Pe(s.chunkSize)).pipeTo(c,{signal:a,preventClose:!0,preventAbort:!0}),await c.getWriter().close();const{signature:l,inputSize:w,outputSize:h}=f;Ke({type:_e,result:{signature:l,inputSize:w,outputSize:h}})}catch(e){Ne(e)}}async function Ue(e){for(const t of e)await import(t)}function Ke(e){let{value:t}=e;if(t)if(t.length)try{t=new i(t),e.value=t.buffer,d(e,[e.value])}catch(t){d(e)}else d(e);else d(e)}function Ne(e=new s(\"Unknown error\")){const{message:t,stack:n,code:r,name:i}=e;d({error:{message:t,stack:n,code:r,name:i}})}addEventListener(\"message\",(({data:e})=>{const{type:t,messageId:n,value:r,done:s}=e;try{if(\"start\"==t&&Me(e),t==Ae){const e=De.get(n);De.delete(n),e({value:new i(r),done:s})}if(\"ack\"==t){const e=Ve.get(n);Ve.delete(n),e()}t==_e&&Re.abort()}catch(e){Ne(e)}}));const Oe=-2;function Te(t){return We(t.map((([t,n])=>new e(t).fill(n,0,t))))}function We(t){return t.reduce(((t,n)=>t.concat(e.isArray(n)?We(n):n)),[])}const je=[0,1,2,3].concat(...Te([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function He(){const e=this;function t(e,t){let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}e.ne=n=>{const s=e.re,i=e.ie.se,o=e.ie.oe;let c,f,a,l=-1;for(n.ce=0,n.fe=573,c=0;o>c;c++)0!==s[2*c]?(n.ae[++n.ce]=l=c,n.le[c]=0):s[2*c+1]=0;for(;2>n.ce;)a=n.ae[++n.ce]=2>l?++l:0,s[2*a]=1,n.le[a]=0,n.ue--,i&&(n.we-=i[2*a+1]);for(e.he=l,c=r.floor(n.ce/2);c>=1;c--)n.de(s,c);a=o;do{c=n.ae[1],n.ae[1]=n.ae[n.ce--],n.de(s,1),f=n.ae[1],n.ae[--n.fe]=c,n.ae[--n.fe]=f,s[2*a]=s[2*c]+s[2*f],n.le[a]=r.max(n.le[c],n.le[f])+1,s[2*c+1]=s[2*f+1]=a,n.ae[1]=a++,n.de(s,1)}while(n.ce>=2);n.ae[--n.fe]=n.ae[1],(t=>{const n=e.re,r=e.ie.se,s=e.ie.pe,i=e.ie.ye,o=e.ie.me;let c,f,a,l,u,w,h=0;for(l=0;15>=l;l++)t.be[l]=0;for(n[2*t.ae[t.fe]+1]=0,c=t.fe+1;573>c;c++)f=t.ae[c],l=n[2*n[2*f+1]+1]+1,l>o&&(l=o,h++),n[2*f+1]=l,f>e.he||(t.be[l]++,u=0,i>f||(u=s[f-i]),w=n[2*f],t.ue+=w*(l+u),r&&(t.we+=w*(r[2*f+1]+u)));if(0!==h){do{for(l=o-1;0===t.be[l];)l--;t.be[l]--,t.be[l+1]+=2,t.be[o]--,h-=2}while(h>0);for(l=o;0!==l;l--)for(f=t.be[l];0!==f;)a=t.ae[--c],a>e.he||(n[2*a+1]!=l&&(t.ue+=(l-n[2*a+1])*n[2*a],n[2*a+1]=l),f--)}})(n),((e,n,r)=>{const s=[];let i,o,c,f=0;for(i=1;15>=i;i++)s[i]=f=f+r[i-1]<<1;for(o=0;n>=o;o++)c=e[2*o+1],0!==c&&(e[2*o]=t(s[c]++,c))})(s,e.he,n.be)}}function Le(e,t,n,r,s){const i=this;i.se=e,i.pe=t,i.ye=n,i.oe=r,i.me=s}He.ge=[0,1,2,3,4,5,6,7].concat(...Te([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),He.ke=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],He.ve=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],He.Se=e=>256>e?je[e]:je[256+(e>>>7)],He.ze=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],He.Ce=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],He.xe=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],He.Ae=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const Fe=Te([[144,8],[112,9],[24,7],[8,8]]);Le._e=We([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((e,t)=>[e,Fe[t]])));const qe=Te([[30,5]]);function Ge(e,t,n,r,s){const i=this;i.Ie=e,i.Pe=t,i.De=n,i.Ve=r,i.Re=s}Le.Be=We([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((e,t)=>[e,qe[t]]))),Le.Ee=new Le(Le._e,He.ze,257,286,15),Le.Me=new Le(Le.Be,He.Ce,0,30,15),Le.Ue=new Le(null,He.xe,0,19,7);const Je=[new Ge(0,0,0,0,0),new Ge(4,4,8,4,1),new Ge(4,5,16,8,1),new Ge(4,6,32,32,1),new Ge(4,4,16,16,2),new Ge(8,16,32,32,2),new Ge(8,16,128,128,2),new Ge(8,32,128,256,2),new Ge(32,128,258,1024,2),new Ge(32,258,258,4096,2)],Qe=[\"need dictionary\",\"stream end\",\"\",\"\",\"stream error\",\"data error\",\"\",\"buffer error\",\"\",\"\"],Xe=113,Ye=666,Ze=262;function $e(e,t,n,r){const s=e[2*t],i=e[2*n];return i>s||s==i&&r[t]<=r[n]}function et(){const e=this;let t,n,s,c,f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z,C,x,A,_,I,P,D,V,R,B,E,M,U;const K=new He,N=new He,O=new He;let T,W,j,H,L,F;function q(){let t;for(t=0;286>t;t++)E[2*t]=0;for(t=0;30>t;t++)M[2*t]=0;for(t=0;19>t;t++)U[2*t]=0;E[512]=1,e.ue=e.we=0,W=j=0}function G(e,t){let n,r=-1,s=e[1],i=0,o=7,c=4;0===s&&(o=138,c=3),e[2*(t+1)+1]=65535;for(let f=0;t>=f;f++)n=s,s=e[2*(f+1)+1],++i<o&&n==s||(c>i?U[2*n]+=i:0!==n?(n!=r&&U[2*n]++,U[32]++):i>10?U[36]++:U[34]++,i=0,r=n,0===s?(o=138,c=3):n==s?(o=6,c=3):(o=7,c=4))}function J(t){e.Ke[e.pending++]=t}function Q(e){J(255&e),J(e>>>8&255)}function X(e,t){let n;const r=t;F>16-r?(n=e,L|=n<<F&65535,Q(L),L=n>>>16-F,F+=r-16):(L|=e<<F&65535,F+=r)}function Y(e,t){const n=2*e;X(65535&t[n],65535&t[n+1])}function Z(e,t){let n,r,s=-1,i=e[1],o=0,c=7,f=4;for(0===i&&(c=138,f=3),n=0;t>=n;n++)if(r=i,i=e[2*(n+1)+1],++o>=c||r!=i){if(f>o)do{Y(r,U)}while(0!=--o);else 0!==r?(r!=s&&(Y(r,U),o--),Y(16,U),X(o-3,2)):o>10?(Y(18,U),X(o-11,7)):(Y(17,U),X(o-3,3));o=0,s=r,0===i?(c=138,f=3):r==i?(c=6,f=3):(c=7,f=4)}}function $(){16==F?(Q(L),L=0,F=0):8>F||(J(255&L),L>>>=8,F-=8)}function ee(t,n){let s,i,o;if(e.Ne[W]=t,e.Oe[W]=255&n,W++,0===t?E[2*n]++:(j++,t--,E[2*(He.ge[n]+256+1)]++,M[2*He.Se(t)]++),!(8191&W)&&D>2){for(s=8*W,i=C-k,o=0;30>o;o++)s+=M[2*o]*(5+He.Ce[o]);if(s>>>=3,j<r.floor(W/2)&&s<r.floor(i/2))return!0}return W==T-1}function te(t,n){let r,s,i,o,c=0;if(0!==W)do{r=e.Ne[c],s=e.Oe[c],c++,0===r?Y(s,t):(i=He.ge[s],Y(i+256+1,t),o=He.ze[i],0!==o&&(s-=He.ke[i],X(s,o)),r--,i=He.Se(r),Y(i,n),o=He.Ce[i],0!==o&&(r-=He.ve[i],X(r,o)))}while(W>c);Y(256,t),H=t[513]}function ne(){F>8?Q(L):F>0&&J(255&L),L=0,F=0}function re(t,n,r){X(0+(r?1:0),3),((t,n)=>{ne(),H=8,Q(n),Q(~n),e.Ke.set(u.subarray(t,t+n),e.pending),e.pending+=n})(t,n)}function se(n){((t,n,r)=>{let s,i,o=0;D>0?(K.ne(e),N.ne(e),o=(()=>{let t;for(G(E,K.he),G(M,N.he),O.ne(e),t=18;t>=3&&0===U[2*He.Ae[t]+1];t--);return e.ue+=14+3*(t+1),t})(),s=e.ue+3+7>>>3,i=e.we+3+7>>>3,i>s||(s=i)):s=i=n+5,n+4>s||-1==t?i==s?(X(2+(r?1:0),3),te(Le._e,Le.Be)):(X(4+(r?1:0),3),((e,t,n)=>{let r;for(X(e-257,5),X(t-1,5),X(n-4,4),r=0;n>r;r++)X(U[2*He.Ae[r]+1],3);Z(E,e-1),Z(M,t-1)})(K.he+1,N.he+1,o+1),te(E,M)):re(t,n,r),q(),r&&ne()})(0>k?-1:k,C-k,n),k=C,t.Te()}function ie(){let e,n,r,s;do{if(s=w-A-C,0===s&&0===C&&0===A)s=f;else if(-1==s)s--;else if(C>=f+f-Ze){u.set(u.subarray(f,f+f),0),x-=f,C-=f,k-=f,e=y,r=e;do{n=65535&d[--r],d[r]=f>n?0:n-f}while(0!=--e);e=f,r=e;do{n=65535&h[--r],h[r]=f>n?0:n-f}while(0!=--e);s+=f}if(0===t.We)return;e=t.je(u,C+A,s),A+=e,3>A||(p=255&u[C],p=(p<<g^255&u[C+1])&b)}while(Ze>A&&0!==t.We)}function oe(e){let t,n,r=I,s=C,i=_;const o=C>f-Ze?C-(f-Ze):0;let c=B;const a=l,w=C+258;let d=u[s+i-1],p=u[s+i];R>_||(r>>=2),c>A&&(c=A);do{if(t=e,u[t+i]==p&&u[t+i-1]==d&&u[t]==u[s]&&u[++t]==u[s+1]){s+=2,t++;do{}while(u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&u[++s]==u[++t]&&w>s);if(n=258-(w-s),s=w-258,n>i){if(x=e,i=n,n>=c)break;d=u[s+i-1],p=u[s+i]}}}while((e=65535&h[e&a])>o&&0!=--r);return i>A?A:i}e.le=[],e.be=[],e.ae=[],E=[],M=[],U=[],e.de=(t,n)=>{const r=e.ae,s=r[n];let i=n<<1;for(;i<=e.ce&&(i<e.ce&&$e(t,r[i+1],r[i],e.le)&&i++,!$e(t,s,r[i],e.le));)r[n]=r[i],n=i,i<<=1;r[n]=s},e.He=(t,S,x,W,j,G)=>(W||(W=8),j||(j=8),G||(G=0),t.Le=null,-1==S&&(S=6),1>j||j>9||8!=W||9>x||x>15||0>S||S>9||0>G||G>2?Oe:(t.Fe=e,a=x,f=1<<a,l=f-1,m=j+7,y=1<<m,b=y-1,g=r.floor((m+3-1)/3),u=new i(2*f),h=[],d=[],T=1<<j+6,e.Ke=new i(4*T),s=4*T,e.Ne=new o(T),e.Oe=new i(T),D=S,V=G,(t=>(t.qe=t.Ge=0,t.Le=null,e.pending=0,e.Je=0,n=Xe,c=0,K.re=E,K.ie=Le.Ee,N.re=M,N.ie=Le.Me,O.re=U,O.ie=Le.Ue,L=0,F=0,H=8,q(),(()=>{w=2*f,d[y-1]=0;for(let e=0;y-1>e;e++)d[e]=0;P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve,C=0,k=0,A=0,v=_=2,z=0,p=0})(),0))(t))),e.Qe=()=>42!=n&&n!=Xe&&n!=Ye?Oe:(e.Oe=null,e.Ne=null,e.Ke=null,d=null,h=null,u=null,e.Fe=null,n==Xe?-3:0),e.Xe=(e,t,n)=>{let r=0;return-1==t&&(t=6),0>t||t>9||0>n||n>2?Oe:(Je[D].Re!=Je[t].Re&&0!==e.qe&&(r=e.Ye(1)),D!=t&&(D=t,P=Je[D].Pe,R=Je[D].Ie,B=Je[D].De,I=Je[D].Ve),V=n,r)},e.Ze=(e,t,r)=>{let s,i=r,o=0;if(!t||42!=n)return Oe;if(3>i)return 0;for(i>f-Ze&&(i=f-Ze,o=r-i),u.set(t.subarray(o,o+i),0),C=i,k=i,p=255&u[0],p=(p<<g^255&u[1])&b,s=0;i-3>=s;s++)p=(p<<g^255&u[s+2])&b,h[s&l]=d[p],d[p]=s;return 0},e.Ye=(r,i)=>{let o,w,m,I,R;if(i>4||0>i)return Oe;if(!r.$e||!r.et&&0!==r.We||n==Ye&&4!=i)return r.Le=Qe[4],Oe;if(0===r.tt)return r.Le=Qe[7],-5;var B;if(t=r,I=c,c=i,42==n&&(w=8+(a-8<<4)<<8,m=(D-1&255)>>1,m>3&&(m=3),w|=m<<6,0!==C&&(w|=32),w+=31-w%31,n=Xe,J((B=w)>>8&255),J(255&B)),0!==e.pending){if(t.Te(),0===t.tt)return c=-1,0}else if(0===t.We&&I>=i&&4!=i)return t.Le=Qe[7],-5;if(n==Ye&&0!==t.We)return r.Le=Qe[7],-5;if(0!==t.We||0!==A||0!=i&&n!=Ye){switch(R=-1,Je[D].Re){case 0:R=(e=>{let n,r=65535;for(r>s-5&&(r=s-5);;){if(1>=A){if(ie(),0===A&&0==e)return 0;if(0===A)break}if(C+=A,A=0,n=k+r,(0===C||C>=n)&&(A=C-n,C=n,se(!1),0===t.tt))return 0;if(C-k>=f-Ze&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 1:R=(e=>{let n,r=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C),0===r||(C-r&65535)>f-Ze||2!=V&&(v=oe(r)),3>v)n=ee(0,255&u[C]),A--,C++;else if(n=ee(C-x,v-3),A-=v,v>P||3>A)C+=v,v=0,p=255&u[C],p=(p<<g^255&u[C+1])&b;else{v--;do{C++,p=(p<<g^255&u[C+2])&b,r=65535&d[p],h[C&l]=d[p],d[p]=C}while(0!=--v);C++}if(n&&(se(!1),0===t.tt))return 0}return se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i);break;case 2:R=(e=>{let n,r,s=0;for(;;){if(Ze>A){if(ie(),Ze>A&&0==e)return 0;if(0===A)break}if(3>A||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C),_=v,S=x,v=2,0!==s&&P>_&&f-Ze>=(C-s&65535)&&(2!=V&&(v=oe(s)),5>=v&&(1==V||3==v&&C-x>4096)&&(v=2)),3>_||v>_)if(0!==z){if(n=ee(0,255&u[C-1]),n&&se(!1),C++,A--,0===t.tt)return 0}else z=1,C++,A--;else{r=C+A-3,n=ee(C-1-S,_-3),A-=_-1,_-=2;do{++C>r||(p=(p<<g^255&u[C+2])&b,s=65535&d[p],h[C&l]=d[p],d[p]=C)}while(0!=--_);if(z=0,v=2,C++,n&&(se(!1),0===t.tt))return 0}}return 0!==z&&(n=ee(0,255&u[C-1]),z=0),se(4==e),0===t.tt?4==e?2:0:4==e?3:1})(i)}if(2!=R&&3!=R||(n=Ye),0==R||2==R)return 0===t.tt&&(c=-1),0;if(1==R){if(1==i)X(2,3),Y(256,Le._e),$(),9>1+H+10-F&&(X(2,3),Y(256,Le._e),$()),H=7;else if(re(0,0,!1),3==i)for(o=0;y>o;o++)d[o]=0;if(t.Te(),0===t.tt)return c=-1,0}}return 4!=i?0:1}}function tt(){const e=this;e.nt=0,e.rt=0,e.We=0,e.qe=0,e.tt=0,e.Ge=0}function nt(e){const t=new tt,n=(o=e&&e.chunkSize?e.chunkSize:65536)+5*(r.floor(o/16383)+1);var o;const c=new i(n);let f=e?e.level:-1;void 0===f&&(f=-1),t.He(f),t.$e=c,this.append=(e,r)=>{let o,f,a=0,l=0,u=0;const w=[];if(e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,o=t.Ye(0),0!=o)throw new s(\"deflating: \"+t.Le);t.rt&&(t.rt==n?w.push(new i(c)):w.push(c.subarray(0,t.rt))),u+=t.rt,r&&t.nt>0&&t.nt!=a&&(r(t.nt),a=t.nt)}while(t.We>0||0===t.tt);return w.length>1?(f=new i(u),w.forEach((e=>{f.set(e,l),l+=e.length}))):f=w[0]?new i(w[0]):new i,f}},this.flush=()=>{let e,r,o=0,f=0;const a=[];do{if(t.rt=0,t.tt=n,e=t.Ye(4),1!=e&&0!=e)throw new s(\"deflating: \"+t.Le);n-t.tt>0&&a.push(c.slice(0,t.rt)),f+=t.rt}while(t.We>0||0===t.tt);return t.Qe(),r=new i(f),a.forEach((e=>{r.set(e,o),o+=e.length})),r}}tt.prototype={He(e,t){const n=this;return n.Fe=new et,t||(t=15),n.Fe.He(n,e,t)},Ye(e){const t=this;return t.Fe?t.Fe.Ye(t,e):Oe},Qe(){const e=this;if(!e.Fe)return Oe;const t=e.Fe.Qe();return e.Fe=null,t},Xe(e,t){const n=this;return n.Fe?n.Fe.Xe(n,e,t):Oe},Ze(e,t){const n=this;return n.Fe?n.Fe.Ze(n,e,t):Oe},je(e,t,n){const r=this;let s=r.We;return s>n&&(s=n),0===s?0:(r.We-=s,e.set(r.et.subarray(r.nt,r.nt+s),t),r.nt+=s,r.qe+=s,s)},Te(){const e=this;let t=e.Fe.pending;t>e.tt&&(t=e.tt),0!==t&&(e.$e.set(e.Fe.Ke.subarray(e.Fe.Je,e.Fe.Je+t),e.rt),e.rt+=t,e.Fe.Je+=t,e.Ge+=t,e.tt-=t,e.Fe.pending-=t,0===e.Fe.pending&&(e.Fe.Je=0))}};const rt=-2,st=-3,it=-5,ot=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],ct=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],ft=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],at=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],lt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],ut=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],wt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function ht(){let e,t,n,r,s,i;function o(e,t,o,c,f,a,l,u,w,h,d){let p,y,m,b,g,k,v,S,z,C,x,A,_,I,P;C=0,g=o;do{n[e[t+C]]++,C++,g--}while(0!==g);if(n[0]==o)return l[0]=-1,u[0]=0,0;for(S=u[0],k=1;15>=k&&0===n[k];k++);for(v=k,k>S&&(S=k),g=15;0!==g&&0===n[g];g--);for(m=g,S>g&&(S=g),u[0]=S,I=1<<k;g>k;k++,I<<=1)if(0>(I-=n[k]))return st;if(0>(I-=n[g]))return st;for(n[g]+=I,i[1]=k=0,C=1,_=2;0!=--g;)i[_]=k+=n[C],_++,C++;g=0,C=0;do{0!==(k=e[t+C])&&(d[i[k]++]=g),C++}while(++g<o);for(o=i[m],i[0]=g=0,C=0,b=-1,A=-S,s[0]=0,x=0,P=0;m>=v;v++)for(p=n[v];0!=p--;){for(;v>A+S;){if(b++,A+=S,P=m-A,P=P>S?S:P,(y=1<<(k=v-A))>p+1&&(y-=p+1,_=v,P>k))for(;++k<P&&(y<<=1)>n[++_];)y-=n[_];if(P=1<<k,h[0]+P>1440)return st;s[b]=x=h[0],h[0]+=P,0!==b?(i[b]=g,r[0]=k,r[1]=S,k=g>>>A-S,r[2]=x-s[b-1]-k,w.set(r,3*(s[b-1]+k))):l[0]=x}for(r[1]=v-A,o>C?d[C]<c?(r[0]=256>d[C]?0:96,r[2]=d[C++]):(r[0]=a[d[C]-c]+16+64,r[2]=f[d[C++]-c]):r[0]=192,y=1<<v-A,k=g>>>A;P>k;k+=y)w.set(r,3*(x+k));for(k=1<<v-1;g&k;k>>>=1)g^=k;for(g^=k,z=(1<<A)-1;(g&z)!=i[b];)b--,A-=S,z=(1<<A)-1}return 0!==I&&1!=m?it:0}function c(o){let c;for(e||(e=[],t=[],n=new f(16),r=[],s=new f(15),i=new f(16)),t.length<o&&(t=[]),c=0;o>c;c++)t[c]=0;for(c=0;16>c;c++)n[c]=0;for(c=0;3>c;c++)r[c]=0;s.set(n.subarray(0,15),0),i.set(n.subarray(0,16),0)}this.st=(n,r,s,i,f)=>{let a;return c(19),e[0]=0,a=o(n,0,19,19,null,null,s,r,i,e,t),a==st?f.Le=\"oversubscribed dynamic bit lengths tree\":a!=it&&0!==r[0]||(f.Le=\"incomplete dynamic bit lengths tree\",a=st),a},this.it=(n,r,s,i,f,a,l,u,w)=>{let h;return c(288),e[0]=0,h=o(s,0,n,257,at,lt,a,i,u,e,t),0!=h||0===i[0]?(h==st?w.Le=\"oversubscribed literal/length tree\":-4!=h&&(w.Le=\"incomplete literal/length tree\",h=st),h):(c(288),h=o(s,n,r,0,ut,wt,l,f,u,e,t),0!=h||0===f[0]&&n>257?(h==st?w.Le=\"oversubscribed distance tree\":h==it?(w.Le=\"incomplete distance tree\",h=st):-4!=h&&(w.Le=\"empty distance tree with lengths\",h=st),h):0)}}function dt(){const e=this;let t,n,r,s,i=0,o=0,c=0,f=0,a=0,l=0,u=0,w=0,h=0,d=0;function p(e,t,n,r,s,i,o,c){let f,a,l,u,w,h,d,p,y,m,b,g,k,v,S,z;d=c.nt,p=c.We,w=o.ot,h=o.ct,y=o.write,m=y<o.read?o.read-y-1:o.end-y,b=ot[e],g=ot[t];do{for(;20>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(f=w&b,a=n,l=r,z=3*(l+f),0!==(u=a[z]))for(;;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15,k=a[z+2]+(w&ot[u]),w>>=u,h-=u;15>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;for(f=w&g,a=s,l=i,z=3*(l+f),u=a[z];;){if(w>>=a[z+1],h-=a[z+1],16&u){for(u&=15;u>h;)p--,w|=(255&c.ft(d++))<<h,h+=8;if(v=a[z+2]+(w&ot[u]),w>>=u,h-=u,m-=k,v>y){S=y-v;do{S+=o.end}while(0>S);if(u=o.end-S,k>u){if(k-=u,y-S>0&&u>y-S)do{o.lt[y++]=o.lt[S++]}while(0!=--u);else o.lt.set(o.lt.subarray(S,S+u),y),y+=u,S+=u,u=0;S=0}}else S=y-v,y-S>0&&2>y-S?(o.lt[y++]=o.lt[S++],o.lt[y++]=o.lt[S++],k-=2):(o.lt.set(o.lt.subarray(S,S+2),y),y+=2,S+=2,k-=2);if(y-S>0&&k>y-S)do{o.lt[y++]=o.lt[S++]}while(0!=--k);else o.lt.set(o.lt.subarray(S,S+k),y),y+=k,S+=k,k=0;break}if(64&u)return c.Le=\"invalid distance code\",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st;f+=a[z+2],f+=w&ot[u],z=3*(l+f),u=a[z]}break}if(64&u)return 32&u?(k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,1):(c.Le=\"invalid literal/length code\",k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,st);if(f+=a[z+2],f+=w&ot[u],z=3*(l+f),0===(u=a[z])){w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--;break}}else w>>=a[z+1],h-=a[z+1],o.lt[y++]=a[z+2],m--}while(m>=258&&p>=10);return k=c.We-p,k=k>h>>3?h>>3:k,p+=k,d-=k,h-=k<<3,o.ot=w,o.ct=h,c.We=p,c.qe+=d-c.nt,c.nt=d,o.write=y,0}e.init=(e,i,o,c,f,a)=>{t=0,u=e,w=i,r=o,h=c,s=f,d=a,n=null},e.ut=(e,y,m)=>{let b,g,k,v,S,z,C,x=0,A=0,_=0;for(_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S;;)switch(t){case 0:if(z>=258&&v>=10&&(e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,m=p(u,w,r,h,s,d,e,y),_=y.nt,v=y.We,x=e.ot,A=e.ct,S=e.write,z=S<e.read?e.read-S-1:e.end-S,0!=m)){t=1==m?7:9;break}c=u,n=r,o=h,t=1;case 1:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>>=n[g+1],A-=n[g+1],k=n[g],0===k){f=n[g+2],t=6;break}if(16&k){a=15&k,i=n[g+2],t=2;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}if(32&k){t=7;break}return t=9,y.Le=\"invalid literal/length code\",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 2:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}i+=x&ot[b],x>>=b,A-=b,c=w,n=s,o=d,t=3;case 3:for(b=c;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}if(g=3*(o+(x&ot[b])),x>>=n[g+1],A-=n[g+1],k=n[g],16&k){a=15&k,l=n[g+2],t=4;break}if(!(64&k)){c=k,o=g/3+n[g+2];break}return t=9,y.Le=\"invalid distance code\",m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 4:for(b=a;b>A;){if(0===v)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,v--,x|=(255&y.ft(_++))<<A,A+=8}l+=x&ot[b],x>>=b,A-=b,t=5;case 5:for(C=S-l;0>C;)C+=e.end;for(;0!==i;){if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);e.lt[S++]=e.lt[C++],z--,C==e.end&&(C=0),i--}t=0;break;case 6:if(0===z&&(S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z&&(e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,S==e.end&&0!==e.read&&(S=0,z=S<e.read?e.read-S-1:e.end-S),0===z)))return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);m=0,e.lt[S++]=f,z--,t=0;break;case 7:if(A>7&&(A-=8,v++,_--),e.write=S,m=e.wt(y,m),S=e.write,z=S<e.read?e.read-S-1:e.end-S,e.read!=e.write)return e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);t=8;case 8:return m=1,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);case 9:return m=st,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m);default:return m=rt,e.ot=x,e.ct=A,y.We=v,y.qe+=_-y.nt,y.nt=_,e.write=S,e.wt(y,m)}},e.ht=()=>{}}ht.dt=(e,t,n,r)=>(e[0]=9,t[0]=5,n[0]=ct,r[0]=ft,0);const pt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function yt(e,t){const n=this;let r,s=0,o=0,c=0,a=0;const l=[0],u=[0],w=new dt;let h=0,d=new f(4320);const p=new ht;n.ct=0,n.ot=0,n.lt=new i(t),n.end=t,n.read=0,n.write=0,n.reset=(e,t)=>{t&&(t[0]=0),6==s&&w.ht(e),s=0,n.ct=0,n.ot=0,n.read=n.write=0},n.reset(e,null),n.wt=(e,t)=>{let r,s,i;return s=e.rt,i=n.read,r=(i>n.write?n.end:n.write)-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r,i==n.end&&(i=0,n.write==n.end&&(n.write=0),r=n.write-i,r>e.tt&&(r=e.tt),0!==r&&t==it&&(t=0),e.tt-=r,e.Ge+=r,e.$e.set(n.lt.subarray(i,i+r),s),s+=r,i+=r),e.rt=s,n.read=i,t},n.ut=(e,t)=>{let i,f,y,m,b,g,k,v;for(m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g;;){let S,z,C,x,A,_,I,P;switch(s){case 0:for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}switch(i=7&f,h=1&i,i>>>1){case 0:f>>>=3,y-=3,i=7&y,f>>>=i,y-=i,s=1;break;case 1:S=[],z=[],C=[[]],x=[[]],ht.dt(S,z,C,x),w.init(S[0],z[0],C[0],0,x[0],0),f>>>=3,y-=3,s=6;break;case 2:f>>>=3,y-=3,s=3;break;case 3:return f>>>=3,y-=3,s=9,e.Le=\"invalid block type\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}break;case 1:for(;32>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if((~f>>>16&65535)!=(65535&f))return s=9,e.Le=\"invalid stored block lengths\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);o=65535&f,f=y=0,s=0!==o?2:0!==h?7:0;break;case 2:if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(0===k&&(g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k&&(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,g==n.end&&0!==n.read&&(g=0,k=g<n.read?n.read-g-1:n.end-g),0===k)))return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(t=0,i=o,i>b&&(i=b),i>k&&(i=k),n.lt.set(e.je(m,i),g),m+=i,b-=i,g+=i,k-=i,0!=(o-=i))break;s=0!==h?7:0;break;case 3:for(;14>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(c=i=16383&f,(31&i)>29||(i>>5&31)>29)return s=9,e.Le=\"too many length or distance symbols\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);if(i=258+(31&i)+(i>>5&31),!r||r.length<i)r=[];else for(v=0;i>v;v++)r[v]=0;f>>>=14,y-=14,a=0,s=4;case 4:for(;4+(c>>>10)>a;){for(;3>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}r[pt[a++]]=7&f,f>>>=3,y-=3}for(;19>a;)r[pt[a++]]=0;if(l[0]=7,i=p.st(r,l,u,d,e),0!=i)return(t=i)==st&&(r=null,s=9),n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);a=0,s=5;case 5:for(;i=c,258+(31&i)+(i>>5&31)>a;){let o,w;for(i=l[0];i>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(i=d[3*(u[0]+(f&ot[i]))+1],w=d[3*(u[0]+(f&ot[i]))+2],16>w)f>>>=i,y-=i,r[a++]=w;else{for(v=18==w?7:w-14,o=18==w?11:3;i+v>y;){if(0===b)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);t=0,b--,f|=(255&e.ft(m++))<<y,y+=8}if(f>>>=i,y-=i,o+=f&ot[v],f>>>=v,y-=v,v=a,i=c,v+o>258+(31&i)+(i>>5&31)||16==w&&1>v)return r=null,s=9,e.Le=\"invalid bit length repeat\",t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w=16==w?r[v-1]:0;do{r[v++]=w}while(0!=--o);a=v}}if(u[0]=-1,A=[],_=[],I=[],P=[],A[0]=9,_[0]=6,i=c,i=p.it(257+(31&i),1+(i>>5&31),r,A,_,I,P,d,e),0!=i)return i==st&&(r=null,s=9),t=i,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);w.init(A[0],_[0],d,I[0],d,P[0]),s=6;case 6:if(n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,1!=(t=w.ut(n,e,t)))return n.wt(e,t);if(t=0,w.ht(e),m=e.nt,b=e.We,f=n.ot,y=n.ct,g=n.write,k=g<n.read?n.read-g-1:n.end-g,0===h){s=0;break}s=7;case 7:if(n.write=g,t=n.wt(e,t),g=n.write,k=g<n.read?n.read-g-1:n.end-g,n.read!=n.write)return n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);s=8;case 8:return t=1,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);case 9:return t=st,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t);default:return t=rt,n.ot=f,n.ct=y,e.We=b,e.qe+=m-e.nt,e.nt=m,n.write=g,n.wt(e,t)}}},n.ht=e=>{n.reset(e,null),n.lt=null,d=null},n.yt=(e,t,r)=>{n.lt.set(e.subarray(t,t+r),0),n.read=n.write=r},n.bt=()=>1==s?1:0}const mt=13,bt=[0,0,255,255];function gt(){const e=this;function t(e){return e&&e.gt?(e.qe=e.Ge=0,e.Le=null,e.gt.mode=7,e.gt.kt.reset(e,null),0):rt}e.mode=0,e.method=0,e.vt=[0],e.St=0,e.marker=0,e.zt=0,e.Ct=t=>(e.kt&&e.kt.ht(t),e.kt=null,0),e.xt=(n,r)=>(n.Le=null,e.kt=null,8>r||r>15?(e.Ct(n),rt):(e.zt=r,n.gt.kt=new yt(n,1<<r),t(n),0)),e.At=(e,t)=>{let n,r;if(!e||!e.gt||!e.et)return rt;const s=e.gt;for(t=4==t?it:0,n=it;;)switch(s.mode){case 0:if(0===e.We)return n;if(n=t,e.We--,e.qe++,8!=(15&(s.method=e.ft(e.nt++)))){s.mode=mt,e.Le=\"unknown compression method\",s.marker=5;break}if(8+(s.method>>4)>s.zt){s.mode=mt,e.Le=\"invalid win size\",s.marker=5;break}s.mode=1;case 1:if(0===e.We)return n;if(n=t,e.We--,e.qe++,r=255&e.ft(e.nt++),((s.method<<8)+r)%31!=0){s.mode=mt,e.Le=\"incorrect header check\",s.marker=5;break}if(!(32&r)){s.mode=7;break}s.mode=2;case 2:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St=(255&e.ft(e.nt++))<<24&4278190080,s.mode=3;case 3:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<16&16711680,s.mode=4;case 4:if(0===e.We)return n;n=t,e.We--,e.qe++,s.St+=(255&e.ft(e.nt++))<<8&65280,s.mode=5;case 5:return 0===e.We?n:(n=t,e.We--,e.qe++,s.St+=255&e.ft(e.nt++),s.mode=6,2);case 6:return s.mode=mt,e.Le=\"need dictionary\",s.marker=0,rt;case 7:if(n=s.kt.ut(e,n),n==st){s.mode=mt,s.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,s.kt.reset(e,s.vt),s.mode=12;case 12:return e.We=0,1;case mt:return st;default:return rt}},e._t=(e,t,n)=>{let r=0,s=n;if(!e||!e.gt||6!=e.gt.mode)return rt;const i=e.gt;return s<1<<i.zt||(s=(1<<i.zt)-1,r=n-s),i.kt.yt(t,r,s),i.mode=7,0},e.It=e=>{let n,r,s,i,o;if(!e||!e.gt)return rt;const c=e.gt;if(c.mode!=mt&&(c.mode=mt,c.marker=0),0===(n=e.We))return it;for(r=e.nt,s=c.marker;0!==n&&4>s;)e.ft(r)==bt[s]?s++:s=0!==e.ft(r)?0:4-s,r++,n--;return e.qe+=r-e.nt,e.nt=r,e.We=n,c.marker=s,4!=s?st:(i=e.qe,o=e.Ge,t(e),e.qe=i,e.Ge=o,c.mode=7,0)},e.Pt=e=>e&&e.gt&&e.gt.kt?e.gt.kt.bt():rt}function kt(){}function vt(e){const t=new kt,n=e&&e.chunkSize?r.floor(2*e.chunkSize):131072,o=new i(n);let c=!1;t.xt(),t.$e=o,this.append=(e,r)=>{const f=[];let a,l,u=0,w=0,h=0;if(0!==e.length){t.nt=0,t.et=e,t.We=e.length;do{if(t.rt=0,t.tt=n,0!==t.We||c||(t.nt=0,c=!0),a=t.At(0),c&&a===it){if(0!==t.We)throw new s(\"inflating: bad input\")}else if(0!==a&&1!==a)throw new s(\"inflating: \"+t.Le);if((c||1===a)&&t.We===e.length)throw new s(\"inflating: bad input\");t.rt&&(t.rt===n?f.push(new i(o)):f.push(o.subarray(0,t.rt))),h+=t.rt,r&&t.nt>0&&t.nt!=u&&(r(t.nt),u=t.nt)}while(t.We>0||0===t.tt);return f.length>1?(l=new i(h),f.forEach((e=>{l.set(e,w),w+=e.length}))):l=f[0]?new i(f[0]):new i,l}},this.flush=()=>{t.Ct()}}kt.prototype={xt(e){const t=this;return t.gt=new gt,e||(e=15),t.gt.xt(t,e)},At(e){const t=this;return t.gt?t.gt.At(t,e):rt},Ct(){const e=this;if(!e.gt)return rt;const t=e.gt.Ct(e);return e.gt=null,t},It(){const e=this;return e.gt?e.gt.It(e):rt},_t(e,t){const n=this;return n.gt?n.gt._t(n,e,t):rt},ft(e){return this.et[e]},je(e,t){return this.et.subarray(e,e+t)}},self.initCodec=()=>{self.Deflate=nt,self.Inflate=vt};\\n',r=()=>t.useDataURI?\"data:text/javascript,\"+encodeURIComponent(n):URL.createObjectURL(new Blob([n],{type:\"text/javascript\"}));e({workerScripts:{inflate:[r],deflate:[r]}})}export{e as configureWebWorker};\n", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst mimeTypes = {};\n\nexport {\n\tmimeTypes,\n\tgetMimeType\n};\n\nfunction getMimeType() {\n\treturn \"application/octet-stream\";\n}", "/* eslint-disable no-prototype-builtins */\n\n/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { FUNCTION_TYPE, UNDEFINED_VALUE } from \"../constants.js\";\n\nexport {\n\tinitShimAsyncCodec\n};\n\nfunction initShimAsyncCodec(library, options = {}, registerDataHandler) {\n\treturn {\n\t\tDeflate: createCodecClass(library.Deflate, options.deflate, registerDataHandler),\n\t\tInflate: createCodecClass(library.Inflate, options.inflate, registerDataHandler)\n\t};\n}\n\nfunction objectHasOwn(object, propertyName) {\n\t// deno-lint-ignore valid-typeof\n\treturn typeof Object.hasOwn === FUNCTION_TYPE ?\n\t\tObject.hasOwn(object, propertyName) :\n\t\t// deno-lint-ignore no-prototype-builtins\n\t\tobject.hasOwnProperty(propertyName);\n}\n\nfunction createCodecClass(constructor, constructorOptions, registerDataHandler) {\n\treturn class {\n\n\t\tconstructor(options) {\n\t\t\t// deno-lint-ignore no-this-alias\n\t\t\tconst codecAdapter = this;\n\t\t\tconst onData = data => {\n\t\t\t\tif (codecAdapter.pendingData) {\n\t\t\t\t\tconst previousPendingData = codecAdapter.pendingData;\n\t\t\t\t\tcodecAdapter.pendingData = new Uint8Array(previousPendingData.length + data.length);\n\t\t\t\t\tconst { pendingData } = codecAdapter;\n\t\t\t\t\tpendingData.set(previousPendingData, 0);\n\t\t\t\t\tpendingData.set(data, previousPendingData.length);\n\t\t\t\t} else {\n\t\t\t\t\tcodecAdapter.pendingData = new Uint8Array(data);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (objectHasOwn(options, \"level\") && options.level === UNDEFINED_VALUE) {\n\t\t\t\tdelete options.level;\n\t\t\t}\n\t\t\tcodecAdapter.codec = new constructor(Object.assign({}, constructorOptions, options));\n\t\t\tregisterDataHandler(codecAdapter.codec, onData);\n\t\t}\n\t\tappend(data) {\n\t\t\tthis.codec.push(data);\n\t\t\treturn getResponse(this);\n\t\t}\n\t\tflush() {\n\t\t\tthis.codec.push(new Uint8Array(), true);\n\t\t\treturn getResponse(this);\n\t\t}\n\t};\n\n\tfunction getResponse(codec) {\n\t\tif (codec.pendingData) {\n\t\t\tconst output = codec.pendingData;\n\t\t\tcodec.pendingData = null;\n\t\t\treturn output;\n\t\t} else {\n\t\t\treturn new Uint8Array();\n\t\t}\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst table = [];\nfor (let i = 0; i < 256; i++) {\n\tlet t = i;\n\tfor (let j = 0; j < 8; j++) {\n\t\tif (t & 1) {\n\t\t\tt = (t >>> 1) ^ 0xEDB88320;\n\t\t} else {\n\t\t\tt = t >>> 1;\n\t\t}\n\t}\n\ttable[i] = t;\n}\n\nclass Crc32 {\n\n\tconstructor(crc) {\n\t\tthis.crc = crc || -1;\n\t}\n\n\tappend(data) {\n\t\tlet crc = this.crc | 0;\n\t\tfor (let offset = 0, length = data.length | 0; offset < length; offset++) {\n\t\t\tcrc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF];\n\t\t}\n\t\tthis.crc = crc;\n\t}\n\n\tget() {\n\t\treturn ~this.crc;\n\t}\n}\n\nexport {\n\tCrc32\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n\nimport { Crc32 } from \"./codecs/crc32.js\";\n\nclass Crc32Stream extends TransformStream {\n\n\tconstructor() {\n\t\t// deno-lint-ignore prefer-const\n\t\tlet stream;\n\t\tconst crc32 = new Crc32();\n\t\tsuper({\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tcrc32.append(chunk);\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t\tflush() {\n\t\t\t\tconst value = new Uint8Array(4);\n\t\t\t\tconst dataView = new DataView(value.buffer);\n\t\t\t\tdataView.setUint32(0, crc32.get());\n\t\t\t\tstream.value = value;\n\t\t\t}\n\t\t});\n\t\tstream = this;\n\t}\n}\n\nexport {\n\tCrc32Stream\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TextEncoder */\n\nimport { UNDEFINED_TYPE } from \"../constants.js\";\n\nexport {\n\tencodeText\n};\n\nfunction encodeText(value) {\n\t// deno-lint-ignore valid-typeof\n\tif (typeof TextEncoder == UNDEFINED_TYPE) {\n\t\tvalue = unescape(encodeURIComponent(value));\n\t\tconst result = new Uint8Array(value.length);\n\t\tfor (let i = 0; i < result.length; i++) {\n\t\t\tresult[i] = value.charCodeAt(i);\n\t\t}\n\t\treturn result;\n\t} else {\n\t\treturn new TextEncoder().encode(value);\n\t}\n}", "// Derived from https://github.com/xqdoo00o/jszip/blob/master/lib/sjcl.js and https://github.com/bitwiseshiftleft/sjcl\n\n// deno-lint-ignore-file no-this-alias\n\n/*\n * SJCL is open. You can use, modify and redistribute it under a BSD\n * license or under the GNU GPL, version 2.0.\n */\n\n/** @fileOverview Javascript cryptography implementation.\n *\n * Crush to remove comments, shorten variable names and\n * generally reduce transmission size.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/*jslint indent: 2, bitwise: false, nomen: false, plusplus: false, white: false, regexp: false */\n\n/** @fileOverview Arrays of bits, encoded as arrays of Numbers.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/**\n * Arrays of bits, encoded as arrays of Numbers.\n * @namespace\n * @description\n * <p>\n * These objects are the currency accepted by SJCL's crypto functions.\n * </p>\n *\n * <p>\n * Most of our crypto primitives operate on arrays of 4-byte words internally,\n * but many of them can take arguments that are not a multiple of 4 bytes.\n * This library encodes arrays of bits (whose size need not be a multiple of 8\n * bits) as arrays of 32-bit words. The bits are packed, big-endian, into an\n * array of words, 32 bits at a time. Since the words are double-precision\n * floating point numbers, they fit some extra data. We use this (in a private,\n * possibly-changing manner) to encode the number of bits actually present\n * in the last word of the array.\n * </p>\n *\n * <p>\n * Because bitwise ops clear this out-of-band data, these arrays can be passed\n * to ciphers like AES which want arrays of words.\n * </p>\n */\nconst bitArray = {\n\t/**\n\t * Concatenate two bit arrays.\n\t * @param {bitArray} a1 The first array.\n\t * @param {bitArray} a2 The second array.\n\t * @return {bitArray} The concatenation of a1 and a2.\n\t */\n\tconcat(a1, a2) {\n\t\tif (a1.length === 0 || a2.length === 0) {\n\t\t\treturn a1.concat(a2);\n\t\t}\n\n\t\tconst last = a1[a1.length - 1], shift = bitArray.getPartial(last);\n\t\tif (shift === 32) {\n\t\t\treturn a1.concat(a2);\n\t\t} else {\n\t\t\treturn bitArray._shiftRight(a2, shift, last | 0, a1.slice(0, a1.length - 1));\n\t\t}\n\t},\n\n\t/**\n\t * Find the length of an array of bits.\n\t * @param {bitArray} a The array.\n\t * @return {Number} The length of a, in bits.\n\t */\n\tbitLength(a) {\n\t\tconst l = a.length;\n\t\tif (l === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tconst x = a[l - 1];\n\t\treturn (l - 1) * 32 + bitArray.getPartial(x);\n\t},\n\n\t/**\n\t * Truncate an array.\n\t * @param {bitArray} a The array.\n\t * @param {Number} len The length to truncate to, in bits.\n\t * @return {bitArray} A new array, truncated to len bits.\n\t */\n\tclamp(a, len) {\n\t\tif (a.length * 32 < len) {\n\t\t\treturn a;\n\t\t}\n\t\ta = a.slice(0, Math.ceil(len / 32));\n\t\tconst l = a.length;\n\t\tlen = len & 31;\n\t\tif (l > 0 && len) {\n\t\t\ta[l - 1] = bitArray.partial(len, a[l - 1] & 0x80000000 >> (len - 1), 1);\n\t\t}\n\t\treturn a;\n\t},\n\n\t/**\n\t * Make a partial word for a bit array.\n\t * @param {Number} len The number of bits in the word.\n\t * @param {Number} x The bits.\n\t * @param {Number} [_end=0] Pass 1 if x has already been shifted to the high side.\n\t * @return {Number} The partial word.\n\t */\n\tpartial(len, x, _end) {\n\t\tif (len === 32) {\n\t\t\treturn x;\n\t\t}\n\t\treturn (_end ? x | 0 : x << (32 - len)) + len * 0x10000000000;\n\t},\n\n\t/**\n\t * Get the number of bits used by a partial word.\n\t * @param {Number} x The partial word.\n\t * @return {Number} The number of bits used by the partial word.\n\t */\n\tgetPartial(x) {\n\t\treturn Math.round(x / 0x10000000000) || 32;\n\t},\n\n\t/** Shift an array right.\n\t * @param {bitArray} a The array to shift.\n\t * @param {Number} shift The number of bits to shift.\n\t * @param {Number} [carry=0] A byte to carry in\n\t * @param {bitArray} [out=[]] An array to prepend to the output.\n\t * @private\n\t */\n\t_shiftRight(a, shift, carry, out) {\n\t\tif (out === undefined) {\n\t\t\tout = [];\n\t\t}\n\n\t\tfor (; shift >= 32; shift -= 32) {\n\t\t\tout.push(carry);\n\t\t\tcarry = 0;\n\t\t}\n\t\tif (shift === 0) {\n\t\t\treturn out.concat(a);\n\t\t}\n\n\t\tfor (let i = 0; i < a.length; i++) {\n\t\t\tout.push(carry | a[i] >>> shift);\n\t\t\tcarry = a[i] << (32 - shift);\n\t\t}\n\t\tconst last2 = a.length ? a[a.length - 1] : 0;\n\t\tconst shift2 = bitArray.getPartial(last2);\n\t\tout.push(bitArray.partial(shift + shift2 & 31, (shift + shift2 > 32) ? carry : out.pop(), 1));\n\t\treturn out;\n\t}\n};\n\n/** @fileOverview Bit array codec implementations.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/**\n * Arrays of bytes\n * @namespace\n */\nconst codec = {\n\tbytes: {\n\t\t/** Convert from a bitArray to an array of bytes. */\n\t\tfromBits(arr) {\n\t\t\tconst bl = bitArray.bitLength(arr);\n\t\t\tconst byteLength = bl / 8;\n\t\t\tconst out = new Uint8Array(byteLength);\n\t\t\tlet tmp;\n\t\t\tfor (let i = 0; i < byteLength; i++) {\n\t\t\t\tif ((i & 3) === 0) {\n\t\t\t\t\ttmp = arr[i / 4];\n\t\t\t\t}\n\t\t\t\tout[i] = tmp >>> 24;\n\t\t\t\ttmp <<= 8;\n\t\t\t}\n\t\t\treturn out;\n\t\t},\n\t\t/** Convert from an array of bytes to a bitArray. */\n\t\ttoBits(bytes) {\n\t\t\tconst out = [];\n\t\t\tlet i;\n\t\t\tlet tmp = 0;\n\t\t\tfor (i = 0; i < bytes.length; i++) {\n\t\t\t\ttmp = tmp << 8 | bytes[i];\n\t\t\t\tif ((i & 3) === 3) {\n\t\t\t\t\tout.push(tmp);\n\t\t\t\t\ttmp = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (i & 3) {\n\t\t\t\tout.push(bitArray.partial(8 * (i & 3), tmp));\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t}\n};\n\nconst hash = {};\n\n/**\n * Context for a SHA-1 operation in progress.\n * @constructor\n */\nhash.sha1 = class {\n\tconstructor(hash) {\n\t\tconst sha1 = this;\n\t\t/**\n\t\t * The hash's block size, in bits.\n\t\t * @constant\n\t\t */\n\t\tsha1.blockSize = 512;\n\t\t/**\n\t\t * The SHA-1 initialization vector.\n\t\t * @private\n\t\t */\n\t\tsha1._init = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0];\n\t\t/**\n\t\t * The SHA-1 hash key.\n\t\t * @private\n\t\t */\n\t\tsha1._key = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];\n\t\tif (hash) {\n\t\t\tsha1._h = hash._h.slice(0);\n\t\t\tsha1._buffer = hash._buffer.slice(0);\n\t\t\tsha1._length = hash._length;\n\t\t} else {\n\t\t\tsha1.reset();\n\t\t}\n\t}\n\n\t/**\n\t * Reset the hash state.\n\t * @return this\n\t */\n\treset() {\n\t\tconst sha1 = this;\n\t\tsha1._h = sha1._init.slice(0);\n\t\tsha1._buffer = [];\n\t\tsha1._length = 0;\n\t\treturn sha1;\n\t}\n\n\t/**\n\t * Input several words to the hash.\n\t * @param {bitArray|String} data the data to hash.\n\t * @return this\n\t */\n\tupdate(data) {\n\t\tconst sha1 = this;\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = codec.utf8String.toBits(data);\n\t\t}\n\t\tconst b = sha1._buffer = bitArray.concat(sha1._buffer, data);\n\t\tconst ol = sha1._length;\n\t\tconst nl = sha1._length = ol + bitArray.bitLength(data);\n\t\tif (nl > 9007199254740991) {\n\t\t\tthrow new Error(\"Cannot hash more than 2^53 - 1 bits\");\n\t\t}\n\t\tconst c = new Uint32Array(b);\n\t\tlet j = 0;\n\t\tfor (let i = sha1.blockSize + ol - ((sha1.blockSize + ol) & (sha1.blockSize - 1)); i <= nl;\n\t\t\ti += sha1.blockSize) {\n\t\t\tsha1._block(c.subarray(16 * j, 16 * (j + 1)));\n\t\t\tj += 1;\n\t\t}\n\t\tb.splice(0, 16 * j);\n\t\treturn sha1;\n\t}\n\n\t/**\n\t * Complete hashing and output the hash value.\n\t * @return {bitArray} The hash value, an array of 5 big-endian words. TODO\n\t */\n\tfinalize() {\n\t\tconst sha1 = this;\n\t\tlet b = sha1._buffer;\n\t\tconst h = sha1._h;\n\n\t\t// Round out and push the buffer\n\t\tb = bitArray.concat(b, [bitArray.partial(1, 1)]);\n\t\t// Round out the buffer to a multiple of 16 words, less the 2 length words.\n\t\tfor (let i = b.length + 2; i & 15; i++) {\n\t\t\tb.push(0);\n\t\t}\n\n\t\t// append the length\n\t\tb.push(Math.floor(sha1._length / 0x100000000));\n\t\tb.push(sha1._length | 0);\n\n\t\twhile (b.length) {\n\t\t\tsha1._block(b.splice(0, 16));\n\t\t}\n\n\t\tsha1.reset();\n\t\treturn h;\n\t}\n\n\t/**\n\t * The SHA-1 logical functions f(0), f(1), ..., f(79).\n\t * @private\n\t */\n\t_f(t, b, c, d) {\n\t\tif (t <= 19) {\n\t\t\treturn (b & c) | (~b & d);\n\t\t} else if (t <= 39) {\n\t\t\treturn b ^ c ^ d;\n\t\t} else if (t <= 59) {\n\t\t\treturn (b & c) | (b & d) | (c & d);\n\t\t} else if (t <= 79) {\n\t\t\treturn b ^ c ^ d;\n\t\t}\n\t}\n\n\t/**\n\t * Circular left-shift operator.\n\t * @private\n\t */\n\t_S(n, x) {\n\t\treturn (x << n) | (x >>> 32 - n);\n\t}\n\n\t/**\n\t * Perform one cycle of SHA-1.\n\t * @param {Uint32Array|bitArray} words one block of words.\n\t * @private\n\t */\n\t_block(words) {\n\t\tconst sha1 = this;\n\t\tconst h = sha1._h;\n\t\t// When words is passed to _block, it has 16 elements. SHA1 _block\n\t\t// function extends words with new elements (at the end there are 80 elements). \n\t\t// The problem is that if we use Uint32Array instead of Array, \n\t\t// the length of Uint32Array cannot be changed. Thus, we replace words with a \n\t\t// normal Array here.\n\t\tconst w = Array(80); // do not use Uint32Array here as the instantiation is slower\n\t\tfor (let j = 0; j < 16; j++) {\n\t\t\tw[j] = words[j];\n\t\t}\n\n\t\tlet a = h[0];\n\t\tlet b = h[1];\n\t\tlet c = h[2];\n\t\tlet d = h[3];\n\t\tlet e = h[4];\n\n\t\tfor (let t = 0; t <= 79; t++) {\n\t\t\tif (t >= 16) {\n\t\t\t\tw[t] = sha1._S(1, w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]);\n\t\t\t}\n\t\t\tconst tmp = (sha1._S(5, a) + sha1._f(t, b, c, d) + e + w[t] +\n\t\t\t\tsha1._key[Math.floor(t / 20)]) | 0;\n\t\t\te = d;\n\t\t\td = c;\n\t\t\tc = sha1._S(30, b);\n\t\t\tb = a;\n\t\t\ta = tmp;\n\t\t}\n\n\t\th[0] = (h[0] + a) | 0;\n\t\th[1] = (h[1] + b) | 0;\n\t\th[2] = (h[2] + c) | 0;\n\t\th[3] = (h[3] + d) | 0;\n\t\th[4] = (h[4] + e) | 0;\n\t}\n};\n\n/** @fileOverview Low-level AES implementation.\n *\n * This file contains a low-level implementation of AES, optimized for\n * size and for efficiency on several browsers. It is based on\n * OpenSSL's aes_core.c, a public-domain implementation by Vincent\n * Rijmen, Antoon Bosselaers and Paulo Barreto.\n *\n * An older version of this implementation is available in the public\n * domain, but this one is (c) Emily Stark, Mike Hamburg, Dan Boneh,\n * Stanford University 2008-2010 and BSD-licensed for liability\n * reasons.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\nconst cipher = {};\n\n/**\n * Schedule out an AES key for both encryption and decryption. This\n * is a low-level class. Use a cipher mode to do bulk encryption.\n *\n * @constructor\n * @param {Array} key The key as an array of 4, 6 or 8 words.\n */\ncipher.aes = class {\n\tconstructor(key) {\n\t\t/**\n\t\t * The expanded S-box and inverse S-box tables. These will be computed\n\t\t * on the client so that we don't have to send them down the wire.\n\t\t *\n\t\t * There are two tables, _tables[0] is for encryption and\n\t\t * _tables[1] is for decryption.\n\t\t *\n\t\t * The first 4 sub-tables are the expanded S-box with MixColumns. The\n\t\t * last (_tables[01][4]) is the S-box itself.\n\t\t *\n\t\t * @private\n\t\t */\n\t\tconst aes = this;\n\t\taes._tables = [[[], [], [], [], []], [[], [], [], [], []]];\n\n\t\tif (!aes._tables[0][0][0]) {\n\t\t\taes._precompute();\n\t\t}\n\n\t\tconst sbox = aes._tables[0][4];\n\t\tconst decTable = aes._tables[1];\n\t\tconst keyLen = key.length;\n\n\t\tlet i, encKey, decKey, rcon = 1;\n\n\t\tif (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {\n\t\t\tthrow new Error(\"invalid aes key size\");\n\t\t}\n\n\t\taes._key = [encKey = key.slice(0), decKey = []];\n\n\t\t// schedule encryption keys\n\t\tfor (i = keyLen; i < 4 * keyLen + 28; i++) {\n\t\t\tlet tmp = encKey[i - 1];\n\n\t\t\t// apply sbox\n\t\t\tif (i % keyLen === 0 || (keyLen === 8 && i % keyLen === 4)) {\n\t\t\t\ttmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255];\n\n\t\t\t\t// shift rows and add rcon\n\t\t\t\tif (i % keyLen === 0) {\n\t\t\t\t\ttmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24;\n\t\t\t\t\trcon = rcon << 1 ^ (rcon >> 7) * 283;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tencKey[i] = encKey[i - keyLen] ^ tmp;\n\t\t}\n\n\t\t// schedule decryption keys\n\t\tfor (let j = 0; i; j++, i--) {\n\t\t\tconst tmp = encKey[j & 3 ? i : i - 4];\n\t\t\tif (i <= 4 || j < 4) {\n\t\t\t\tdecKey[j] = tmp;\n\t\t\t} else {\n\t\t\t\tdecKey[j] = decTable[0][sbox[tmp >>> 24]] ^\n\t\t\t\t\tdecTable[1][sbox[tmp >> 16 & 255]] ^\n\t\t\t\t\tdecTable[2][sbox[tmp >> 8 & 255]] ^\n\t\t\t\t\tdecTable[3][sbox[tmp & 255]];\n\t\t\t}\n\t\t}\n\t}\n\t// public\n\t/* Something like this might appear here eventually\n\tname: \"AES\",\n\tblockSize: 4,\n\tkeySizes: [4,6,8],\n\t*/\n\n\t/**\n\t * Encrypt an array of 4 big-endian words.\n\t * @param {Array} data The plaintext.\n\t * @return {Array} The ciphertext.\n\t */\n\tencrypt(data) {\n\t\treturn this._crypt(data, 0);\n\t}\n\n\t/**\n\t * Decrypt an array of 4 big-endian words.\n\t * @param {Array} data The ciphertext.\n\t * @return {Array} The plaintext.\n\t */\n\tdecrypt(data) {\n\t\treturn this._crypt(data, 1);\n\t}\n\n\t/**\n\t * Expand the S-box tables.\n\t *\n\t * @private\n\t */\n\t_precompute() {\n\t\tconst encTable = this._tables[0];\n\t\tconst decTable = this._tables[1];\n\t\tconst sbox = encTable[4];\n\t\tconst sboxInv = decTable[4];\n\t\tconst d = [];\n\t\tconst th = [];\n\t\tlet xInv, x2, x4, x8;\n\n\t\t// Compute double and third tables\n\t\tfor (let i = 0; i < 256; i++) {\n\t\t\tth[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i;\n\t\t}\n\n\t\tfor (let x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {\n\t\t\t// Compute sbox\n\t\t\tlet s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4;\n\t\t\ts = s >> 8 ^ s & 255 ^ 99;\n\t\t\tsbox[x] = s;\n\t\t\tsboxInv[s] = x;\n\n\t\t\t// Compute MixColumns\n\t\t\tx8 = d[x4 = d[x2 = d[x]]];\n\t\t\tlet tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n\t\t\tlet tEnc = d[s] * 0x101 ^ s * 0x1010100;\n\n\t\t\tfor (let i = 0; i < 4; i++) {\n\t\t\t\tencTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8;\n\t\t\t\tdecTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8;\n\t\t\t}\n\t\t}\n\n\t\t// Compactify. Considerable speedup on Firefox.\n\t\tfor (let i = 0; i < 5; i++) {\n\t\t\tencTable[i] = encTable[i].slice(0);\n\t\t\tdecTable[i] = decTable[i].slice(0);\n\t\t}\n\t}\n\n\t/**\n\t * Encryption and decryption core.\n\t * @param {Array} input Four words to be encrypted or decrypted.\n\t * @param dir The direction, 0 for encrypt and 1 for decrypt.\n\t * @return {Array} The four encrypted or decrypted words.\n\t * @private\n\t */\n\t_crypt(input, dir) {\n\t\tif (input.length !== 4) {\n\t\t\tthrow new Error(\"invalid aes block size\");\n\t\t}\n\n\t\tconst key = this._key[dir];\n\n\t\tconst nInnerRounds = key.length / 4 - 2;\n\t\tconst out = [0, 0, 0, 0];\n\t\tconst table = this._tables[dir];\n\n\t\t// load up the tables\n\t\tconst t0 = table[0];\n\t\tconst t1 = table[1];\n\t\tconst t2 = table[2];\n\t\tconst t3 = table[3];\n\t\tconst sbox = table[4];\n\n\t\t// state variables a,b,c,d are loaded with pre-whitened data\n\t\tlet a = input[0] ^ key[0];\n\t\tlet b = input[dir ? 3 : 1] ^ key[1];\n\t\tlet c = input[2] ^ key[2];\n\t\tlet d = input[dir ? 1 : 3] ^ key[3];\n\t\tlet kIndex = 4;\n\t\tlet a2, b2, c2;\n\n\t\t// Inner rounds. Cribbed from OpenSSL.\n\t\tfor (let i = 0; i < nInnerRounds; i++) {\n\t\t\ta2 = t0[a >>> 24] ^ t1[b >> 16 & 255] ^ t2[c >> 8 & 255] ^ t3[d & 255] ^ key[kIndex];\n\t\t\tb2 = t0[b >>> 24] ^ t1[c >> 16 & 255] ^ t2[d >> 8 & 255] ^ t3[a & 255] ^ key[kIndex + 1];\n\t\t\tc2 = t0[c >>> 24] ^ t1[d >> 16 & 255] ^ t2[a >> 8 & 255] ^ t3[b & 255] ^ key[kIndex + 2];\n\t\t\td = t0[d >>> 24] ^ t1[a >> 16 & 255] ^ t2[b >> 8 & 255] ^ t3[c & 255] ^ key[kIndex + 3];\n\t\t\tkIndex += 4;\n\t\t\ta = a2; b = b2; c = c2;\n\t\t}\n\n\t\t// Last round.\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tout[dir ? 3 & -i : i] =\n\t\t\t\tsbox[a >>> 24] << 24 ^\n\t\t\t\tsbox[b >> 16 & 255] << 16 ^\n\t\t\t\tsbox[c >> 8 & 255] << 8 ^\n\t\t\t\tsbox[d & 255] ^\n\t\t\t\tkey[kIndex++];\n\t\t\ta2 = a; a = b; b = c; c = d; d = a2;\n\t\t}\n\n\t\treturn out;\n\t}\n};\n\n/**\n * Random values\n * @namespace\n */\nconst random = {\n\t/** \n\t * Generate random words with pure js, cryptographically not as strong & safe as native implementation.\n\t * @param {TypedArray} typedArray The array to fill.\n\t * @return {TypedArray} The random values.\n\t */\n\tgetRandomValues(typedArray) {\n\t\tconst words = new Uint32Array(typedArray.buffer);\n\t\tconst r = (m_w) => {\n\t\t\tlet m_z = 0x3ade68b1;\n\t\t\tconst mask = 0xffffffff;\n\t\t\treturn function () {\n\t\t\t\tm_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t\t\t\tm_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t\t\t\tconst result = ((((m_z << 0x10) + m_w) & mask) / 0x100000000) + .5;\n\t\t\t\treturn result * (Math.random() > .5 ? 1 : -1);\n\t\t\t};\n\t\t};\n\t\tfor (let i = 0, rcache; i < typedArray.length; i += 4) {\n\t\t\tconst _r = r((rcache || Math.random()) * 0x100000000);\n\t\t\trcache = _r() * 0x3ade67b7;\n\t\t\twords[i / 4] = (_r() * 0x100000000) | 0;\n\t\t}\n\t\treturn typedArray;\n\t}\n};\n\n/** @fileOverview CTR mode implementation.\n *\n * Special thanks to Roy Nicholson for pointing out a bug in our\n * implementation.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/** Brian Gladman's CTR Mode.\n* @constructor\n* @param {Object} _prf The aes instance to generate key.\n* @param {bitArray} _iv The iv for ctr mode, it must be 128 bits.\n*/\n\nconst mode = {};\n\n/**\n * Brian Gladman's CTR Mode.\n * @namespace\n */\nmode.ctrGladman = class {\n\tconstructor(prf, iv) {\n\t\tthis._prf = prf;\n\t\tthis._initIv = iv;\n\t\tthis._iv = iv;\n\t}\n\n\treset() {\n\t\tthis._iv = this._initIv;\n\t}\n\n\t/** Input some data to calculate.\n\t * @param {bitArray} data the data to process, it must be intergral multiple of 128 bits unless it's the last.\n\t */\n\tupdate(data) {\n\t\treturn this.calculate(this._prf, data, this._iv);\n\t}\n\n\tincWord(word) {\n\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tlet b1 = (word >> 16) & 0xff;\n\t\t\tlet b2 = (word >> 8) & 0xff;\n\t\t\tlet b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) { // overflow b1 \n\t\t\t\tb1 = 0;\n\t\t\t\tif (b2 === 0xff) {\n\t\t\t\t\tb2 = 0;\n\t\t\t\t\tif (b3 === 0xff) {\n\t\t\t\t\t\tb3 = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t++b3;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t++b2;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t} else {\n\t\t\tword += (0x01 << 24);\n\t\t}\n\t\treturn word;\n\t}\n\n\tincCounter(counter) {\n\t\tif ((counter[0] = this.incWord(counter[0])) === 0) {\n\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\tcounter[1] = this.incWord(counter[1]);\n\t\t}\n\t}\n\n\tcalculate(prf, data, iv) {\n\t\tlet l;\n\t\tif (!(l = data.length)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst bl = bitArray.bitLength(data);\n\t\tfor (let i = 0; i < l; i += 4) {\n\t\t\tthis.incCounter(iv);\n\t\t\tconst e = prf.encrypt(iv);\n\t\t\tdata[i] ^= e[0];\n\t\t\tdata[i + 1] ^= e[1];\n\t\t\tdata[i + 2] ^= e[2];\n\t\t\tdata[i + 3] ^= e[3];\n\t\t}\n\t\treturn bitArray.clamp(data, bl);\n\t}\n};\n\nconst misc = {\n\timportKey(password) {\n\t\treturn new misc.hmacSha1(codec.bytes.toBits(password));\n\t},\n\tpbkdf2(prf, salt, count, length) {\n\t\tcount = count || 10000;\n\t\tif (length < 0 || count < 0) {\n\t\t\tthrow new Error(\"invalid params to pbkdf2\");\n\t\t}\n\t\tconst byteLength = ((length >> 5) + 1) << 2;\n\t\tlet u, ui, i, j, k;\n\t\tconst arrayBuffer = new ArrayBuffer(byteLength);\n\t\tconst out = new DataView(arrayBuffer);\n\t\tlet outLength = 0;\n\t\tconst b = bitArray;\n\t\tsalt = codec.bytes.toBits(salt);\n\t\tfor (k = 1; outLength < (byteLength || 1); k++) {\n\t\t\tu = ui = prf.encrypt(b.concat(salt, [k]));\n\t\t\tfor (i = 1; i < count; i++) {\n\t\t\t\tui = prf.encrypt(ui);\n\t\t\t\tfor (j = 0; j < ui.length; j++) {\n\t\t\t\t\tu[j] ^= ui[j];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (i = 0; outLength < (byteLength || 1) && i < u.length; i++) {\n\t\t\t\tout.setInt32(outLength, u[i]);\n\t\t\t\toutLength += 4;\n\t\t\t}\n\t\t}\n\t\treturn arrayBuffer.slice(0, length / 8);\n\t}\n};\n\n/** @fileOverview HMAC implementation.\n *\n * @author Emily Stark\n * @author Mike Hamburg\n * @author Dan Boneh\n */\n\n/** HMAC with the specified hash function.\n * @constructor\n * @param {bitArray} key the key for HMAC.\n * @param {Object} [Hash=hash.sha1] The hash function to use.\n */\nmisc.hmacSha1 = class {\n\n\tconstructor(key) {\n\t\tconst hmac = this;\n\t\tconst Hash = hmac._hash = hash.sha1;\n\t\tconst exKey = [[], []];\n\t\thmac._baseHash = [new Hash(), new Hash()];\n\t\tconst bs = hmac._baseHash[0].blockSize / 32;\n\n\t\tif (key.length > bs) {\n\t\t\tkey = new Hash().update(key).finalize();\n\t\t}\n\n\t\tfor (let i = 0; i < bs; i++) {\n\t\t\texKey[0][i] = key[i] ^ 0x36363636;\n\t\t\texKey[1][i] = key[i] ^ 0x5C5C5C5C;\n\t\t}\n\n\t\thmac._baseHash[0].update(exKey[0]);\n\t\thmac._baseHash[1].update(exKey[1]);\n\t\thmac._resultHash = new Hash(hmac._baseHash[0]);\n\t}\n\treset() {\n\t\tconst hmac = this;\n\t\thmac._resultHash = new hmac._hash(hmac._baseHash[0]);\n\t\thmac._updated = false;\n\t}\n\n\tupdate(data) {\n\t\tconst hmac = this;\n\t\thmac._updated = true;\n\t\thmac._resultHash.update(data);\n\t}\n\n\tdigest() {\n\t\tconst hmac = this;\n\t\tconst w = hmac._resultHash.finalize();\n\t\tconst result = new (hmac._hash)(hmac._baseHash[1]).update(w).finalize();\n\n\t\thmac.reset();\n\n\t\treturn result;\n\t}\n\n\tencrypt(data) {\n\t\tif (!this._updated) {\n\t\t\tthis.update(data);\n\t\t\treturn this.digest(data);\n\t\t} else {\n\t\t\tthrow new Error(\"encrypt on already updated hmac called!\");\n\t\t}\n\t}\n};\n\nexport {\n\tcipher,\n\tcodec,\n\tmisc,\n\tmode,\n\trandom\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global crypto */\n\nimport { FUNCTION_TYPE, UNDEFINED_TYPE } from \"../constants.js\";\nimport {\n\trandom\n} from \"./codecs/sjcl.js\";\n\nconst GET_RANDOM_VALUES_SUPPORTED = typeof crypto != UNDEFINED_TYPE && typeof crypto.getRandomValues == FUNCTION_TYPE;\n\nconst ERR_INVALID_PASSWORD = \"Invalid password\";\nconst ERR_INVALID_SIGNATURE = \"Invalid signature\";\nconst ERR_ABORT_CHECK_PASSWORD = \"zipjs-abort-check-password\";\n\nexport {\n\tgetRandomValues,\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD\n};\n\nfunction getRandomValues(array) {\n\tif (GET_RANDOM_VALUES_SUPPORTED) {\n\t\treturn crypto.getRandomValues(array);\n\t} else {\n\t\treturn random.getRandomValues(array);\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global crypto, TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport { UNDEFINED_VALUE, UNDEFINED_TYPE, FUNCTION_TYPE } from \"../constants.js\";\nimport { encodeText } from \"./../util/encode-text.js\";\nimport {\n\tcipher,\n\tcodec,\n\tmisc,\n\tmode\n} from \"./codecs/sjcl.js\";\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD,\n\tgetRandomValues\n} from \"./common-crypto.js\";\n\nconst BLOCK_LENGTH = 16;\nconst RAW_FORMAT = \"raw\";\nconst PBKDF2_ALGORITHM = { name: \"PBKDF2\" };\nconst HASH_ALGORITHM = { name: \"HMAC\" };\nconst HASH_FUNCTION = \"SHA-1\";\nconst BASE_KEY_ALGORITHM = Object.assign({ hash: HASH_ALGORITHM }, PBKDF2_ALGORITHM);\nconst DERIVED_BITS_ALGORITHM = Object.assign({ iterations: 1000, hash: { name: HASH_FUNCTION } }, PBKDF2_ALGORITHM);\nconst DERIVED_BITS_USAGE = [\"deriveBits\"];\nconst SALT_LENGTH = [8, 12, 16];\nconst KEY_LENGTH = [16, 24, 32];\nconst SIGNATURE_LENGTH = 10;\nconst COUNTER_DEFAULT_VALUE = [0, 0, 0, 0];\n// deno-lint-ignore valid-typeof\nconst CRYPTO_API_SUPPORTED = typeof crypto != UNDEFINED_TYPE;\nconst subtle = CRYPTO_API_SUPPORTED && crypto.subtle;\nconst SUBTLE_API_SUPPORTED = CRYPTO_API_SUPPORTED && typeof subtle != UNDEFINED_TYPE;\nconst codecBytes = codec.bytes;\nconst Aes = cipher.aes;\nconst CtrGladman = mode.ctrGladman;\nconst HmacSha1 = misc.hmacSha1;\n\nlet IMPORT_KEY_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.importKey == FUNCTION_TYPE;\nlet DERIVE_BITS_SUPPORTED = CRYPTO_API_SUPPORTED && SUBTLE_API_SUPPORTED && typeof subtle.deriveBits == FUNCTION_TYPE;\n\nclass AESDecryptionStream extends TransformStream {\n\n\tconstructor({ password, rawPassword, signed, encryptionStrength, checkPasswordOnly }) {\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tready: new Promise(resolve => this.resolveReady = resolve),\n\t\t\t\t\tpassword: encodePassword(password, rawPassword),\n\t\t\t\t\tsigned,\n\t\t\t\t\tstrength: encryptionStrength - 1,\n\t\t\t\t\tpending: new Uint8Array()\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync transform(chunk, controller) {\n\t\t\t\tconst aesCrypto = this;\n\t\t\t\tconst {\n\t\t\t\t\tpassword,\n\t\t\t\t\tstrength,\n\t\t\t\t\tresolveReady,\n\t\t\t\t\tready\n\t\t\t\t} = aesCrypto;\n\t\t\t\tif (password) {\n\t\t\t\t\tawait createDecryptionKeys(aesCrypto, strength, password, subarray(chunk, 0, SALT_LENGTH[strength] + 2));\n\t\t\t\t\tchunk = subarray(chunk, SALT_LENGTH[strength] + 2);\n\t\t\t\t\tif (checkPasswordOnly) {\n\t\t\t\t\t\tcontroller.error(new Error(ERR_ABORT_CHECK_PASSWORD));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolveReady();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tawait ready;\n\t\t\t\t}\n\t\t\t\tconst output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));\n\t\t\t\tcontroller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));\n\t\t\t},\n\t\t\tasync flush(controller) {\n\t\t\t\tconst {\n\t\t\t\t\tsigned,\n\t\t\t\t\tctr,\n\t\t\t\t\thmac,\n\t\t\t\t\tpending,\n\t\t\t\t\tready\n\t\t\t\t} = this;\n\t\t\t\tif (hmac && ctr) {\n\t\t\t\t\tawait ready;\n\t\t\t\t\tconst chunkToDecrypt = subarray(pending, 0, pending.length - SIGNATURE_LENGTH);\n\t\t\t\t\tconst originalSignature = subarray(pending, pending.length - SIGNATURE_LENGTH);\n\t\t\t\t\tlet decryptedChunkArray = new Uint8Array();\n\t\t\t\t\tif (chunkToDecrypt.length) {\n\t\t\t\t\t\tconst encryptedChunk = toBits(codecBytes, chunkToDecrypt);\n\t\t\t\t\t\thmac.update(encryptedChunk);\n\t\t\t\t\t\tconst decryptedChunk = ctr.update(encryptedChunk);\n\t\t\t\t\t\tdecryptedChunkArray = fromBits(codecBytes, decryptedChunk);\n\t\t\t\t\t}\n\t\t\t\t\tif (signed) {\n\t\t\t\t\t\tconst signature = subarray(fromBits(codecBytes, hmac.digest()), 0, SIGNATURE_LENGTH);\n\t\t\t\t\t\tfor (let indexSignature = 0; indexSignature < SIGNATURE_LENGTH; indexSignature++) {\n\t\t\t\t\t\t\tif (signature[indexSignature] != originalSignature[indexSignature]) {\n\t\t\t\t\t\t\t\tthrow new Error(ERR_INVALID_SIGNATURE);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontroller.enqueue(decryptedChunkArray);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass AESEncryptionStream extends TransformStream {\n\n\tconstructor({ password, rawPassword, encryptionStrength }) {\n\t\t// deno-lint-ignore prefer-const\n\t\tlet stream;\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tready: new Promise(resolve => this.resolveReady = resolve),\n\t\t\t\t\tpassword: encodePassword(password, rawPassword),\n\t\t\t\t\tstrength: encryptionStrength - 1,\n\t\t\t\t\tpending: new Uint8Array()\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync transform(chunk, controller) {\n\t\t\t\tconst aesCrypto = this;\n\t\t\t\tconst {\n\t\t\t\t\tpassword,\n\t\t\t\t\tstrength,\n\t\t\t\t\tresolveReady,\n\t\t\t\t\tready\n\t\t\t\t} = aesCrypto;\n\t\t\t\tlet preamble = new Uint8Array();\n\t\t\t\tif (password) {\n\t\t\t\t\tpreamble = await createEncryptionKeys(aesCrypto, strength, password);\n\t\t\t\t\tresolveReady();\n\t\t\t\t} else {\n\t\t\t\t\tawait ready;\n\t\t\t\t}\n\t\t\t\tconst output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));\n\t\t\t\toutput.set(preamble, 0);\n\t\t\t\tcontroller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));\n\t\t\t},\n\t\t\tasync flush(controller) {\n\t\t\t\tconst {\n\t\t\t\t\tctr,\n\t\t\t\t\thmac,\n\t\t\t\t\tpending,\n\t\t\t\t\tready\n\t\t\t\t} = this;\n\t\t\t\tif (hmac && ctr) {\n\t\t\t\t\tawait ready;\n\t\t\t\t\tlet encryptedChunkArray = new Uint8Array();\n\t\t\t\t\tif (pending.length) {\n\t\t\t\t\t\tconst encryptedChunk = ctr.update(toBits(codecBytes, pending));\n\t\t\t\t\t\thmac.update(encryptedChunk);\n\t\t\t\t\t\tencryptedChunkArray = fromBits(codecBytes, encryptedChunk);\n\t\t\t\t\t}\n\t\t\t\t\tstream.signature = fromBits(codecBytes, hmac.digest()).slice(0, SIGNATURE_LENGTH);\n\t\t\t\t\tcontroller.enqueue(concat(encryptedChunkArray, stream.signature));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tstream = this;\n\t}\n}\n\nexport {\n\tAESDecryptionStream,\n\tAESEncryptionStream,\n\tERR_INVALID_PASSWORD\n};\n\nfunction append(aesCrypto, input, output, paddingStart, paddingEnd, verifySignature) {\n\tconst {\n\t\tctr,\n\t\thmac,\n\t\tpending\n\t} = aesCrypto;\n\tconst inputLength = input.length - paddingEnd;\n\tif (pending.length) {\n\t\tinput = concat(pending, input);\n\t\toutput = expand(output, inputLength - (inputLength % BLOCK_LENGTH));\n\t}\n\tlet offset;\n\tfor (offset = 0; offset <= inputLength - BLOCK_LENGTH; offset += BLOCK_LENGTH) {\n\t\tconst inputChunk = toBits(codecBytes, subarray(input, offset, offset + BLOCK_LENGTH));\n\t\tif (verifySignature) {\n\t\t\thmac.update(inputChunk);\n\t\t}\n\t\tconst outputChunk = ctr.update(inputChunk);\n\t\tif (!verifySignature) {\n\t\t\thmac.update(outputChunk);\n\t\t}\n\t\toutput.set(fromBits(codecBytes, outputChunk), offset + paddingStart);\n\t}\n\taesCrypto.pending = subarray(input, offset);\n\treturn output;\n}\n\nasync function createDecryptionKeys(decrypt, strength, password, preamble) {\n\tconst passwordVerificationKey = await createKeys(decrypt, strength, password, subarray(preamble, 0, SALT_LENGTH[strength]));\n\tconst passwordVerification = subarray(preamble, SALT_LENGTH[strength]);\n\tif (passwordVerificationKey[0] != passwordVerification[0] || passwordVerificationKey[1] != passwordVerification[1]) {\n\t\tthrow new Error(ERR_INVALID_PASSWORD);\n\t}\n}\n\nasync function createEncryptionKeys(encrypt, strength, password) {\n\tconst salt = getRandomValues(new Uint8Array(SALT_LENGTH[strength]));\n\tconst passwordVerification = await createKeys(encrypt, strength, password, salt);\n\treturn concat(salt, passwordVerification);\n}\n\nasync function createKeys(aesCrypto, strength, password, salt) {\n\taesCrypto.password = null;\n\tconst baseKey = await importKey(RAW_FORMAT, password, BASE_KEY_ALGORITHM, false, DERIVED_BITS_USAGE);\n\tconst derivedBits = await deriveBits(Object.assign({ salt }, DERIVED_BITS_ALGORITHM), baseKey, 8 * ((KEY_LENGTH[strength] * 2) + 2));\n\tconst compositeKey = new Uint8Array(derivedBits);\n\tconst key = toBits(codecBytes, subarray(compositeKey, 0, KEY_LENGTH[strength]));\n\tconst authentication = toBits(codecBytes, subarray(compositeKey, KEY_LENGTH[strength], KEY_LENGTH[strength] * 2));\n\tconst passwordVerification = subarray(compositeKey, KEY_LENGTH[strength] * 2);\n\tObject.assign(aesCrypto, {\n\t\tkeys: {\n\t\t\tkey,\n\t\t\tauthentication,\n\t\t\tpasswordVerification\n\t\t},\n\t\tctr: new CtrGladman(new Aes(key), Array.from(COUNTER_DEFAULT_VALUE)),\n\t\thmac: new HmacSha1(authentication)\n\t});\n\treturn passwordVerification;\n}\n\nasync function importKey(format, password, algorithm, extractable, keyUsages) {\n\tif (IMPORT_KEY_SUPPORTED) {\n\t\ttry {\n\t\t\treturn await subtle.importKey(format, password, algorithm, extractable, keyUsages);\n\t\t} catch (_error) {\n\t\t\tIMPORT_KEY_SUPPORTED = false;\n\t\t\treturn misc.importKey(password);\n\t\t}\n\t} else {\n\t\treturn misc.importKey(password);\n\t}\n}\n\nasync function deriveBits(algorithm, baseKey, length) {\n\tif (DERIVE_BITS_SUPPORTED) {\n\t\ttry {\n\t\t\treturn await subtle.deriveBits(algorithm, baseKey, length);\n\t\t} catch (_error) {\n\t\t\tDERIVE_BITS_SUPPORTED = false;\n\t\t\treturn misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length);\n\t\t}\n\t} else {\n\t\treturn misc.pbkdf2(baseKey, algorithm.salt, DERIVED_BITS_ALGORITHM.iterations, length);\n\t}\n}\n\nfunction encodePassword(password, rawPassword) {\n\tif (rawPassword === UNDEFINED_VALUE) {\n\t\treturn encodeText(password);\n\t} else {\n\t\treturn rawPassword;\n\t}\n}\n\nfunction concat(leftArray, rightArray) {\n\tlet array = leftArray;\n\tif (leftArray.length + rightArray.length) {\n\t\tarray = new Uint8Array(leftArray.length + rightArray.length);\n\t\tarray.set(leftArray, 0);\n\t\tarray.set(rightArray, leftArray.length);\n\t}\n\treturn array;\n}\n\nfunction expand(inputArray, length) {\n\tif (length && length > inputArray.length) {\n\t\tconst array = inputArray;\n\t\tinputArray = new Uint8Array(length);\n\t\tinputArray.set(array, 0);\n\t}\n\treturn inputArray;\n}\n\nfunction subarray(array, begin, end) {\n\treturn array.subarray(begin, end);\n}\n\nfunction fromBits(codecBytes, chunk) {\n\treturn codecBytes.fromBits(chunk);\n}\nfunction toBits(codecBytes, chunk) {\n\treturn codecBytes.toBits(chunk);\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport { Crc32 } from \"./codecs/crc32.js\";\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_ABORT_CHECK_PASSWORD,\n\tgetRandomValues\n} from \"./common-crypto.js\";\n\nconst HEADER_LENGTH = 12;\n\nclass ZipCryptoDecryptionStream extends TransformStream {\n\n\tconstructor({ password, passwordVerification, checkPasswordOnly }) {\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tpassword,\n\t\t\t\t\tpasswordVerification\n\t\t\t\t});\n\t\t\t\tcreateKeys(this, password);\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tconst zipCrypto = this;\n\t\t\t\tif (zipCrypto.password) {\n\t\t\t\t\tconst decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));\n\t\t\t\t\tzipCrypto.password = null;\n\t\t\t\t\tif (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) {\n\t\t\t\t\t\tthrow new Error(ERR_INVALID_PASSWORD);\n\t\t\t\t\t}\n\t\t\t\t\tchunk = chunk.subarray(HEADER_LENGTH);\n\t\t\t\t}\n\t\t\t\tif (checkPasswordOnly) {\n\t\t\t\t\tcontroller.error(new Error(ERR_ABORT_CHECK_PASSWORD));\n\t\t\t\t} else {\n\t\t\t\t\tcontroller.enqueue(decrypt(zipCrypto, chunk));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass ZipCryptoEncryptionStream extends TransformStream {\n\n\tconstructor({ password, passwordVerification }) {\n\t\tsuper({\n\t\t\tstart() {\n\t\t\t\tObject.assign(this, {\n\t\t\t\t\tpassword,\n\t\t\t\t\tpasswordVerification\n\t\t\t\t});\n\t\t\t\tcreateKeys(this, password);\n\t\t\t},\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tconst zipCrypto = this;\n\t\t\t\tlet output;\n\t\t\t\tlet offset;\n\t\t\t\tif (zipCrypto.password) {\n\t\t\t\t\tzipCrypto.password = null;\n\t\t\t\t\tconst header = getRandomValues(new Uint8Array(HEADER_LENGTH));\n\t\t\t\t\theader[HEADER_LENGTH - 1] = zipCrypto.passwordVerification;\n\t\t\t\t\toutput = new Uint8Array(chunk.length + header.length);\n\t\t\t\t\toutput.set(encrypt(zipCrypto, header), 0);\n\t\t\t\t\toffset = HEADER_LENGTH;\n\t\t\t\t} else {\n\t\t\t\t\toutput = new Uint8Array(chunk.length);\n\t\t\t\t\toffset = 0;\n\t\t\t\t}\n\t\t\t\toutput.set(encrypt(zipCrypto, chunk), offset);\n\t\t\t\tcontroller.enqueue(output);\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport {\n\tZipCryptoDecryptionStream,\n\tZipCryptoEncryptionStream,\n\tERR_INVALID_PASSWORD\n};\n\nfunction decrypt(target, input) {\n\tconst output = new Uint8Array(input.length);\n\tfor (let index = 0; index < input.length; index++) {\n\t\toutput[index] = getByte(target) ^ input[index];\n\t\tupdateKeys(target, output[index]);\n\t}\n\treturn output;\n}\n\nfunction encrypt(target, input) {\n\tconst output = new Uint8Array(input.length);\n\tfor (let index = 0; index < input.length; index++) {\n\t\toutput[index] = getByte(target) ^ input[index];\n\t\tupdateKeys(target, input[index]);\n\t}\n\treturn output;\n}\n\nfunction createKeys(target, password) {\n\tconst keys = [0x12345678, 0x23456789, 0x34567890];\n\tObject.assign(target, {\n\t\tkeys,\n\t\tcrcKey0: new Crc32(keys[0]),\n\t\tcrcKey2: new Crc32(keys[2]),\n\t});\n\tfor (let index = 0; index < password.length; index++) {\n\t\tupdateKeys(target, password.charCodeAt(index));\n\t}\n}\n\nfunction updateKeys(target, byte) {\n\tlet [key0, key1, key2] = target.keys;\n\ttarget.crcKey0.append([byte]);\n\tkey0 = ~target.crcKey0.get();\n\tkey1 = getInt32(Math.imul(getInt32(key1 + getInt8(key0)), 134775813) + 1);\n\ttarget.crcKey2.append([key1 >>> 24]);\n\tkey2 = ~target.crcKey2.get();\n\ttarget.keys = [key0, key1, key2];\n}\n\nfunction getByte(target) {\n\tconst temp = target.keys[2] | 2;\n\treturn getInt8(Math.imul(temp, (temp ^ 1)) >>> 8);\n}\n\nfunction getInt8(number) {\n\treturn number & 0xFF;\n}\n\nfunction getInt32(number) {\n\treturn number & 0xFFFFFFFF;\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport { Crc32Stream } from \"./crc32-stream.js\";\nimport {\n\tAESEncryptionStream,\n\tAESDecryptionStream\n} from \"./aes-crypto-stream.js\";\nimport {\n\tZipCryptoEncryptionStream,\n\tZipCryptoDecryptionStream\n} from \"./zip-crypto-stream.js\";\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD\n} from \"./common-crypto.js\";\n\nconst COMPRESSION_FORMAT = \"deflate-raw\";\n\nclass DeflateStream extends TransformStream {\n\n\tconstructor(options, { chunkSize, CompressionStream, CompressionStreamNative }) {\n\t\tsuper({});\n\t\tconst { compressed, encrypted, useCompressionStream, zipCrypto, signed, level } = options;\n\t\tconst stream = this;\n\t\tlet crc32Stream, encryptionStream;\n\t\tlet readable = filterEmptyChunks(super.readable);\n\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\tcrc32Stream = new Crc32Stream();\n\t\t\treadable = pipeThrough(readable, crc32Stream);\n\t\t}\n\t\tif (compressed) {\n\t\t\treadable = pipeThroughCommpressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStreamNative, CompressionStream);\n\t\t}\n\t\tif (encrypted) {\n\t\t\tif (zipCrypto) {\n\t\t\t\treadable = pipeThrough(readable, new ZipCryptoEncryptionStream(options));\n\t\t\t} else {\n\t\t\t\tencryptionStream = new AESEncryptionStream(options);\n\t\t\t\treadable = pipeThrough(readable, encryptionStream);\n\t\t\t}\n\t\t}\n\t\tsetReadable(stream, readable, () => {\n\t\t\tlet signature;\n\t\t\tif (encrypted && !zipCrypto) {\n\t\t\t\tsignature = encryptionStream.signature;\n\t\t\t}\n\t\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\t\tsignature = new DataView(crc32Stream.value.buffer).getUint32(0);\n\t\t\t}\n\t\t\tstream.signature = signature;\n\t\t});\n\t}\n}\n\nclass InflateStream extends TransformStream {\n\n\tconstructor(options, { chunkSize, DecompressionStream, DecompressionStreamNative }) {\n\t\tsuper({});\n\t\tconst { zipCrypto, encrypted, signed, signature, compressed, useCompressionStream } = options;\n\t\tlet crc32Stream, decryptionStream;\n\t\tlet readable = filterEmptyChunks(super.readable);\n\t\tif (encrypted) {\n\t\t\tif (zipCrypto) {\n\t\t\t\treadable = pipeThrough(readable, new ZipCryptoDecryptionStream(options));\n\t\t\t} else {\n\t\t\t\tdecryptionStream = new AESDecryptionStream(options);\n\t\t\t\treadable = pipeThrough(readable, decryptionStream);\n\t\t\t}\n\t\t}\n\t\tif (compressed) {\n\t\t\treadable = pipeThroughCommpressionStream(readable, useCompressionStream, { chunkSize }, DecompressionStreamNative, DecompressionStream);\n\t\t}\n\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\tcrc32Stream = new Crc32Stream();\n\t\t\treadable = pipeThrough(readable, crc32Stream);\n\t\t}\n\t\tsetReadable(this, readable, () => {\n\t\t\tif ((!encrypted || zipCrypto) && signed) {\n\t\t\t\tconst dataViewSignature = new DataView(crc32Stream.value.buffer);\n\t\t\t\tif (signature != dataViewSignature.getUint32(0, false)) {\n\t\t\t\t\tthrow new Error(ERR_INVALID_SIGNATURE);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport {\n\tDeflateStream,\n\tInflateStream,\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD\n};\n\nfunction filterEmptyChunks(readable) {\n\treturn pipeThrough(readable, new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\tif (chunk && chunk.length) {\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t}\n\t\t}\n\t}));\n}\n\nfunction setReadable(stream, readable, flush) {\n\treadable = pipeThrough(readable, new TransformStream({ flush }));\n\tObject.defineProperty(stream, \"readable\", {\n\t\tget() {\n\t\t\treturn readable;\n\t\t}\n\t});\n}\n\nfunction pipeThroughCommpressionStream(readable, useCompressionStream, options, CodecStreamNative, CodecStream) {\n\ttry {\n\t\tconst CompressionStream = useCompressionStream && CodecStreamNative ? CodecStreamNative : CodecStream;\n\t\treadable = pipeThrough(readable, new CompressionStream(COMPRESSION_FORMAT, options));\n\t} catch (_error) {\n\t\tif (useCompressionStream) {\n\t\t\ttry {\n\t\t\t\treadable = pipeThrough(readable, new CodecStream(COMPRESSION_FORMAT, options));\n\t\t\t} catch (_error) {\n\t\t\t\treturn readable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn readable;\n\t\t}\n\t}\n\treturn readable;\n}\n\nfunction pipeThrough(readable, transformStream) {\n\treturn readable.pipeThrough(transformStream);\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/*\n * This program is based on JZlib 1.0.2 ymnk, JCraft,Inc.\n * JZlib is based on zlib-1.1.3, so all credit should go authors\n * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu)\n * and contributors of zlib.\n */\n\n/* global TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport {\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD,\n\tInflateStream,\n\tDeflateStream\n} from \"./zip-entry-stream.js\";\n\nconst MESSAGE_EVENT_TYPE = \"message\";\nconst MESSAGE_START = \"start\";\nconst MESSAGE_PULL = \"pull\";\nconst MESSAGE_DATA = \"data\";\nconst MESSAGE_ACK_DATA = \"ack\";\nconst MESSAGE_CLOSE = \"close\";\nconst CODEC_DEFLATE = \"deflate\";\nconst CODEC_INFLATE = \"inflate\";\n\nexport {\n\tCODEC_DEFLATE,\n\tCODEC_INFLATE,\n\tMESSAGE_EVENT_TYPE,\n\tMESSAGE_START,\n\tMESSAGE_PULL,\n\tMESSAGE_DATA,\n\tMESSAGE_ACK_DATA,\n\tMESSAGE_CLOSE,\n\tERR_INVALID_PASSWORD,\n\tERR_INVALID_SIGNATURE,\n\tERR_ABORT_CHECK_PASSWORD,\n\tCodecStream,\n\tChunkStream\n};\n\nclass CodecStream extends TransformStream {\n\n\tconstructor(options, config) {\n\t\tsuper({});\n\t\tconst codec = this;\n\t\tconst { codecType } = options;\n\t\tlet Stream;\n\t\tif (codecType.startsWith(CODEC_DEFLATE)) {\n\t\t\tStream = DeflateStream;\n\t\t} else if (codecType.startsWith(CODEC_INFLATE)) {\n\t\t\tStream = InflateStream;\n\t\t}\n\t\tlet outputSize = 0;\n\t\tlet inputSize = 0;\n\t\tconst stream = new Stream(options, config);\n\t\tconst readable = super.readable;\n\t\tconst inputSizeStream = new TransformStream({\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tif (chunk && chunk.length) {\n\t\t\t\t\tinputSize += chunk.length;\n\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t}\n\t\t\t},\n\t\t\tflush() {\n\t\t\t\tObject.assign(codec, {\n\t\t\t\t\tinputSize\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tconst outputSizeStream = new TransformStream({\n\t\t\ttransform(chunk, controller) {\n\t\t\t\tif (chunk && chunk.length) {\n\t\t\t\t\toutputSize += chunk.length;\n\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t}\n\t\t\t},\n\t\t\tflush() {\n\t\t\t\tconst { signature } = stream;\n\t\t\t\tObject.assign(codec, {\n\t\t\t\t\tsignature,\n\t\t\t\t\toutputSize,\n\t\t\t\t\tinputSize\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(codec, \"readable\", {\n\t\t\tget() {\n\t\t\t\treturn readable.pipeThrough(inputSizeStream).pipeThrough(stream).pipeThrough(outputSizeStream);\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass ChunkStream extends TransformStream {\n\n\tconstructor(chunkSize) {\n\t\tlet pendingChunk;\n\t\tsuper({\n\t\t\ttransform,\n\t\t\tflush(controller) {\n\t\t\t\tif (pendingChunk && pendingChunk.length) {\n\t\t\t\t\tcontroller.enqueue(pendingChunk);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tfunction transform(chunk, controller) {\n\t\t\tif (pendingChunk) {\n\t\t\t\tconst newChunk = new Uint8Array(pendingChunk.length + chunk.length);\n\t\t\t\tnewChunk.set(pendingChunk);\n\t\t\t\tnewChunk.set(chunk, pendingChunk.length);\n\t\t\t\tchunk = newChunk;\n\t\t\t\tpendingChunk = null;\n\t\t\t}\n\t\t\tif (chunk.length > chunkSize) {\n\t\t\t\tcontroller.enqueue(chunk.slice(0, chunkSize));\n\t\t\t\ttransform(chunk.slice(chunkSize), controller);\n\t\t\t} else {\n\t\t\t\tpendingChunk = chunk;\n\t\t\t}\n\t\t}\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global Worker, URL, TransformStream, WritableStream */\n\nimport {\n\tUNDEFINED_TYPE,\n\tFUNCTION_TYPE\n} from \"./constants.js\";\nimport {\n\tCodecStream,\n\tChunkStream,\n\tMESSAGE_EVENT_TYPE,\n\tMESSAGE_START,\n\tMESSAGE_PULL,\n\tMESSAGE_DATA,\n\tMESSAGE_ACK_DATA,\n\tMESSAGE_CLOSE\n} from \"./streams/codec-stream.js\";\n\n// deno-lint-ignore valid-typeof\nlet WEB_WORKERS_SUPPORTED = typeof Worker != UNDEFINED_TYPE;\n\nexport {\n\tCodecWorker\n};\n\nclass CodecWorker {\n\n\tconstructor(workerData, { readable, writable }, { options, config, streamOptions, useWebWorkers, transferStreams, scripts }, onTaskFinished) {\n\t\tconst { signal } = streamOptions;\n\t\tObject.assign(workerData, {\n\t\t\tbusy: true,\n\t\t\treadable: readable\n\t\t\t\t.pipeThrough(new ChunkStream(config.chunkSize))\n\t\t\t\t.pipeThrough(new ProgressWatcherStream(readable, streamOptions), { signal }),\n\t\t\twritable,\n\t\t\toptions: Object.assign({}, options),\n\t\t\tscripts,\n\t\t\ttransferStreams,\n\t\t\tterminate() {\n\t\t\t\treturn new Promise(resolve => {\n\t\t\t\t\tconst { worker, busy } = workerData;\n\t\t\t\t\tif (worker) {\n\t\t\t\t\t\tif (busy) {\n\t\t\t\t\t\t\tworkerData.resolveTerminated = resolve;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tworker.terminate();\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tworkerData.interface = null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tonTaskFinished() {\n\t\t\t\tconst { resolveTerminated } = workerData;\n\t\t\t\tif (resolveTerminated) {\n\t\t\t\t\tworkerData.resolveTerminated = null;\n\t\t\t\t\tworkerData.terminated = true;\n\t\t\t\t\tworkerData.worker.terminate();\n\t\t\t\t\tresolveTerminated();\n\t\t\t\t}\n\t\t\t\tworkerData.busy = false;\n\t\t\t\tonTaskFinished(workerData);\n\t\t\t}\n\t\t});\n\t\treturn (useWebWorkers && WEB_WORKERS_SUPPORTED ? createWebWorkerInterface : createWorkerInterface)(workerData, config);\n\t}\n}\n\nclass ProgressWatcherStream extends TransformStream {\n\n\tconstructor(readableSource, { onstart, onprogress, size, onend }) {\n\t\tlet chunkOffset = 0;\n\t\tsuper({\n\t\t\tasync start() {\n\t\t\t\tif (onstart) {\n\t\t\t\t\tawait callHandler(onstart, size);\n\t\t\t\t}\n\t\t\t},\n\t\t\tasync transform(chunk, controller) {\n\t\t\t\tchunkOffset += chunk.length;\n\t\t\t\tif (onprogress) {\n\t\t\t\t\tawait callHandler(onprogress, chunkOffset, size);\n\t\t\t\t}\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t},\n\t\t\tasync flush() {\n\t\t\t\treadableSource.size = chunkOffset;\n\t\t\t\tif (onend) {\n\t\t\t\t\tawait callHandler(onend, chunkOffset);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nasync function callHandler(handler, ...parameters) {\n\ttry {\n\t\tawait handler(...parameters);\n\t} catch (_error) {\n\t\t// ignored\n\t}\n}\n\nfunction createWorkerInterface(workerData, config) {\n\treturn {\n\t\trun: () => runWorker(workerData, config)\n\t};\n}\n\nfunction createWebWorkerInterface(workerData, config) {\n\tconst { baseURL, chunkSize } = config;\n\tif (!workerData.interface) {\n\t\tlet worker;\n\t\ttry {\n\t\t\tworker = getWebWorker(workerData.scripts[0], baseURL, workerData);\n\t\t} catch (_error) {\n\t\t\tWEB_WORKERS_SUPPORTED = false;\n\t\t\treturn createWorkerInterface(workerData, config);\n\t\t}\n\t\tObject.assign(workerData, {\n\t\t\tworker,\n\t\t\tinterface: {\n\t\t\t\trun: () => runWebWorker(workerData, { chunkSize })\n\t\t\t}\n\t\t});\n\t}\n\treturn workerData.interface;\n}\n\nasync function runWorker({ options, readable, writable, onTaskFinished }, config) {\n\ttry {\n\t\tconst codecStream = new CodecStream(options, config);\n\t\tawait readable.pipeThrough(codecStream).pipeTo(writable, { preventClose: true, preventAbort: true });\n\t\tconst {\n\t\t\tsignature,\n\t\t\tinputSize,\n\t\t\toutputSize\n\t\t} = codecStream;\n\t\treturn {\n\t\t\tsignature,\n\t\t\tinputSize,\n\t\t\toutputSize\n\t\t};\n\t} finally {\n\t\tonTaskFinished();\n\t}\n}\n\nasync function runWebWorker(workerData, config) {\n\tlet resolveResult, rejectResult;\n\tconst result = new Promise((resolve, reject) => {\n\t\tresolveResult = resolve;\n\t\trejectResult = reject;\n\t});\n\tObject.assign(workerData, {\n\t\treader: null,\n\t\twriter: null,\n\t\tresolveResult,\n\t\trejectResult,\n\t\tresult\n\t});\n\tconst { readable, options, scripts } = workerData;\n\tconst { writable, closed } = watchClosedStream(workerData.writable);\n\tconst streamsTransferred = sendMessage({\n\t\ttype: MESSAGE_START,\n\t\tscripts: scripts.slice(1),\n\t\toptions,\n\t\tconfig,\n\t\treadable,\n\t\twritable\n\t}, workerData);\n\tif (!streamsTransferred) {\n\t\tObject.assign(workerData, {\n\t\t\treader: readable.getReader(),\n\t\t\twriter: writable.getWriter()\n\t\t});\n\t}\n\tconst resultValue = await result;\n\tif (!streamsTransferred) {\n\t\tawait writable.getWriter().close();\n\t}\n\tawait closed;\n\treturn resultValue;\n}\n\nfunction watchClosedStream(writableSource) {\n\tlet resolveStreamClosed;\n\tconst closed = new Promise(resolve => resolveStreamClosed = resolve);\n\tconst writable = new WritableStream({\n\t\tasync write(chunk) {\n\t\t\tconst writer = writableSource.getWriter();\n\t\t\tawait writer.ready;\n\t\t\tawait writer.write(chunk);\n\t\t\twriter.releaseLock();\n\t\t},\n\t\tclose() {\n\t\t\tresolveStreamClosed();\n\t\t},\n\t\tabort(reason) {\n\t\t\tconst writer = writableSource.getWriter();\n\t\t\treturn writer.abort(reason);\n\t\t}\n\t});\n\treturn { writable, closed };\n}\n\nlet classicWorkersSupported = true;\nlet transferStreamsSupported = true;\n\nfunction getWebWorker(url, baseURL, workerData) {\n\tconst workerOptions = { type: \"module\" };\n\tlet scriptUrl, worker;\n\t// deno-lint-ignore valid-typeof\n\tif (typeof url == FUNCTION_TYPE) {\n\t\turl = url();\n\t}\n\ttry {\n\t\tscriptUrl = new URL(url, baseURL);\n\t} catch (_error) {\n\t\tscriptUrl = url;\n\t}\n\tif (classicWorkersSupported) {\n\t\ttry {\n\t\t\tworker = new Worker(scriptUrl);\n\t\t} catch (_error) {\n\t\t\tclassicWorkersSupported = false;\n\t\t\tworker = new Worker(scriptUrl, workerOptions);\n\t\t}\n\t} else {\n\t\tworker = new Worker(scriptUrl, workerOptions);\n\t}\n\tworker.addEventListener(MESSAGE_EVENT_TYPE, event => onMessage(event, workerData));\n\treturn worker;\n}\n\nfunction sendMessage(message, { worker, writer, onTaskFinished, transferStreams }) {\n\ttry {\n\t\tconst { value, readable, writable } = message;\n\t\tconst transferables = [];\n\t\tif (value) {\n\t\t\tif (value.byteLength < value.buffer.byteLength) {\n\t\t\t\tmessage.value = value.buffer.slice(0, value.byteLength);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmessage.value = value.buffer;\n\t\t\t}\n\t\t\ttransferables.push(message.value);\n\t\t}\n\t\tif (transferStreams && transferStreamsSupported) {\n\t\t\tif (readable) {\n\t\t\t\ttransferables.push(readable);\n\t\t\t}\n\t\t\tif (writable) {\n\t\t\t\ttransferables.push(writable);\n\t\t\t}\n\t\t} else {\n\t\t\tmessage.readable = message.writable = null;\n\t\t}\n\t\tif (transferables.length) {\n\t\t\ttry {\n\t\t\t\tworker.postMessage(message, transferables);\n\t\t\t\treturn true;\n\t\t\t} catch (_error) {\n\t\t\t\ttransferStreamsSupported = false;\n\t\t\t\tmessage.readable = message.writable = null;\n\t\t\t\tworker.postMessage(message);\n\t\t\t}\n\t\t} else {\n\t\t\tworker.postMessage(message);\n\t\t}\n\t} catch (error) {\n\t\tif (writer) {\n\t\t\twriter.releaseLock();\n\t\t}\n\t\tonTaskFinished();\n\t\tthrow error;\n\t}\n}\n\nasync function onMessage({ data }, workerData) {\n\tconst { type, value, messageId, result, error } = data;\n\tconst { reader, writer, resolveResult, rejectResult, onTaskFinished } = workerData;\n\ttry {\n\t\tif (error) {\n\t\t\tconst { message, stack, code, name } = error;\n\t\t\tconst responseError = new Error(message);\n\t\t\tObject.assign(responseError, { stack, code, name });\n\t\t\tclose(responseError);\n\t\t} else {\n\t\t\tif (type == MESSAGE_PULL) {\n\t\t\t\tconst { value, done } = await reader.read();\n\t\t\t\tsendMessage({ type: MESSAGE_DATA, value, done, messageId }, workerData);\n\t\t\t}\n\t\t\tif (type == MESSAGE_DATA) {\n\t\t\t\tawait writer.ready;\n\t\t\t\tawait writer.write(new Uint8Array(value));\n\t\t\t\tsendMessage({ type: MESSAGE_ACK_DATA, messageId }, workerData);\n\t\t\t}\n\t\t\tif (type == MESSAGE_CLOSE) {\n\t\t\t\tclose(null, result);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tsendMessage({ type: MESSAGE_CLOSE, messageId }, workerData);\n\t\tclose(error);\n\t}\n\n\tfunction close(error, result) {\n\t\tif (error) {\n\t\t\trejectResult(error);\n\t\t} else {\n\t\t\tresolveResult(result);\n\t\t}\n\t\tif (writer) {\n\t\t\twriter.releaseLock();\n\t\t}\n\t\tonTaskFinished();\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global setTimeout, clearTimeout */\n\nimport { UNDEFINED_VALUE } from \"./constants.js\";\nimport {\n\tCODEC_INFLATE,\n\tCODEC_DEFLATE,\n\tERR_INVALID_SIGNATURE,\n\tERR_INVALID_PASSWORD,\n\tERR_ABORT_CHECK_PASSWORD\n} from \"./streams/codec-stream.js\";\nimport { CodecWorker } from \"./codec-worker.js\";\n\nlet pool = [];\nconst pendingRequests = [];\n\nexport {\n\trunWorker,\n\tterminateWorkers,\n\tCODEC_DEFLATE,\n\tCODEC_INFLATE,\n\tERR_INVALID_SIGNATURE,\n\tERR_INVALID_PASSWORD,\n\tERR_ABORT_CHECK_PASSWORD\n};\n\nlet indexWorker = 0;\n\nasync function runWorker(stream, workerOptions) {\n\tconst { options, config } = workerOptions;\n\tconst { transferStreams, useWebWorkers, useCompressionStream, codecType, compressed, signed, encrypted } = options;\n\tconst { workerScripts, maxWorkers } = config;\n\tworkerOptions.transferStreams = transferStreams || transferStreams === UNDEFINED_VALUE;\n\tconst streamCopy = !compressed && !signed && !encrypted && !workerOptions.transferStreams;\n\tworkerOptions.useWebWorkers = !streamCopy && (useWebWorkers || (useWebWorkers === UNDEFINED_VALUE && config.useWebWorkers));\n\tworkerOptions.scripts = workerOptions.useWebWorkers && workerScripts ? workerScripts[codecType] : [];\n\toptions.useCompressionStream = useCompressionStream || (useCompressionStream === UNDEFINED_VALUE && config.useCompressionStream);\n\treturn (await getWorker()).run();\n\n\t// deno-lint-ignore require-await\n\tasync function getWorker() {\n\t\tconst workerData = pool.find(workerData => !workerData.busy);\n\t\tif (workerData) {\n\t\t\tclearTerminateTimeout(workerData);\n\t\t\treturn new CodecWorker(workerData, stream, workerOptions, onTaskFinished);\n\t\t} else if (pool.length < maxWorkers) {\n\t\t\tconst workerData = { indexWorker };\n\t\t\tindexWorker++;\n\t\t\tpool.push(workerData);\n\t\t\treturn new CodecWorker(workerData, stream, workerOptions, onTaskFinished);\n\t\t} else {\n\t\t\treturn new Promise(resolve => pendingRequests.push({ resolve, stream, workerOptions }));\n\t\t}\n\t}\n\n\tfunction onTaskFinished(workerData) {\n\t\tif (pendingRequests.length) {\n\t\t\tconst [{ resolve, stream, workerOptions }] = pendingRequests.splice(0, 1);\n\t\t\tresolve(new CodecWorker(workerData, stream, workerOptions, onTaskFinished));\n\t\t} else if (workerData.worker) {\n\t\t\tclearTerminateTimeout(workerData);\n\t\t\tterminateWorker(workerData, workerOptions);\n\t\t} else {\n\t\t\tpool = pool.filter(data => data != workerData);\n\t\t}\n\t}\n}\n\nfunction terminateWorker(workerData, workerOptions) {\n\tconst { config } = workerOptions;\n\tconst { terminateWorkerTimeout } = config;\n\tif (Number.isFinite(terminateWorkerTimeout) && terminateWorkerTimeout >= 0) {\n\t\tif (workerData.terminated) {\n\t\t\tworkerData.terminated = false;\n\t\t} else {\n\t\t\tworkerData.terminateTimeout = setTimeout(async () => {\n\t\t\t\tpool = pool.filter(data => data != workerData);\n\t\t\t\ttry {\n\t\t\t\t\tawait workerData.terminate();\n\t\t\t\t} catch (_error) {\n\t\t\t\t\t// ignored\n\t\t\t\t}\n\t\t\t}, terminateWorkerTimeout);\n\t\t}\n\t}\n}\n\nfunction clearTerminateTimeout(workerData) {\n\tconst { terminateTimeout } = workerData;\n\tif (terminateTimeout) {\n\t\tclearTimeout(terminateTimeout);\n\t\tworkerData.terminateTimeout = null;\n\t}\n}\n\nasync function terminateWorkers() {\n\tawait Promise.allSettled(pool.map(workerData => {\n\t\tclearTerminateTimeout(workerData);\n\t\treturn workerData.terminate();\n\t}));\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global Blob, atob, btoa, XMLHttpRequest, URL, fetch, ReadableStream, WritableStream, FileReader, TransformStream, Response */\n// deno-lint-ignore-file no-this-alias\n\nimport {\n\tUNDEFINED_VALUE,\n\tFUNCTION_TYPE,\n\tEND_OF_CENTRAL_DIR_LENGTH\n} from \"./constants.js\";\nimport { getConfiguration } from \"./configuration.js\";\n\nconst ERR_HTTP_STATUS = \"HTTP error \";\nconst ERR_HTTP_RANGE = \"HTTP Range not supported\";\nconst ERR_ITERATOR_COMPLETED_TOO_SOON = \"Writer iterator completed too soon\";\n\nconst CONTENT_TYPE_TEXT_PLAIN = \"text/plain\";\nconst HTTP_HEADER_CONTENT_LENGTH = \"Content-Length\";\nconst HTTP_HEADER_CONTENT_RANGE = \"Content-Range\";\nconst HTTP_HEADER_ACCEPT_RANGES = \"Accept-Ranges\";\nconst HTTP_HEADER_RANGE = \"Range\";\nconst HTTP_HEADER_CONTENT_TYPE = \"Content-Type\";\nconst HTTP_METHOD_HEAD = \"HEAD\";\nconst HTTP_METHOD_GET = \"GET\";\nconst HTTP_RANGE_UNIT = \"bytes\";\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst PROPERTY_NAME_WRITABLE = \"writable\";\n\nclass Stream {\n\n\tconstructor() {\n\t\tthis.size = 0;\n\t}\n\n\tinit() {\n\t\tthis.initialized = true;\n\t}\n}\n\nclass Reader extends Stream {\n\n\tget readable() {\n\t\tconst reader = this;\n\t\tconst { chunkSize = DEFAULT_CHUNK_SIZE } = reader;\n\t\tconst readable = new ReadableStream({\n\t\t\tstart() {\n\t\t\t\tthis.chunkOffset = 0;\n\t\t\t},\n\t\t\tasync pull(controller) {\n\t\t\t\tconst { offset = 0, size, diskNumberStart } = readable;\n\t\t\t\tconst { chunkOffset } = this;\n\t\t\t\tcontroller.enqueue(await readUint8Array(reader, offset + chunkOffset, Math.min(chunkSize, size - chunkOffset), diskNumberStart));\n\t\t\t\tif (chunkOffset + chunkSize > size) {\n\t\t\t\t\tcontroller.close();\n\t\t\t\t} else {\n\t\t\t\t\tthis.chunkOffset += chunkSize;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn readable;\n\t}\n}\n\nclass Writer extends Stream {\n\n\tconstructor() {\n\t\tsuper();\n\t\tconst writer = this;\n\t\tconst writable = new WritableStream({\n\t\t\twrite(chunk) {\n\t\t\t\treturn writer.writeUint8Array(chunk);\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(writer, PROPERTY_NAME_WRITABLE, {\n\t\t\tget() {\n\t\t\t\treturn writable;\n\t\t\t}\n\t\t});\n\t}\n\n\twriteUint8Array() {\n\t\t// abstract\n\t}\n}\n\nclass Data64URIReader extends Reader {\n\n\tconstructor(dataURI) {\n\t\tsuper();\n\t\tlet dataEnd = dataURI.length;\n\t\twhile (dataURI.charAt(dataEnd - 1) == \"=\") {\n\t\t\tdataEnd--;\n\t\t}\n\t\tconst dataStart = dataURI.indexOf(\",\") + 1;\n\t\tObject.assign(this, {\n\t\t\tdataURI,\n\t\t\tdataStart,\n\t\t\tsize: Math.floor((dataEnd - dataStart) * 0.75)\n\t\t});\n\t}\n\n\treadUint8Array(offset, length) {\n\t\tconst {\n\t\t\tdataStart,\n\t\t\tdataURI\n\t\t} = this;\n\t\tconst dataArray = new Uint8Array(length);\n\t\tconst start = Math.floor(offset / 3) * 4;\n\t\tconst bytes = atob(dataURI.substring(start + dataStart, Math.ceil((offset + length) / 3) * 4 + dataStart));\n\t\tconst delta = offset - Math.floor(start / 4) * 3;\n\t\tfor (let indexByte = delta; indexByte < delta + length; indexByte++) {\n\t\t\tdataArray[indexByte - delta] = bytes.charCodeAt(indexByte);\n\t\t}\n\t\treturn dataArray;\n\t}\n}\n\nclass Data64URIWriter extends Writer {\n\n\tconstructor(contentType) {\n\t\tsuper();\n\t\tObject.assign(this, {\n\t\t\tdata: \"data:\" + (contentType || \"\") + \";base64,\",\n\t\t\tpending: []\n\t\t});\n\t}\n\n\twriteUint8Array(array) {\n\t\tconst writer = this;\n\t\tlet indexArray = 0;\n\t\tlet dataString = writer.pending;\n\t\tconst delta = writer.pending.length;\n\t\twriter.pending = \"\";\n\t\tfor (indexArray = 0; indexArray < (Math.floor((delta + array.length) / 3) * 3) - delta; indexArray++) {\n\t\t\tdataString += String.fromCharCode(array[indexArray]);\n\t\t}\n\t\tfor (; indexArray < array.length; indexArray++) {\n\t\t\twriter.pending += String.fromCharCode(array[indexArray]);\n\t\t}\n\t\tif (dataString.length > 2) {\n\t\t\twriter.data += btoa(dataString);\n\t\t} else {\n\t\t\twriter.pending = dataString;\n\t\t}\n\t}\n\n\tgetData() {\n\t\treturn this.data + btoa(this.pending);\n\t}\n}\n\nclass BlobReader extends Reader {\n\n\tconstructor(blob) {\n\t\tsuper();\n\t\tObject.assign(this, {\n\t\t\tblob,\n\t\t\tsize: blob.size\n\t\t});\n\t}\n\n\tasync readUint8Array(offset, length) {\n\t\tconst reader = this;\n\t\tconst offsetEnd = offset + length;\n\t\tconst blob = offset || offsetEnd < reader.size ? reader.blob.slice(offset, offsetEnd) : reader.blob;\n\t\tlet arrayBuffer = await blob.arrayBuffer();\n\t\tif (arrayBuffer.byteLength > length) {\n\t\t\tarrayBuffer = arrayBuffer.slice(offset, offsetEnd);\n\t\t}\n\t\treturn new Uint8Array(arrayBuffer);\n\t}\n}\n\nclass BlobWriter extends Stream {\n\n\tconstructor(contentType) {\n\t\tsuper();\n\t\tconst writer = this;\n\t\tconst transformStream = new TransformStream();\n\t\tconst headers = [];\n\t\tif (contentType) {\n\t\t\theaders.push([HTTP_HEADER_CONTENT_TYPE, contentType]);\n\t\t}\n\t\tObject.defineProperty(writer, PROPERTY_NAME_WRITABLE, {\n\t\t\tget() {\n\t\t\t\treturn transformStream.writable;\n\t\t\t}\n\t\t});\n\t\twriter.blob = new Response(transformStream.readable, { headers }).blob();\n\t}\n\n\tgetData() {\n\t\treturn this.blob;\n\t}\n}\n\nclass TextReader extends BlobReader {\n\n\tconstructor(text) {\n\t\tsuper(new Blob([text], { type: CONTENT_TYPE_TEXT_PLAIN }));\n\t}\n}\n\nclass TextWriter extends BlobWriter {\n\n\tconstructor(encoding) {\n\t\tsuper(encoding);\n\t\tObject.assign(this, {\n\t\t\tencoding,\n\t\t\tutf8: !encoding || encoding.toLowerCase() == \"utf-8\"\n\t\t});\n\t}\n\n\tasync getData() {\n\t\tconst {\n\t\t\tencoding,\n\t\t\tutf8\n\t\t} = this;\n\t\tconst blob = await super.getData();\n\t\tif (blob.text && utf8) {\n\t\t\treturn blob.text();\n\t\t} else {\n\t\t\tconst reader = new FileReader();\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tObject.assign(reader, {\n\t\t\t\t\tonload: ({ target }) => resolve(target.result),\n\t\t\t\t\tonerror: () => reject(reader.error)\n\t\t\t\t});\n\t\t\t\treader.readAsText(blob, encoding);\n\t\t\t});\n\t\t}\n\t}\n}\n\nclass FetchReader extends Reader {\n\n\tconstructor(url, options) {\n\t\tsuper();\n\t\tcreateHttpReader(this, url, options);\n\t}\n\n\tasync init() {\n\t\tawait initHttpReader(this, sendFetchRequest, getFetchRequestData);\n\t\tsuper.init();\n\t}\n\n\treadUint8Array(index, length) {\n\t\treturn readUint8ArrayHttpReader(this, index, length, sendFetchRequest, getFetchRequestData);\n\t}\n}\n\nclass XHRReader extends Reader {\n\n\tconstructor(url, options) {\n\t\tsuper();\n\t\tcreateHttpReader(this, url, options);\n\t}\n\n\tasync init() {\n\t\tawait initHttpReader(this, sendXMLHttpRequest, getXMLHttpRequestData);\n\t\tsuper.init();\n\t}\n\n\treadUint8Array(index, length) {\n\t\treturn readUint8ArrayHttpReader(this, index, length, sendXMLHttpRequest, getXMLHttpRequestData);\n\t}\n}\n\nfunction createHttpReader(httpReader, url, options) {\n\tconst {\n\t\tpreventHeadRequest,\n\t\tuseRangeHeader,\n\t\tforceRangeRequests,\n\t\tcombineSizeEocd\n\t} = options;\n\toptions = Object.assign({}, options);\n\tdelete options.preventHeadRequest;\n\tdelete options.useRangeHeader;\n\tdelete options.forceRangeRequests;\n\tdelete options.combineSizeEocd;\n\tdelete options.useXHR;\n\tObject.assign(httpReader, {\n\t\turl,\n\t\toptions,\n\t\tpreventHeadRequest,\n\t\tuseRangeHeader,\n\t\tforceRangeRequests,\n\t\tcombineSizeEocd\n\t});\n}\n\nasync function initHttpReader(httpReader, sendRequest, getRequestData) {\n\tconst {\n\t\turl,\n\t\tpreventHeadRequest,\n\t\tuseRangeHeader,\n\t\tforceRangeRequests,\n\t\tcombineSizeEocd\n\t} = httpReader;\n\tif (isHttpFamily(url) && (useRangeHeader || forceRangeRequests) && (typeof preventHeadRequest == \"undefined\" || preventHeadRequest)) {\n\t\tconst response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, combineSizeEocd ? -END_OF_CENTRAL_DIR_LENGTH : undefined));\n\t\tif (!forceRangeRequests && response.headers.get(HTTP_HEADER_ACCEPT_RANGES) != HTTP_RANGE_UNIT) {\n\t\t\tthrow new Error(ERR_HTTP_RANGE);\n\t\t} else {\n\t\t\tif (combineSizeEocd) {\n\t\t\t\thttpReader.eocdCache = new Uint8Array(await response.arrayBuffer());\n\t\t\t}\n\t\t\tlet contentSize;\n\t\t\tconst contentRangeHeader = response.headers.get(HTTP_HEADER_CONTENT_RANGE);\n\t\t\tif (contentRangeHeader) {\n\t\t\t\tconst splitHeader = contentRangeHeader.trim().split(/\\s*\\/\\s*/);\n\t\t\t\tif (splitHeader.length) {\n\t\t\t\t\tconst headerValue = splitHeader[1];\n\t\t\t\t\tif (headerValue && headerValue != \"*\") {\n\t\t\t\t\t\tcontentSize = Number(headerValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (contentSize === UNDEFINED_VALUE) {\n\t\t\t\tawait getContentLength(httpReader, sendRequest, getRequestData);\n\t\t\t} else {\n\t\t\t\thttpReader.size = contentSize;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tawait getContentLength(httpReader, sendRequest, getRequestData);\n\t}\n}\n\nasync function readUint8ArrayHttpReader(httpReader, index, length, sendRequest, getRequestData) {\n\tconst {\n\t\tuseRangeHeader,\n\t\tforceRangeRequests,\n\t\teocdCache,\n\t\tsize,\n\t\toptions\n\t} = httpReader;\n\tif (useRangeHeader || forceRangeRequests) {\n\t\tif (eocdCache && index == size - END_OF_CENTRAL_DIR_LENGTH && length == END_OF_CENTRAL_DIR_LENGTH) {\n\t\t\treturn eocdCache;\n\t\t}\n\t\tconst response = await sendRequest(HTTP_METHOD_GET, httpReader, getRangeHeaders(httpReader, index, length));\n\t\tif (response.status != 206) {\n\t\t\tthrow new Error(ERR_HTTP_RANGE);\n\t\t}\n\t\treturn new Uint8Array(await response.arrayBuffer());\n\t} else {\n\t\tconst { data } = httpReader;\n\t\tif (!data) {\n\t\t\tawait getRequestData(httpReader, options);\n\t\t}\n\t\treturn new Uint8Array(httpReader.data.subarray(index, index + length));\n\t}\n}\n\nfunction getRangeHeaders(httpReader, index = 0, length = 1) {\n\treturn Object.assign({}, getHeaders(httpReader), { [HTTP_HEADER_RANGE]: HTTP_RANGE_UNIT + \"=\" + (index < 0 ? index : index + \"-\" + (index + length - 1)) });\n}\n\nfunction getHeaders({ options }) {\n\tconst { headers } = options;\n\tif (headers) {\n\t\tif (Symbol.iterator in headers) {\n\t\t\treturn Object.fromEntries(headers);\n\t\t} else {\n\t\t\treturn headers;\n\t\t}\n\t}\n}\n\nasync function getFetchRequestData(httpReader) {\n\tawait getRequestData(httpReader, sendFetchRequest);\n}\n\nasync function getXMLHttpRequestData(httpReader) {\n\tawait getRequestData(httpReader, sendXMLHttpRequest);\n}\n\nasync function getRequestData(httpReader, sendRequest) {\n\tconst response = await sendRequest(HTTP_METHOD_GET, httpReader, getHeaders(httpReader));\n\thttpReader.data = new Uint8Array(await response.arrayBuffer());\n\tif (!httpReader.size) {\n\t\thttpReader.size = httpReader.data.length;\n\t}\n}\n\nasync function getContentLength(httpReader, sendRequest, getRequestData) {\n\tif (httpReader.preventHeadRequest) {\n\t\tawait getRequestData(httpReader, httpReader.options);\n\t} else {\n\t\tconst response = await sendRequest(HTTP_METHOD_HEAD, httpReader, getHeaders(httpReader));\n\t\tconst contentLength = response.headers.get(HTTP_HEADER_CONTENT_LENGTH);\n\t\tif (contentLength) {\n\t\t\thttpReader.size = Number(contentLength);\n\t\t} else {\n\t\t\tawait getRequestData(httpReader, httpReader.options);\n\t\t}\n\t}\n}\n\nasync function sendFetchRequest(method, { options, url }, headers) {\n\tconst response = await fetch(url, Object.assign({}, options, { method, headers }));\n\tif (response.status < 400) {\n\t\treturn response;\n\t} else {\n\t\tthrow response.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (response.statusText || response.status));\n\t}\n}\n\nfunction sendXMLHttpRequest(method, { url }, headers) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\trequest.addEventListener(\"load\", () => {\n\t\t\tif (request.status < 400) {\n\t\t\t\tconst headers = [];\n\t\t\t\trequest.getAllResponseHeaders().trim().split(/[\\r\\n]+/).forEach(header => {\n\t\t\t\t\tconst splitHeader = header.trim().split(/\\s*:\\s*/);\n\t\t\t\t\tsplitHeader[0] = splitHeader[0].trim().replace(/^[a-z]|-[a-z]/g, value => value.toUpperCase());\n\t\t\t\t\theaders.push(splitHeader);\n\t\t\t\t});\n\t\t\t\tresolve({\n\t\t\t\t\tstatus: request.status,\n\t\t\t\t\tarrayBuffer: () => request.response,\n\t\t\t\t\theaders: new Map(headers)\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treject(request.status == 416 ? new Error(ERR_HTTP_RANGE) : new Error(ERR_HTTP_STATUS + (request.statusText || request.status)));\n\t\t\t}\n\t\t}, false);\n\t\trequest.addEventListener(\"error\", event => reject(event.detail ? event.detail.error : new Error(\"Network error\")), false);\n\t\trequest.open(method, url);\n\t\tif (headers) {\n\t\t\tfor (const entry of Object.entries(headers)) {\n\t\t\t\trequest.setRequestHeader(entry[0], entry[1]);\n\t\t\t}\n\t\t}\n\t\trequest.responseType = \"arraybuffer\";\n\t\trequest.send();\n\t});\n}\n\nclass HttpReader extends Reader {\n\n\tconstructor(url, options = {}) {\n\t\tsuper();\n\t\tObject.assign(this, {\n\t\t\turl,\n\t\t\treader: options.useXHR ? new XHRReader(url, options) : new FetchReader(url, options)\n\t\t});\n\t}\n\n\tset size(value) {\n\t\t// ignored\n\t}\n\n\tget size() {\n\t\treturn this.reader.size;\n\t}\n\n\tasync init() {\n\t\tawait this.reader.init();\n\t\tsuper.init();\n\t}\n\n\treadUint8Array(index, length) {\n\t\treturn this.reader.readUint8Array(index, length);\n\t}\n}\n\nclass HttpRangeReader extends HttpReader {\n\n\tconstructor(url, options = {}) {\n\t\toptions.useRangeHeader = true;\n\t\tsuper(url, options);\n\t}\n}\n\n\nclass Uint8ArrayReader extends Reader {\n\n\tconstructor(array) {\n\t\tsuper();\n\t\tObject.assign(this, {\n\t\t\tarray,\n\t\t\tsize: array.length\n\t\t});\n\t}\n\n\treadUint8Array(index, length) {\n\t\treturn this.array.slice(index, index + length);\n\t}\n}\n\nclass Uint8ArrayWriter extends Writer {\n\n\tinit(initSize = 0) {\n\t\tObject.assign(this, {\n\t\t\toffset: 0,\n\t\t\tarray: new Uint8Array(initSize)\n\t\t});\n\t\tsuper.init();\n\t}\n\n\twriteUint8Array(array) {\n\t\tconst writer = this;\n\t\tif (writer.offset + array.length > writer.array.length) {\n\t\t\tconst previousArray = writer.array;\n\t\t\twriter.array = new Uint8Array(previousArray.length + array.length);\n\t\t\twriter.array.set(previousArray);\n\t\t}\n\t\twriter.array.set(array, writer.offset);\n\t\twriter.offset += array.length;\n\t}\n\n\tgetData() {\n\t\treturn this.array;\n\t}\n}\n\nclass SplitDataReader extends Reader {\n\n\tconstructor(readers) {\n\t\tsuper();\n\t\tthis.readers = readers;\n\t}\n\n\tasync init() {\n\t\tconst reader = this;\n\t\tconst { readers } = reader;\n\t\treader.lastDiskNumber = 0;\n\t\treader.lastDiskOffset = 0;\n\t\tawait Promise.all(readers.map(async (diskReader, indexDiskReader) => {\n\t\t\tawait diskReader.init();\n\t\t\tif (indexDiskReader != readers.length - 1) {\n\t\t\t\treader.lastDiskOffset += diskReader.size;\n\t\t\t}\n\t\t\treader.size += diskReader.size;\n\t\t}));\n\t\tsuper.init();\n\t}\n\n\tasync readUint8Array(offset, length, diskNumber = 0) {\n\t\tconst reader = this;\n\t\tconst { readers } = this;\n\t\tlet result;\n\t\tlet currentDiskNumber = diskNumber;\n\t\tif (currentDiskNumber == -1) {\n\t\t\tcurrentDiskNumber = readers.length - 1;\n\t\t}\n\t\tlet currentReaderOffset = offset;\n\t\twhile (currentReaderOffset >= readers[currentDiskNumber].size) {\n\t\t\tcurrentReaderOffset -= readers[currentDiskNumber].size;\n\t\t\tcurrentDiskNumber++;\n\t\t}\n\t\tconst currentReader = readers[currentDiskNumber];\n\t\tconst currentReaderSize = currentReader.size;\n\t\tif (currentReaderOffset + length <= currentReaderSize) {\n\t\t\tresult = await readUint8Array(currentReader, currentReaderOffset, length);\n\t\t} else {\n\t\t\tconst chunkLength = currentReaderSize - currentReaderOffset;\n\t\t\tresult = new Uint8Array(length);\n\t\t\tresult.set(await readUint8Array(currentReader, currentReaderOffset, chunkLength));\n\t\t\tresult.set(await reader.readUint8Array(offset + chunkLength, length - chunkLength, diskNumber), chunkLength);\n\t\t}\n\t\treader.lastDiskNumber = Math.max(currentDiskNumber, reader.lastDiskNumber);\n\t\treturn result;\n\t}\n}\n\nclass SplitDataWriter extends Stream {\n\n\tconstructor(writerGenerator, maxSize = 4294967295) {\n\t\tsuper();\n\t\tconst writer = this;\n\t\tObject.assign(writer, {\n\t\t\tdiskNumber: 0,\n\t\t\tdiskOffset: 0,\n\t\t\tsize: 0,\n\t\t\tmaxSize,\n\t\t\tavailableSize: maxSize\n\t\t});\n\t\tlet diskSourceWriter, diskWritable, diskWriter;\n\t\tconst writable = new WritableStream({\n\t\t\tasync write(chunk) {\n\t\t\t\tconst { availableSize } = writer;\n\t\t\t\tif (!diskWriter) {\n\t\t\t\t\tconst { value, done } = await writerGenerator.next();\n\t\t\t\t\tif (done && !value) {\n\t\t\t\t\t\tthrow new Error(ERR_ITERATOR_COMPLETED_TOO_SOON);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdiskSourceWriter = value;\n\t\t\t\t\t\tdiskSourceWriter.size = 0;\n\t\t\t\t\t\tif (diskSourceWriter.maxSize) {\n\t\t\t\t\t\t\twriter.maxSize = diskSourceWriter.maxSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twriter.availableSize = writer.maxSize;\n\t\t\t\t\t\tawait initStream(diskSourceWriter);\n\t\t\t\t\t\tdiskWritable = value.writable;\n\t\t\t\t\t\tdiskWriter = diskWritable.getWriter();\n\t\t\t\t\t}\n\t\t\t\t\tawait this.write(chunk);\n\t\t\t\t} else if (chunk.length >= availableSize) {\n\t\t\t\t\tawait writeChunk(chunk.slice(0, availableSize));\n\t\t\t\t\tawait closeDisk();\n\t\t\t\t\twriter.diskOffset += diskSourceWriter.size;\n\t\t\t\t\twriter.diskNumber++;\n\t\t\t\t\tdiskWriter = null;\n\t\t\t\t\tawait this.write(chunk.slice(availableSize));\n\t\t\t\t} else {\n\t\t\t\t\tawait writeChunk(chunk);\n\t\t\t\t}\n\t\t\t},\n\t\t\tasync close() {\n\t\t\t\tawait diskWriter.ready;\n\t\t\t\tawait closeDisk();\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(writer, PROPERTY_NAME_WRITABLE, {\n\t\t\tget() {\n\t\t\t\treturn writable;\n\t\t\t}\n\t\t});\n\n\t\tasync function writeChunk(chunk) {\n\t\t\tconst chunkLength = chunk.length;\n\t\t\tif (chunkLength) {\n\t\t\t\tawait diskWriter.ready;\n\t\t\t\tawait diskWriter.write(chunk);\n\t\t\t\tdiskSourceWriter.size += chunkLength;\n\t\t\t\twriter.size += chunkLength;\n\t\t\t\twriter.availableSize -= chunkLength;\n\t\t\t}\n\t\t}\n\n\t\tasync function closeDisk() {\n\t\t\tdiskWritable.size = diskSourceWriter.size;\n\t\t\tawait diskWriter.close();\n\t\t}\n\t}\n}\n\nfunction isHttpFamily(url) {\n\tconst { baseURL } = getConfiguration();\n\tconst { protocol } = new URL(url, baseURL);\n\treturn protocol == \"http:\" || protocol == \"https:\";\n}\n\nasync function initStream(stream, initSize) {\n\tif (stream.init && !stream.initialized) {\n\t\tawait stream.init(initSize);\n\t} else {\n\t\treturn Promise.resolve();\n\t}\n}\n\nfunction initReader(reader) {\n\tif (Array.isArray(reader)) {\n\t\treader = new SplitDataReader(reader);\n\t}\n\tif (reader instanceof ReadableStream) {\n\t\treader = {\n\t\t\treadable: reader\n\t\t};\n\t}\n\treturn reader;\n}\n\nfunction initWriter(writer) {\n\tif (writer.writable === UNDEFINED_VALUE && typeof writer.next == FUNCTION_TYPE) {\n\t\twriter = new SplitDataWriter(writer);\n\t}\n\tif (writer instanceof WritableStream) {\n\t\twriter = {\n\t\t\twritable: writer\n\t\t};\n\t}\n\tconst { writable } = writer;\n\tif (writable.size === UNDEFINED_VALUE) {\n\t\twritable.size = 0;\n\t}\n\tif (!(writer instanceof SplitDataWriter)) {\n\t\tObject.assign(writer, {\n\t\t\tdiskNumber: 0,\n\t\t\tdiskOffset: 0,\n\t\t\tavailableSize: Infinity,\n\t\t\tmaxSize: Infinity\n\t\t});\n\t}\n\treturn writer;\n}\n\nfunction readUint8Array(reader, offset, size, diskNumber) {\n\treturn reader.readUint8Array(offset, size, diskNumber);\n}\n\nconst SplitZipReader = SplitDataReader;\nconst SplitZipWriter = SplitDataWriter;\n\nexport {\n\tinitStream,\n\tinitReader,\n\tinitWriter,\n\treadUint8Array,\n\tReader,\n\tWriter,\n\tTextReader,\n\tTextWriter,\n\tData64URIReader,\n\tData64URIWriter,\n\tBlobReader,\n\tBlobWriter,\n\tUint8ArrayReader,\n\tUint8ArrayWriter,\n\tHttpReader,\n\tHttpRangeReader,\n\tSplitZipReader,\n\tSplitZipWriter,\n\tSplitDataReader,\n\tSplitDataWriter,\n\tERR_HTTP_RANGE,\n\tERR_ITERATOR_COMPLETED_TOO_SOON\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TextDecoder */\n\nconst CP437 = \"\\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\u00B6\u00A7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0 \".split(\"\");\nconst VALID_CP437 = CP437.length == 256;\n\nexport {\n\tdecodeCP437\n};\n\nfunction decodeCP437(stringValue) {\n\tif (VALID_CP437) {\n\t\tlet result = \"\";\n\t\tfor (let indexCharacter = 0; indexCharacter < stringValue.length; indexCharacter++) {\n\t\t\tresult += CP437[stringValue[indexCharacter]];\n\t\t}\n\t\treturn result;\n\t} else {\n\t\treturn new TextDecoder().decode(stringValue);\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global TextDecoder */\n\nimport { decodeCP437 } from \"./cp437-decode.js\";\n\nexport {\n\tdecodeText\n};\n\nfunction decodeText(value, encoding) {\n\tif (encoding && encoding.trim().toLowerCase() == \"cp437\") {\n\t\treturn decodeCP437(value);\n\t} else {\n\t\treturn new TextDecoder(encoding).decode(value);\n\t}\n}", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nconst PROPERTY_NAME_FILENAME = \"filename\";\nconst PROPERTY_NAME_RAW_FILENAME = \"rawFilename\";\nconst PROPERTY_NAME_COMMENT = \"comment\";\nconst PROPERTY_NAME_RAW_COMMENT = \"rawComment\";\nconst PROPERTY_NAME_UNCOMPPRESSED_SIZE = \"uncompressedSize\";\nconst PROPERTY_NAME_COMPPRESSED_SIZE = \"compressedSize\";\nconst PROPERTY_NAME_OFFSET = \"offset\";\nconst PROPERTY_NAME_DISK_NUMBER_START = \"diskNumberStart\";\nconst PROPERTY_NAME_LAST_MODIFICATION_DATE = \"lastModDate\";\nconst PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE = \"rawLastModDate\";\nconst PROPERTY_NAME_LAST_ACCESS_DATE = \"lastAccessDate\";\nconst PROPERTY_NAME_RAW_LAST_ACCESS_DATE = \"rawLastAccessDate\";\nconst PROPERTY_NAME_CREATION_DATE = \"creationDate\";\nconst PROPERTY_NAME_RAW_CREATION_DATE = \"rawCreationDate\";\nconst PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE = \"internalFileAttribute\";\nconst PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE = \"externalFileAttribute\";\nconst PROPERTY_NAME_MS_DOS_COMPATIBLE = \"msDosCompatible\";\nconst PROPERTY_NAME_ZIP64 = \"zip64\";\nconst PROPERTY_NAME_ENCRYPTED = \"encrypted\";\nconst PROPERTY_NAME_VERSION = \"version\";\nconst PROPERTY_NAME_VERSION_MADE_BY = \"versionMadeBy\";\nconst PROPERTY_NAME_ZIPCRYPTO = \"zipCrypto\";\n\nconst PROPERTY_NAMES = [\n\tPROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, PROPERTY_NAME_COMPPRESSED_SIZE, PROPERTY_NAME_UNCOMPPRESSED_SIZE,\n\tPROPERTY_NAME_LAST_MODIFICATION_DATE, PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT,\n\tPROPERTY_NAME_LAST_ACCESS_DATE, PROPERTY_NAME_CREATION_DATE, PROPERTY_NAME_OFFSET, PROPERTY_NAME_DISK_NUMBER_START,\n\tPROPERTY_NAME_DISK_NUMBER_START, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE,\n\tPROPERTY_NAME_MS_DOS_COMPATIBLE, PROPERTY_NAME_ZIP64, PROPERTY_NAME_ENCRYPTED, PROPERTY_NAME_VERSION, PROPERTY_NAME_VERSION_MADE_BY,\n\tPROPERTY_NAME_ZIPCRYPTO, \"directory\", \"bitFlag\", \"signature\", \"filenameUTF8\", \"commentUTF8\", \"compressionMethod\", \"extraField\", \"rawExtraField\",\n\t\"extraFieldZip64\", \"extraFieldUnicodePath\", \"extraFieldUnicodeComment\", \"extraFieldAES\", \"extraFieldNTFS\", \"extraFieldExtendedTimestamp\"];\n\nclass Entry {\n\n\tconstructor(data) {\n\t\tPROPERTY_NAMES.forEach(name => this[name] = data[name]);\n\t}\n\n}\n\nexport {\n\tPROPERTY_NAME_FILENAME,\n\tPROPERTY_NAME_RAW_FILENAME,\n\tPROPERTY_NAME_COMMENT,\n\tPROPERTY_NAME_RAW_COMMENT,\n\tPROPERTY_NAME_UNCOMPPRESSED_SIZE,\n\tPROPERTY_NAME_COMPPRESSED_SIZE,\n\tPROPERTY_NAME_OFFSET,\n\tPROPERTY_NAME_DISK_NUMBER_START,\n\tPROPERTY_NAME_LAST_MODIFICATION_DATE,\n\tPROPERTY_NAME_RAW_LAST_MODIFICATION_DATE,\n\tPROPERTY_NAME_LAST_ACCESS_DATE,\n\tPROPERTY_NAME_RAW_LAST_ACCESS_DATE,\n\tPROPERTY_NAME_CREATION_DATE,\n\tPROPERTY_NAME_RAW_CREATION_DATE,\n\tPROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE,\n\tPROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE,\n\tPROPERTY_NAME_MS_DOS_COMPATIBLE,\n\tPROPERTY_NAME_ZIP64,\n\tPROPERTY_NAME_ENCRYPTED,\n\tPROPERTY_NAME_VERSION,\n\tPROPERTY_NAME_VERSION_MADE_BY,\n\tPROPERTY_NAME_ZIPCRYPTO,\n\tEntry\n};", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global BigInt, Response, WritableStream, ReadableStream, TransformStream */\n// deno-lint-ignore-file no-this-alias\n\nimport {\n\tMAX_32_BITS,\n\tMAX_16_BITS,\n\tCOMPRESSION_METHOD_DEFLATE,\n\tCOMPRESSION_METHOD_STORE,\n\tCOMPRESSION_METHOD_AES,\n\tSPLIT_ZIP_FILE_SIGNATURE,\n\tLOCAL_FILE_HEADER_SIGNATURE,\n\tCENTRAL_FILE_HEADER_SIGNATURE,\n\tEND_OF_CENTRAL_DIR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_SIGNATURE,\n\tEXTRAFIELD_TYPE_ZIP64,\n\tEXTRAFIELD_TYPE_UNICODE_PATH,\n\tEXTRAFIELD_TYPE_UNICODE_COMMENT,\n\tEXTRAFIELD_TYPE_AES,\n\tEXTRAFIELD_TYPE_NTFS,\n\tEXTRAFIELD_TYPE_NTFS_TAG1,\n\tEXTRAFIELD_TYPE_EXTENDED_TIMESTAMP,\n\tEXTRAFIELD_TYPE_USDZ,\n\tEND_OF_CENTRAL_DIR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LENGTH,\n\tBITFLAG_ENCRYPTED,\n\tBITFLAG_LEVEL,\n\tBITFLAG_DATA_DESCRIPTOR,\n\tBITFLAG_LANG_ENCODING_FLAG,\n\tFILE_ATTR_MSDOS_DIR_MASK,\n\tDIRECTORY_SIGNATURE,\n\tUNDEFINED_VALUE\n} from \"./constants.js\";\nimport {\n\tgetConfiguration,\n\tgetChunkSize\n} from \"./configuration.js\";\nimport {\n\trunWorker,\n\tCODEC_INFLATE,\n\tERR_INVALID_SIGNATURE,\n\tERR_INVALID_PASSWORD,\n\tERR_ABORT_CHECK_PASSWORD\n} from \"./codec-pool.js\";\nimport {\n\tinitStream,\n\tinitReader,\n\tinitWriter,\n\treadUint8Array,\n\tBlobReader\n} from \"./io.js\";\nimport { decodeText } from \"./util/decode-text.js\";\nimport { Crc32 } from \"./streams/codecs/crc32.js\";\nimport {\n\tPROPERTY_NAME_RAW_FILENAME,\n\tPROPERTY_NAME_FILENAME,\n\tPROPERTY_NAME_RAW_COMMENT,\n\tPROPERTY_NAME_COMMENT,\n\tPROPERTY_NAME_UNCOMPPRESSED_SIZE,\n\tPROPERTY_NAME_COMPPRESSED_SIZE,\n\tPROPERTY_NAME_OFFSET,\n\tPROPERTY_NAME_DISK_NUMBER_START,\n\tPROPERTY_NAME_LAST_MODIFICATION_DATE,\n\tPROPERTY_NAME_RAW_LAST_MODIFICATION_DATE,\n\tPROPERTY_NAME_LAST_ACCESS_DATE,\n\tPROPERTY_NAME_RAW_LAST_ACCESS_DATE,\n\tPROPERTY_NAME_CREATION_DATE,\n\tPROPERTY_NAME_RAW_CREATION_DATE,\n\tEntry\n} from \"./zip-entry.js\";\n\nconst ERR_BAD_FORMAT = \"File format is not recognized\";\nconst ERR_EOCDR_NOT_FOUND = \"End of central directory not found\";\nconst ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND = \"End of Zip64 central directory locator not found\";\nconst ERR_CENTRAL_DIRECTORY_NOT_FOUND = \"Central directory header not found\";\nconst ERR_LOCAL_FILE_HEADER_NOT_FOUND = \"Local file header not found\";\nconst ERR_EXTRAFIELD_ZIP64_NOT_FOUND = \"Zip64 extra field not found\";\nconst ERR_ENCRYPTED = \"File contains encrypted entry\";\nconst ERR_UNSUPPORTED_ENCRYPTION = \"Encryption method not supported\";\nconst ERR_UNSUPPORTED_COMPRESSION = \"Compression method not supported\";\nconst ERR_SPLIT_ZIP_FILE = \"Split zip file\";\nconst CHARSET_UTF8 = \"utf-8\";\nconst CHARSET_CP437 = \"cp437\";\nconst ZIP64_PROPERTIES = [\n\t[PROPERTY_NAME_UNCOMPPRESSED_SIZE, MAX_32_BITS],\n\t[PROPERTY_NAME_COMPPRESSED_SIZE, MAX_32_BITS],\n\t[PROPERTY_NAME_OFFSET, MAX_32_BITS],\n\t[PROPERTY_NAME_DISK_NUMBER_START, MAX_16_BITS]\n];\nconst ZIP64_EXTRACTION = {\n\t[MAX_16_BITS]: {\n\t\tgetValue: getUint32,\n\t\tbytes: 4\n\t},\n\t[MAX_32_BITS]: {\n\t\tgetValue: getBigUint64,\n\t\tbytes: 8\n\t}\n};\n\nclass ZipReader {\n\n\tconstructor(reader, options = {}) {\n\t\tObject.assign(this, {\n\t\t\treader: initReader(reader),\n\t\t\toptions,\n\t\t\tconfig: getConfiguration()\n\t\t});\n\t}\n\n\tasync* getEntriesGenerator(options = {}) {\n\t\tconst zipReader = this;\n\t\tlet { reader } = zipReader;\n\t\tconst { config } = zipReader;\n\t\tawait initStream(reader);\n\t\tif (reader.size === UNDEFINED_VALUE || !reader.readUint8Array) {\n\t\t\treader = new BlobReader(await new Response(reader.readable).blob());\n\t\t\tawait initStream(reader);\n\t\t}\n\t\tif (reader.size < END_OF_CENTRAL_DIR_LENGTH) {\n\t\t\tthrow new Error(ERR_BAD_FORMAT);\n\t\t}\n\t\treader.chunkSize = getChunkSize(config);\n\t\tconst endOfDirectoryInfo = await seekSignature(reader, END_OF_CENTRAL_DIR_SIGNATURE, reader.size, END_OF_CENTRAL_DIR_LENGTH, MAX_16_BITS * 16);\n\t\tif (!endOfDirectoryInfo) {\n\t\t\tconst signatureArray = await readUint8Array(reader, 0, 4);\n\t\t\tconst signatureView = getDataView(signatureArray);\n\t\t\tif (getUint32(signatureView) == SPLIT_ZIP_FILE_SIGNATURE) {\n\t\t\t\tthrow new Error(ERR_SPLIT_ZIP_FILE);\n\t\t\t} else {\n\t\t\t\tthrow new Error(ERR_EOCDR_NOT_FOUND);\n\t\t\t}\n\t\t}\n\t\tconst endOfDirectoryView = getDataView(endOfDirectoryInfo);\n\t\tlet directoryDataLength = getUint32(endOfDirectoryView, 12);\n\t\tlet directoryDataOffset = getUint32(endOfDirectoryView, 16);\n\t\tconst commentOffset = endOfDirectoryInfo.offset;\n\t\tconst commentLength = getUint16(endOfDirectoryView, 20);\n\t\tconst appendedDataOffset = commentOffset + END_OF_CENTRAL_DIR_LENGTH + commentLength;\n\t\tlet lastDiskNumber = getUint16(endOfDirectoryView, 4);\n\t\tconst expectedLastDiskNumber = reader.lastDiskNumber || 0;\n\t\tlet diskNumber = getUint16(endOfDirectoryView, 6);\n\t\tlet filesLength = getUint16(endOfDirectoryView, 8);\n\t\tlet prependedDataLength = 0;\n\t\tlet startOffset = 0;\n\t\tif (directoryDataOffset == MAX_32_BITS || directoryDataLength == MAX_32_BITS || filesLength == MAX_16_BITS || diskNumber == MAX_16_BITS) {\n\t\t\tconst endOfDirectoryLocatorArray = await readUint8Array(reader, endOfDirectoryInfo.offset - ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH);\n\t\t\tconst endOfDirectoryLocatorView = getDataView(endOfDirectoryLocatorArray);\n\t\t\tif (getUint32(endOfDirectoryLocatorView, 0) == ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE) {\n\t\t\t\tdirectoryDataOffset = getBigUint64(endOfDirectoryLocatorView, 8);\n\t\t\t\tlet endOfDirectoryArray = await readUint8Array(reader, directoryDataOffset, ZIP64_END_OF_CENTRAL_DIR_LENGTH, -1);\n\t\t\t\tlet endOfDirectoryView = getDataView(endOfDirectoryArray);\n\t\t\t\tconst expectedDirectoryDataOffset = endOfDirectoryInfo.offset - ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH - ZIP64_END_OF_CENTRAL_DIR_LENGTH;\n\t\t\t\tif (getUint32(endOfDirectoryView, 0) != ZIP64_END_OF_CENTRAL_DIR_SIGNATURE && directoryDataOffset != expectedDirectoryDataOffset) {\n\t\t\t\t\tconst originalDirectoryDataOffset = directoryDataOffset;\n\t\t\t\t\tdirectoryDataOffset = expectedDirectoryDataOffset;\n\t\t\t\t\tprependedDataLength = directoryDataOffset - originalDirectoryDataOffset;\n\t\t\t\t\tendOfDirectoryArray = await readUint8Array(reader, directoryDataOffset, ZIP64_END_OF_CENTRAL_DIR_LENGTH, -1);\n\t\t\t\t\tendOfDirectoryView = getDataView(endOfDirectoryArray);\n\t\t\t\t}\n\t\t\t\tif (getUint32(endOfDirectoryView, 0) != ZIP64_END_OF_CENTRAL_DIR_SIGNATURE) {\n\t\t\t\t\tthrow new Error(ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND);\n\t\t\t\t}\n\t\t\t\tif (lastDiskNumber == MAX_16_BITS) {\n\t\t\t\t\tlastDiskNumber = getUint32(endOfDirectoryView, 16);\n\t\t\t\t}\n\t\t\t\tif (diskNumber == MAX_16_BITS) {\n\t\t\t\t\tdiskNumber = getUint32(endOfDirectoryView, 20);\n\t\t\t\t}\n\t\t\t\tif (filesLength == MAX_16_BITS) {\n\t\t\t\t\tfilesLength = getBigUint64(endOfDirectoryView, 32);\n\t\t\t\t}\n\t\t\t\tif (directoryDataLength == MAX_32_BITS) {\n\t\t\t\t\tdirectoryDataLength = getBigUint64(endOfDirectoryView, 40);\n\t\t\t\t}\n\t\t\t\tdirectoryDataOffset -= directoryDataLength;\n\t\t\t}\n\t\t}\n\t\tif (directoryDataOffset >= reader.size) {\n\t\t\tprependedDataLength = reader.size - directoryDataOffset - directoryDataLength - END_OF_CENTRAL_DIR_LENGTH;\n\t\t\tdirectoryDataOffset = reader.size - directoryDataLength - END_OF_CENTRAL_DIR_LENGTH;\n\t\t}\n\t\tif (expectedLastDiskNumber != lastDiskNumber) {\n\t\t\tthrow new Error(ERR_SPLIT_ZIP_FILE);\n\t\t}\n\t\tif (directoryDataOffset < 0) {\n\t\t\tthrow new Error(ERR_BAD_FORMAT);\n\t\t}\n\t\tlet offset = 0;\n\t\tlet directoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength, diskNumber);\n\t\tlet directoryView = getDataView(directoryArray);\n\t\tif (directoryDataLength) {\n\t\t\tconst expectedDirectoryDataOffset = endOfDirectoryInfo.offset - directoryDataLength;\n\t\t\tif (getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE && directoryDataOffset != expectedDirectoryDataOffset) {\n\t\t\t\tconst originalDirectoryDataOffset = directoryDataOffset;\n\t\t\t\tdirectoryDataOffset = expectedDirectoryDataOffset;\n\t\t\t\tprependedDataLength += directoryDataOffset - originalDirectoryDataOffset;\n\t\t\t\tdirectoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength, diskNumber);\n\t\t\t\tdirectoryView = getDataView(directoryArray);\n\t\t\t}\n\t\t}\n\t\tconst expectedDirectoryDataLength = endOfDirectoryInfo.offset - directoryDataOffset - (reader.lastDiskOffset || 0);\n\t\tif (directoryDataLength != expectedDirectoryDataLength && expectedDirectoryDataLength >= 0) {\n\t\t\tdirectoryDataLength = expectedDirectoryDataLength;\n\t\t\tdirectoryArray = await readUint8Array(reader, directoryDataOffset, directoryDataLength, diskNumber);\n\t\t\tdirectoryView = getDataView(directoryArray);\n\t\t}\n\t\tif (directoryDataOffset < 0 || directoryDataOffset >= reader.size) {\n\t\t\tthrow new Error(ERR_BAD_FORMAT);\n\t\t}\n\t\tconst filenameEncoding = getOptionValue(zipReader, options, \"filenameEncoding\");\n\t\tconst commentEncoding = getOptionValue(zipReader, options, \"commentEncoding\");\n\t\tfor (let indexFile = 0; indexFile < filesLength; indexFile++) {\n\t\t\tconst fileEntry = new ZipEntry(reader, config, zipReader.options);\n\t\t\tif (getUint32(directoryView, offset) != CENTRAL_FILE_HEADER_SIGNATURE) {\n\t\t\t\tthrow new Error(ERR_CENTRAL_DIRECTORY_NOT_FOUND);\n\t\t\t}\n\t\t\treadCommonHeader(fileEntry, directoryView, offset + 6);\n\t\t\tconst languageEncodingFlag = Boolean(fileEntry.bitFlag.languageEncodingFlag);\n\t\t\tconst filenameOffset = offset + 46;\n\t\t\tconst extraFieldOffset = filenameOffset + fileEntry.filenameLength;\n\t\t\tconst commentOffset = extraFieldOffset + fileEntry.extraFieldLength;\n\t\t\tconst versionMadeBy = getUint16(directoryView, offset + 4);\n\t\t\tconst msDosCompatible = (versionMadeBy & 0) == 0;\n\t\t\tconst rawFilename = directoryArray.subarray(filenameOffset, extraFieldOffset);\n\t\t\tconst commentLength = getUint16(directoryView, offset + 32);\n\t\t\tconst endOffset = commentOffset + commentLength;\n\t\t\tconst rawComment = directoryArray.subarray(commentOffset, endOffset);\n\t\t\tconst filenameUTF8 = languageEncodingFlag;\n\t\t\tconst commentUTF8 = languageEncodingFlag;\n\t\t\tconst directory = msDosCompatible && ((getUint8(directoryView, offset + 38) & FILE_ATTR_MSDOS_DIR_MASK) == FILE_ATTR_MSDOS_DIR_MASK);\n\t\t\tconst offsetFileEntry = getUint32(directoryView, offset + 42) + prependedDataLength;\n\t\t\tObject.assign(fileEntry, {\n\t\t\t\tversionMadeBy,\n\t\t\t\tmsDosCompatible,\n\t\t\t\tcompressedSize: 0,\n\t\t\t\tuncompressedSize: 0,\n\t\t\t\tcommentLength,\n\t\t\t\tdirectory,\n\t\t\t\toffset: offsetFileEntry,\n\t\t\t\tdiskNumberStart: getUint16(directoryView, offset + 34),\n\t\t\t\tinternalFileAttribute: getUint16(directoryView, offset + 36),\n\t\t\t\texternalFileAttribute: getUint32(directoryView, offset + 38),\n\t\t\t\trawFilename,\n\t\t\t\tfilenameUTF8,\n\t\t\t\tcommentUTF8,\n\t\t\t\trawExtraField: directoryArray.subarray(extraFieldOffset, commentOffset)\n\t\t\t});\n\t\t\tconst decode = getOptionValue(zipReader, options, \"decodeText\") || decodeText;\n\t\t\tconst rawFilenameEncoding = filenameUTF8 ? CHARSET_UTF8 : filenameEncoding || CHARSET_CP437;\n\t\t\tconst rawCommentEncoding = commentUTF8 ? CHARSET_UTF8 : commentEncoding || CHARSET_CP437;\n\t\t\tlet filename = decode(rawFilename, rawFilenameEncoding);\n\t\t\tif (filename === UNDEFINED_VALUE) {\n\t\t\t\tfilename = decodeText(rawFilename, rawFilenameEncoding);\n\t\t\t}\n\t\t\tlet comment = decode(rawComment, rawCommentEncoding);\n\t\t\tif (comment === UNDEFINED_VALUE) {\n\t\t\t\tcomment = decodeText(rawComment, rawCommentEncoding);\n\t\t\t}\n\t\t\tObject.assign(fileEntry, {\n\t\t\t\trawComment,\n\t\t\t\tfilename,\n\t\t\t\tcomment,\n\t\t\t\tdirectory: directory || filename.endsWith(DIRECTORY_SIGNATURE)\n\t\t\t});\n\t\t\tstartOffset = Math.max(offsetFileEntry, startOffset);\n\t\t\treadCommonFooter(fileEntry, fileEntry, directoryView, offset + 6);\n\t\t\tfileEntry.zipCrypto = fileEntry.encrypted && !fileEntry.extraFieldAES;\n\t\t\tconst entry = new Entry(fileEntry);\n\t\t\tentry.getData = (writer, options) => fileEntry.getData(writer, entry, options);\n\t\t\toffset = endOffset;\n\t\t\tconst { onprogress } = options;\n\t\t\tif (onprogress) {\n\t\t\t\ttry {\n\t\t\t\t\tawait onprogress(indexFile + 1, filesLength, new Entry(fileEntry));\n\t\t\t\t} catch (_error) {\n\t\t\t\t\t// ignored\n\t\t\t\t}\n\t\t\t}\n\t\t\tyield entry;\n\t\t}\n\t\tconst extractPrependedData = getOptionValue(zipReader, options, \"extractPrependedData\");\n\t\tconst extractAppendedData = getOptionValue(zipReader, options, \"extractAppendedData\");\n\t\tif (extractPrependedData) {\n\t\t\tzipReader.prependedData = startOffset > 0 ? await readUint8Array(reader, 0, startOffset) : new Uint8Array();\n\t\t}\n\t\tzipReader.comment = commentLength ? await readUint8Array(reader, commentOffset + END_OF_CENTRAL_DIR_LENGTH, commentLength) : new Uint8Array();\n\t\tif (extractAppendedData) {\n\t\t\tzipReader.appendedData = appendedDataOffset < reader.size ? await readUint8Array(reader, appendedDataOffset, reader.size - appendedDataOffset) : new Uint8Array();\n\t\t}\n\t\treturn true;\n\t}\n\n\tasync getEntries(options = {}) {\n\t\tconst entries = [];\n\t\tfor await (const entry of this.getEntriesGenerator(options)) {\n\t\t\tentries.push(entry);\n\t\t}\n\t\treturn entries;\n\t}\n\n\tasync close() {\n\t}\n}\n\nclass ZipReaderStream {\n\n\tconstructor(options = {}) {\n\t\tconst { readable, writable } = new TransformStream();\n\t\tconst gen = new ZipReader(readable, options).getEntriesGenerator();\n\t\tthis.readable = new ReadableStream({\n\t\t\tasync pull(controller) {\n\t\t\t\tconst { done, value } = await gen.next();\n\t\t\t\tif (done)\n\t\t\t\t\treturn controller.close();\n\t\t\t\tconst chunk = {\n\t\t\t\t\t...value,\n\t\t\t\t\treadable: (function () {\n\t\t\t\t\t\tconst { readable, writable } = new TransformStream();\n\t\t\t\t\t\tif (value.getData) {\n\t\t\t\t\t\t\tvalue.getData(writable);\n\t\t\t\t\t\t\treturn readable;\n\t\t\t\t\t\t}\n\t\t\t\t\t})()\n\t\t\t\t};\n\t\t\t\tdelete chunk.getData;\n\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t}\n\t\t});\n\t\tthis.writable = writable;\n\t}\n}\n\nexport {\n\tZipReader,\n\tZipReaderStream,\n\tERR_BAD_FORMAT,\n\tERR_EOCDR_NOT_FOUND,\n\tERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND,\n\tERR_CENTRAL_DIRECTORY_NOT_FOUND,\n\tERR_LOCAL_FILE_HEADER_NOT_FOUND,\n\tERR_EXTRAFIELD_ZIP64_NOT_FOUND,\n\tERR_ENCRYPTED,\n\tERR_UNSUPPORTED_ENCRYPTION,\n\tERR_UNSUPPORTED_COMPRESSION,\n\tERR_INVALID_SIGNATURE,\n\tERR_INVALID_PASSWORD,\n\tERR_SPLIT_ZIP_FILE\n};\n\nclass ZipEntry {\n\n\tconstructor(reader, config, options) {\n\t\tObject.assign(this, {\n\t\t\treader,\n\t\t\tconfig,\n\t\t\toptions\n\t\t});\n\t}\n\n\tasync getData(writer, fileEntry, options = {}) {\n\t\tconst zipEntry = this;\n\t\tconst {\n\t\t\treader,\n\t\t\toffset,\n\t\t\tdiskNumberStart,\n\t\t\textraFieldAES,\n\t\t\tcompressionMethod,\n\t\t\tconfig,\n\t\t\tbitFlag,\n\t\t\tsignature,\n\t\t\trawLastModDate,\n\t\t\tuncompressedSize,\n\t\t\tcompressedSize\n\t\t} = zipEntry;\n\t\tconst localDirectory = fileEntry.localDirectory = {};\n\t\tconst dataArray = await readUint8Array(reader, offset, 30, diskNumberStart);\n\t\tconst dataView = getDataView(dataArray);\n\t\tlet password = getOptionValue(zipEntry, options, \"password\");\n\t\tlet rawPassword = getOptionValue(zipEntry, options, \"rawPassword\");\n\t\tconst passThrough = getOptionValue(zipEntry, options, \"passThrough\");\n\t\tpassword = password && password.length && password;\n\t\trawPassword = rawPassword && rawPassword.length && rawPassword;\n\t\tif (extraFieldAES) {\n\t\t\tif (extraFieldAES.originalCompressionMethod != COMPRESSION_METHOD_AES) {\n\t\t\t\tthrow new Error(ERR_UNSUPPORTED_COMPRESSION);\n\t\t\t}\n\t\t}\n\t\tif ((compressionMethod != COMPRESSION_METHOD_STORE && compressionMethod != COMPRESSION_METHOD_DEFLATE) && !passThrough) {\n\t\t\tthrow new Error(ERR_UNSUPPORTED_COMPRESSION);\n\t\t}\n\t\tif (getUint32(dataView, 0) != LOCAL_FILE_HEADER_SIGNATURE) {\n\t\t\tthrow new Error(ERR_LOCAL_FILE_HEADER_NOT_FOUND);\n\t\t}\n\t\treadCommonHeader(localDirectory, dataView, 4);\n\t\tlocalDirectory.rawExtraField = localDirectory.extraFieldLength ?\n\t\t\tawait readUint8Array(reader, offset + 30 + localDirectory.filenameLength, localDirectory.extraFieldLength, diskNumberStart) :\n\t\t\tnew Uint8Array();\n\t\treadCommonFooter(zipEntry, localDirectory, dataView, 4, true);\n\t\tObject.assign(fileEntry, {\n\t\t\tlastAccessDate: localDirectory.lastAccessDate,\n\t\t\tcreationDate: localDirectory.creationDate\n\t\t});\n\t\tconst encrypted = zipEntry.encrypted && localDirectory.encrypted && !passThrough;\n\t\tconst zipCrypto = encrypted && !extraFieldAES;\n\t\tif (!passThrough) {\n\t\t\tfileEntry.zipCrypto = zipCrypto;\n\t\t}\n\t\tif (encrypted) {\n\t\t\tif (!zipCrypto && extraFieldAES.strength === UNDEFINED_VALUE) {\n\t\t\t\tthrow new Error(ERR_UNSUPPORTED_ENCRYPTION);\n\t\t\t} else if (!password && !rawPassword) {\n\t\t\t\tthrow new Error(ERR_ENCRYPTED);\n\t\t\t}\n\t\t}\n\t\tconst dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength;\n\t\tconst size = compressedSize;\n\t\tconst readable = reader.readable;\n\t\tObject.assign(readable, {\n\t\t\tdiskNumberStart,\n\t\t\toffset: dataOffset,\n\t\t\tsize\n\t\t});\n\t\tconst signal = getOptionValue(zipEntry, options, \"signal\");\n\t\tconst checkPasswordOnly = getOptionValue(zipEntry, options, \"checkPasswordOnly\");\n\t\tif (checkPasswordOnly) {\n\t\t\twriter = new WritableStream();\n\t\t}\n\t\twriter = initWriter(writer);\n\t\tawait initStream(writer, passThrough ? compressedSize : uncompressedSize);\n\t\tconst { writable } = writer;\n\t\tconst { onstart, onprogress, onend } = options;\n\t\tconst workerOptions = {\n\t\t\toptions: {\n\t\t\t\tcodecType: CODEC_INFLATE,\n\t\t\t\tpassword,\n\t\t\t\trawPassword,\n\t\t\t\tzipCrypto,\n\t\t\t\tencryptionStrength: extraFieldAES && extraFieldAES.strength,\n\t\t\t\tsigned: getOptionValue(zipEntry, options, \"checkSignature\") && !passThrough,\n\t\t\t\tpasswordVerification: zipCrypto && (bitFlag.dataDescriptor ? ((rawLastModDate >>> 8) & 0xFF) : ((signature >>> 24) & 0xFF)),\n\t\t\t\tsignature,\n\t\t\t\tcompressed: compressionMethod != 0 && !passThrough,\n\t\t\t\tencrypted: zipEntry.encrypted && !passThrough,\n\t\t\t\tuseWebWorkers: getOptionValue(zipEntry, options, \"useWebWorkers\"),\n\t\t\t\tuseCompressionStream: getOptionValue(zipEntry, options, \"useCompressionStream\"),\n\t\t\t\ttransferStreams: getOptionValue(zipEntry, options, \"transferStreams\"),\n\t\t\t\tcheckPasswordOnly\n\t\t\t},\n\t\t\tconfig,\n\t\t\tstreamOptions: { signal, size, onstart, onprogress, onend }\n\t\t};\n\t\tlet outputSize = 0;\n\t\ttry {\n\t\t\t({ outputSize } = (await runWorker({ readable, writable }, workerOptions)));\n\t\t} catch (error) {\n\t\t\tif (!checkPasswordOnly || error.message != ERR_ABORT_CHECK_PASSWORD) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t} finally {\n\t\t\tconst preventClose = getOptionValue(zipEntry, options, \"preventClose\");\n\t\t\twritable.size += outputSize;\n\t\t\tif (!preventClose && !writable.locked) {\n\t\t\t\tawait writable.getWriter().close();\n\t\t\t}\n\t\t}\n\t\treturn checkPasswordOnly ? UNDEFINED_VALUE : writer.getData ? writer.getData() : writable;\n\t}\n}\n\nfunction readCommonHeader(directory, dataView, offset) {\n\tconst rawBitFlag = directory.rawBitFlag = getUint16(dataView, offset + 2);\n\tconst encrypted = (rawBitFlag & BITFLAG_ENCRYPTED) == BITFLAG_ENCRYPTED;\n\tconst rawLastModDate = getUint32(dataView, offset + 6);\n\tObject.assign(directory, {\n\t\tencrypted,\n\t\tversion: getUint16(dataView, offset),\n\t\tbitFlag: {\n\t\t\tlevel: (rawBitFlag & BITFLAG_LEVEL) >> 1,\n\t\t\tdataDescriptor: (rawBitFlag & BITFLAG_DATA_DESCRIPTOR) == BITFLAG_DATA_DESCRIPTOR,\n\t\t\tlanguageEncodingFlag: (rawBitFlag & BITFLAG_LANG_ENCODING_FLAG) == BITFLAG_LANG_ENCODING_FLAG\n\t\t},\n\t\trawLastModDate,\n\t\tlastModDate: getDate(rawLastModDate),\n\t\tfilenameLength: getUint16(dataView, offset + 22),\n\t\textraFieldLength: getUint16(dataView, offset + 24)\n\t});\n}\n\nfunction readCommonFooter(fileEntry, directory, dataView, offset, localDirectory) {\n\tconst { rawExtraField } = directory;\n\tconst extraField = directory.extraField = new Map();\n\tconst rawExtraFieldView = getDataView(new Uint8Array(rawExtraField));\n\tlet offsetExtraField = 0;\n\ttry {\n\t\twhile (offsetExtraField < rawExtraField.length) {\n\t\t\tconst type = getUint16(rawExtraFieldView, offsetExtraField);\n\t\t\tconst size = getUint16(rawExtraFieldView, offsetExtraField + 2);\n\t\t\textraField.set(type, {\n\t\t\t\ttype,\n\t\t\t\tdata: rawExtraField.slice(offsetExtraField + 4, offsetExtraField + 4 + size)\n\t\t\t});\n\t\t\toffsetExtraField += 4 + size;\n\t\t}\n\t} catch (_error) {\n\t\t// ignored\n\t}\n\tconst compressionMethod = getUint16(dataView, offset + 4);\n\tObject.assign(directory, {\n\t\tsignature: getUint32(dataView, offset + 10),\n\t\tuncompressedSize: getUint32(dataView, offset + 18),\n\t\tcompressedSize: getUint32(dataView, offset + 14)\n\t});\n\tconst extraFieldZip64 = extraField.get(EXTRAFIELD_TYPE_ZIP64);\n\tif (extraFieldZip64) {\n\t\treadExtraFieldZip64(extraFieldZip64, directory);\n\t\tdirectory.extraFieldZip64 = extraFieldZip64;\n\t}\n\tconst extraFieldUnicodePath = extraField.get(EXTRAFIELD_TYPE_UNICODE_PATH);\n\tif (extraFieldUnicodePath) {\n\t\treadExtraFieldUnicode(extraFieldUnicodePath, PROPERTY_NAME_FILENAME, PROPERTY_NAME_RAW_FILENAME, directory, fileEntry);\n\t\tdirectory.extraFieldUnicodePath = extraFieldUnicodePath;\n\t}\n\tconst extraFieldUnicodeComment = extraField.get(EXTRAFIELD_TYPE_UNICODE_COMMENT);\n\tif (extraFieldUnicodeComment) {\n\t\treadExtraFieldUnicode(extraFieldUnicodeComment, PROPERTY_NAME_COMMENT, PROPERTY_NAME_RAW_COMMENT, directory, fileEntry);\n\t\tdirectory.extraFieldUnicodeComment = extraFieldUnicodeComment;\n\t}\n\tconst extraFieldAES = extraField.get(EXTRAFIELD_TYPE_AES);\n\tif (extraFieldAES) {\n\t\treadExtraFieldAES(extraFieldAES, directory, compressionMethod);\n\t\tdirectory.extraFieldAES = extraFieldAES;\n\t} else {\n\t\tdirectory.compressionMethod = compressionMethod;\n\t}\n\tconst extraFieldNTFS = extraField.get(EXTRAFIELD_TYPE_NTFS);\n\tif (extraFieldNTFS) {\n\t\treadExtraFieldNTFS(extraFieldNTFS, directory);\n\t\tdirectory.extraFieldNTFS = extraFieldNTFS;\n\t}\n\tconst extraFieldExtendedTimestamp = extraField.get(EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);\n\tif (extraFieldExtendedTimestamp) {\n\t\treadExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory);\n\t\tdirectory.extraFieldExtendedTimestamp = extraFieldExtendedTimestamp;\n\t}\n\tconst extraFieldUSDZ = extraField.get(EXTRAFIELD_TYPE_USDZ);\n\tif (extraFieldUSDZ) {\n\t\tdirectory.extraFieldUSDZ = extraFieldUSDZ;\n\t}\n}\n\nfunction readExtraFieldZip64(extraFieldZip64, directory) {\n\tdirectory.zip64 = true;\n\tconst extraFieldView = getDataView(extraFieldZip64.data);\n\tconst missingProperties = ZIP64_PROPERTIES.filter(([propertyName, max]) => directory[propertyName] == max);\n\tfor (let indexMissingProperty = 0, offset = 0; indexMissingProperty < missingProperties.length; indexMissingProperty++) {\n\t\tconst [propertyName, max] = missingProperties[indexMissingProperty];\n\t\tif (directory[propertyName] == max) {\n\t\t\tconst extraction = ZIP64_EXTRACTION[max];\n\t\t\tdirectory[propertyName] = extraFieldZip64[propertyName] = extraction.getValue(extraFieldView, offset);\n\t\t\toffset += extraction.bytes;\n\t\t} else if (extraFieldZip64[propertyName]) {\n\t\t\tthrow new Error(ERR_EXTRAFIELD_ZIP64_NOT_FOUND);\n\t\t}\n\t}\n}\n\nfunction readExtraFieldUnicode(extraFieldUnicode, propertyName, rawPropertyName, directory, fileEntry) {\n\tconst extraFieldView = getDataView(extraFieldUnicode.data);\n\tconst crc32 = new Crc32();\n\tcrc32.append(fileEntry[rawPropertyName]);\n\tconst dataViewSignature = getDataView(new Uint8Array(4));\n\tdataViewSignature.setUint32(0, crc32.get(), true);\n\tconst signature = getUint32(extraFieldView, 1);\n\tObject.assign(extraFieldUnicode, {\n\t\tversion: getUint8(extraFieldView, 0),\n\t\t[propertyName]: decodeText(extraFieldUnicode.data.subarray(5)),\n\t\tvalid: !fileEntry.bitFlag.languageEncodingFlag && signature == getUint32(dataViewSignature, 0)\n\t});\n\tif (extraFieldUnicode.valid) {\n\t\tdirectory[propertyName] = extraFieldUnicode[propertyName];\n\t\tdirectory[propertyName + \"UTF8\"] = true;\n\t}\n}\n\nfunction readExtraFieldAES(extraFieldAES, directory, compressionMethod) {\n\tconst extraFieldView = getDataView(extraFieldAES.data);\n\tconst strength = getUint8(extraFieldView, 4);\n\tObject.assign(extraFieldAES, {\n\t\tvendorVersion: getUint8(extraFieldView, 0),\n\t\tvendorId: getUint8(extraFieldView, 2),\n\t\tstrength,\n\t\toriginalCompressionMethod: compressionMethod,\n\t\tcompressionMethod: getUint16(extraFieldView, 5)\n\t});\n\tdirectory.compressionMethod = extraFieldAES.compressionMethod;\n}\n\nfunction readExtraFieldNTFS(extraFieldNTFS, directory) {\n\tconst extraFieldView = getDataView(extraFieldNTFS.data);\n\tlet offsetExtraField = 4;\n\tlet tag1Data;\n\ttry {\n\t\twhile (offsetExtraField < extraFieldNTFS.data.length && !tag1Data) {\n\t\t\tconst tagValue = getUint16(extraFieldView, offsetExtraField);\n\t\t\tconst attributeSize = getUint16(extraFieldView, offsetExtraField + 2);\n\t\t\tif (tagValue == EXTRAFIELD_TYPE_NTFS_TAG1) {\n\t\t\t\ttag1Data = extraFieldNTFS.data.slice(offsetExtraField + 4, offsetExtraField + 4 + attributeSize);\n\t\t\t}\n\t\t\toffsetExtraField += 4 + attributeSize;\n\t\t}\n\t} catch (_error) {\n\t\t// ignored\n\t}\n\ttry {\n\t\tif (tag1Data && tag1Data.length == 24) {\n\t\t\tconst tag1View = getDataView(tag1Data);\n\t\t\tconst rawLastModDate = tag1View.getBigUint64(0, true);\n\t\t\tconst rawLastAccessDate = tag1View.getBigUint64(8, true);\n\t\t\tconst rawCreationDate = tag1View.getBigUint64(16, true);\n\t\t\tObject.assign(extraFieldNTFS, {\n\t\t\t\trawLastModDate,\n\t\t\t\trawLastAccessDate,\n\t\t\t\trawCreationDate\n\t\t\t});\n\t\t\tconst lastModDate = getDateNTFS(rawLastModDate);\n\t\t\tconst lastAccessDate = getDateNTFS(rawLastAccessDate);\n\t\t\tconst creationDate = getDateNTFS(rawCreationDate);\n\t\t\tconst extraFieldData = { lastModDate, lastAccessDate, creationDate };\n\t\t\tObject.assign(extraFieldNTFS, extraFieldData);\n\t\t\tObject.assign(directory, extraFieldData);\n\t\t}\n\t} catch (_error) {\n\t\t// ignored\n\t}\n}\n\nfunction readExtraFieldExtendedTimestamp(extraFieldExtendedTimestamp, directory, localDirectory) {\n\tconst extraFieldView = getDataView(extraFieldExtendedTimestamp.data);\n\tconst flags = getUint8(extraFieldView, 0);\n\tconst timeProperties = [];\n\tconst timeRawProperties = [];\n\tif (localDirectory) {\n\t\tif ((flags & 0x1) == 0x1) {\n\t\t\ttimeProperties.push(PROPERTY_NAME_LAST_MODIFICATION_DATE);\n\t\t\ttimeRawProperties.push(PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE);\n\t\t}\n\t\tif ((flags & 0x2) == 0x2) {\n\t\t\ttimeProperties.push(PROPERTY_NAME_LAST_ACCESS_DATE);\n\t\t\ttimeRawProperties.push(PROPERTY_NAME_RAW_LAST_ACCESS_DATE);\n\t\t}\n\t\tif ((flags & 0x4) == 0x4) {\n\t\t\ttimeProperties.push(PROPERTY_NAME_CREATION_DATE);\n\t\t\ttimeRawProperties.push(PROPERTY_NAME_RAW_CREATION_DATE);\n\t\t}\n\t} else if (extraFieldExtendedTimestamp.data.length >= 5) {\n\t\ttimeProperties.push(PROPERTY_NAME_LAST_MODIFICATION_DATE);\n\t\ttimeRawProperties.push(PROPERTY_NAME_RAW_LAST_MODIFICATION_DATE);\n\t}\n\tlet offset = 1;\n\ttimeProperties.forEach((propertyName, indexProperty) => {\n\t\tif (extraFieldExtendedTimestamp.data.length >= offset + 4) {\n\t\t\tconst time = getUint32(extraFieldView, offset);\n\t\t\tdirectory[propertyName] = extraFieldExtendedTimestamp[propertyName] = new Date(time * 1000);\n\t\t\tconst rawPropertyName = timeRawProperties[indexProperty];\n\t\t\textraFieldExtendedTimestamp[rawPropertyName] = time;\n\t\t}\n\t\toffset += 4;\n\t});\n}\n\nasync function seekSignature(reader, signature, startOffset, minimumBytes, maximumLength) {\n\tconst signatureArray = new Uint8Array(4);\n\tconst signatureView = getDataView(signatureArray);\n\tsetUint32(signatureView, 0, signature);\n\tconst maximumBytes = minimumBytes + maximumLength;\n\treturn (await seek(minimumBytes)) || await seek(Math.min(maximumBytes, startOffset));\n\n\tasync function seek(length) {\n\t\tconst offset = startOffset - length;\n\t\tconst bytes = await readUint8Array(reader, offset, length);\n\t\tfor (let indexByte = bytes.length - minimumBytes; indexByte >= 0; indexByte--) {\n\t\t\tif (bytes[indexByte] == signatureArray[0] && bytes[indexByte + 1] == signatureArray[1] &&\n\t\t\t\tbytes[indexByte + 2] == signatureArray[2] && bytes[indexByte + 3] == signatureArray[3]) {\n\t\t\t\treturn {\n\t\t\t\t\toffset: offset + indexByte,\n\t\t\t\t\tbuffer: bytes.slice(indexByte, indexByte + minimumBytes).buffer\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction getOptionValue(zipReader, options, name) {\n\treturn options[name] === UNDEFINED_VALUE ? zipReader.options[name] : options[name];\n}\n\nfunction getDate(timeRaw) {\n\tconst date = (timeRaw & 0xffff0000) >> 16, time = timeRaw & 0x0000ffff;\n\ttry {\n\t\treturn new Date(1980 + ((date & 0xFE00) >> 9), ((date & 0x01E0) >> 5) - 1, date & 0x001F, (time & 0xF800) >> 11, (time & 0x07E0) >> 5, (time & 0x001F) * 2, 0);\n\t} catch (_error) {\n\t\t// ignored\n\t}\n}\n\nfunction getDateNTFS(timeRaw) {\n\treturn new Date((Number((timeRaw / BigInt(10000)) - BigInt(11644473600000))));\n}\n\nfunction getUint8(view, offset) {\n\treturn view.getUint8(offset);\n}\n\nfunction getUint16(view, offset) {\n\treturn view.getUint16(offset, true);\n}\n\nfunction getUint32(view, offset) {\n\treturn view.getUint32(offset, true);\n}\n\nfunction getBigUint64(view, offset) {\n\treturn Number(view.getBigUint64(offset, true));\n}\n\nfunction setUint32(view, offset, value) {\n\tview.setUint32(offset, value, true);\n}\n\nfunction getDataView(array) {\n\treturn new DataView(array.buffer);\n}\n", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* global BigInt, TransformStream, Response */\n// deno-lint-ignore-file no-this-alias\n\nimport {\n\tMAX_32_BITS,\n\tMAX_16_BITS,\n\tCOMPRESSION_METHOD_DEFLATE,\n\tCOMPRESSION_METHOD_STORE,\n\tCOMPRESSION_METHOD_AES,\n\tSPLIT_ZIP_FILE_SIGNATURE,\n\tLOCAL_FILE_HEADER_SIGNATURE,\n\tDATA_DESCRIPTOR_RECORD_SIGNATURE,\n\tCENTRAL_FILE_HEADER_SIGNATURE,\n\tEND_OF_CENTRAL_DIR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE,\n\tZIP64_END_OF_CENTRAL_DIR_SIGNATURE,\n\tEXTRAFIELD_TYPE_AES,\n\tEXTRAFIELD_TYPE_ZIP64,\n\tEXTRAFIELD_TYPE_EXTENDED_TIMESTAMP,\n\tEXTRAFIELD_TYPE_NTFS,\n\tEXTRAFIELD_TYPE_NTFS_TAG1,\n\tEXTRAFIELD_TYPE_USDZ,\n\tEND_OF_CENTRAL_DIR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH,\n\tZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH,\n\tBITFLAG_ENCRYPTED,\n\tBITFLAG_DATA_DESCRIPTOR,\n\tBITFLAG_LANG_ENCODING_FLAG,\n\tFILE_ATTR_MSDOS_DIR_MASK,\n\tVERSION_DEFLATE,\n\tVERSION_ZIP64,\n\tVERSION_AES,\n\tDIRECTORY_SIGNATURE,\n\tMIN_DATE,\n\tMAX_DATE,\n\tUNDEFINED_VALUE\n} from \"./constants.js\";\nimport {\n\tgetConfiguration,\n\tgetChunkSize\n} from \"./configuration.js\";\nimport {\n\tCODEC_DEFLATE,\n\trunWorker\n} from \"./codec-pool.js\";\nimport {\n\tinitStream,\n\tinitReader,\n\tinitWriter\n} from \"./io.js\";\nimport { encodeText } from \"./util/encode-text.js\";\nimport {\n\tPROPERTY_NAME_LAST_MODIFICATION_DATE,\n\tPROPERTY_NAME_LAST_ACCESS_DATE,\n\tPROPERTY_NAME_CREATION_DATE,\n\tPROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE,\n\tPROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE,\n\tPROPERTY_NAME_MS_DOS_COMPATIBLE,\n\tPROPERTY_NAME_ZIP64,\n\tPROPERTY_NAME_ENCRYPTED,\n\tPROPERTY_NAME_VERSION,\n\tPROPERTY_NAME_VERSION_MADE_BY,\n\tPROPERTY_NAME_ZIPCRYPTO,\n\tEntry\n} from \"./zip-entry.js\";\n\nconst ERR_DUPLICATED_NAME = \"File already exists\";\nconst ERR_INVALID_COMMENT = \"Zip file comment exceeds 64KB\";\nconst ERR_INVALID_ENTRY_COMMENT = \"File entry comment exceeds 64KB\";\nconst ERR_INVALID_ENTRY_NAME = \"File entry name exceeds 64KB\";\nconst ERR_INVALID_VERSION = \"Version exceeds 65535\";\nconst ERR_INVALID_ENCRYPTION_STRENGTH = \"The strength must equal 1, 2, or 3\";\nconst ERR_INVALID_EXTRAFIELD_TYPE = \"Extra field type exceeds 65535\";\nconst ERR_INVALID_EXTRAFIELD_DATA = \"Extra field data exceeds 64KB\";\nconst ERR_UNSUPPORTED_FORMAT = \"Zip64 is not supported (make sure 'keepOrder' is set to 'true')\";\nconst ERR_UNDEFINED_UNCOMPRESSED_SIZE = \"Undefined uncompressed size\";\n\nconst EXTRAFIELD_DATA_AES = new Uint8Array([0x07, 0x00, 0x02, 0x00, 0x41, 0x45, 0x03, 0x00, 0x00]);\n\nlet workers = 0;\nconst pendingEntries = [];\n\nclass ZipWriter {\n\n\tconstructor(writer, options = {}) {\n\t\twriter = initWriter(writer);\n\t\tconst addSplitZipSignature =\n\t\t\twriter.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== Infinity &&\n\t\t\twriter.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== Infinity;\n\t\tObject.assign(this, {\n\t\t\twriter,\n\t\t\taddSplitZipSignature,\n\t\t\toptions,\n\t\t\tconfig: getConfiguration(),\n\t\t\tfiles: new Map(),\n\t\t\tfilenames: new Set(),\n\t\t\toffset: options.offset === UNDEFINED_VALUE ? writer.writable.size : options.offset,\n\t\t\tpendingEntriesSize: 0,\n\t\t\tpendingAddFileCalls: new Set(),\n\t\t\tbufferedWrites: 0\n\t\t});\n\t}\n\n\tasync add(name = \"\", reader, options = {}) {\n\t\tconst zipWriter = this;\n\t\tconst {\n\t\t\tpendingAddFileCalls,\n\t\t\tconfig\n\t\t} = zipWriter;\n\t\tif (workers < config.maxWorkers) {\n\t\t\tworkers++;\n\t\t} else {\n\t\t\tawait new Promise(resolve => pendingEntries.push(resolve));\n\t\t}\n\t\tlet promiseAddFile;\n\t\ttry {\n\t\t\tname = name.trim();\n\t\t\tif (zipWriter.filenames.has(name)) {\n\t\t\t\tthrow new Error(ERR_DUPLICATED_NAME);\n\t\t\t}\n\t\t\tzipWriter.filenames.add(name);\n\t\t\tpromiseAddFile = addFile(zipWriter, name, reader, options);\n\t\t\tpendingAddFileCalls.add(promiseAddFile);\n\t\t\treturn await promiseAddFile;\n\t\t} catch (error) {\n\t\t\tzipWriter.filenames.delete(name);\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tpendingAddFileCalls.delete(promiseAddFile);\n\t\t\tconst pendingEntry = pendingEntries.shift();\n\t\t\tif (pendingEntry) {\n\t\t\t\tpendingEntry();\n\t\t\t} else {\n\t\t\t\tworkers--;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync close(comment = new Uint8Array(), options = {}) {\n\t\tconst zipWriter = this;\n\t\tconst { pendingAddFileCalls, writer } = this;\n\t\tconst { writable } = writer;\n\t\twhile (pendingAddFileCalls.size) {\n\t\t\tawait Promise.allSettled(Array.from(pendingAddFileCalls));\n\t\t}\n\t\tawait closeFile(this, comment, options);\n\t\tconst preventClose = getOptionValue(zipWriter, options, \"preventClose\");\n\t\tif (!preventClose) {\n\t\t\tawait writable.getWriter().close();\n\t\t}\n\t\treturn writer.getData ? writer.getData() : writable;\n\t}\n}\n\nclass ZipWriterStream {\n\n\tconstructor(options = {}) {\n\t\tconst { readable, writable } = new TransformStream();\n\t\tthis.readable = readable;\n\t\tthis.zipWriter = new ZipWriter(writable, options);\n\t}\n\n\ttransform(path) {\n\t\tconst { readable, writable } = new TransformStream({\n\t\t\tflush: () => { this.zipWriter.close(); }\n\t\t});\n\t\tthis.zipWriter.add(path, readable);\n\t\treturn { readable: this.readable, writable };\n\t}\n\n\twritable(path) {\n\t\tconst { readable, writable } = new TransformStream();\n\t\tthis.zipWriter.add(path, readable);\n\t\treturn writable;\n\t}\n\n\tclose(comment = undefined, options = {}) {\n\t\treturn this.zipWriter.close(comment, options);\n\t}\n}\n\nexport {\n\tZipWriter,\n\tZipWriterStream,\n\tERR_DUPLICATED_NAME,\n\tERR_INVALID_COMMENT,\n\tERR_INVALID_ENTRY_NAME,\n\tERR_INVALID_ENTRY_COMMENT,\n\tERR_INVALID_VERSION,\n\tERR_INVALID_EXTRAFIELD_TYPE,\n\tERR_INVALID_EXTRAFIELD_DATA,\n\tERR_INVALID_ENCRYPTION_STRENGTH,\n\tERR_UNSUPPORTED_FORMAT,\n\tERR_UNDEFINED_UNCOMPRESSED_SIZE\n};\n\nasync function addFile(zipWriter, name, reader, options) {\n\tname = name.trim();\n\tif (options.directory && (!name.endsWith(DIRECTORY_SIGNATURE))) {\n\t\tname += DIRECTORY_SIGNATURE;\n\t} else {\n\t\toptions.directory = name.endsWith(DIRECTORY_SIGNATURE);\n\t}\n\tconst encode = getOptionValue(zipWriter, options, \"encodeText\", encodeText);\n\tlet rawFilename = encode(name);\n\tif (rawFilename === UNDEFINED_VALUE) {\n\t\trawFilename = encodeText(name);\n\t}\n\tif (getLength(rawFilename) > MAX_16_BITS) {\n\t\tthrow new Error(ERR_INVALID_ENTRY_NAME);\n\t}\n\tconst comment = options.comment || \"\";\n\tlet rawComment = encode(comment);\n\tif (rawComment === UNDEFINED_VALUE) {\n\t\trawComment = encodeText(comment);\n\t}\n\tif (getLength(rawComment) > MAX_16_BITS) {\n\t\tthrow new Error(ERR_INVALID_ENTRY_COMMENT);\n\t}\n\tconst version = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION, VERSION_DEFLATE);\n\tif (version > MAX_16_BITS) {\n\t\tthrow new Error(ERR_INVALID_VERSION);\n\t}\n\tconst versionMadeBy = getOptionValue(zipWriter, options, PROPERTY_NAME_VERSION_MADE_BY, 20);\n\tif (versionMadeBy > MAX_16_BITS) {\n\t\tthrow new Error(ERR_INVALID_VERSION);\n\t}\n\tconst lastModDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_MODIFICATION_DATE, new Date());\n\tconst lastAccessDate = getOptionValue(zipWriter, options, PROPERTY_NAME_LAST_ACCESS_DATE);\n\tconst creationDate = getOptionValue(zipWriter, options, PROPERTY_NAME_CREATION_DATE);\n\tconst msDosCompatible = getOptionValue(zipWriter, options, PROPERTY_NAME_MS_DOS_COMPATIBLE, true);\n\tconst internalFileAttribute = getOptionValue(zipWriter, options, PROPERTY_NAME_INTERNAL_FILE_ATTRIBUTE, 0);\n\tconst externalFileAttribute = getOptionValue(zipWriter, options, PROPERTY_NAME_EXTERNAL_FILE_ATTRIBUTE, 0);\n\tconst passThrough = getOptionValue(zipWriter, options, \"passThrough\");\n\tlet password, rawPassword;\n\tif (!passThrough) {\n\t\tpassword = getOptionValue(zipWriter, options, \"password\");\n\t\trawPassword = getOptionValue(zipWriter, options, \"rawPassword\");\n\t}\n\tconst encryptionStrength = getOptionValue(zipWriter, options, \"encryptionStrength\", 3);\n\tconst zipCrypto = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO);\n\tconst extendedTimestamp = getOptionValue(zipWriter, options, \"extendedTimestamp\", true);\n\tconst keepOrder = getOptionValue(zipWriter, options, \"keepOrder\", true);\n\tconst level = getOptionValue(zipWriter, options, \"level\");\n\tconst useWebWorkers = getOptionValue(zipWriter, options, \"useWebWorkers\");\n\tconst bufferedWrite = getOptionValue(zipWriter, options, \"bufferedWrite\");\n\tconst dataDescriptorSignature = getOptionValue(zipWriter, options, \"dataDescriptorSignature\", false);\n\tconst signal = getOptionValue(zipWriter, options, \"signal\");\n\tconst useUnicodeFileNames = getOptionValue(zipWriter, options, \"useUnicodeFileNames\", true);\n\tconst useCompressionStream = getOptionValue(zipWriter, options, \"useCompressionStream\");\n\tconst compressionMethod = getOptionValue(zipWriter, options, \"compressionMethod\");\n\tlet dataDescriptor = getOptionValue(zipWriter, options, \"dataDescriptor\", true);\n\tlet zip64 = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIP64);\n\tif (!zipCrypto && (password !== UNDEFINED_VALUE || rawPassword !== UNDEFINED_VALUE) && !(encryptionStrength >= 1 && encryptionStrength <= 3)) {\n\t\tthrow new Error(ERR_INVALID_ENCRYPTION_STRENGTH);\n\t}\n\tlet rawExtraField = new Uint8Array();\n\tconst { extraField } = options;\n\tif (extraField) {\n\t\tlet extraFieldSize = 0;\n\t\tlet offset = 0;\n\t\textraField.forEach(data => extraFieldSize += 4 + getLength(data));\n\t\trawExtraField = new Uint8Array(extraFieldSize);\n\t\textraField.forEach((data, type) => {\n\t\t\tif (type > MAX_16_BITS) {\n\t\t\t\tthrow new Error(ERR_INVALID_EXTRAFIELD_TYPE);\n\t\t\t}\n\t\t\tif (getLength(data) > MAX_16_BITS) {\n\t\t\t\tthrow new Error(ERR_INVALID_EXTRAFIELD_DATA);\n\t\t\t}\n\t\t\tarraySet(rawExtraField, new Uint16Array([type]), offset);\n\t\t\tarraySet(rawExtraField, new Uint16Array([getLength(data)]), offset + 2);\n\t\t\tarraySet(rawExtraField, data, offset + 4);\n\t\t\toffset += 4 + getLength(data);\n\t\t});\n\t}\n\tlet maximumCompressedSize = 0;\n\tlet maximumEntrySize = 0;\n\tlet uncompressedSize = 0;\n\tif (passThrough) {\n\t\t({ uncompressedSize } = options);\n\t\tif (uncompressedSize === UNDEFINED_VALUE) {\n\t\t\tthrow new Error(ERR_UNDEFINED_UNCOMPRESSED_SIZE);\n\t\t}\n\t}\n\tconst zip64Enabled = zip64 === true;\n\tif (reader) {\n\t\treader = initReader(reader);\n\t\tawait initStream(reader);\n\t\tif (!passThrough) {\n\t\t\tif (reader.size === UNDEFINED_VALUE) {\n\t\t\t\tdataDescriptor = true;\n\t\t\t\tif (zip64 || zip64 === UNDEFINED_VALUE) {\n\t\t\t\t\tzip64 = true;\n\t\t\t\t\tuncompressedSize = maximumCompressedSize = MAX_32_BITS + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tuncompressedSize = reader.size;\n\t\t\t\tmaximumCompressedSize = getMaximumCompressedSize(uncompressedSize);\n\t\t\t}\n\t\t} else {\n\t\t\tmaximumCompressedSize = getMaximumCompressedSize(uncompressedSize);\n\t\t}\n\t}\n\tconst { diskOffset, diskNumber, maxSize } = zipWriter.writer;\n\tconst zip64UncompressedSize = zip64Enabled || uncompressedSize > MAX_32_BITS;\n\tconst zip64CompressedSize = zip64Enabled || maximumCompressedSize > MAX_32_BITS;\n\tconst zip64Offset = zip64Enabled || zipWriter.offset + zipWriter.pendingEntriesSize - diskOffset > MAX_32_BITS;\n\tconst supportZip64SplitFile = getOptionValue(zipWriter, options, \"supportZip64SplitFile\", true);\n\tconst zip64DiskNumberStart = (supportZip64SplitFile && zip64Enabled) || diskNumber + Math.ceil(zipWriter.pendingEntriesSize / maxSize) > MAX_16_BITS;\n\tif (zip64Offset || zip64UncompressedSize || zip64CompressedSize || zip64DiskNumberStart) {\n\t\tif (zip64 === false || !keepOrder) {\n\t\t\tthrow new Error(ERR_UNSUPPORTED_FORMAT);\n\t\t} else {\n\t\t\tzip64 = true;\n\t\t}\n\t}\n\tzip64 = zip64 || false;\n\tconst encrypted = getOptionValue(zipWriter, options, PROPERTY_NAME_ENCRYPTED);\n\tconst { signature } = options;\n\toptions = Object.assign({}, options, {\n\t\trawFilename,\n\t\trawComment,\n\t\tversion,\n\t\tversionMadeBy,\n\t\tlastModDate,\n\t\tlastAccessDate,\n\t\tcreationDate,\n\t\trawExtraField,\n\t\tzip64,\n\t\tzip64UncompressedSize,\n\t\tzip64CompressedSize,\n\t\tzip64Offset,\n\t\tzip64DiskNumberStart,\n\t\tpassword,\n\t\trawPassword,\n\t\tlevel: !useCompressionStream && (zipWriter.config.CompressionStream === UNDEFINED_VALUE && zipWriter.config.CompressionStreamNative === UNDEFINED_VALUE) ? 0 : level,\n\t\tuseWebWorkers,\n\t\tencryptionStrength,\n\t\textendedTimestamp,\n\t\tzipCrypto,\n\t\tbufferedWrite,\n\t\tkeepOrder,\n\t\tuseUnicodeFileNames,\n\t\tdataDescriptor,\n\t\tdataDescriptorSignature,\n\t\tsignal,\n\t\tmsDosCompatible,\n\t\tinternalFileAttribute,\n\t\texternalFileAttribute,\n\t\tuseCompressionStream,\n\t\tpassThrough,\n\t\tencrypted: Boolean((password && getLength(password)) || (rawPassword && getLength(rawPassword))) || (passThrough && encrypted),\n\t\tsignature,\n\t\tcompressionMethod\n\t});\n\tconst headerInfo = getHeaderInfo(options);\n\tconst dataDescriptorInfo = getDataDescriptorInfo(options);\n\tconst metadataSize = getLength(headerInfo.localHeaderArray, dataDescriptorInfo.dataDescriptorArray);\n\tmaximumEntrySize = metadataSize + maximumCompressedSize;\n\tif (zipWriter.options.usdz) {\n\t\tmaximumEntrySize += maximumEntrySize + 64;\n\t}\n\tzipWriter.pendingEntriesSize += maximumEntrySize;\n\tlet fileEntry;\n\ttry {\n\t\tfileEntry = await getFileEntry(zipWriter, name, reader, { headerInfo, dataDescriptorInfo, metadataSize }, options);\n\t} finally {\n\t\tzipWriter.pendingEntriesSize -= maximumEntrySize;\n\t}\n\tObject.assign(fileEntry, { name, comment, extraField });\n\treturn new Entry(fileEntry);\n}\n\nasync function getFileEntry(zipWriter, name, reader, entryInfo, options) {\n\tconst {\n\t\tfiles,\n\t\twriter\n\t} = zipWriter;\n\tconst {\n\t\tkeepOrder,\n\t\tdataDescriptor,\n\t\tsignal\n\t} = options;\n\tconst {\n\t\theaderInfo\n\t} = entryInfo;\n\tconst { usdz } = zipWriter.options;\n\tconst previousFileEntry = Array.from(files.values()).pop();\n\tlet fileEntry = {};\n\tlet bufferedWrite;\n\tlet releaseLockWriter;\n\tlet releaseLockCurrentFileEntry;\n\tlet writingBufferedEntryData;\n\tlet writingEntryData;\n\tlet fileWriter;\n\tlet blobPromise;\n\tfiles.set(name, fileEntry);\n\ttry {\n\t\tlet lockPreviousFileEntry;\n\t\tif (keepOrder) {\n\t\t\tlockPreviousFileEntry = previousFileEntry && previousFileEntry.lock;\n\t\t\trequestLockCurrentFileEntry();\n\t\t}\n\t\tif ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {\n\t\t\tfileWriter = new TransformStream();\n\t\t\tblobPromise = new Response(fileWriter.readable).blob();\n\t\t\tfileWriter.writable.size = 0;\n\t\t\tbufferedWrite = true;\n\t\t\tzipWriter.bufferedWrites++;\n\t\t\tawait initStream(writer);\n\t\t} else {\n\t\t\tfileWriter = writer;\n\t\t\tawait requestLockWriter();\n\t\t}\n\t\tawait initStream(fileWriter);\n\t\tconst { writable } = writer;\n\t\tlet { diskOffset } = writer;\n\t\tif (zipWriter.addSplitZipSignature) {\n\t\t\tdelete zipWriter.addSplitZipSignature;\n\t\t\tconst signatureArray = new Uint8Array(4);\n\t\t\tconst signatureArrayView = getDataView(signatureArray);\n\t\t\tsetUint32(signatureArrayView, 0, SPLIT_ZIP_FILE_SIGNATURE);\n\t\t\tawait writeData(writable, signatureArray);\n\t\t\tzipWriter.offset += 4;\n\t\t}\n\t\tif (usdz) {\n\t\t\tappendExtraFieldUSDZ(entryInfo, zipWriter.offset - diskOffset);\n\t\t}\n\t\tif (!bufferedWrite) {\n\t\t\tawait lockPreviousFileEntry;\n\t\t\tawait skipDiskIfNeeded(writable);\n\t\t}\n\t\tconst { diskNumber } = writer;\n\t\twritingEntryData = true;\n\t\tfileEntry.diskNumberStart = diskNumber;\n\t\tfileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);\n\t\twritingEntryData = false;\n\t\tfiles.set(name, fileEntry);\n\t\tfileEntry.filename = name;\n\t\tif (bufferedWrite) {\n\t\t\tawait fileWriter.writable.getWriter().close();\n\t\t\tlet blob = await blobPromise;\n\t\t\tawait lockPreviousFileEntry;\n\t\t\tawait requestLockWriter();\n\t\t\twritingBufferedEntryData = true;\n\t\t\tif (!dataDescriptor) {\n\t\t\t\tblob = await writeExtraHeaderInfo(fileEntry, blob, writable, options);\n\t\t\t}\n\t\t\tawait skipDiskIfNeeded(writable);\n\t\t\tfileEntry.diskNumberStart = writer.diskNumber;\n\t\t\tdiskOffset = writer.diskOffset;\n\t\t\tawait blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal });\n\t\t\twritable.size += blob.size;\n\t\t\twritingBufferedEntryData = false;\n\t\t}\n\t\tfileEntry.offset = zipWriter.offset - diskOffset;\n\t\tif (fileEntry.zip64) {\n\t\t\tsetZip64ExtraInfo(fileEntry, options);\n\t\t} else if (fileEntry.offset > MAX_32_BITS) {\n\t\t\tthrow new Error(ERR_UNSUPPORTED_FORMAT);\n\t\t}\n\t\tzipWriter.offset += fileEntry.size;\n\t\treturn fileEntry;\n\t} catch (error) {\n\t\tif ((bufferedWrite && writingBufferedEntryData) || (!bufferedWrite && writingEntryData)) {\n\t\t\tzipWriter.hasCorruptedEntries = true;\n\t\t\tif (error) {\n\t\t\t\ttry {\n\t\t\t\t\terror.corruptedEntry = true;\n\t\t\t\t} catch (_error) {\n\t\t\t\t\t// ignored\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (bufferedWrite) {\n\t\t\t\tzipWriter.offset += fileWriter.writable.size;\n\t\t\t} else {\n\t\t\t\tzipWriter.offset = fileWriter.writable.size;\n\t\t\t}\n\t\t}\n\t\tfiles.delete(name);\n\t\tthrow error;\n\t} finally {\n\t\tif (bufferedWrite) {\n\t\t\tzipWriter.bufferedWrites--;\n\t\t}\n\t\tif (releaseLockCurrentFileEntry) {\n\t\t\treleaseLockCurrentFileEntry();\n\t\t}\n\t\tif (releaseLockWriter) {\n\t\t\treleaseLockWriter();\n\t\t}\n\t}\n\n\tfunction requestLockCurrentFileEntry() {\n\t\tfileEntry.lock = new Promise(resolve => releaseLockCurrentFileEntry = resolve);\n\t}\n\n\tasync function requestLockWriter() {\n\t\tzipWriter.writerLocked = true;\n\t\tconst { lockWriter } = zipWriter;\n\t\tzipWriter.lockWriter = new Promise(resolve => releaseLockWriter = () => {\n\t\t\tzipWriter.writerLocked = false;\n\t\t\tresolve();\n\t\t});\n\t\tawait lockWriter;\n\t}\n\n\tasync function skipDiskIfNeeded(writable) {\n\t\tif (getLength(headerInfo.localHeaderArray) > writer.availableSize) {\n\t\t\twriter.availableSize = 0;\n\t\t\tawait writeData(writable, new Uint8Array());\n\t\t}\n\t}\n}\n\nasync function createFileEntry(reader, writer, { diskNumberStart, lock }, entryInfo, config, options) {\n\tconst {\n\t\theaderInfo,\n\t\tdataDescriptorInfo,\n\t\tmetadataSize\n\t} = entryInfo;\n\tconst {\n\t\tlocalHeaderArray,\n\t\theaderArray,\n\t\tlastModDate,\n\t\trawLastModDate,\n\t\tencrypted,\n\t\tcompressed,\n\t\tversion,\n\t\tcompressionMethod,\n\t\trawExtraFieldExtendedTimestamp,\n\t\textraFieldExtendedTimestampFlag,\n\t\trawExtraFieldNTFS,\n\t\trawExtraFieldAES\n\t} = headerInfo;\n\tconst { dataDescriptorArray } = dataDescriptorInfo;\n\tconst {\n\t\trawFilename,\n\t\tlastAccessDate,\n\t\tcreationDate,\n\t\tpassword,\n\t\trawPassword,\n\t\tlevel,\n\t\tzip64,\n\t\tzip64UncompressedSize,\n\t\tzip64CompressedSize,\n\t\tzip64Offset,\n\t\tzip64DiskNumberStart,\n\t\tzipCrypto,\n\t\tdataDescriptor,\n\t\tdirectory,\n\t\tversionMadeBy,\n\t\trawComment,\n\t\trawExtraField,\n\t\tuseWebWorkers,\n\t\tonstart,\n\t\tonprogress,\n\t\tonend,\n\t\tsignal,\n\t\tencryptionStrength,\n\t\textendedTimestamp,\n\t\tmsDosCompatible,\n\t\tinternalFileAttribute,\n\t\texternalFileAttribute,\n\t\tuseCompressionStream,\n\t\tpassThrough\n\t} = options;\n\tconst fileEntry = {\n\t\tlock,\n\t\tversionMadeBy,\n\t\tzip64,\n\t\tdirectory: Boolean(directory),\n\t\tfilenameUTF8: true,\n\t\trawFilename,\n\t\tcommentUTF8: true,\n\t\trawComment,\n\t\trawExtraFieldExtendedTimestamp,\n\t\trawExtraFieldNTFS,\n\t\trawExtraFieldAES,\n\t\trawExtraField,\n\t\textendedTimestamp,\n\t\tmsDosCompatible,\n\t\tinternalFileAttribute,\n\t\texternalFileAttribute,\n\t\tdiskNumberStart\n\t};\n\tlet {\n\t\tsignature,\n\t\tuncompressedSize\n\t} = options;\n\tlet compressedSize = 0;\n\tif (!passThrough) {\n\t\tuncompressedSize = 0;\n\t}\n\tconst { writable } = writer;\n\tif (reader) {\n\t\treader.chunkSize = getChunkSize(config);\n\t\tawait writeData(writable, localHeaderArray);\n\t\tconst readable = reader.readable;\n\t\tconst size = readable.size = reader.size;\n\t\tconst workerOptions = {\n\t\t\toptions: {\n\t\t\t\tcodecType: CODEC_DEFLATE,\n\t\t\t\tlevel,\n\t\t\t\trawPassword,\n\t\t\t\tpassword,\n\t\t\t\tencryptionStrength,\n\t\t\t\tzipCrypto: encrypted && zipCrypto,\n\t\t\t\tpasswordVerification: encrypted && zipCrypto && (rawLastModDate >> 8) & 0xFF,\n\t\t\t\tsigned: !passThrough,\n\t\t\t\tcompressed: compressed && !passThrough,\n\t\t\t\tencrypted: encrypted && !passThrough,\n\t\t\t\tuseWebWorkers,\n\t\t\t\tuseCompressionStream,\n\t\t\t\ttransferStreams: false\n\t\t\t},\n\t\t\tconfig,\n\t\t\tstreamOptions: { signal, size, onstart, onprogress, onend }\n\t\t};\n\t\tconst result = await runWorker({ readable, writable }, workerOptions);\n\t\tcompressedSize = result.outputSize;\n\t\tif (!passThrough) {\n\t\t\tuncompressedSize = result.inputSize;\n\t\t\tsignature = result.signature;\n\t\t}\n\t\twritable.size += uncompressedSize;\n\t} else {\n\t\tawait writeData(writable, localHeaderArray);\n\t}\n\tlet rawExtraFieldZip64;\n\tif (zip64) {\n\t\tlet rawExtraFieldZip64Length = 4;\n\t\tif (zip64UncompressedSize) {\n\t\t\trawExtraFieldZip64Length += 8;\n\t\t}\n\t\tif (zip64CompressedSize) {\n\t\t\trawExtraFieldZip64Length += 8;\n\t\t}\n\t\tif (zip64Offset) {\n\t\t\trawExtraFieldZip64Length += 8;\n\t\t}\n\t\tif (zip64DiskNumberStart) {\n\t\t\trawExtraFieldZip64Length += 4;\n\t\t}\n\t\trawExtraFieldZip64 = new Uint8Array(rawExtraFieldZip64Length);\n\t} else {\n\t\trawExtraFieldZip64 = new Uint8Array();\n\t}\n\tsetEntryInfo({\n\t\tsignature,\n\t\trawExtraFieldZip64,\n\t\tcompressedSize,\n\t\tuncompressedSize,\n\t\theaderInfo,\n\t\tdataDescriptorInfo\n\t}, options);\n\tif (dataDescriptor) {\n\t\tawait writeData(writable, dataDescriptorArray);\n\t}\n\tObject.assign(fileEntry, {\n\t\tuncompressedSize,\n\t\tcompressedSize,\n\t\tlastModDate,\n\t\trawLastModDate,\n\t\tcreationDate,\n\t\tlastAccessDate,\n\t\tencrypted,\n\t\tzipCrypto,\n\t\tsize: metadataSize + compressedSize,\n\t\tcompressionMethod,\n\t\tversion,\n\t\theaderArray,\n\t\tsignature,\n\t\trawExtraFieldZip64,\n\t\textraFieldExtendedTimestampFlag,\n\t\tzip64UncompressedSize,\n\t\tzip64CompressedSize,\n\t\tzip64Offset,\n\t\tzip64DiskNumberStart\n\t});\n\treturn fileEntry;\n}\n\nfunction getHeaderInfo(options) {\n\tconst {\n\t\trawFilename,\n\t\tlastModDate,\n\t\tlastAccessDate,\n\t\tcreationDate,\n\t\tlevel,\n\t\tzip64,\n\t\tzipCrypto,\n\t\tuseUnicodeFileNames,\n\t\tdataDescriptor,\n\t\tdirectory,\n\t\trawExtraField,\n\t\tencryptionStrength,\n\t\textendedTimestamp,\n\t\tencrypted\n\t} = options;\n\tlet { version, compressionMethod } = options;\n\tconst compressed = !directory && (level > 0 || (level === UNDEFINED_VALUE && compressionMethod !== 0));\n\tlet rawExtraFieldAES;\n\tif (encrypted && !zipCrypto) {\n\t\trawExtraFieldAES = new Uint8Array(getLength(EXTRAFIELD_DATA_AES) + 2);\n\t\tconst extraFieldAESView = getDataView(rawExtraFieldAES);\n\t\tsetUint16(extraFieldAESView, 0, EXTRAFIELD_TYPE_AES);\n\t\tarraySet(rawExtraFieldAES, EXTRAFIELD_DATA_AES, 2);\n\t\tsetUint8(extraFieldAESView, 8, encryptionStrength);\n\t} else {\n\t\trawExtraFieldAES = new Uint8Array();\n\t}\n\tlet rawExtraFieldNTFS;\n\tlet rawExtraFieldExtendedTimestamp;\n\tlet extraFieldExtendedTimestampFlag;\n\tif (extendedTimestamp) {\n\t\trawExtraFieldExtendedTimestamp = new Uint8Array(9 + (lastAccessDate ? 4 : 0) + (creationDate ? 4 : 0));\n\t\tconst extraFieldExtendedTimestampView = getDataView(rawExtraFieldExtendedTimestamp);\n\t\tsetUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);\n\t\tsetUint16(extraFieldExtendedTimestampView, 2, getLength(rawExtraFieldExtendedTimestamp) - 4);\n\t\textraFieldExtendedTimestampFlag = 0x1 + (lastAccessDate ? 0x2 : 0) + (creationDate ? 0x4 : 0);\n\t\tsetUint8(extraFieldExtendedTimestampView, 4, extraFieldExtendedTimestampFlag);\n\t\tlet offset = 5;\n\t\tsetUint32(extraFieldExtendedTimestampView, offset, Math.floor(lastModDate.getTime() / 1000));\n\t\toffset += 4;\n\t\tif (lastAccessDate) {\n\t\t\tsetUint32(extraFieldExtendedTimestampView, offset, Math.floor(lastAccessDate.getTime() / 1000));\n\t\t\toffset += 4;\n\t\t}\n\t\tif (creationDate) {\n\t\t\tsetUint32(extraFieldExtendedTimestampView, offset, Math.floor(creationDate.getTime() / 1000));\n\t\t}\n\t\ttry {\n\t\t\trawExtraFieldNTFS = new Uint8Array(36);\n\t\t\tconst extraFieldNTFSView = getDataView(rawExtraFieldNTFS);\n\t\t\tconst lastModTimeNTFS = getTimeNTFS(lastModDate);\n\t\t\tsetUint16(extraFieldNTFSView, 0, EXTRAFIELD_TYPE_NTFS);\n\t\t\tsetUint16(extraFieldNTFSView, 2, 32);\n\t\t\tsetUint16(extraFieldNTFSView, 8, EXTRAFIELD_TYPE_NTFS_TAG1);\n\t\t\tsetUint16(extraFieldNTFSView, 10, 24);\n\t\t\tsetBigUint64(extraFieldNTFSView, 12, lastModTimeNTFS);\n\t\t\tsetBigUint64(extraFieldNTFSView, 20, getTimeNTFS(lastAccessDate) || lastModTimeNTFS);\n\t\t\tsetBigUint64(extraFieldNTFSView, 28, getTimeNTFS(creationDate) || lastModTimeNTFS);\n\t\t} catch (_error) {\n\t\t\trawExtraFieldNTFS = new Uint8Array();\n\t\t}\n\t} else {\n\t\trawExtraFieldNTFS = rawExtraFieldExtendedTimestamp = new Uint8Array();\n\t}\n\tlet bitFlag = 0;\n\tif (useUnicodeFileNames) {\n\t\tbitFlag = bitFlag | BITFLAG_LANG_ENCODING_FLAG;\n\t}\n\tif (dataDescriptor) {\n\t\tbitFlag = bitFlag | BITFLAG_DATA_DESCRIPTOR;\n\t}\n\tif (compressionMethod === UNDEFINED_VALUE) {\n\t\tcompressionMethod = compressed ? COMPRESSION_METHOD_DEFLATE : COMPRESSION_METHOD_STORE;\n\t}\n\tif (compressionMethod == COMPRESSION_METHOD_DEFLATE) {\n\t\tif (level >= 1 && level < 3) {\n\t\t\tbitFlag = bitFlag | 0b110;\n\t\t}\n\t\tif (level >= 3 && level < 5) {\n\t\t\tbitFlag = bitFlag | 0b01;\n\t\t}\n\t\tif (level === 9) {\n\t\t\tbitFlag = bitFlag | 0b10;\n\t\t}\n\t}\n\tif (zip64) {\n\t\tversion = version > VERSION_ZIP64 ? version : VERSION_ZIP64;\n\t}\n\tif (encrypted) {\n\t\tbitFlag = bitFlag | BITFLAG_ENCRYPTED;\n\t\tif (!zipCrypto) {\n\t\t\tversion = version > VERSION_AES ? version : VERSION_AES;\n\t\t\trawExtraFieldAES[9] = compressionMethod;\n\t\t\tcompressionMethod = COMPRESSION_METHOD_AES;\n\t\t}\n\t}\n\tconst headerArray = new Uint8Array(26);\n\tconst headerView = getDataView(headerArray);\n\tsetUint16(headerView, 0, version);\n\tsetUint16(headerView, 2, bitFlag);\n\tsetUint16(headerView, 4, compressionMethod);\n\tconst dateArray = new Uint32Array(1);\n\tconst dateView = getDataView(dateArray);\n\tlet lastModDateMsDos;\n\tif (lastModDate < MIN_DATE) {\n\t\tlastModDateMsDos = MIN_DATE;\n\t} else if (lastModDate > MAX_DATE) {\n\t\tlastModDateMsDos = MAX_DATE;\n\t} else {\n\t\tlastModDateMsDos = lastModDate;\n\t}\n\tsetUint16(dateView, 0, (((lastModDateMsDos.getHours() << 6) | lastModDateMsDos.getMinutes()) << 5) | lastModDateMsDos.getSeconds() / 2);\n\tsetUint16(dateView, 2, ((((lastModDateMsDos.getFullYear() - 1980) << 4) | (lastModDateMsDos.getMonth() + 1)) << 5) | lastModDateMsDos.getDate());\n\tconst rawLastModDate = dateArray[0];\n\tsetUint32(headerView, 6, rawLastModDate);\n\tsetUint16(headerView, 22, getLength(rawFilename));\n\tconst extraFieldLength = getLength(rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraField);\n\tsetUint16(headerView, 24, extraFieldLength);\n\tconst localHeaderArray = new Uint8Array(30 + getLength(rawFilename) + extraFieldLength);\n\tconst localHeaderView = getDataView(localHeaderArray);\n\tsetUint32(localHeaderView, 0, LOCAL_FILE_HEADER_SIGNATURE);\n\tarraySet(localHeaderArray, headerArray, 4);\n\tarraySet(localHeaderArray, rawFilename, 30);\n\tarraySet(localHeaderArray, rawExtraFieldAES, 30 + getLength(rawFilename));\n\tarraySet(localHeaderArray, rawExtraFieldExtendedTimestamp, 30 + getLength(rawFilename, rawExtraFieldAES));\n\tarraySet(localHeaderArray, rawExtraFieldNTFS, 30 + getLength(rawFilename, rawExtraFieldAES, rawExtraFieldExtendedTimestamp));\n\tarraySet(localHeaderArray, rawExtraField, 30 + getLength(rawFilename, rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS));\n\treturn {\n\t\tlocalHeaderArray,\n\t\theaderArray,\n\t\theaderView,\n\t\tlastModDate,\n\t\trawLastModDate,\n\t\tencrypted,\n\t\tcompressed,\n\t\tversion,\n\t\tcompressionMethod,\n\t\textraFieldExtendedTimestampFlag,\n\t\trawExtraFieldExtendedTimestamp,\n\t\trawExtraFieldNTFS,\n\t\trawExtraFieldAES,\n\t\textraFieldLength\n\t};\n}\n\nfunction appendExtraFieldUSDZ(entryInfo, zipWriterOffset) {\n\tconst { headerInfo } = entryInfo;\n\tlet { localHeaderArray, extraFieldLength } = headerInfo;\n\tlet localHeaderArrayView = getDataView(localHeaderArray);\n\tlet extraBytesLength = 64 - ((zipWriterOffset + getLength(localHeaderArray)) % 64);\n\tif (extraBytesLength < 4) {\n\t\textraBytesLength += 64;\n\t}\n\tconst rawExtraFieldUSDZ = new Uint8Array(extraBytesLength);\n\tconst extraFieldUSDZView = getDataView(rawExtraFieldUSDZ);\n\tsetUint16(extraFieldUSDZView, 0, EXTRAFIELD_TYPE_USDZ);\n\tsetUint16(extraFieldUSDZView, 2, extraBytesLength - 2);\n\tconst previousLocalHeaderArray = localHeaderArray;\n\theaderInfo.localHeaderArray = localHeaderArray = new Uint8Array(getLength(previousLocalHeaderArray) + extraBytesLength);\n\tarraySet(localHeaderArray, previousLocalHeaderArray);\n\tarraySet(localHeaderArray, rawExtraFieldUSDZ, getLength(previousLocalHeaderArray));\n\tlocalHeaderArrayView = getDataView(localHeaderArray);\n\tsetUint16(localHeaderArrayView, 28, extraFieldLength + extraBytesLength);\n\tentryInfo.metadataSize += extraBytesLength;\n}\n\nfunction getDataDescriptorInfo(options) {\n\tconst {\n\t\tzip64,\n\t\tdataDescriptor,\n\t\tdataDescriptorSignature\n\t} = options;\n\tlet dataDescriptorArray = new Uint8Array();\n\tlet dataDescriptorView, dataDescriptorOffset = 0;\n\tif (dataDescriptor) {\n\t\tdataDescriptorArray = new Uint8Array(zip64 ? (dataDescriptorSignature ? 24 : 20) : (dataDescriptorSignature ? 16 : 12));\n\t\tdataDescriptorView = getDataView(dataDescriptorArray);\n\t\tif (dataDescriptorSignature) {\n\t\t\tdataDescriptorOffset = 4;\n\t\t\tsetUint32(dataDescriptorView, 0, DATA_DESCRIPTOR_RECORD_SIGNATURE);\n\t\t}\n\t}\n\treturn {\n\t\tdataDescriptorArray,\n\t\tdataDescriptorView,\n\t\tdataDescriptorOffset\n\t};\n}\n\nfunction setEntryInfo(entryInfo, options) {\n\tconst {\n\t\tsignature,\n\t\trawExtraFieldZip64,\n\t\tcompressedSize,\n\t\tuncompressedSize,\n\t\theaderInfo,\n\t\tdataDescriptorInfo\n\t} = entryInfo;\n\tconst {\n\t\theaderView,\n\t\tencrypted\n\t} = headerInfo;\n\tconst {\n\t\tdataDescriptorView,\n\t\tdataDescriptorOffset\n\t} = dataDescriptorInfo;\n\tconst {\n\t\tzip64,\n\t\tzip64UncompressedSize,\n\t\tzip64CompressedSize,\n\t\tzipCrypto,\n\t\tdataDescriptor\n\t} = options;\n\tif ((!encrypted || zipCrypto) && signature !== UNDEFINED_VALUE) {\n\t\tsetUint32(headerView, 10, signature);\n\t\tif (dataDescriptor) {\n\t\t\tsetUint32(dataDescriptorView, dataDescriptorOffset, signature);\n\t\t}\n\t}\n\tif (zip64) {\n\t\tconst rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);\n\t\tsetUint16(rawExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64);\n\t\tsetUint16(rawExtraFieldZip64View, 2, getLength(rawExtraFieldZip64) - 4);\n\t\tlet rawExtraFieldZip64Offset = 4;\n\t\tif (zip64UncompressedSize) {\n\t\t\tsetUint32(headerView, 18, MAX_32_BITS);\n\t\t\tsetBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));\n\t\t\trawExtraFieldZip64Offset += 8;\n\t\t}\n\t\tif (zip64CompressedSize) {\n\t\t\tsetUint32(headerView, 14, MAX_32_BITS);\n\t\t\tsetBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(compressedSize));\n\t\t}\n\t\tif (dataDescriptor) {\n\t\t\tsetBigUint64(dataDescriptorView, dataDescriptorOffset + 4, BigInt(compressedSize));\n\t\t\tsetBigUint64(dataDescriptorView, dataDescriptorOffset + 12, BigInt(uncompressedSize));\n\t\t}\n\t} else {\n\t\tsetUint32(headerView, 14, compressedSize);\n\t\tsetUint32(headerView, 18, uncompressedSize);\n\t\tif (dataDescriptor) {\n\t\t\tsetUint32(dataDescriptorView, dataDescriptorOffset + 4, compressedSize);\n\t\t\tsetUint32(dataDescriptorView, dataDescriptorOffset + 8, uncompressedSize);\n\t\t}\n\t}\n}\n\nasync function writeExtraHeaderInfo(fileEntry, entryData, writable, { zipCrypto }) {\n\tlet arrayBuffer;\n\tarrayBuffer = await entryData.slice(0, 26).arrayBuffer();\n\tif (arrayBuffer.byteLength != 26) {\n\t\tarrayBuffer = arrayBuffer.slice(0, 26);\n\t}\n\tconst arrayBufferView = new DataView(arrayBuffer);\n\tif (!fileEntry.encrypted || zipCrypto) {\n\t\tsetUint32(arrayBufferView, 14, fileEntry.signature);\n\t}\n\tif (fileEntry.zip64) {\n\t\tsetUint32(arrayBufferView, 18, MAX_32_BITS);\n\t\tsetUint32(arrayBufferView, 22, MAX_32_BITS);\n\t} else {\n\t\tsetUint32(arrayBufferView, 18, fileEntry.compressedSize);\n\t\tsetUint32(arrayBufferView, 22, fileEntry.uncompressedSize);\n\t}\n\tawait writeData(writable, new Uint8Array(arrayBuffer));\n\treturn entryData.slice(arrayBuffer.byteLength);\n}\n\nfunction setZip64ExtraInfo(fileEntry, options) {\n\tconst { rawExtraFieldZip64, offset, diskNumberStart } = fileEntry;\n\tconst { zip64UncompressedSize, zip64CompressedSize, zip64Offset, zip64DiskNumberStart } = options;\n\tconst rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);\n\tlet rawExtraFieldZip64Offset = 4;\n\tif (zip64UncompressedSize) {\n\t\trawExtraFieldZip64Offset += 8;\n\t}\n\tif (zip64CompressedSize) {\n\t\trawExtraFieldZip64Offset += 8;\n\t}\n\tif (zip64Offset) {\n\t\tsetBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(offset));\n\t\trawExtraFieldZip64Offset += 8;\n\t}\n\tif (zip64DiskNumberStart) {\n\t\tsetUint32(rawExtraFieldZip64View, rawExtraFieldZip64Offset, diskNumberStart);\n\t}\n}\n\nasync function closeFile(zipWriter, comment, options) {\n\tconst { files, writer } = zipWriter;\n\tconst { diskOffset, writable } = writer;\n\tlet { diskNumber } = writer;\n\tlet offset = 0;\n\tlet directoryDataLength = 0;\n\tlet directoryOffset = zipWriter.offset - diskOffset;\n\tlet filesLength = files.size;\n\tfor (const [, fileEntry] of files) {\n\t\tconst {\n\t\t\trawFilename,\n\t\t\trawExtraFieldZip64,\n\t\t\trawExtraFieldAES,\n\t\t\trawComment,\n\t\t\trawExtraFieldNTFS,\n\t\t\trawExtraField,\n\t\t\textendedTimestamp,\n\t\t\textraFieldExtendedTimestampFlag,\n\t\t\tlastModDate\n\t\t} = fileEntry;\n\t\tlet rawExtraFieldTimestamp;\n\t\tif (extendedTimestamp) {\n\t\t\trawExtraFieldTimestamp = new Uint8Array(9);\n\t\t\tconst extraFieldExtendedTimestampView = getDataView(rawExtraFieldTimestamp);\n\t\t\tsetUint16(extraFieldExtendedTimestampView, 0, EXTRAFIELD_TYPE_EXTENDED_TIMESTAMP);\n\t\t\tsetUint16(extraFieldExtendedTimestampView, 2, 5);\n\t\t\tsetUint8(extraFieldExtendedTimestampView, 4, extraFieldExtendedTimestampFlag);\n\t\t\tsetUint32(extraFieldExtendedTimestampView, 5, Math.floor(lastModDate.getTime() / 1000));\n\t\t} else {\n\t\t\trawExtraFieldTimestamp = new Uint8Array();\n\t\t}\n\t\tfileEntry.rawExtraFieldCDExtendedTimestamp = rawExtraFieldTimestamp;\n\t\tdirectoryDataLength += 46 +\n\t\t\tgetLength(\n\t\t\t\trawFilename,\n\t\t\t\trawComment,\n\t\t\t\trawExtraFieldZip64,\n\t\t\t\trawExtraFieldAES,\n\t\t\t\trawExtraFieldNTFS,\n\t\t\t\trawExtraFieldTimestamp,\n\t\t\t\trawExtraField);\n\t}\n\tconst directoryArray = new Uint8Array(directoryDataLength);\n\tconst directoryView = getDataView(directoryArray);\n\tawait initStream(writer);\n\tlet directoryDiskOffset = 0;\n\tfor (const [indexFileEntry, fileEntry] of Array.from(files.values()).entries()) {\n\t\tconst {\n\t\t\toffset: fileEntryOffset,\n\t\t\trawFilename,\n\t\t\trawExtraFieldZip64,\n\t\t\trawExtraFieldAES,\n\t\t\trawExtraFieldCDExtendedTimestamp,\n\t\t\trawExtraFieldNTFS,\n\t\t\trawExtraField,\n\t\t\trawComment,\n\t\t\tversionMadeBy,\n\t\t\theaderArray,\n\t\t\tdirectory,\n\t\t\tzip64,\n\t\t\tzip64UncompressedSize,\n\t\t\tzip64CompressedSize,\n\t\t\tzip64DiskNumberStart,\n\t\t\tzip64Offset,\n\t\t\tmsDosCompatible,\n\t\t\tinternalFileAttribute,\n\t\t\texternalFileAttribute,\n\t\t\tdiskNumberStart,\n\t\t\tuncompressedSize,\n\t\t\tcompressedSize\n\t\t} = fileEntry;\n\t\tconst extraFieldLength = getLength(rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp, rawExtraFieldNTFS, rawExtraField);\n\t\tsetUint32(directoryView, offset, CENTRAL_FILE_HEADER_SIGNATURE);\n\t\tsetUint16(directoryView, offset + 4, versionMadeBy);\n\t\tconst headerView = getDataView(headerArray);\n\t\tif (!zip64UncompressedSize) {\n\t\t\tsetUint32(headerView, 18, uncompressedSize);\n\t\t}\n\t\tif (!zip64CompressedSize) {\n\t\t\tsetUint32(headerView, 14, compressedSize);\n\t\t}\n\t\tarraySet(directoryArray, headerArray, offset + 6);\n\t\tsetUint16(directoryView, offset + 30, extraFieldLength);\n\t\tsetUint16(directoryView, offset + 32, getLength(rawComment));\n\t\tsetUint16(directoryView, offset + 34, zip64 && zip64DiskNumberStart ? MAX_16_BITS : diskNumberStart);\n\t\tsetUint16(directoryView, offset + 36, internalFileAttribute);\n\t\tif (externalFileAttribute) {\n\t\t\tsetUint32(directoryView, offset + 38, externalFileAttribute);\n\t\t} else if (directory && msDosCompatible) {\n\t\t\tsetUint8(directoryView, offset + 38, FILE_ATTR_MSDOS_DIR_MASK);\n\t\t}\n\t\tsetUint32(directoryView, offset + 42, zip64 && zip64Offset ? MAX_32_BITS : fileEntryOffset);\n\t\tarraySet(directoryArray, rawFilename, offset + 46);\n\t\tarraySet(directoryArray, rawExtraFieldZip64, offset + 46 + getLength(rawFilename));\n\t\tarraySet(directoryArray, rawExtraFieldAES, offset + 46 + getLength(rawFilename, rawExtraFieldZip64));\n\t\tarraySet(directoryArray, rawExtraFieldCDExtendedTimestamp, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES));\n\t\tarraySet(directoryArray, rawExtraFieldNTFS, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp));\n\t\tarraySet(directoryArray, rawExtraField, offset + 46 + getLength(rawFilename, rawExtraFieldZip64, rawExtraFieldAES, rawExtraFieldCDExtendedTimestamp, rawExtraFieldNTFS));\n\t\tarraySet(directoryArray, rawComment, offset + 46 + getLength(rawFilename) + extraFieldLength);\n\t\tconst directoryEntryLength = 46 + getLength(rawFilename, rawComment) + extraFieldLength;\n\t\tif (offset - directoryDiskOffset > writer.availableSize) {\n\t\t\twriter.availableSize = 0;\n\t\t\tawait writeData(writable, directoryArray.slice(directoryDiskOffset, offset));\n\t\t\tdirectoryDiskOffset = offset;\n\t\t}\n\t\toffset += directoryEntryLength;\n\t\tif (options.onprogress) {\n\t\t\ttry {\n\t\t\t\tawait options.onprogress(indexFileEntry + 1, files.size, new Entry(fileEntry));\n\t\t\t} catch (_error) {\n\t\t\t\t// ignored\n\t\t\t}\n\t\t}\n\t}\n\tawait writeData(writable, directoryDiskOffset ? directoryArray.slice(directoryDiskOffset) : directoryArray);\n\tlet lastDiskNumber = writer.diskNumber;\n\tconst { availableSize } = writer;\n\tif (availableSize < END_OF_CENTRAL_DIR_LENGTH) {\n\t\tlastDiskNumber++;\n\t}\n\tlet zip64 = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIP64);\n\tif (directoryOffset > MAX_32_BITS || directoryDataLength > MAX_32_BITS || filesLength > MAX_16_BITS || lastDiskNumber > MAX_16_BITS) {\n\t\tif (zip64 === false) {\n\t\t\tthrow new Error(ERR_UNSUPPORTED_FORMAT);\n\t\t} else {\n\t\t\tzip64 = true;\n\t\t}\n\t}\n\tconst endOfdirectoryArray = new Uint8Array(zip64 ? ZIP64_END_OF_CENTRAL_DIR_TOTAL_LENGTH : END_OF_CENTRAL_DIR_LENGTH);\n\tconst endOfdirectoryView = getDataView(endOfdirectoryArray);\n\toffset = 0;\n\tif (zip64) {\n\t\tsetUint32(endOfdirectoryView, 0, ZIP64_END_OF_CENTRAL_DIR_SIGNATURE);\n\t\tsetBigUint64(endOfdirectoryView, 4, BigInt(44));\n\t\tsetUint16(endOfdirectoryView, 12, 45);\n\t\tsetUint16(endOfdirectoryView, 14, 45);\n\t\tsetUint32(endOfdirectoryView, 16, lastDiskNumber);\n\t\tsetUint32(endOfdirectoryView, 20, diskNumber);\n\t\tsetBigUint64(endOfdirectoryView, 24, BigInt(filesLength));\n\t\tsetBigUint64(endOfdirectoryView, 32, BigInt(filesLength));\n\t\tsetBigUint64(endOfdirectoryView, 40, BigInt(directoryDataLength));\n\t\tsetBigUint64(endOfdirectoryView, 48, BigInt(directoryOffset));\n\t\tsetUint32(endOfdirectoryView, 56, ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIGNATURE);\n\t\tsetBigUint64(endOfdirectoryView, 64, BigInt(directoryOffset) + BigInt(directoryDataLength));\n\t\tsetUint32(endOfdirectoryView, 72, lastDiskNumber + 1);\n\t\tconst supportZip64SplitFile = getOptionValue(zipWriter, options, \"supportZip64SplitFile\", true);\n\t\tif (supportZip64SplitFile) {\n\t\t\tlastDiskNumber = MAX_16_BITS;\n\t\t\tdiskNumber = MAX_16_BITS;\n\t\t}\n\t\tfilesLength = MAX_16_BITS;\n\t\tdirectoryOffset = MAX_32_BITS;\n\t\tdirectoryDataLength = MAX_32_BITS;\n\t\toffset += ZIP64_END_OF_CENTRAL_DIR_LENGTH + ZIP64_END_OF_CENTRAL_DIR_LOCATOR_LENGTH;\n\t}\n\tsetUint32(endOfdirectoryView, offset, END_OF_CENTRAL_DIR_SIGNATURE);\n\tsetUint16(endOfdirectoryView, offset + 4, lastDiskNumber);\n\tsetUint16(endOfdirectoryView, offset + 6, diskNumber);\n\tsetUint16(endOfdirectoryView, offset + 8, filesLength);\n\tsetUint16(endOfdirectoryView, offset + 10, filesLength);\n\tsetUint32(endOfdirectoryView, offset + 12, directoryDataLength);\n\tsetUint32(endOfdirectoryView, offset + 16, directoryOffset);\n\tconst commentLength = getLength(comment);\n\tif (commentLength) {\n\t\tif (commentLength <= MAX_16_BITS) {\n\t\t\tsetUint16(endOfdirectoryView, offset + 20, commentLength);\n\t\t} else {\n\t\t\tthrow new Error(ERR_INVALID_COMMENT);\n\t\t}\n\t}\n\tawait writeData(writable, endOfdirectoryArray);\n\tif (commentLength) {\n\t\tawait writeData(writable, comment);\n\t}\n}\n\nasync function writeData(writable, array) {\n\tconst streamWriter = writable.getWriter();\n\ttry {\n\t\tawait streamWriter.ready;\n\t\twritable.size += getLength(array);\n\t\tawait streamWriter.write(array);\n\t} finally {\n\t\tstreamWriter.releaseLock();\n\t}\n}\n\nfunction getTimeNTFS(date) {\n\tif (date) {\n\t\treturn ((BigInt(date.getTime()) + BigInt(11644473600000)) * BigInt(10000));\n\t}\n}\n\nfunction getOptionValue(zipWriter, options, name, defaultValue) {\n\tconst result = options[name] === UNDEFINED_VALUE ? zipWriter.options[name] : options[name];\n\treturn result === UNDEFINED_VALUE ? defaultValue : result;\n}\n\nfunction getMaximumCompressedSize(uncompressedSize) {\n\treturn uncompressedSize + (5 * (Math.floor(uncompressedSize / 16383) + 1));\n}\n\nfunction setUint8(view, offset, value) {\n\tview.setUint8(offset, value);\n}\n\nfunction setUint16(view, offset, value) {\n\tview.setUint16(offset, value, true);\n}\n\nfunction setUint32(view, offset, value) {\n\tview.setUint32(offset, value, true);\n}\n\nfunction setBigUint64(view, offset, value) {\n\tview.setBigUint64(offset, value, true);\n}\n\nfunction arraySet(array, typedArray, offset) {\n\tarray.set(typedArray, offset);\n}\n\nfunction getDataView(array) {\n\treturn new DataView(array.buffer);\n}\n\nfunction getLength(...arrayLikes) {\n\tlet result = 0;\n\tarrayLikes.forEach(arrayLike => arrayLike && (result += arrayLike.length));\n\treturn result;\n}\n", "/*\n Copyright (c) 2022 Gildas Lormeau. All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright \n notice, this list of conditions and the following disclaimer in \n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport { configure } from \"./core/configuration.js\";\nimport { configureWebWorker } from \"./z-worker-inline.js\";\nimport { getMimeType } from \"./core/util/default-mime-type.js\";\nimport { initShimAsyncCodec } from \"./core/util/stream-codec-shim.js\";\nimport { terminateWorkers } from \"./core/codec-pool.js\";\n\nlet baseURL;\ntry {\n\tbaseURL = import.meta.url;\n} catch (_error) {\n\t// ignored\n}\nconfigure({ baseURL });\nconfigureWebWorker(configure);\n\nexport * from \"./core/io.js\";\nexport * from \"./core/zip-reader.js\";\nexport * from \"./core/zip-writer.js\";\nexport {\n\tconfigure,\n\tgetMimeType,\n\tinitShimAsyncCodec,\n\tterminateWorkers\n};"], - "mappings": "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", - "names": ["codec", "config", "baseURL", "maxWorkers", "CompressionStream", "DecompressionStream", "e", "codec", "hash", "e", "table", "password", "signed", "decrypt", "encrypt", "codecBytes", "createKeys", "createKeys", "CompressionStream", "DecompressionStream", "CodecStream", "CompressionStream", "_error", "config", "codec", "Stream", "config", "baseURL", "value", "error", "result", "runWorker", "config", "maxWorkers", "workerData", "stream", "workerOptions", "getRequestData", "headers", "baseURL", "config", "endOfDirectoryView", "commentOffset", "commentLength", "options", "readable", "writable", "config", "runWorker", "config", "getOptionValue", "getOptionValue", "getDataView", "setUint32", "config", "runWorker", "zip64"] -} diff --git a/vendor/yomitan/lib/zstd-wasm.js b/vendor/yomitan/lib/zstd-wasm.js deleted file mode 100644 index 50c30d32..00000000 --- a/vendor/yomitan/lib/zstd-wasm.js +++ /dev/null @@ -1,570 +0,0 @@ -// @ts-nocheck - -// node_modules/@bokuweb/zstd-wasm/dist/web/zstd.js -var Module = typeof Module !== "undefined" ? Module : {}; -var moduleOverrides = {}; -var key; -for (key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} -var arguments_ = []; -var err = Module["printErr"] || console.warn.bind(console); -for (key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} -var quit_ = (status, toThrow) => { - throw toThrow; -}; -moduleOverrides = null; -if (Module["arguments"]) - arguments_ = Module["arguments"]; -if (Module["thisProgram"]) - thisProgram = Module["thisProgram"]; -if (Module["quit"]) - quit_ = Module["quit"]; -if (typeof WebAssembly !== "object") { - abort("no native wasm support detected"); -} -var wasmMemory; -var ABORT = false; -var EXITSTATUS; -var HEAPU8; -var HEAP8; -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module["HEAP8"] = HEAP8 = new Int8Array(b); - Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); -} -var __ATPRERUN__ = []; -var __ATINIT__ = []; -var __ATPOSTRUN__ = []; -var runtimeInitialized = false; -function preRun() { - if (Module["preRun"]) { - if (typeof Module["preRun"] == "function") - Module["preRun"] = [Module["preRun"]]; - while (Module["preRun"].length) { - addOnPreRun(Module["preRun"].shift()); - } - } - callRuntimeCallbacks(__ATPRERUN__); -} -function initRuntime() { - runtimeInitialized = true; - callRuntimeCallbacks(__ATINIT__); -} -function postRun() { - if (Module["postRun"]) { - if (typeof Module["postRun"] == "function") - Module["postRun"] = [Module["postRun"]]; - while (Module["postRun"].length) { - addOnPostRun(Module["postRun"].shift()); - } - } - callRuntimeCallbacks(__ATPOSTRUN__); -} -function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); -} -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} -var runDependencies = 0; -var dependenciesFulfilled = null; -function addRunDependency(id) { - var _a; - runDependencies++; - (_a = Module["monitorRunDependencies"]) === null || _a === void 0 ? void 0 : _a.call(Module, runDependencies); -} -function removeRunDependency(id) { - var _a; - runDependencies--; - (_a = Module["monitorRunDependencies"]) === null || _a === void 0 ? void 0 : _a.call(Module, runDependencies); - if (runDependencies == 0) { - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); - } - } -} -function abort(what) { - var _a; - (_a = Module["onAbort"]) === null || _a === void 0 ? void 0 : _a.call(Module, what); - what = "Aborted(" + what + ")"; - err(what); - ABORT = true; - what += ". Build with -sASSERTIONS for more info."; - var e = new WebAssembly.RuntimeError(what); - throw e; -} -function getWasmImports() { - return { a: wasmImports }; -} -function getBinaryPromise(url) { - return fetch(url, { credentials: "same-origin" }).then(function(response) { - if (!response["ok"]) { - throw "failed to load wasm binary file at '" + url + "'"; - } - return response["arrayBuffer"](); - }); -} -function init(filePathOrBuf) { - var info = getWasmImports(); - function receiveInstance(instance, module) { - wasmExports = instance.exports; - wasmMemory = wasmExports["f"]; - updateMemoryViews(); - addOnInit(wasmExports["g"]); - removeRunDependency("wasm-instantiate"); - return wasmExports; - } - addRunDependency("wasm-instantiate"); - function receiveInstantiationResult(result) { - receiveInstance(result["instance"]); - } - function instantiateArrayBuffer(receiver) { - return getBinaryPromise(filePathOrBuf).then(function(binary) { - var result = WebAssembly.instantiate(binary, info); - return result; - }).then(receiver, function(reason) { - err("failed to asynchronously prepare wasm: " + reason); - abort(reason); - }); - } - function instantiateAsync() { - if (filePathOrBuf && filePathOrBuf.byteLength > 0) { - return WebAssembly.instantiate(filePathOrBuf, info).then(receiveInstantiationResult, function(reason) { - err("wasm compile failed: " + reason); - }); - } else if (typeof WebAssembly.instantiateStreaming === "function" && typeof filePathOrBuf === "string" && typeof fetch === "function") { - return fetch(filePathOrBuf, { credentials: "same-origin" }).then(function(response) { - var result = WebAssembly.instantiateStreaming(response, info); - return result.then(receiveInstantiationResult, function(reason) { - err("wasm streaming compile failed: " + reason); - err("falling back to ArrayBuffer instantiation"); - return instantiateArrayBuffer(receiveInstantiationResult); - }); - }); - } else { - return instantiateArrayBuffer(receiveInstantiationResult); - } - } - if (Module["instantiateWasm"]) { - try { - var exports = Module["instantiateWasm"](info, receiveInstance); - return exports; - } catch (e) { - err("Module.instantiateWasm callback failed with error: " + e); - return false; - } - } - instantiateAsync(); - return {}; -} -var ExitStatus = class { - constructor(status) { - this.name = "ExitStatus"; - this.message = `Program terminated with exit(${status})`; - this.status = status; - } -}; -var callRuntimeCallbacks = (callbacks) => { - while (callbacks.length > 0) { - callbacks.shift()(Module); - } -}; -var noExitRuntime = Module["noExitRuntime"] || true; -var __abort_js = () => abort(""); -var runtimeKeepaliveCounter = 0; -var __emscripten_runtime_keepalive_clear = () => { - noExitRuntime = false; - runtimeKeepaliveCounter = 0; -}; -var timers = {}; -var handleException = (e) => { - if (e instanceof ExitStatus || e == "unwind") { - return EXITSTATUS; - } - quit_(1, e); -}; -var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0; -var _proc_exit = (code) => { - var _a; - EXITSTATUS = code; - if (!keepRuntimeAlive()) { - (_a = Module["onExit"]) === null || _a === void 0 ? void 0 : _a.call(Module, code); - ABORT = true; - } - quit_(code, new ExitStatus(code)); -}; -var exitJS = (status, implicit) => { - EXITSTATUS = status; - _proc_exit(status); -}; -var _exit = exitJS; -var maybeExit = () => { - if (!keepRuntimeAlive()) { - try { - _exit(EXITSTATUS); - } catch (e) { - handleException(e); - } - } -}; -var callUserCallback = (func) => { - if (ABORT) { - return; - } - try { - func(); - maybeExit(); - } catch (e) { - handleException(e); - } -}; -var _emscripten_get_now = () => performance.now(); -var __setitimer_js = (which, timeout_ms) => { - if (timers[which]) { - clearTimeout(timers[which].id); - delete timers[which]; - } - if (!timeout_ms) - return 0; - var id = setTimeout(() => { - delete timers[which]; - callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now())); - }, timeout_ms); - timers[which] = { id, timeout_ms }; - return 0; -}; -var getHeapMax = () => 2147483648; -var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment; -var growMemory = (size) => { - var b = wasmMemory.buffer; - var pages = (size - b.byteLength + 65535) / 65536 | 0; - try { - wasmMemory.grow(pages); - updateMemoryViews(); - return 1; - } catch (e) { - } -}; -var _emscripten_resize_heap = (requestedSize) => { - var oldSize = HEAPU8.length; - requestedSize >>>= 0; - var maxHeapSize = getHeapMax(); - if (requestedSize > maxHeapSize) { - return false; - } - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); - overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); - var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)); - var replacement = growMemory(newSize); - if (replacement) { - return true; - } - } - return false; -}; -var wasmImports = { - c: __abort_js, - b: __emscripten_runtime_keepalive_clear, - d: __setitimer_js, - e: _emscripten_resize_heap, - a: _proc_exit -}; -var wasmExports; -var _ZSTD_isError = Module["_ZSTD_isError"] = (a0) => (_ZSTD_isError = Module["_ZSTD_isError"] = wasmExports["h"])(a0); -var _ZSTD_compressBound = Module["_ZSTD_compressBound"] = (a0) => (_ZSTD_compressBound = Module["_ZSTD_compressBound"] = wasmExports["i"])(a0); -var _ZSTD_createCCtx = Module["_ZSTD_createCCtx"] = () => (_ZSTD_createCCtx = Module["_ZSTD_createCCtx"] = wasmExports["j"])(); -var _ZSTD_freeCCtx = Module["_ZSTD_freeCCtx"] = (a0) => (_ZSTD_freeCCtx = Module["_ZSTD_freeCCtx"] = wasmExports["k"])(a0); -var _ZSTD_compress_usingDict = Module["_ZSTD_compress_usingDict"] = (a0, a1, a2, a3, a4, a5, a6, a7) => (_ZSTD_compress_usingDict = Module["_ZSTD_compress_usingDict"] = wasmExports["l"])(a0, a1, a2, a3, a4, a5, a6, a7); -var _ZSTD_compress = Module["_ZSTD_compress"] = (a0, a1, a2, a3, a4) => (_ZSTD_compress = Module["_ZSTD_compress"] = wasmExports["m"])(a0, a1, a2, a3, a4); -var _ZSTD_createDCtx = Module["_ZSTD_createDCtx"] = () => (_ZSTD_createDCtx = Module["_ZSTD_createDCtx"] = wasmExports["n"])(); -var _ZSTD_freeDCtx = Module["_ZSTD_freeDCtx"] = (a0) => (_ZSTD_freeDCtx = Module["_ZSTD_freeDCtx"] = wasmExports["o"])(a0); -var _ZSTD_getFrameContentSize = Module["_ZSTD_getFrameContentSize"] = (a0, a1) => (_ZSTD_getFrameContentSize = Module["_ZSTD_getFrameContentSize"] = wasmExports["p"])(a0, a1); -var _ZSTD_decompress_usingDict = Module["_ZSTD_decompress_usingDict"] = (a0, a1, a2, a3, a4, a5, a6) => (_ZSTD_decompress_usingDict = Module["_ZSTD_decompress_usingDict"] = wasmExports["q"])(a0, a1, a2, a3, a4, a5, a6); -var _ZSTD_decompress = Module["_ZSTD_decompress"] = (a0, a1, a2, a3) => (_ZSTD_decompress = Module["_ZSTD_decompress"] = wasmExports["r"])(a0, a1, a2, a3); -var _malloc = Module["_malloc"] = (a0) => (_malloc = Module["_malloc"] = wasmExports["s"])(a0); -var _free = Module["_free"] = (a0) => (_free = Module["_free"] = wasmExports["t"])(a0); -var __emscripten_timeout = (a0, a1) => (__emscripten_timeout = wasmExports["v"])(a0, a1); -var calledRun; -dependenciesFulfilled = function runCaller() { - if (!calledRun) - run(); - if (!calledRun) - dependenciesFulfilled = runCaller; -}; -function run() { - if (runDependencies > 0) { - return; - } - preRun(); - if (runDependencies > 0) { - return; - } - function doRun() { - var _a; - if (calledRun) - return; - calledRun = true; - Module["calledRun"] = true; - if (ABORT) - return; - initRuntime(); - (_a = Module["onRuntimeInitialized"]) === null || _a === void 0 ? void 0 : _a.call(Module); - postRun(); - } - if (Module["setStatus"]) { - Module["setStatus"]("Running..."); - setTimeout(() => { - setTimeout(() => Module["setStatus"](""), 1); - doRun(); - }, 1); - } else { - doRun(); - } -} -Module["run"] = run; -if (Module["preInit"]) { - if (typeof Module["preInit"] == "function") - Module["preInit"] = [Module["preInit"]]; - while (Module["preInit"].length > 0) { - Module["preInit"].pop()(); - } -} -Module["init"] = init; - -// node_modules/@bokuweb/zstd-wasm/dist/web/module.js -var __awaiter = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var initialized = (() => new Promise((resolve) => { - Module.onRuntimeInitialized = resolve; -}))(); -var waitInitialized = () => __awaiter(void 0, void 0, void 0, function* () { - yield initialized; -}); - -// node_modules/@bokuweb/zstd-wasm/dist/web/errors/index.js -var isError = (code) => { - const _isError = Module["_ZSTD_isError"]; - return _isError(code); -}; - -// node_modules/@bokuweb/zstd-wasm/dist/web/simple/decompress.js -var getFrameContentSize = (src, size) => { - const getSize = Module["_ZSTD_getFrameContentSize"]; - return getSize(src, size); -}; -var decompress = (buf, opts = { defaultHeapSize: 1024 * 1024 }) => { - const malloc = Module["_malloc"]; - const src = malloc(buf.byteLength); - Module.HEAP8.set(buf, src); - const contentSize = getFrameContentSize(src, buf.byteLength); - const size = contentSize === -1 ? opts.defaultHeapSize : contentSize; - const free = Module["_free"]; - const heap = malloc(size); - try { - const _decompress = Module["_ZSTD_decompress"]; - const sizeOrError = _decompress(heap, size, src, buf.byteLength); - if (isError(sizeOrError)) { - throw new Error(`Failed to compress with code ${sizeOrError}`); - } - const data = new Uint8Array(Module.HEAPU8.buffer, heap, sizeOrError).slice(); - free(heap, size); - free(src, buf.byteLength); - return data; - } catch (e) { - free(heap, size); - free(src, buf.byteLength); - throw e; - } -}; - -// node_modules/@bokuweb/zstd-wasm/dist/web/simple/compress.js -var compressBound = (size) => { - const bound = Module["_ZSTD_compressBound"]; - return bound(size); -}; -var compress = (buf, level) => { - const bound = compressBound(buf.byteLength); - const malloc = Module["_malloc"]; - const compressed = malloc(bound); - const src = malloc(buf.byteLength); - Module.HEAP8.set(buf, src); - const free = Module["_free"]; - try { - const _compress = Module["_ZSTD_compress"]; - const sizeOrError = _compress(compressed, bound, src, buf.byteLength, level !== null && level !== void 0 ? level : 3); - if (isError(sizeOrError)) { - throw new Error(`Failed to compress with code ${sizeOrError}`); - } - const data = new Uint8Array(Module.HEAPU8.buffer, compressed, sizeOrError).slice(); - free(compressed, bound); - free(src, buf.byteLength); - return data; - } catch (e) { - free(compressed, bound); - free(src, buf.byteLength); - throw e; - } -}; - -// node_modules/@bokuweb/zstd-wasm/dist/web/simple/decompress_using_dict.js -var getFrameContentSize2 = (src, size) => { - const getSize = Module["_ZSTD_getFrameContentSize"]; - return getSize(src, size); -}; -var createDCtx = () => { - return Module["_ZSTD_createDCtx"](); -}; -var freeDCtx = (dctx) => { - return Module["_ZSTD_freeDCtx"](dctx); -}; -var decompressUsingDict = (dctx, buf, dict, opts = { defaultHeapSize: 1024 * 1024 }) => { - const malloc = Module["_malloc"]; - const src = malloc(buf.byteLength); - Module.HEAP8.set(buf, src); - const pdict = malloc(dict.byteLength); - Module.HEAP8.set(dict, pdict); - const contentSize = getFrameContentSize2(src, buf.byteLength); - const size = contentSize === -1 ? opts.defaultHeapSize : contentSize; - const free = Module["_free"]; - const heap = malloc(size); - try { - const _decompress = Module["_ZSTD_decompress_usingDict"]; - const sizeOrError = _decompress(dctx, heap, size, src, buf.byteLength, pdict, dict.byteLength); - if (isError(sizeOrError)) { - throw new Error(`Failed to compress with code ${sizeOrError}`); - } - const data = new Uint8Array(Module.HEAPU8.buffer, heap, sizeOrError).slice(); - free(heap, size); - free(src, buf.byteLength); - free(pdict, dict.byteLength); - return data; - } catch (e) { - free(heap, size); - free(src, buf.byteLength); - free(pdict, dict.byteLength); - throw e; - } -}; - -// node_modules/@bokuweb/zstd-wasm/dist/web/simple/compress_using_dict.js -var compressBound2 = (size) => { - const bound = Module["_ZSTD_compressBound"]; - return bound(size); -}; -var createCCtx = () => { - return Module["_ZSTD_createCCtx"](); -}; -var freeCCtx = (cctx) => { - return Module["_ZSTD_freeCCtx"](cctx); -}; -var compressUsingDict = (cctx, buf, dict, level) => { - const bound = compressBound2(buf.byteLength); - const malloc = Module["_malloc"]; - const compressed = malloc(bound); - const src = malloc(buf.byteLength); - Module.HEAP8.set(buf, src); - const pdict = malloc(dict.byteLength); - Module.HEAP8.set(dict, pdict); - const free = Module["_free"]; - try { - const _compress = Module["_ZSTD_compress_usingDict"]; - const sizeOrError = _compress(cctx, compressed, bound, src, buf.byteLength, pdict, dict.byteLength, level !== null && level !== void 0 ? level : 3); - if (isError(sizeOrError)) { - throw new Error(`Failed to compress with code ${sizeOrError}`); - } - const data = new Uint8Array(Module.HEAPU8.buffer, compressed, sizeOrError).slice(); - free(compressed, bound); - free(src, buf.byteLength); - free(pdict, dict.byteLength); - return data; - } catch (e) { - free(compressed, bound); - free(src, buf.byteLength); - free(pdict, dict.byteLength); - throw e; - } -}; - -// node_modules/@bokuweb/zstd-wasm/dist/web/index.web.js -var __awaiter2 = function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var init2 = (path) => __awaiter2(void 0, void 0, void 0, function* () { - const url = new URL(`./zstd.wasm`, import.meta.url).href; - Module["init"](path !== null && path !== void 0 ? path : url); - yield waitInitialized(); -}); -export { - compress, - compressUsingDict, - createCCtx, - createDCtx, - decompress, - decompressUsingDict, - freeCCtx, - freeDCtx, - init2 as init -}; -//# sourceMappingURL=zstd-wasm.js.map diff --git a/vendor/yomitan/lib/zstd-wasm.js.map b/vendor/yomitan/lib/zstd-wasm.js.map deleted file mode 100644 index f1e63494..00000000 --- a/vendor/yomitan/lib/zstd-wasm.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../node_modules/@bokuweb/zstd-wasm/lib/zstd.ts", "../../node_modules/@bokuweb/zstd-wasm/lib/module.ts", "../../node_modules/@bokuweb/zstd-wasm/lib/errors/index.ts", "../../node_modules/@bokuweb/zstd-wasm/lib/simple/decompress.ts", "../../node_modules/@bokuweb/zstd-wasm/lib/simple/compress.ts", "../../node_modules/@bokuweb/zstd-wasm/lib/simple/decompress_using_dict.ts", "../../node_modules/@bokuweb/zstd-wasm/lib/simple/compress_using_dict.ts", "../../node_modules/@bokuweb/zstd-wasm/lib/index.web.ts"], - "sourcesContent": [null, null, null, null, null, null, null, null], - "mappings": "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", - "names": ["getFrameContentSize", "compressBound", "init", "__awaiter"] -} diff --git a/vendor/yomitan/manifest.json b/vendor/yomitan/manifest.json deleted file mode 100644 index e1cfd068..00000000 --- a/vendor/yomitan/manifest.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "manifest_version": 3, - "name": "Yomitan Popup Dictionary", - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxclvOy2sunfRa2UeSV/L9xyuMR9V65z85mbKCy0XvSLUkTBXM8BnvnrDu1DHhLjpidA3cBtetVt7rzwsJSA6/CzlMmtG6L6//3MOAH5Mhng8tXXWXbuNuJobLv/7MORPqoqYKZuoL1bnUvjdrf4Pb3BBDZtHN8LcDz13gOO4dnEFQbSE4F5RQ4mIQAGMkmbmlJkwFk5I022XyX+cWm/+9VvwPuEDA1Qf7X1G+4use3hGYWVPcRb6xTp7swXsO/fP7auE51gYQD0Ht36wr32UR6lfRmsahbHOX4RLe36S8B4ee74kk5C8iCsZf2fidWmevzLk7kK0GW15pv3dpGFpPQIDAQAB", - "version": "26.1.19.0", - "description": "Popup dictionary for language learning", - "author": { - "email": "themoeway@googlegroups.com" - }, - "icons": { - "16": "images/icon16.png", - "19": "images/icon19.png", - "32": "images/icon32.png", - "38": "images/icon38.png", - "48": "images/icon48.png", - "64": "images/icon64.png", - "128": "images/icon128.png" - }, - "action": { - "default_icon": { - "16": "images/icon16.png", - "19": "images/icon19.png", - "32": "images/icon32.png", - "38": "images/icon38.png", - "48": "images/icon48.png", - "64": "images/icon64.png", - "128": "images/icon128.png" - }, - "default_title": "Yomitan", - "default_popup": "action-popup.html" - }, - "background": { - "service_worker": "sw.js", - "type": "module" - }, - "omnibox": { - "keyword": "yomi" - }, - "content_scripts": [ - { - "run_at": "document_idle", - "matches": [ - "http://*/*", - "https://*/*", - "file://*/*" - ], - "match_about_blank": true, - "all_frames": true, - "js": [ - "js/app/content-script-wrapper.js" - ] - } - ], - "minimum_chrome_version": "102.0.0.0", - "options_ui": { - "page": "settings.html", - "open_in_tab": true - }, - "sandbox": { - "pages": [ - "template-renderer.html" - ] - }, - "permissions": [ - "storage", - "clipboardWrite", - "unlimitedStorage", - "declarativeNetRequest", - "scripting", - "offscreen", - "contextMenus" - ], - "optional_permissions": [ - "clipboardRead", - "nativeMessaging" - ], - "host_permissions": [ - "<all_urls>" - ], - "commands": { - "toggleTextScanning": { - "suggested_key": { - "default": "Alt+Delete" - }, - "description": "Toggle text scanning on/off" - }, - "openInfoPage": { - "description": "Open the info page" - }, - "openSettingsPage": { - "description": "Open the settings page" - }, - "openSearchPage": { - "suggested_key": { - "default": "Alt+Insert" - }, - "description": "Open the search page" - }, - "openPopupWindow": { - "description": "Open the popup window" - } - }, - "web_accessible_resources": [ - { - "resources": [ - "popup.html", - "template-renderer.html", - "js/*", - "lib/resvg.wasm" - ], - "matches": [ - "<all_urls>" - ] - } - ], - "content_security_policy": { - "extension_pages": "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; img-src blob: 'self'; style-src 'self' 'unsafe-inline'; media-src *; connect-src *", - "sandbox": "sandbox allow-scripts; default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'unsafe-inline'" - } -} diff --git a/vendor/yomitan/offscreen.html b/vendor/yomitan/offscreen.html deleted file mode 100644 index 06b582e1..00000000 --- a/vendor/yomitan/offscreen.html +++ /dev/null @@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width,initial-scale=1"> - <title>Offscreen - - - - - - - - - - - - - - - - -
    - - - diff --git a/vendor/yomitan/permissions.html b/vendor/yomitan/permissions.html deleted file mode 100644 index c28b77b7..00000000 --- a/vendor/yomitan/permissions.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - Yomitan Permissions - - - - - - - - - - - - - - - -
    -
    -
    - - - -

    Yomitan Permissions

    - -

    -
    -
    -
    -
    <all_urls>
    -
    - Yomitan requires access to all URLs in order to run scripts to scan text and show the definitions popup, - request audio for playback and download, and connect with Anki. -
    -
    -
    - -
    -
    -
    -
    -
    storage and unlimitedStorage
    -
    - Yomitan uses storage permissions in order to save extension settings and dictionary data. - unlimitedStorage is used to help prevent web browsers from unexpectedly - deleting dictionary data. -
    -
    -
    -
    -
    -
    declarativeNetRequest
    -
    -

    - Yomitan uses this permission to ensure certain requests have valid and secure headers. - This sometimes involves removing or changing the Origin request header, - as this can be used to fingerprint browser configuration. -

    -

    - Example: Origin: -

    -
    -
    -
    -
    -
    -
    scripting
    -
    - Yomitan needs to inject content scripts and stylesheets into webpages in order to - properly display the search popup. -
    -
    -
    -
    -
    -
    contextMenus
    -
    - Yomitan adds a context menu interface that lets you look up highlighted words. -
    -
    -
    -
    -
    -
    clipboardWrite
    -
    - Yomitan supports simulating the Ctrl+C (copy to clipboard) keyboard shortcut - when a definitions popup is open and focused. -
    -
    -
    -
    -
    -
    clipboardRead (optional)
    -
    - Yomitan supports automatically opening a search window when text is copied to the clipboard - while the browser is running, depending on how certain settings are configured. - This allows Yomitan to support scanning text from external applications, provided there is a way - to copy text from those applications to the clipboard. -
    -
    -
    - -
    -
    -
    -
    -
    nativeMessaging (optional)
    -
    - Yomitan has the ability to communicate with an optional native messaging component in order to support - parsing large blocks of Japanese text using - MeCab. - The installation of this component is optional and is not included by default. -
    -
    -
    - -
    -
    -
    -
    -
    Allow in private windows (optional)
    -
    -

    - When enabled, Yomitan is able to scan text and show definitions in private/incognito web browser windows. -

    -

    - This option can be configured from the web browser's extension settings pages. -

    -

    - This option can be configured from the web browser's extension settings pages. From your browser's address bar, go to about:addons and navigate to the settings for Yomitan. -

    -
    -
    -
    - -
    -
    -
    -
    -
    Allow access to file URLs (optional)
    -
    -

    - When enabled, Yomitan is able to scan text and show definitions on local HTML files located using the file://* scheme. -

    -

    - This option can be configured from the web browser's extension settings pages. -

    -
    -
    -
    - -
    -
    -
    -
    -
    Persistent storage
    -
    -

    - Web browsers will sometimes clear stored data if the device is running low on storage space, - which can result in the imported dictionaries being deleted unexpectedly. - The persistent storage permission tells the browser that the data should not be deleted in those circumstances. -

    -

    - It may not be possible to enable this permission on Firefox for Android. -

    -

    - Chromium-based browsers should not need to enable this setting since the Yomitan extension has - the unlimitedStorage permission, which should prevent data deletion.[1] -

    -
    -
    -
    - -
    -
    -
    -
    -
    Configure allowed origins…
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    - - - - - - - - - - - diff --git a/vendor/yomitan/popup-preview.html b/vendor/yomitan/popup-preview.html deleted file mode 100644 index 3da26eda..00000000 --- a/vendor/yomitan/popup-preview.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - Yomitan Popup Preview - - - - - - - - - - - - - -
    -
    -
    -
    - - -
    -
    -
    - -
    - - - diff --git a/vendor/yomitan/popup.html b/vendor/yomitan/popup.html deleted file mode 100644 index 592797dc..00000000 --- a/vendor/yomitan/popup.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - Yomitan Search - - - - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    - - - -
    - -
    - -
    - - - - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - - - -
    - - - - - diff --git a/vendor/yomitan/quick-start-guide.html b/vendor/yomitan/quick-start-guide.html deleted file mode 100644 index ec86fac6..00000000 --- a/vendor/yomitan/quick-start-guide.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - Quick Start Guide - - - - - - - - - - - - - - -
    -
    -
    - - - -

    Yomitan Quick Start Guide

    - - -

    Quick Actions

    - -
    -
    -
    - Clicking the Yomitan button in the browser bar will open the quick-actions popup. -
    -
    - browser-action-popup -
    -
    - The cog button will open the Settings page. -
    -
    - The magnifying glass button will open the Search page, - enabling text and terms to be looked up using the installed dictionaries. - This can even be used in offline mode! -
    -
    - The question mark button will open the Information page, - which has some helpful information and links about Yomitan. -
    -
    -
    -
    -
    - -

    Installing Dictionaries

    - -
    -
    -
    - Yomitan requires one or more dictionaries to be installed in order to look up terms, kanji, and other information. - -

    - - To get started, first select your desired language in the Settings page. - Then, click on Get recommended dictionaries under the Dictionaries section to find dictionaries for your language. - You can also visit Yomitan Wiki to learn more about Yomitan dictionaries. - Once downloaded, dictionaries can be configured and managed from the same Settings page. - -

    - - settings-dictionaries-popup - -
    -
    -
    - - -

    Scanning Text

    - -
    -
    -
    - After dictionaries have been installed, webpage text can be scanned by moving the cursor while holding a modifier key. - The default key is Shift, which can be disabled or configured in the Settings page. -
    - - scanning - -
    -
    - Clicking the speaker button of an entry in the search results - will play an audio clip of a term's pronunciation using an online dictionary, if available. -
    -
    - Clicking on a kanji character in a term's definition will show additional information about that character. - (Requires a kanji dictionary to be installed.) -
    -
    -
    -
    - -

    Migrating to Yomitan

    - -
    -
    -
    - You can also import an exported collection of dictionaries from the Backup section of the Settings page. - -

    - - If you are migrating from Yomichan, you may be interested in importing your data into Yomitan. - Please follow instructions from Yomitan Wiki for that. - -

    - - If you are using or planning to use custom templates for Anki note creation, note that some syntax has changed from Yomichan and Yomibaba. - Please ensure that your custom templates are using the updated syntax. -
    -
    -
    - -

    Links

    - - - - - -
    -
    -
    - - diff --git a/vendor/yomitan/search.html b/vendor/yomitan/search.html deleted file mode 100644 index ec59cdc2..00000000 --- a/vendor/yomitan/search.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - Yomitan Search - - - - - - - - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -

    Yomitan Search

    -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - -
    - -
    -
    -
    -
    - - - -
    - - - - -
    -
    -
    - -
    - -
    - - - - - - - - diff --git a/vendor/yomitan/settings.html b/vendor/yomitan/settings.html deleted file mode 100644 index 0d601724..00000000 --- a/vendor/yomitan/settings.html +++ /dev/null @@ -1,2529 +0,0 @@ - - - - - - Yomitan Settings - - - - - - - - - - - - - - - - -
    - -
    - - - -

    Yomitan Settings

    - - -
    -
    -
    -
    -

    - This page is taking longer than expected to load. -

    -

    - Due to a bug in Safari, it may be necessary to click the Yomitan - button in the browser bar to fully load the page -

    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    Active profile
    -
    Switch the active profile that is used for scanning.
    -
    -
    - -
    -
    -
    -
    -
    Configure profiles…
    -
    -
    - -
    -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    Enable Yomitan
    -
    -
    - -
    -
    -
    -
    -
    - Language -
    -
    - Language of the text that is being looked up. -
    -
    -
    - -
    -
    -
    -
    -
    Show the welcome guide on browser startup
    -
    -
    - -
    -
    -
    -
    -
    Show "Lookup in Yomitan" in right-click menu
    -
    -
    - -
    -
    -
    -
    -
    Maximum number of results
    -
    Adjust the maximum number of results shown for lookups.
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - Enable Yomitan API -
    -
    - Enable support for sending local web requests to fetch data from Yomitan. -
    -
    - This option may send data outside of Yomitan to local applications that request it (Privacy Policy). - More… -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    -

    Dictionaries (# installed, # enabled)

    -
    -
    -
    -
    -
    -
    -
    Configure installed and enabled dictionaries…
    - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    Get recommended dictionaries…
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    Storage
    -
    - - Yomitan is using an indeterminate amount of storage. - - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    Frequency sorting dictionary
    -
    - Sort results using a frequency dictionary. - More… -
    -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    Persistent storage
    -
    - Enable to help prevent the browser from unexpectedly clearing the database. - More… -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    -
    Scan modifier key
    -
    - Hold a key while moving the cursor to scan text. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    Scan resolution
    -
    - Start the lookup scan at the word or character of the cursor position. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    Scan using middle mouse button
    -
    Hold the middle mouse button while moving the cursor to scan text.
    -
    -
    - -
    -
    -
    -
    -
    Configure advanced scanning inputs… (# defined)
    -
    -
    - -
    -
    -
    -
    -
    Scan delay (in milliseconds)
    -
    Change the delay before scanning occurs when no modifier key is required.
    -
    -
    - -
    -
    -
    -
    -
    Scan without mouse move
    -
    Allow scanning words under the pointer without the pointer being in motion.
    -
    -
    - -
    -
    -
    -
    -
    Select matched text
    -
    -
    - -
    -
    -
    -
    -
    Search text with non-Japanese, Chinese, or Korean characters
    -
    Only applies when language is set to Japanese, Chinese, Cantonese, or Korean.
    -
    -
    - -
    -
    -
    -
    -
    Layout-aware scanning
    -
    Use webpage styling information to determine where line breaks are likely to be.
    -
    -
    - -
    -
    -
    -
    -
    Deep content scanning
    -
    Enable scanning text that is covered by other layers.
    -
    -
    - -
    -
    -
    -
    -
    -
    Normalize CSS zoom
    -
    - Correct the pointer location on webpages where CSS zoom is used. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    Wildcard scanning
    -
    - Enable suffix wildcard when looking up scanned webpage text. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    Text scan length
    -
    Change how many characters are read when scanning for terms.
    -
    - Setting this value too high (100+) may impact performance. -
    -
    -
    - -
    -
    -
    -
    -
    Configure input action prevention…
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    -
    Allow scanning search page content
    -
    Text on the search page can be scanned for definitions, which will open a popup.
    -
    -
    - -
    -
    -
    -
    -
    -
    Allow scanning popup content
    -
    Text inside of popups can be scanned for definitions, which will open a new popup.
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    Auto-hide search popup
    -
    When an existing popup is present, upon scanning again, hide the existing popup even if no definitions are found when scanning again.
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    Hide popup on cursor exit
    -
    When the cursor exits the popup, the popup will be hidden.
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    Reduced motion scrolling
    -
    Scrolls by a configurable height (similar to pagination), reducing animations. Useful on e-readers and e-ink screens.
    -
    -
    - -
    -
    - -
    -
    -
    -
    Search terms when clicking text from the results list
    -
    -
    - -
    -
    -
    -
    -
    -
    - Show iframe popups in the root frame - (?) -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    Theme
    -
    Adjust the style of Yomitan.
    -
    -
    -
    -
    -
    Body
    - -
    -
    -
    Shadow
    - -
    -
    -
    -
    -
    -
    -
    -
    Action bar appearance
    -
    Control when and where the action bar is visible.
    -
    -
    -
    -
    -
    Visibility
    - -
    -
    -
    Location
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    Font family
    -
    - Change the font family used in Yomitan. - More… -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    Font size
    -
    Change the font size used in popups, in pixels.
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    Line height
    -
    Change the space between lines of text in popups. This will usually be a decimal number between 1 and 2.
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    Compact glossaries
    -
    Display term glossaries using a more compact layout.
    -
    -
    - -
    -
    -
    -
    -
    Compact tags
    -
    Show fewer repeated tags for term glossaries.
    -
    -
    - -
    -
    -
    -
    -
    Show tags for expressions and their readings
    -
    These tags can be scanned if the options for popup content scanning are enabled.
    -
    -
    - -
    -
    -
    -
    -
    Show debug information
    -
    A menu option to log debugging information will be shown in the search results.
    -
    -
    - -
    -
    -
    -
    -
    Term display style
    -
    Change how terms and their readings are displayed.
    -
    -
    - -
    -
    - -
    -
    -
    Frequency display style
    -
    Change how frequency information is presented.
    -
    -
    - -
    -
    -
    -
    -
    -
    Selection indicator style
    -
    Change how the selected definition entry is visually indicated.
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - Pitch accent display styles -
    -
    - Japanese only. - More… -
    -
    -
    -
    - - - -
    -
    -
    - -
    -
    -
    -
    Configure collapsible dictionaries…
    -
    -
    - -
    -
    -
    -
    -
    Configure custom CSS…
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    -
    -
    Result grouping mode
    -
    - Change how related results are grouped. - More… -
    -
    -
    - -
    -
    - - -
    -
    -
    -
    Average frequencies
    -
    Compress frequency tags into one "Average" frequency tag based on the harmonic mean.
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    -
    -
    Display mode
    -
    - Change the layout of the popup. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    Scale
    -
    Control the scaling factor of the popup.
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - Auto-scale - (?) -
    -
    -
    -
    - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    Size
    -
    Control the size of the popup, in pixels.
    -
    -
    -
    -
    -
    Width
    - -
    -
    -
    Height
    - -
    -
    -
    -
    -
    -
    -
    Horizontal text positioning
    -
    Change where the popup is positioned relative to horizontal text.
    -
    -
    - -
    -
    -
    -
    -
    Vertical text positioning
    -
    Change where the popup is positioned relative to vertical text.
    -
    -
    - -
    -
    -
    -
    -
    Horizontal text offset
    -
    Change the distance the popup is placed relative to horizontal text.
    -
    -
    -
    -
    -
    x
    - -
    -
    -
    y
    - -
    -
    -
    -
    -
    -
    -
    Vertical text offset
    -
    Change the distance the popup is placed relative to vertical text.
    -
    -
    -
    -
    -
    x
    - -
    -
    -
    y
    - -
    -
    -
    -
    -
    - - - -
    -
    -
    -
    -
    Sticky search header
    -
    Search header stays on the page when scrolling down.
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - Use a native browser window instead of an embedded popup - (?) -
    -
    -
    - -
    -
    - -
    -
    -
    -
    Size
    -
    Control the size of the window, in pixels.
    -
    -
    -
    -
    -
    Width
    - -
    -
    -
    Height
    - -
    -
    -
    -
    -
    -
    -
    Left position
    -
    Control the left position of the window, in pixels.
    -
    -
    -
    - -
    -
    Mode
    - -
    -
    -
    -
    -
    -
    -
    Top position
    -
    Control the top position of the window, in pixels.
    -
    -
    -
    - -
    -
    Mode
    - -
    -
    -
    -
    -
    -
    -
    Window style
    -
    Change the appearance of the window.
    -
    -
    -
    -
    -
    Type
    - -
    -
    -
    State
    - -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    Enable audio playback for terms
    -
    Show a clickable speaker icon next to search results.
    -
    - This option may send term, reading, and/or language outside of Yomitan to fetch audio (Privacy Policy). -
    -
    -
    - -
    -
    -
    -
    -
    Auto-play search result audio
    -
    The audio for the first result will be played automatically.
    -
    -
    - -
    -
    -
    -
    -
    -
    Audio fallback sound
    -
    - The sound to play when Yomitan fails to fetch audio. -
    -
    -
    - -
    -
    -
    -
    -
    -
    Audio volume
    -
    Adjust the volume audio is played at, in percent.
    -
    -
    - -
    -
    -
    -
    -
    Configure audio playback sources…
    -
    -
    - -
    -
    -
    - - -
    - - -
    -
    -
    -
    -
    -
    Parse sentences using Yomitan's internal parser
    -
    - Sentence words are parsed using Yomitan's dictionaries. - More… -
    -
    -
    - -
    -
    - -
    - -
    -
    -
    Show space between parsed words
    -
    -
    - -
    -
    -
    -
    -
    Sentence scanning extent
    -
    Adjust how many characters are bidirectionally scanned to form a sentence.
    -
    -
    - -
    -
    -
    -
    -
    Sentence termination characters
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    - -
    -
    -
    -
    -
    -
    Dictionary search resolution
    -

    "A dog" → search for "A dog","A do", "A d", "A"

    or

    "A dog" → "A dog", "A"

    -
    -
    - -
    -
    -
    -
    -
    Configure custom text replacement patterns…
    -
    -
    - -
    -
    -
    - - -
    -
    -
    - - -
    - -
    -
    -
    -
    -
    -
    Enable Anki integration
    -
    - Connection status: - -
    - This option may send limited information about the current webpage, information contained in Yomitan dictionary entries, and/or relevant user settings outside of Yomitan to Anki (Privacy Policy). -
    -
    -
    -
    - -
    -
    - -
    -

    - Notice for macOS users: - If Yomitan has issues connecting to AnkiConnect, it may be necessary to adjust some system settings. - See this link for details. -

    -
    -
    -
    -
    -
    -
    AnkiConnect server address
    -
    - Change the URL of the AnkiConnect server. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    Card tags
    -
    List of space or comma separated tags to add to the card.
    -
    -
    - -
    -
    -
    -
    -
    API key
    -
    Pass a secret value to AnkiConnect API calls.
    -
    -
    - -
    -
    -
    -
    -
    -
    Check for card duplicates
    -
    -
    - -
    -
    - -
    -
    -
    -
    Screenshot format
    -
    Adjust the format and quality of screenshots created for cards.
    -
    -
    -
    - -
    -
    Format
    - -
    -
    -
    -
    -
    -
    -
    -
    Idle download timeout (in milliseconds)
    -
    - The maximum time before an idle download will be cancelled; 0 = no limit. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    Suspend new cards
    -
    New cards will be suspended when a note is added.
    -
    -
    - -
    -
    -
    -
    -
    -
    Note viewer window
    -
    - Clicking the View added note button shows this window. - More… -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    - Show card tags and flags - (?) -
    -
    -
    - -
    -
    - -
    -
    -
    -
    Force Anki sync on adding card
    -
    - May cause issues when using in conjuction with Ankiconnect Android, and/or slow or metered connections. -
    -
    -
    - -
    -
    - -
    -
    -
    Configure Anki flashcards…
    -
    -
    - -
    -
    -
    -
    -
    Customize handlebars templates…
    -
    -
    - -
    -
    -
    -
    -
    Generate notes (experimental)…
    -
    -
    - -
    -
    -
    - - -
    -
    -
    - - -
    - -
    -
    -
    -
    -
    -
    Enable background clipboard text monitoring
    -
    Open the search page in a new window when text is copied to the clipboard.
    -
    -
    - -
    -
    -
    -
    -
    -
    Enable search page clipboard text monitoring
    -
    The query on the search page will be automatically updated with text in the clipboard.
    -
    -
    - -
    -
    -
    -
    -
    Maximum clipboard text search length
    -
    Limit the number of characters used when searching clipboard text.
    -
    -
    - -
    -
    -
    -
    -
    Clipboard text search mode
    -
    Change how the search page reacts to new text in the clipboard.
    -
    -
    - -
    -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    -

    - Yomitan has two categories of keyboard shortcuts: -

    -
      -
    • - Standard keyboard shortcuts are controlled by the extension, and can be added, removed, - and configured to work on webpages that Yomitan functions on. -
    • -
    • - Native keyboard shortcuts are controlled by the web browser, and function globally - within the web browser or system-wide. -
    • -
    -
    -
    -
    -
    -
    -
    Configure standard keyboard shortcuts…
    -
    -
    - -
    -
    -
    -
    -
    Configure native keyboard shortcuts…
    -
    -
    - -
    -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    - Yomitan can import and export settings files which can be - used to restore settings, share settings across devices, - and to help to debug problems. These files will only - contain settings and will not contain dictionaries. - Dictionaries must be imported separately. However, you can - also import a previously exported collection of - dictionaries. See the next section about that. -
    -
    -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    - You can try to export the entire collection of your - dictionaries into a single large file that you can try to - import from other browsers or devices. Importing the - collection like that is a destructive operation and will - replace your current database of dictionaries so please - proceed with caution. These operations can take a lot of - time depending on the size of your database, especially to - start and to complete, so have patience. - -

    - - See yomichan-data-exporter for - instructions to export your data from older Yomichan installations. -
    -
    -
    -
    -
    -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    -
    -
    - Placeholder text. -
    -
    -
    -
    -
    -
    - Placeholder text. -
    -
    -
    -
    - - - -
    -
    -
    -
    -
    - Enable Google Docs compatibility mode - (?) -
    -
    -
    - -
    -
    - -
    -
    - - -
    -
    - -
    -
    -
    -
    -
    Configure Yomitan Permissions
    -
    -
    - -
    -
    -
    -
    -
    -
    - Use a secure container around popups - (?) -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    - Use secure popup frame URL - (?) -
    -
    -
    - -
    -
    - -
    -
    - - - -
    -
    -
    -
    - -
    -
    -
    -
    - - - -
    - -
    -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    - - - - - - - diff --git a/vendor/yomitan/support.html b/vendor/yomitan/support.html deleted file mode 100644 index 21dcb2d8..00000000 --- a/vendor/yomitan/support.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - Support Yomitan - - - - - - - - - - - - - - -
    -
    -
    - - - -

    Support Yomitan ❤️

    - -

    Here are some ways to support Yomitan:

    -
    -
    - -
    -
    -
    -
    -
    - - - diff --git a/vendor/yomitan/sw.js b/vendor/yomitan/sw.js deleted file mode 100644 index 80f7678e..00000000 --- a/vendor/yomitan/sw.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (C) 2023-2025 Yomitan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -import './js/background/background-main.js'; diff --git a/vendor/yomitan/template-renderer.html b/vendor/yomitan/template-renderer.html deleted file mode 100644 index d7014a99..00000000 --- a/vendor/yomitan/template-renderer.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - Yomitan Handlebars Sandbox - - - - - - - - - - - - - diff --git a/vendor/yomitan/templates-display.html b/vendor/yomitan/templates-display.html deleted file mode 100644 index 0d31367e..00000000 --- a/vendor/yomitan/templates-display.html +++ /dev/null @@ -1,218 +0,0 @@ -Templates - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/templates-modals.html b/vendor/yomitan/templates-modals.html deleted file mode 100644 index f0339db6..00000000 --- a/vendor/yomitan/templates-modals.html +++ /dev/null @@ -1,1694 +0,0 @@ -Templates - - - - - - diff --git a/vendor/yomitan/templates-settings.html b/vendor/yomitan/templates-settings.html deleted file mode 100644 index 3205a59b..00000000 --- a/vendor/yomitan/templates-settings.html +++ /dev/null @@ -1,540 +0,0 @@ -Templates - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/yomitan/welcome.html b/vendor/yomitan/welcome.html deleted file mode 100644 index fe993f97..00000000 --- a/vendor/yomitan/welcome.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - Welcome to Yomitan! - - - - - - - - - - - - - - - -
    -
    -
    - - -

    Welcome to Yomitan!

    - -

    Recommended Permissions (Important)

    -
    -
    -
    -
    Enable recommended permissions
    -
    This will allow Yomitan to scan text from most sites.
    -
    -
    - -
    -
    -
    -
    -
    Enable optional permissions
    -
    This will allow Yomitan to read the clipboard and communicate with external programs.
    -
    -
    - -
    -
    -
    -
    -
    Further configuration is available on the Permissions page and the web browser's extension settings page.
    -
    Further configuration is available on the Permissions page and the web browser's extension settings page.
    - - - - -
    -
    -
    - - -
    -
    -
    -

    - There are custom Anki templates in your settings. Note that some syntax has changed from previous versions of Yomitan. - Please ensure that your custom templates are using the updated syntax. -

    -
    -
    -
    - - -

    Import Dictionaries (Important)

    -
    -
    -
    -
    - Language -
    -
    - Language of the text that is being looked up. -
    -
    -
    - -
    -
    -
    -
    -
    -
    Get recommended dictionaries…
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    Configure Installed and enabled dictionaries…
    -
    -
    - -
    -
    -
    -
    - - -

    Data Transmission

    -
    -
    -
    -
    Enable audio playback for terms
    -
    Show a clickable speaker icon next to search results.
    -
    - This option may send term, reading, and/or language outside of Yomitan to fetch audio when the speaker icon is clicked. Personally identifying information is never sent (Privacy Policy). -
    Disabling this option will disallow pronunciation audio playback for any terms searched.
    -
    -
    -
    - -
    -
    -
    - -

    Here are some basics to get started

    - - -

    Basic customization

    -
    -
    -
    -
    Show this welcome guide on browser startup
    -
    -
    - -
    -
    -
    -
    -
    -
    Scan modifier key
    -
    Hold a key while moving the cursor to scan text.
    -
    -
    - -
    -
    -
    -
    -
    -
    Scan using middle mouse button
    -
    Hold the middle mouse button while moving the cursor to scan text.
    -
    -
    - -
    -
    -
    -
    -
    Theme
    -
    Adjust the style of Yomitan.
    -
    -
    - -
    -
    -
    -
    -
    More customization options are available on the Settings page
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    - - - - - - - - - -